为了在PHP中获得XLIFF / 2支持,在another answer中,有人建议使用 使用Symfony 2 Translation组件。
所以我将它from Github下载到目录../vendor/
并且天真地
试图使用它:
<?php
require_once '../vendor/Symfony/Component/Translation/Translator.php';
require_once '../vendor/Symfony/Component/Translation/MessageSelector.php';
require_once '../vendor/Symfony/Component/Translation/Loader/ArrayLoader.php';
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;
$translator = new Translator('fr_FR', new MessageSelector());
这不起作用,因为需要加载其他组件:
PHP Fatal error: Interface 'Symfony\\Component\\Translation\\TranslatorInterface' not found in /home/ec2-user/layout/vendor/Symfony/Component/Translation/Translator.php on line 25
现在,我可以为每个文件手动添加require_once
,直到所有文件
满足依赖性,但我不确定这是否是正确的方法。
如何在非Symfony项目中使用单个Symfony 2组件?那是一个 坏主意?
答案 0 :(得分:7)
使用 composer 管理您的依赖项。
首先在项目文件夹中创建一个composer.json
文件:
{
"require": {
"symfony/translation": "2.4.*"
}
}
然后下载作曲家并运行它:
wget http://getcomposer.org/composer.phar
php composer.phar install
您现在可以通过导入composer autoloader来使用您的组件:
<?php
require_once('vendor/autoload.php');
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;
$translator = new Translator('fr_FR', new MessageSelector());
$translator->setFallbackLocales(array('fr'));
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array(
'Hello World!' => 'Bonjour',
), 'fr');
echo $translator->trans('Hello World!')."\n";
答案 1 :(得分:3)