saeven/zf2-poeditor

gettext的前端,让您轻松翻译PHP和Twig文件

0.9 2016-02-11 18:57 UTC

This package is auto-updated.

Last update: 2024-09-14 19:25:28 UTC


README

想要一个本地的PHP/Twig文件解析器,并带有用于处理gettext复杂性的Web界面?这个项目就是您要找的!

工作原理

该项目结合了一个解析器、一个PHP PO文件编辑器和gettext CLI命令,以实现像PoEdit这样的程序在表面上的功能。您可以在代码中使用翻译标记,如下所示:

// php code
_( "this string will automatically get picked up by gettext");
$sm->get('translator')->translate( "So will this one" );
$el->setLabel( "This one too");
// twig code
{% trans %}This is a singular translation{% endtrans %}
{% trans "This is also a singular translation" %}

{% set apples = 3 %}
{% trans %}
There is one apple in the cart.
{% plural apples %}
There are {{ apples }} in the cart.
{% endtrans %}

然后,当您使用Web界面时,您将看到一组字段,您可以在这里编辑所有可翻译文本。

安装

要安装包

composer require saeven/zf2-poeditor

然后将这些模块添加到您的ZF2应用程序配置中

CirclicalTranslationEditor

访问/translate以确认已设置。如果您还没有安装Twig/Trans桥接器,您也可以加载

CirclicalTwigTrans

以获得Twig的{% trans %}

您必须确保已经安装了gettext。使用以下命令检查您的系统:

which msgfmt
which gettext
which xgettext
which msguniq

如果它们都存在,您就可以开始工作了。否则,请在Google上查找如何在您的系统上安装gettext二进制文件的方法。

配置

一旦您已下载Composer包,请将autoload配置复制到您的项目中

cp ./vendor/saeven/zf2-poeditor/config/autoload/circlical.translator.local.php ./config/autoload

在该文件中,您将看到这些配置键

占位符

如果您来自将PoEdit与Twig提取器结合的阵营,您会记得那些得到巨大错误消息但没有原因的实例。90%的情况下,这是因为开发者添加了一个未在提取器中注册的定制过滤器或辅助函数。结果是破坏:提取器崩溃,PoEdit无法传递错误,您只能剪切和粘贴消息来识别罪魁祸首。

引入占位符。

当您使用此包时,如果遇到这种情况,您将清楚地看到Twig错误。

![错误示例] (http://i.imgur.com/GW2LmIr.png)

在这张图片中,您可以看到GrilledCheese辅助函数未注册(真可惜,如此美味)。在Twig文件中的某个地方有一个{{ GrilledCheese }}正在引起问题。要修复此问题

  • 打开翻译器配置
  • 将'GrilledCheese'添加到函数占位符中
  • 保存配置
  • 在翻译器中点击刷新

过滤器的工作方式类似,错误消息将正确引导您。

一些说明!

区域设置发现

区域设置发现取决于您模块中gettext消息文件夹的正确设置。这些可能如下所示:

module/Application/language/en_US/LC_MESSAGES module/Application/language/fr_CA/LC_MESSAGES

您必须设置这些,否则翻译器下拉列表中将没有区域设置。

扫描模式

系统仅扫描您的模块文件夹,以查找PHP和Twig文件。

编译触发器

选择区域设置时编译pot文件。

需要配置!

如果您不配置您正在工作的语言,则无法正确放置PO头。如果发生这种情况,则无法从po编译到mo。请确保使用语言团队、字符集和语言复数形式配置您的文件。

健全性检查

当您工作时,您可以检查./data/cache/translator文件夹中的这些文件,以确认一切正常

  • *.php.pot
  • *.pot
  • translator.ini

贡献

这是第一个版本,但它工作得非常好。我希望能够与Expressive一起实现PSR-7,这样所有框架都可以从中受益。将这个工具推向世界只会让它变得更好!你有什么想法或者可以解决的问题吗?提交PR,让我们把这个工具打造成一个可靠的PoEdit替代品吧!

提前感谢!