gpt4 book ai didi

c# - 如何在 xaml 和 resx 中使用 GNU gettext

转载 作者:行者123 更新时间:2023-11-30 20:55:04 25 4
gpt4 key购买 nike

我在一个 WPF 项目中。我想使用 GNU gettext 库。但他们已经将 *.xaml 和 *.resx 用于 i18n。

在 *.xaml 中

Text="{cmn:Locale ResourceName=MessageSymbol}"

*.xaml 中使用消息符号。并且符号在每个区域设置 *.resx 中定义(例如 Resources.en-US.resx)

但是这种方式并没有我想的那么高效。我们应该手动处理许多 *.resx。而且翻译人员无法理解 *.resx 格式。那么就没有 Visual Studio。GNU gettext 中的所有过程都是自动的。这就是我想使用 GNU gettext 的原因。

我不能放弃使用 *.xaml 进行布局设计。

如何在 xaml 中使用 GNU gettext?

最佳答案

在类似的情况下(它是 Silverlight),我成功地使用了 Vernacular:https://github.com/rdio/vernacular

它不是 GNU gettext 本身,但使用相同的文件格式和工作方式。这意味着您的翻译人员可以使用他们的工具输入和输出 .po 文件。

为了给你一些例子,下面是它在 C# 中的样子:

Console.WriteLine (Catalog.GetString ("Hello, World");

有很多覆盖:对于复数、性别和其他翻译评论:https://github.com/rdio/vernacular/blob/master/Vernacular.Catalog/Vernacular/Catalog.cs

在 xaml 中,它看起来像这样:

<TextBlock i18n:Catalog.Message="Hello, World!" />

Catalog.Message 在这种情况下是附加的 DependencyProperty,因此它适用于很多控件(所有 ContentControl 以及更多控件)

用于从程序集中提取翻译的工具(与 gettext 相反,提取是在源代码上完成的)和 xaml 输出 .po。同一工具还可以与 .resx 相互转换,因此您最终只需要翻译一个文件 (.po)。

NOTE: I'm contributing to this project from time to time, so my views could be biased.

关于c# - 如何在 xaml 和 resx 中使用 GNU gettext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com