标签: poedit

有什么好的替代poEdit?

我正在寻找一个.po/.mo编辑器.我使用gettext作为翻译文件,但不喜欢poEdit.它必须在Windows Vista上运行,如果它内置于Visual Studio 2008中,它会更好,所以我可以开发和翻译

我真的想要一些能帮助我翻译并使翻译更容易的东西.我想有建议和拼写检查

[没有选择?如果真的没有选择,我也可以做一些事情并编写代码,这样翻译就很容易了.您甚至可以整合http://dict.leo.org或查看Google翻译为查询提供的内容.]

translation gettext poedit

51
推荐指数
5
解决办法
4万
查看次数

如何使用PO编辑器将新字符串添加到*.po文件中

我手动创建了一个文件:test.po,内容如下:

msgstr"问候"
msgstr"Hello World"

现在我可以在编辑器中编辑翻译(hello world),如"poedit"和"GTranslated"(我正在使用Ubuntu).我甚至可以为该翻译添加评论.然而,"poedit"和"GTranslated"都不会让我添加一个新的翻译字符串 - 我在网上看起来没有用,看着其他编辑的截图,似乎没有一个"新"按钮.

我错过了什么?使用"普通"文本编辑器编辑新密钥然后在这些PO编辑器中编辑它们(无论它们可能是什么)似乎很愚蠢.(如果你不能说我是这个'gettext'世界的新手 - 我正在用Zend/PHP构建一个网站.)

translation gettext poedit

18
推荐指数
3
解决办法
4万
查看次数

如何生成.po文件?

在使用WAMPserver(Apache,MySQL,PHP)的Windows上,我有以下内容:

//test.php
if (!defined('LC_MESSAGES'))
define('LC_MESSAGES', 6);

$lang = "sv";
putenv("LANG=$lang");
setlocale(LC_ALL, $lang);

$domain = "messages";
bindtextdomain($domain, "./locale");
textdomain($domain);

echo _("This is a string");
Run Code Online (Sandbox Code Playgroud)

它工作正常,即它输出"这是一个字符串",这意味着我已经gettext正确设置.

但是我在世界上如何创建一个.po文件?

我下载了Poedit,但我看不出如何使用该软件实现这一点.

任何帮助是极大的赞赏!

php localization gettext poedit

15
推荐指数
2
解决办法
3万
查看次数

Google为支持ngettext样式复数的GNU gettext PO文件翻译服务

我正在寻找谷歌翻译的前端,支持使用NGETEXT样式复数转换GNU gettext PO文件,例如.msgstr [0] msgstr [n].

我找到了几个PO文件的免费翻译服务[1],但这些服务都不支持ngettext样式复数字符串.我们的PO文件有许多需要转换的复数.

注意:我们认为谷歌翻译并非接近生产质量.我们仅使用翻译的PO文件进行测试/概念验证演示.

任何建议赞赏.

马尔科姆

[1]免费,托管的PO翻译服务

translation gettext google-translate poedit

10
推荐指数
1
解决办法
6144
查看次数

将Poedit与XAMPP配合使用

我现在很难用PHP的gettext()函数进入翻译文件并用Poedit创建文件.Poedit也没有附带帮助文件,我尝试了许多在线发现但没有任何作用的东西..我在Mac OSX上使用XAMPP配置.

在OSX上,我的XAMPP目录是

/Applications/XAMPP/xamppfiles/htdocs/
Run Code Online (Sandbox Code Playgroud)

在这个目录里面我创建了gettext.php

<?php echo _("Hello World"); ?>
Run Code Online (Sandbox Code Playgroud)

和以下文件夹:

/locale/
/locale/it_IT/LC_MESSAGES/
Run Code Online (Sandbox Code Playgroud)

当我做的时候使用Poedit>文件>新目录

语言:意大利语
国家:意大利
Charset:UTF-8
源代码字符集:UTF-8
基本路径:/ Applications/XAMPP/xamppfiles/htdocs /

比我将default.po保存到/ locale/it_IT/LC_MESSAGES /

"更新目录失败.点击'更多>>'了解详情

13:04:10: Poedit did not find any files in scanned directories.
13:04:11: Entries in the catalog are probably incorrect.
13:04:11: Updating the catalog failed. Click on 'More>>' for details.
Run Code Online (Sandbox Code Playgroud)

php xampp locale poedit

9
推荐指数
1
解决办法
4229
查看次数

用原始语言切换gettext翻译语言

我用德语中的所有文本启动了我的PHP应用程序,然后使用gettext提取所有字符串并将它们翻译成英语.
所以,现在我有一个.po文件,其中包含德语中的所有msgids和英语中的msgstrs.我想切换它们,以便我的源代码包含英文为msgids,原因有两个:

  1. 更多的翻译人员会懂英语,因此只提供一个英文msgids的文件是合适的.我总是可以在我发出文件之前切换文件,然后收到它,但是naaah.
  2. 如果内容文本也是英文的话,它会帮助我写英文对象和函数名称和注释.我想这样做,所以该项目对其他开源合作者更开放(更有可能知道英语而不是德语).

我可以手动执行此操作,这是一种任务,我预计它将花费更多时间为它编写一个自动例程(因为我对shell脚本非常糟糕)而不是手动执行.但我也期望鄙视手动计算机劳动的每一分钟(感觉就像矛盾,对吧?)就像我一直这样.

有人曾经这样做过吗?我认为这将是一个常见的问题,但找不到任何东西.非常感谢.

示例问题:

<title><?=_('Routinen')?></title>

#: /users/ruben/sites/v/routinen.php:43
msgid "Routinen"
msgstr "Routines"
Run Code Online (Sandbox Code Playgroud)

我以为我会把问题缩小..po文件中的开关当然没有问题,就像它一样简单

preg_replace('/msgid "(.+)"\nmsgstr "(.+)"/', '/msgid "$2"\nmsgstr "$1"/', $str);
Run Code Online (Sandbox Code Playgroud)

对我来说问题是在解析.po文件时搜索我的项目文件夹文件_('$msgid')并替换的例程_('msgstr')(在所有.po文件包含包含所有文件路径的注释之后,这可能不是最优雅的方式) msgstr发生).


之后鬼混与akirk的回答一点,我遇到了一些更多的问题.

  1. 因为我有混合_('xxx')_("xxx")调用,所以我必须小心(un)转义.
    • msgstr和msgstrs中的双引号必须是未转义的,但不能删除斜杠,因为可能是双引号也在PHP中被转义
    • 单引号在被替换为PHP时必须进行转义,但是它们也必须在.po文件中进行更改.幸运的是,单引号只出现在英文文本中.
  2. msgids和msgstrs可以有多行,然后它们看起来像这样
    msgid = ""
    "line 1\n"
    "line 2\n"
    msgstr = ""
    "line 1\n"
    "line 2\n"
  3. 当然,复数形式被忽略了,但在我的情况下,这不是问题
  4. poedit希望删除过时的字符串似乎已成功切换,我不知道为什么会在(很多)情况下发生这种情况.

我今晚必须停止工作.似乎仍然使用解析器而不是RegExps不会有点矫枉过正.

php regex parsing gettext poedit

9
推荐指数
2
解决办法
2853
查看次数

PoEdit关键字 - 复数

我在我的应用程序中加入了类似gettext的本地化系统,但我的翻译功能如下所示:

 t($category, $string, [$plural_string, $number, $vprintf_arguments])
Run Code Online (Sandbox Code Playgroud)

我的PoEdit关键字:

t:2
t:2,3
Run Code Online (Sandbox Code Playgroud)
  • t:2告诉PoEdit解析$string,它显然有效
  • t:2,3应该告诉PoEdit解析两者$string而且$plural_string- 但它不是:(

它只能看到$string,所以我没有得到解析的复数形式......我该如何解决?我不想将我的函数切换到不同的参数格式,因为我喜欢这个:(

此功能也像sprintf替换:

  • 如果第三个参数($ plural_string)是一个数组,那么该函数会将数组中的值视为vsprintf的参数
  • 如果第三个参数是一个字符串并且提供了$ number,则该函数将$ vprintf_arguments视为vsprintf的参数(如果提供),并将$ plural_string视为$ string的复数形式

无论如何,PoEdit不应该干扰非引用的论点,对吧?我的意思是它只会解析$ plural_string作为字符串'abc abc'

php localization gettext poedit xgettext

8
推荐指数
1
解决办法
2924
查看次数

在PO文件中获取单词计数

如何计算PO文件中的单词数?
Poedit仅显示行数.
任何帮助将不胜感激.

translation poedit po

8
推荐指数
1
解决办法
2307
查看次数

动态gettext的poedit变通方法

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

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

$this->translate('page-error-' . $error);
Run Code Online (Sandbox Code Playgroud)

当我从poedit自动更新时,它会被读取为"page-error-".我所做的是有一个文件,我可以将自己的伪调用放入translate方法,并在自动更新时将所有可能的键添加到我的poedit中.

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

谢谢你的想法

php gettext internationalization poedit

7
推荐指数
1
解决办法
3311
查看次数

使用POEdit - 仅搜索特定域中的字符串

我创建了一个我希望翻译的WordPress主题.

在我的主题中,我使用了woocommerce(ie <?php _('Your cart', 'woocommerce'); ?>)的一些翻译.

Theese woocommerce字符串,我不想再翻译,因为它们已经翻译过了.但是当我使用poedit扫描我的主题时,它当然会找到所有文本域.

所以我的问题是:

如何告诉POEdit只选择特定文本域中的字符串?

  • __('Something', 'my-text-domain')
  • _e('Something else', 'my-text-domain')

我找到了这个答案:

但它似乎对我不起作用.我已ri:1,3c按照描述添加到列表中,但它没有改变任何内容,我也没有其他任何关于如何处理它的线索.

看看我是怎么做到的:

poedit来源关键词

php wordpress translation poedit po

6
推荐指数
1
解决办法
2068
查看次数