gpt4 book ai didi

c# - 在 Win7 32 位上使用 Gtk# 进行国际化

转载 作者:太空宇宙 更新时间:2023-11-03 15:41:58 26 4
gpt4 key购买 nike

我有一个使用 Gtk# 和 .NET(无 Mono)的 C# 应用程序。我尝试翻译此应用程序中的 Gtk.Label,但没有成功。

mo 文件位于:

C:\locale\de\LC_MESSAGES\aboutbox.mo

我可以通过以下方式访问文件和字符串:

// Does not work and results 'Product'
Mono.Posix.Catalog.Init("aboutbox", @"c:\locale");
var proPosix = Mono.Unix.Catalog.GetString("Product");
// Works and shows translated string
Mono.Unix.Catalog.Init("aboutbox", @"c:\locale");
var proUnix = Mono.Unix.Catalog.GetString("Product");

作为结论,我认为 mo 文件是正确的。主要问题是,在 Gtk# 中这也不起作用:

GtkBuilder 已初始化:

    _aboutBuilder = new Gtk.Builder();
_aboutBuilder.TranslationDomain = "aboutbox";
//_aboutBuilder.AddFromString(System.IO.File.ReadAllText(deviceGladePath));
var result = _aboutBuilder.AddFromFile(deviceGladePath);

Thread、UiThread、LANG、LANGUAGE 上的语言设置为“de”。所以没想到这会成为问题。

问题:1) 为什么 Gtk# 翻译不起作用?2) 为什么 Posix.Catalog 不起作用,但 Mono.Catalog 不起作用?3) 如何在 gtk# 中设置语言环境目录? (可能是问题)

我玩了好几天,但我找不到任何东西。

最佳答案

我不知道这是否对你有帮助,但我在我的项目中成功地使用了翻译。我正在使用 Xamarin Studio,但我想它应该可以使用任何其他工具。

首先,我在我的解决方案中设置了一个翻译项目。它的名字是 i18n。

然后我使用 Catalog.Init("i18n", "./locale") 初始化目录。在构建我的项目时,语言环境文件夹包含我的 .mo 文件。

然后每当我需要翻译时:Catalog.GetString("foo")(或 Catalog.GetPluralString,我已经用过)。

这里是一些代码:

using Mono.Unix;
...

// At startup
Catalog.Init("i18n", "./locale");

...

// Some code
Console.WriteLine(Catalog.GetString("Hello, world!"));

关于c# - 在 Win7 32 位上使用 Gtk# 进行国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940589/

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