问题标签 [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 投票
2 回答
1628 浏览

xml - XSLT 的 I18n(或者 XSLT 的 C++ 的 gettext() 和 xgettext 是什么)?

完整的 C++ i18n gettext() “hello world”示例显示了使用 gettext() 在 C++ 程序中处理消息的标准方法。消息目录存储在可移植对象文件中,该文件基于使用 xgettext、msginit 和 msgfmt 直接从 C++ 源代码创建的可移植对象模板文件。XSLT 处理消息的对应方法是什么?

具体来说,要使 C++ hello-world 代码支持 i18n,只需添加两个包含,调用一些设置函数并将字符串包装在对 gettext() 的调用中:

然后从源程序中提取英文文本并转换为可移植对象模板,供翻译人员使用,这些翻译人员使用实用程序创建机器对象消息目录文件供运行时程序使用:xgettext、msginit 和 msgfmt。最后,当调用程序时,会显示用于将运行时语言识别为西班牙语的 Linux shell 命令。

编写一个 hello-world 程序的主要目的是连接所有系统部分,以获得一个几乎无用的示例来运行。因此,正如 C++ 示例在 Linux 环境中针对 C++ 显示的那样,我正在寻找相同的东西,但要寻找 XSLT。

  1. 在 C++ 示例中,有一组链接到 hellogt 的包含文件和目标文件。是否有提供 setlocale、bindtextdomain 和 textdomain 功能的 XSLT 代码?代码如何连接到用户的运行时语言?
  2. 是否有 XSLT 代码通过像 gettext() 这样的消息目录文件提供从英文文本的运行时转换?
  3. 是否有用于从源 XML 文件中提取英语文本以供翻译人员使用的实用程序以及将结果转换为运行时可用的消息目录文件(如 xgettext、msginit 和 msgfmt)的程序?
  4. 如何指定用户运行时语言的标识?

例如,我有一个 Javascript 应用程序Emle,它使用 XSLT 将 XML 处理为 HTML。消息在特定于应用程序的特定语言 XML 文件集合中定义。它们是使用特定于应用程序的 XSLT 代码提取的。尽管这与 #2 相关,但该方法似乎并不适合利用LaunchPad提供的翻译服务。Emle XSLT 文件使用的Emle 英语消息文件示例

0 投票
3 回答
1480 浏览

c++ - I18n C++ hello world 带复数

完整的 C++ i18n gettext() “hello world”示例包含适用于简单固定字符串的 C++ 代码。我现在正在寻找一个适用于复数的示例程序。此示例代码显示六行。只有一个是英语正确的。它不能正确处理复数。

用于复数形式的 GNU gettext()描述了语言处理复数的各种方式,例如:

  • 韩语 - 无复数
  • 英语 - 两种形式,单数只用于一种
  • 法语 - 两种形式,单数用于零和一
  • 波兰语 - 三种形式,一种特殊情况和一些以 2、3 或 4 结尾的数字

我的期望是代码将能够专门针对上述所有情况以及此处未列出的其他几种变体工作(给定消息目录)。用英语执行时的正确输出是:

0 投票
2 回答
1013 浏览

c++ - 如何使用本地操作系统环境使用 gettetxt() 初始化静态 char*?

C++ 中是否有标准或通用方法来处理需要设置的静态字符串gettext()

这是一个使用Complete C++ i18n gettext() “hello world” 示例的答案作为基础的示例,只是将文字更改hello world为静态char* hwschar* hw. hws在从本地操作系统环境设置语言环境之前,它看起来正在初始化为默认的英文文本。Whilehw是在更改语言环境后设置的,从而生成西班牙语文本。

0 投票
2 回答
1878 浏览

php - .po 到 .mo 在 php 中的转换器?

我想要一个可以将.po(便携式对象)转换为.mo(机器对象)文件的 PHP 脚本?PHP中有任何可用的脚本吗?

我可以根据这些信息制作一个 mo 文件吗?

0 投票
1 回答
778 浏览

templates - 有没有办法创建空的 .mo 文件模板?

有没有办法创建空的 .mo 文件?通常在开始新项目时,当我还不需要翻译时,我就会陷入困境。

我试过这个没有运气:

0 投票
1 回答
1200 浏览

php - 使用 gettext 在 PHP 中添加对 i18n 的支持?

我一直听说过 gettext - 我知道它是某种 unix 命令,用于根据提供的字符串参数查找翻译,然后生成一个 .pot 文件,但有人可以用外行的术语向我解释这是如何处理的一个网络框架?

我可能会四处看看一些已建立的框架是如何做到的,但外行的解释会有所帮助,因为它可能有助于在我真正深入研究以提供我自己的解决方案之前更清楚地了解情况。

0 投票
3 回答
1033 浏览

ruby-on-rails - Gettext 和 Haml on Rails / rake updatepo 出现非常奇怪的问题

我在 Rails 2.3.3 上,使用 Haml 2.0.9 作为模板,使用 Gettext-Rails 2.0.4 进行翻译。Haml 就像一个魅力,gettext 也像它应该的那样工作。

但是当使用“rake updatepo”时,我无法让 Gettext 解析 Haml 文件。我创建了一个这样的自定义解析器:

我的 Rakefile 看起来像这样:

这遵循用于解析 Haml 文件的已知方法 ( http://www.paulgillard.me.uk/2008/3/8/rails-haml-and-gettext )。

问题:没有从我的 Haml 文件中识别出 MessageId。我检查了 Haml-Parser 中的“puts”是否尝试了正确的文件,是否可以解析它们等等。一切似乎都很好,它只识别任何东西,并且总是只返回已经找到的 msgids,对于 Haml 文件,返回一个空数组。

奇怪的是:当我在控制台中输入它时,一切正常:

如您所见,这里一切正常(我省略了长期回报)。我有点害怕为什么我的 Rake 任务不是这样。

有人有想法吗?你真的会让我成为一个快乐的书呆子!

谢谢!

0 投票
1 回答
338 浏览

ruby-on-rails - Rails:gettext pot生成任务生成空文件

我的问题是,在我的应用程序中,我想用 rake 生成 gettext .pot 文件,但我得到的文件没有键,只有标题文本(“一些描述性标题。版权(C)......”)。

我正在使用任务 gettext:find getttext_18n_rails。我以前尝试过经典的updatepo任务,但结果是一样的。也许我错过了任何宝石?

谢谢

0 投票
1 回答
452 浏览

regex - 使用带有“msggrep”的正则表达式

我有一个 PO 文件,其内容如下:

我需要获取给定 msgid 的翻译。使用命令“msggrep -K -e 'orand' template2.pot”我得到了“orand”的翻译,这没关系。

但是当我使用“msggrep -K -e 'or' template2.pot”时,如果返回翻译('or'和'orand')。命令“msggrep -K -e '^or' template2.pot”按预期工作,返回两个翻译,但“msggrep -K -e '^or$' template2.pot”只是失败,因为它什么都不返回。似乎 '$' 字符会破坏 msggrep 正则表达式解析器。

我尝试过使用其他 msggrep 标志(如 -F、-E...),但它们都从文件中读取测试模式,这对于我的实际需求是不可接受的。我正在使用 msggrep 0.14.6(我无法更新到更新的库)。

有人知道如何使用 msggrep 获得“orand”的翻译吗?

0 投票
4 回答
5602 浏览

python - 使用带有正确翻译名称的 settings.LANGUAGES 使用 gettext()

来自 Django 文档:

如果您定义自定义LANGUAGES 设置,可以将语言标记为翻译字符串(如上面显示的默认值) - 但使用“虚拟”gettext()函数,而不是django.utils.translation. 您永远不应该 django.utils.translation从您的设置文件中导入,因为该模块本身取决于设置,这会导致循环导入。解决方案是使用“虚拟”gettext()功能。这是一个示例设置文件:

gettext = lambda s: s LANGUAGES = ( ('de', gettext('German')), ('en', gettext('English')), )

通过这种安排,django-admin.py makemessages仍然会找到并标记这些字符串以进行翻译,但翻译不会在运行时发生——所以你必须记住 在运行时gettext()使用的任何代码中将语言包装成真实的 LANGUAGES

将语言包装成 real 到底意味着什么gettext()?它应该如何在代码中调用?