我正在将一个来自Symfony的小应用程序迁移到一个单独的项目中,而且是唯一的 它依赖的Symfony组件是I18N字符串转换。例如:
action.class.php
:
$this->culture = 'pt_BR';
templates/search_box.php
:
<h1><?php echo __('Destination') ?></h1>
i18n/pt_BR/messages.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0">
<file datatype="plaintext" source-language="en"
target-language="pt_BR" original="messages">
<body>
<note>
SEARCH BOX
</note>
<trans-unit id="0">
<source>Destination</source>
<target>Destino</target>
</trans-unit>
</body>
</file>
</xliff>
是否有类似的,最好是兼容的系统,可用作PHP包?
我有兴趣保留xml
文件的翻译,但我也可以
以不同的格式生活。
我现在所拥有的,受到@ akky答案的启发:
composer.json
:
{
"name": "example/layout",
"description":
"Provides common layout components such as header / footer.",
"license": "proprietary",
"require": {
"symfony/translation": "2.4.*",
"symfony/config": "~2.0"
}
}
i18n/messages.pt_BR.xliff
:
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="messages">
<body>
<trans-unit id="0">
<source>Destination</source>
<target>Destino</target>
</trans-unit>
</body>
</file>
</xliff>
不幸的是,<note>
元素导致了错误消息,所以我
删除它。
public/helper.inc.php
:
<?php
require_once '../vendor/autoload.php';
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;
use Symfony\Component\Translation\Loader\XliffFileLoader;
use Symfony\Component\Config\Resource\FileResource;
$loader = new XliffFileLoader();
$catalogue = $loader->load('../i18n/messages.pt_BR.xliff', 'pt_BR');
function __($text) {
global $catalogue;
return $catalogue->get($text);
}
public/header.php
:
<?php require_once('helper.inc.php') ?>
<h1><?php echo __('Destination') ?></h1>
答案 0 :(得分:2)
资源文件格式的名称是XLIFF。你可能会发现XLIFF处理php包,以及xliff2(你最喜欢的i18n格式)转换器。
即使您没有在新项目中使用Symfony,也可以使用Symfony Components Translation。 Composer和autoload将在常规的php项目中提供。我推荐它。