问题标签 [gettext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3960 浏览

php - poedit动态gettext的解决方法

我已经开始使用 gettext 来翻译我发送给用户的文本和消息。我正在使用 poedit 作为编辑器,但我正在努力处理动态消息。

例如,我有像登录这样的东西,我有一个告诉错误类型的变量。

当我从 poedit 自动更新时,它会被读取为“page-error-”。我所做的是有一个文件,我在其中对 translate 方法进行虚拟调用,其中包含所有可能的键,以便在自动更新时将它们添加到我的 poedit 中。

我不是特别喜欢这种情况。你们是怎么做到的。

谢谢你的想法

0 投票
2 回答
232 浏览

language-agnostic - 在哪里翻译消息字符串 - 在视图中还是在模型中?

我们有一个多语言 (PHP) 应用程序,并为 i18n 使用 gettext。后端/模型中有一些类为 printf() 返回消息或消息格式。

我们使用 xgettext 来提取我们想要翻译的字符串。

我们在前端/视图中应用 gettext 函数 T_() - 这似乎是它所属的地方。到目前为止,我们从 T_() 调用中保持后端清洁,这样我们也可以对消息进行单元测试。

所以在前端我们有类似的东西

或者

这使得无法应用 xgettext 来提取字符串,除非我们在 MyModel 类中放置一些虚拟 T_("my message %s to translate") 调用。

所以这导致了一个更普遍的问题:

你在后端类中应用翻译吗?你在哪里应用翻译,你如何跟踪你必须翻译的字符串?

(我知道Question: poedit workaround for dynamic gettext。)

0 投票
4 回答
2854 浏览

c++ - 如何使用 C++ 的特性更清洁地使用 i18n 库而不是直接使用 gettext() 和 C

我想有一种易于使用的方式来编写代码,例如:

但这支持i18n。这是一个使用示例gettext()

这可以由 xgettext 处理以生成一个消息目录文件,翻译人员可以使用该文件来创建各种版本。这些额外的文件可以在目标系统上处理,以允许用户以首选语言进行交互。

我想编写类似这样的代码:

在构建时,引用的字符串将由 xgettext 之类的程序检查以生成基本消息目录文件。 <<带参数的运算符i18n::cout将字符串文字作为键来查找运行时文本以从消息目录中使用。

它存在于某个地方吗?

0 投票
3 回答
26295 浏览

c++ - 完整的 C++ i18n gettext() "hello world" 示例

我正在寻找一个完整的 i18n gettext()hello world 示例。我已经根据G. Mohanty 的使用 GNU gettext 的本机语言支持教程开始了一个脚本。我正在使用 Linux 和 G++。

代码:

程序编译,提取文本,创建西班牙文文件,修改并创建二进制文件,但 hellogt 仍然显示英文。跟踪没有显示在当前工作目录中查找 es_MX 的证据,也没有任何对 LC_MESSAGES 目录的引用。

0 投票
1 回答
943 浏览

linux - msginit 电子邮件地址命令行参数?

msginit 提示输入电子邮件地址。有没有一种方法可以告诉 msginit 使用哪个电子邮件地址而无需提示,例如命令行参数?

0 投票
3 回答
1868 浏览

python - 制作多语言的 wxPython 应用程序

我有一个用 wxPython 编写的应用程序,我想制作多语言。我们的选择是

  1. 使用 gettext http://docs.python.org/library/gettext.html
  2. 将所有 UI 文本分离到 messages.py 文件中,并使用它来翻译文本

我非常倾向于第二种方式,我认为采用 gettext 方式没有任何好处,使用第二种方式我可以将所有消息放在一个地方而不是代码中,所以如果我需要更改消息,则无需更改代码,以防万一gettext 我可能对 msg-constants 感到困惑,因为我将只是包装原始 msg 而不是将其转换为 messages.py 中的常量

基本上代替

我认为

更好,那么gettext方式和劣势第二种方式有什么优势吗?还有第三种方法吗?

编辑:gettext 语言文件似乎也太依赖代码了,如果我想要两条英语相同但法语不同的消息会发生什么,例如假设法语对英语的不同场景有更微妙的翻译一个是可以的

经验:我已经走了第二条路,我必须说每个应用程序都应该尝试从代码中提取 UI 文本,它提供了重构的机会,看看 UI 在哪里进入模型以及在哪里可以改进 UI 文本,相比之下 gettext 是机械师,没有为编码员提供任何输入,我认为维护起来会更困难。

在为文本创建名称时,例如 PRINT_PROGRESS_MSG,有机会看到在许多地方,相同的 msg 的使用方式略有不同,并且可以合并为一个名称,这在我以后只需要更改 msg 一次时会有所帮助。

结论:我仍然不确定使用 gettext 并使用我自己的消息文件有什么好处。但我选择的答案至少解释了为什么 gettext 是有益的。最终的解决方案 IMO 是从两种方式中获得最佳效果的方法,即我自己的由 gettext 包装的消息标识符,例如

0 投票
1 回答
316 浏览

php - 有没有一种简单的方法可以以编程方式列出 .MO 文件中的所有消息 ID?

我有一个很大的 .po 文件,其中包含我的 PHP 应用程序所需的所有面向用户的字符串。我想知道是否有一个 PHP 函数可以用来获取存储在 .po 或 .mo 中的所有 msgid 字符串的列表。

我没有看到发布的 PHP 函数可以做到这一点。任何人都知道类似的东西,还是我必须自己手动解析我的 .po 文件?

这是我最希望看到的:

0 投票
1 回答
1157 浏览

c++ - 为什么 locale es_MX 可以工作,而 es 不行?

GNU gettext 的 Wikipedia 条目显示了一个示例,其中语言环境只是语言“fr”。而i18n gettext() “hello world” 示例具有包含语言和国家/地区的区域设置值,“ es_MX”。我已经修改了“ es_MX”示例以仅使用语言“es”,但它会生成英文文本而不是预期的西班牙文。

根据Controlling your locale with environment variables

环境变量 LANGUAGE,仅由 GNU gettext 使用...如果定义,LANGUAGE 优先于 LC_ALL、LC_MESSAGES 和 LANG。

生成预期的西班牙语文本而不是英语。

但这并不能解释为什么“LANG=es”不起作用。

0 投票
1 回答
4688 浏览

linux - 波兰语文本上的 msgfmt“无效多字节序列”错误

使用Complete C++ i18n gettext() “hello world” 示例,我将语言环境从“ es_MX”更改为“ pl_PL”,并将文本从“hello, world!”更改为 到“输入无效。请输入至少 20 个字符长的字符串。”。波兰语翻译包含几个字符,这些字符会导致 msgfmt 中出现“无效的多字节序列”错误,“łąźó”。翻译的文本是从网页复制的。

我认为utf8是问题所在。如果是这样,应该改用什么?

0 投票
2 回答
6050 浏览

linux - 用于设置 MIME 类型的 xgettext、msginit、msgfmt 序列的命令或选项?

通过手动编辑模板文件中的 MIME Con​​tent-Type 字符集来更正波兰文本上的 msgfmt“无效多字节序列”错误。是否有一些用于设置 MIME 类型的 xgettext、msginit、msgfmt 序列的命令或选项?