问题标签 [poedit]
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.
php - 如何使 PoEdit 正确解析自定义“ngettext”实现?
我编写了一个 gettext 包装器,它使 l10n 的整个过程更简单一些,但不知何故,我无法让 PoEdit 正确识别和解析对该函数的复数版本调用。这是我最初拥有的:
但这根本行不通,PoEdit 什么也没选。我也试过:
这次 PoEdit 捕获了 的%d house
但不是复数形式%d houses
,但是如果我尝试完全相同但ngettext()
调用它完美地工作,单数和复数形式都可以识别:
我已经正确(?)将_e
关键字添加到项目设置中,但它没有选择复数变体。我还注意到 PoEdit 只有_
,gettext
并且gettext_noop
作为要接听的默认按键,没有任何对ngettext
,dngettext
或dcngettext
函数的引用,但它仍然可以正确接听ngettext
电话......这让我想知道 PoEdit 是否已经硬编码ngettext
关键字 - 那真的很伤心。
无论如何,有没有办法让 PoEdit(或任何其他类似的应用程序)正确解析自定义函数?
php - 你知道如何解析包含在关键字中的字符串吗?
我正在尝试使用 Poedit 解析应用程序。我的大部分翻译都使用 translate() 方法,但在某些视图文件 (.phtml) 中,我使用特殊关键字,例如 My string
你知道我可以指定 poedit 吗?
谢谢
编辑:
我知道如何添加关键字,如 translate、setLabel 等……但它们都是方法。我需要添加类似 %s 的内容,poedit 会知道要翻译的字符串是 %s ,它包裹在标签元素周围
php - 如何让 poedit 工作?
我已按照http://www.bunchacode.com/programming/internationalization-and-localization-in-cakephp/中的说明进行操作
但我不断收到此错误 xgettext: language `php' unknown
我疯狂地用谷歌搜索。我找不到它了。
php - 将 Poedit 与 XAMPP 一起使用
我现在正在努力使用 PHP 的 gettext() 函数进入翻译文件并使用 Poedit 创建文件。Poedit 也没有附带帮助文件,我尝试了很多在网上找到的东西,但没有任何效果。我在 Mac OSX 上使用 XAMPP 配置。
在 OSX 上,我的 XAMPP 目录是
在这个目录中,我创建了 gettext.php
和以下文件夹:
当我这样做时使用 Poedit > 文件 > 新目录
语言:意大利
国家:意大利
字符集:UTF-8
源代码字符集:UTF-8
基本路径:/Applications/XAMPP/xamppfiles/htdocs/
比我将 default.po 保存到 /locale/it_IT/LC_MESSAGES/
“更新目录失败,点击“更多>>”了解详情
zend-framework - Zend 框架、gettext、poedit 和编写关键字符串的人类语言
我正在使用 ZendFramework 编写一个网站,并决定使用 gettext 系统将其内容国际化。在我看来,我用法语写字符串,并提供一个此时只有一个文件“en.mo”来将句子翻译成英语。我想避免维护一个文件“fr.mo”,它只会将一个句子翻译成完全相同的句子。
有没有办法告诉 Zend 或 gettext 当语言环境是“fr”或“fr_FR”时,不需要搜索翻译文件并且必须按原样返回键字符串?或者也许有理由创建“身份翻译”文件 fr.mo ?
此时我的代码的关键引用:
我的引导程序的摘录:
/languages/ 的内容:
谢谢
php - Zend translate() 函数问题
我正在将 Zend Framework 用于多语言站点。翻译是用 Zend_Translate_Adapter_Gettext 完成的。我正在使用 poedit 准备 .mo 文件。
问题是当我设置两个 msgid 并且一个 msgstr 与另一个 msgid 相同时:
当我使用此代码时:
输出是这样的:
我认为如果 msgstr 与不同的 msgid 重合,则将其用作 msgid 并因此再次翻译。如果我的推理有误,请纠正我。
现在,我想知道您是否遇到过类似的问题以及如何轻松绕过它。
我当前的解决方案包括更改 msgid:
进而:
这不是一个令人满意的解决方案,因为我正在使用大约 10k 个文件的社区门户网站,我无法真正检查所有这些文件是否存在冲突。
如果它有任何用处:
- Zend 框架版本:1.10.8
- poedit版本:1.4.6
- 站点在 Apache 2.2.11 和 PHP 5.3 上运行
[编辑]
感谢 Gordon,我可以包含另一条数据:一个涉及 PHP 的测试gettext
。我使用了相同的测试 .mo 文件,包括 "foo"->"bar" 和 "bar"->"baz" 键值对。PHP 代码是这样的:
结果:
所以这绝对不是gettext
他的错。
cakephp - 默认 cakephp 库翻译的 .po 文件
如何将 cakephp 库文件的翻译添加到 default.po 文件
中,例如
- 月份名称
- 日期名称
- timeAgoInWords
我尝试手动将字符串添加到default.po,
但每次我从default.pot(使用poedit)更新它时
,字符串都消失了。
请帮我解决它
可以通过使用单独的.po文件找到解决方案
php - 用原始语言切换 gettext 翻译语言
我用德语的所有文本启动我的 PHP 应用程序,然后使用 gettext 提取所有字符串并将它们翻译成英语。
所以,现在我有一个 .po 文件,其中包含德语的所有 msgid 和英语的msgstrs。我想切换它们,以便我的源代码包含英语作为msgids,主要原因有两个:
- 更多的翻译人员会懂英语,因此只适合为他们提供带有英语msgids的文件。我总是可以在发出文件之前和收到文件之后切换文件,但是不。
- 如果内容文本也是英文,它将帮助我编写英文的对象和函数名称和注释。我想这样做,所以该项目对其他开源合作者更开放(更可能懂英语而不是德语)。
我可以手动执行此操作,这是我预计为它编写自动化例程(因为我对shell 脚本非常糟糕)而不是手动执行的任务。但我也预计会像往常一样鄙视每一分钟的手工计算机劳动(感觉像是矛盾的说法,对吗?)。
以前有人做过吗?我认为这将是一个常见问题,但找不到任何东西。非常感谢。
示例问题:
我想我会缩小问题的范围。.po 文件中的开关当然没有问题,它很简单
对我来说,问题是在解析 .po 文件时搜索我的项目文件夹文件_('$msgid')
并进行替换的例程_('msgstr')
(这可能甚至不是最优雅的方式,毕竟 .po 文件包含包含所有文件路径的注释,其中msgid 出现)。
在与akirk的回答混为一谈之后,我又遇到了一些问题。
- 因为我有
_('xxx')
和_("xxx")
电话的混合,我必须小心(不)转义。- msgids 和 msgstrs 中的双引号 " 必须不转义,但是斜线不能去掉,因为可能是双引号在 PHP 中也被转义了
- 单引号在替换为 PHP 时必须进行转义,但随后也必须在 .po 文件中进行更改。对我来说幸运的是,单引号仅出现在英文文本中。
- msgids 和 msgstrs 可以有多行,那么它们看起来像这样
msgid = ""
"line 1\n"
"line 2\n"
msgstr = ""
"line 1\n"
"line 2\n"
- 目前当然会跳过复数形式,但在我的情况下,这不是问题
- poedit 想要删除似乎已成功切换的过时字符串,我不知道为什么在(许多)情况下会发生这种情况。
今晚我将不得不停止工作。尽管如此,使用解析器而不是 RegExps 似乎并不过分。
localization - 在 PoEdit 中刷新 POT
我创建了一个 POT 来翻译我的网站并生成了一个 MO 文件。
我创建了一个新项目并从 POT 文件中导入,在翻译过程中我注意到我原来的 POT 上有一些错误。
我进行了更正,现在我想“刷新” POT 文件,以更新我的翻译项目,而不会丢失我所做的所有翻译。
我怎样才能做到这一点?
google-translate - 谷歌翻译 API 与 PoEdit?
最近,我找到了两种翻译网页的方法:
1) 谷歌翻译 API
2) Poedit或创建PO、MO文件
这两种方法的优点或缺点是什么?