如何本地化 Windows 应用商店应用中的通知和组合框? (C#/XAML,多语言应用程序工具包)

2023-12-05

我在 Windows 应用商店应用程序本地化方面遇到一些问题。我能够本地化 xaml 内容,例如 TextBlock.Text 或 Button.Content(我正在以与此处所示相同的方式进行操作),但我不知道如何本地化以下内容:

1).我的组合框中的项目。

<ComboBox x:Name="comboBoxTopAppBar" Width="120" Margin="10,0,0,0" MinWidth="200"
                      SelectedItem="{Binding SelectedStatus, Mode=TwoWay}">                   
                <x:String>Item 1</x:String>
                <x:String>Item 2</x:String>
                <x:String>Item 3</x:String>                   
            </ComboBox>

2)。 C# 代码中的消息对话框(由于 catch 块而没有等待)

new MessageDialog("Something went wrong. Please, check your login/password and internet connection.").ShowAsync();

3)。 C# 代码中的 Toast 通知(我正在使用“Windows Runtime via C#”书中的类库)

ToastNotificationManager.CreateToastNotifier()
                        .Show(new ToastNotification(new ToastTemplate(ToastTemplateType.ToastText01)
                        {
                            Text = {"Fetching your data. Please, wait."},
                            Duration = ToastDuration.Short,
                        }));

我怎样才能将其本地化?


有趣的是,它们都联系在一起。

对于 2) 和 3),您需要创建一个控制器来保存ResourceLoader目的。您可以使用(如果使用 Windows 8.1),ResourceLoader.GetForIndependentUse().

在你的中创建一个方法ResourceController called GetTranslation(string resource)。它看起来像这样:

private static ResourceLoader resourceLoader = ResourceLoader.GetForIndependentUse();

public static string GetTranslation(string resource)
{
    return resourceLoader.GetString(resource);
}

然后,每当您需要静态编码翻译时,只需调用ResourceController.GetString(*key of the string you want*).

这对于简单的代码调用非常有用,但不能直接用于 Xaml,例如您的场景 1)。不过不用担心,因为您拥有转换器的魔力!

public class ResourceTranslationConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var valString = value as string;

        // If what is being converted is a string, return the resource translation
        // Else return something else, such as the object itself
        return valString == null ? value : ResourceController.GetString(valString);
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

然后,您所要做的就是定义一次转换器(可能可以从您的所有 xaml 访问,可能是一个字典合并到您的App.xaml)并且您可以随时在绑定中引用它!

对于这个例子,类似:

<!-- This is defined somewhere accessible, or just in the Page Resources -->
<!-- 'converters' is whichever namespace definition your converter is in -->
<converters:ResourceTranslationConverter x:Key="ResourceTranslationConverter"/>

<ComboBox x:Name="comboBoxTopAppBar" Width="120" Margin="10,0,0,0" MinWidth="200"
          SelectedItem="{Binding SelectedStatus, Mode=TwoWay}">    
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource ResourceTranslationConverter}}"
        </DataTemplate>
    <ComboBox.ItemTemplate>

    <x:String>Item 1</x:String>
    <x:String>Item 2</x:String>
    <x:String>Item 3</x:String>                   
</ComboBox>

这样你的所有文本都会通过你的ResourceLoader在运行时自动执行。您定义的任何新项目也将自动翻译(只要它们在您的资源中有条目并且已翻译)。

希望这对您有所帮助,祝您编码愉快!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何本地化 Windows 应用商店应用中的通知和组合框? (C#/XAML,多语言应用程序工具包) 的相关文章

  • teracopy 如何替换默认的 Windows 副本

    我问了这个问题Windows 文件复制内部结构 动态加密 https stackoverflow com questions 24220382 windows file copy internals on the fly encryptio
  • Swift:本地化字符串数组

    我有一个包含 100 多个字符串的数组 其设置如下所示 有什么方法可以本地化数组中的所有字符串 或者这是设置它的更好方法吗 var listOfThings Cars Mopeds 我建议将字符串放入 plist 文件中 然后可以根据需要本
  • 常见的 Windows 编译器上有哪些 std::locale 名称可用?

    该标准对于什么构成有效的语言环境名称几乎没有提及 只有传递无效的区域设置名称才会导致std runtime error 哪些语言环境名称可用于常见的 Windows 编译器 例如 MSVC MinGW 和 ICC 好吧 C 和 C 语言环境
  • Tensorflow 导入错误:没有名为“tensorflow”的模块

    我在 Windows Python 3 5 Anaconda 环境中安装了 TensorFlow 验证成功 有警告 tensorflow C gt python Python 3 5 3 英特尔公司 默认 2017 年 4 月 27 日 1
  • 使用资源定义厚度

    在 Windows UWP 应用程序项目中 我尝试通过分配给其厚度来定义厚度Left Top Right and Bottom特性
  • 在 Java 中对多语言环境字符串进行排序

    我正在尝试按字符串字段 国家 地区 对对象列表进行排序 每个国家 地区都使用其母语 阿根廷 澳大利亚 奥地利 例如 我想要做的是让 出现在 A 国家之后 因为字母 对应于拉丁语 B 我正在尝试使用默认的 Collat er 但非拉丁名称仍然
  • 在 Win7 登录屏幕上运行应用程序[重复]

    这个问题在这里已经有答案了 我想通过服务在 Windows 7 的登录屏幕上运行应用程序 我对此进行了长期研究并尝试了不同的方法 但不幸的是到目前为止还没有完全成功 我设法在当前登录用户的锁定屏幕上运行该应用程序 起初我认为这就是我基本上试
  • 如何在 Rails 上的 .yml 本地化文件中换行?

    我有一个带有一些本地化内容的 terms en yml 文件 例如 en devise registrations terms text This agreement was written in English US To the ext
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 从 .resx 文件组获取所有可用区域性

    我需要以编程方式列出 resx 文件组中的可用区域性 但 ResourceManager 类似乎没有帮助 我可能有 Labels resx Labels fr FR resx Labels ro RO resx 等等 但是 我如何在运行时找
  • 当我启动 Windows 命令提示符时,我做了什么导致环境变量发生更改?

    我使用的是 Windows 10 x64 我安装了 Anaconda3 如果我启动 C Windows system32 cmd exe 时没有运行任何其他内容 并且在我可以看到的后台中没有任何有趣的内容 则以下内容将添加到控制面板 UI
  • 生成尽可能最快的可执行文件

    我有一个非常大的程序 我一直在 Visual Studio 下编译 v6 然后迁移到 2008 我需要可执行文件尽可能快地运行 该程序大部分时间都花在处理各种大小的整数上 并且执行很少的 IO 显然 我会选择最大优化 但似乎可以做很多不属于
  • 将 C# 反射代码移植到 Metro-Ui

    我正在尝试移植使用反射的现有 C 类 通用工厂 但我无法编译这段代码 Type types Assembly GetAssembly typeof TProduct GetTypes foreach Type type in types i
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • C# 获取子窗口句柄

    我正在用 C 启动一个进程 然后使用 SendMessage 将 Windows 消息发送到该进程 通常我将消息发送到 Process MainWindowHandle 但在某些情况下 我可能需要找到子窗口句柄并向那里发送消息 我将如何在
  • 如何将 InputScope 属性添加到 WinRT 中的 PasswordBox?

    如何将输入范围属性添加到我的用户控件的密码框 请你给我解释一下好吗 Thanks 根据我掌握的信息 PasswordBox 在 winrt 中没有输入范围属性 因此您无法直接设置它 如果你想这样做 你必须制作单独的自定义控件 要定义您自己的
  • 无法访问127.0.0.1

    我不知道这种情况何时开始发生 但结果是 127 0 0 1 无法在任何地方的任何端口上工作 例如 浏览器显示无法连接 以下是我的研究结果 localhost COMPUTER NAME 和实际 IP 地址都工作正常 我的主机文件中没有什么特
  • Windows 每秒进行一次线程切换的频率是多少? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Windows 通常 每秒进行一次线
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 调整 CMD 窗口大小

    如何在 C 或 C 中以编程方式调整命令提示符窗口的大小 例如 80x25 或 80x40 字符 先感谢您 SetConsoleWindowInfo http msdn microsoft com en us library ms68612

随机推荐

  • 将复杂结构编组到 C#

    我仍在努力将一个相当复杂的结构从 C 编组到 C C 中的结构体如下 typedef struct DWORD Flags DWORD TimeCode DWORD NodeMoving Matrix NodeRots NUM GYROS
  • python基础级别生成器和列表问题[重复]

    这个问题在这里已经有答案了 my nums i i for i in 1 2 3 4 5 for k in my nums print k GG list my nums print GG 它打印 1 4 9 16 25 Process f
  • 强制浏览器在显示页面之前加载 CSS

    我已经制作了我的网站的移动版本 然而 在加载页面时 网站首先会在未应用 CSS 的情况下显示 一秒钟后 最多 它会应用 CSS 并正确呈现 此行为在所有浏览器 包括移动浏览器 中都是一致的 你知道我如何强制浏览器首先加载CSS 它的尺寸真的
  • 为什么我必须为 React 组件类中定义的方法添加 .bind(this) ,而不是在常规 ES6 类中定义方法

    让我困惑的是为什么当我定义一个 React 组件类时 包含在this对象在定义的方法中未定义 this在类中的生命周期方法中可用 除非我使用 bind this 或者使用箭头函数定义方法 例如下面的代码this state将是未定义的ren
  • 从具有不同高度的表格行中提取pdf文本(java使用pdfbox库)

    黑色形状是需要提取的文本 到目前为止 我已经从列中提取了文本 但是是手动提取的 因为只有 5 个 对区域使用 Rectangle 类 我的问题是 有没有办法对行执行此操作 因为矩形的大小 高度 不同 并且手动对 50 多行执行此操作将是一种
  • Bootstrap 工具提示 HTML, 锚标记上带有很棒的字体图标,但焦点不起作用

    我有以下 HTML 它按预期工作 当悬停到 符号时 会出现工具提示 但是因为其中一个在工具提示内有链接 所以我希望它表现得像 焦点 并且同时也 悬停 因此当我悬停其中包含链接的工具提示时 它仍然像 悬停 一样 当我没有悬停 HTML 时 工
  • 将 DateInterval 格式设置为 ISO8601

    我目前正在开发一个 php 项目 需要将 DateInterval 格式化为 ISO8601 类似这样 P5D 此格式可用于创建 DateTime 和 DateInterval 对象 但我无法找到将 DateInterval 格式化为此格式
  • C#中的滑动窗口算法

    我正在尝试在 C 3 0 中的二维数组上实现简单的滑动窗口算法 我发现this非常有用 但它只涉及一维数组 The post还包括算法的代码 我完全无法将它用于我的场景 任何人都可以建议我如何继续吗 设想 source googlepage
  • 在 MVC javascript 部分解析@? [复制]

    这个问题在这里已经有答案了 我正在尝试使用电子邮件RegEx在 MVC4 的 javascript 部分 但RegEx有 char 它不允许解析它 error Parser Error Message is not valid at the
  • 如何检查进程是否正在运行

    我正在使用下面的代码启动一个进程 QProcess process new QProcess process gt start Path start 方法将启动第三方应用程序 如果进程已经在运行 我不应该再次调用 process gt st
  • 将变量从批处理传递到 powershell

    我有一个批处理文件 要求用户提供变量行set p asset 我这样调用我的 powershell 脚本 SET ThisScriptsDirectory dp0 SET PowerShellScriptPath ThisScriptsDi
  • 继续使用 MPMoviePlayerController 播放声音并锁定屏幕?

    当您观看视频时MPMoviePlayerController用户按下顶部按钮锁定屏幕 应用程序进入睡眠状态 视频中的声音也进入睡眠状态 有什么办法可以让锁停止声音吗 如果没有 有没有办法拦截锁 创建 自定义锁 以节省一些电池但继续播放视频
  • 有没有办法显示 PowerShell 脚本中的所有函数?

    是否有任何命令可以列出我在脚本中创建的所有函数 就像我创建了函数 doXY 和函数 getABC 或类似的东西 然后我输入命令 它显示 函数 doXY 函数 getABC 这将是一个很酷的功能 感谢你的帮助 您可以让 PowerShell
  • Flash Player 10.1 的全局错误处理程序不起作用

    尝试在我的项目中实现新的 FP 10 1 全局错误处理程序 但无论我做什么 任何未捕获的错误仍然会显示 异常 窗口 在 SWF 的调试版本和发布版本中 我想做的就是阻止这些弹出窗口 而是向我的记录器发送消息 这是我的代码 编辑 我现在简化了
  • 如何在 Mozilla Firefox 中一键复制文本?

    此代码在 Google Chrome Opera IE 11 中运行良好 但在 Mozilla firefox 和 Safari 中不起作用 我在以下字符串中收到错误 var 成功 document execCommand 复制
  • 保存和加载音频

    Unity 当我单击 录制 按钮时 Microphone Start 内置麦克风 true 10 44100 当我单击 暂停 按钮时 SavWav Save Application persistentDataPath Resources
  • 复杂的 SPARQL 查询 - Virtuoso 性能提示?

    我有一个相当复杂的 SPARQL 查询 它在并行线程 400 个线程 中执行数千次 为了提高可读性 这里对查询进行了一定程度的简化 命名空间 属性和变量已减少 但复杂性保持不变 联合 图形数量等 该查询针对 4 个图运行 其中最大的包含 5
  • Google BigQuery 表补丁/更新不起作用

    Google Http Request object batchHeaders gt array 3 Content Type gt string application http Content Transfer Encoding gt
  • 如何在打印时去掉数组括号

    打印数组时如何去掉左右括号 var array 1 2 3 4 println array It prints 1 2 3 4 var arrayWithoutBracketsAndCommas array some code printl
  • 如何本地化 Windows 应用商店应用中的通知和组合框? (C#/XAML,多语言应用程序工具包)

    我在 Windows 应用商店应用程序本地化方面遇到一些问题 我能够本地化 xaml 内容 例如 TextBlock Text 或 Button Content 我正在以与此处所示相同的方式进行操作 但我不知道如何本地化以下内容 1 我的组