【发布时间】:2014-03-29 21:32:31
【问题描述】:
我正在将一个小应用程序从 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>
【问题讨论】:
标签: php internationalization symfony1 symfony-1.4 xliff