- Добавлена поддержка XLIFF 2.0
- Возможность дампить каталоги переводов
- Добавлена опция, позволяющая указать дополнительные пути загрузки файла перевода.
Добавлена поддержка XLIFF 2.0
XLIFF это формат, с помощью Symfony рекомендуется создавать файлы перевода, используемые для интернационализации веб-сайтов и приложений. До Symfony 2.8, единственной версией XLIFF поддерживаемой Symfony был 1.2, эта версия, которая вышла еще феврале 2008 года.
Начиная с Symfony 2.8, мы также поддерживаем XLIFF 2.0, это самая последняя версия стандарта, опубликована в августе 2014 г. С учетом сложности стандарта XLIFF, мы поддерживаем только подмножество функции, позволяющих анализировать и дампить XLIFF 2.0 файлы.
При демпе каталога перевода, используйте новый параметр версии XLIFF, чтобы установить версию XLIFF 2,0. В противном случае она будет установлена по умолчанию, как XLIFF 1.2:
use Symfony\Component\Translation\MessageCatalogue; use Symfony\Component\Translation\Dumper\XliffFileDumper; $catalogue = new MessageCatalogue('en_US'); $catalogue->add([ 'foo' => 'bar', ]); // ... $dumper = new XliffFileDumper(); $dumper->dump($catalogue, ['xliff_version' => '2.0', ...]);
При загрузке каталогов, Symfony определяет версию автоматически, поэтому вам просто нужно создать файл XLIFF, используя формат 2.0:
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en-US" trgLang="ja-JP"> <file id="f1" original="Graphic Example.psd"> <skeleton href="Graphic Example.psd.skl"/> <group id="1"> <unit id="1"> <segment> <source>foo</source> <target>XLIFF 文書を編集、または処理 するアプリケーションです。</target> </segment> </unit> </group> </file> </xliff>
Возможность дампить каталоги переводов
В Symfony 2.7 и предыдущих версиях, когда вы хотели преобразовать каталог перевода в некотором формате (например YAML), вам необходимо сдампить его содержимое в файл и затем уже читать из этого файла.
В Symfony 2.8, FileDumper
включает в себя метод formatCatalogue()
, который преобразует содержимое каталога в заданном формате и возвращает результат:
use Symfony\Component\Translation\MessageCatalogue; use Symfony\Component\Translation\Dumper\YamlFileDumper; $catalogue = new MessageCatalogue('en'); $catalogue->add( 'foo.bar' => 'value', )); // BEFORE $dumper = new YamlFileDumper(); $tempDir = sys_get_temp_dir(); $dumper->dump($catalogue, ['path' => $tempDir, 'as_tree' => true, 'inline' => 999]); $formattedCatalogue = file_get_contents($tempDir); // AFTER $formattedCatalogue = $dumper->formatCatalogue( $catalogue, 'messages', ['as_tree' => true, 'inline' => 999] );
Добавлена опция, позволяющая указать дополнительные пути загрузки файла перевода.
В приложениях Symfony, задание имен файлов перевода и мест их нахождения подчиняется строгим правилам. Если вам необходимо загрузить файлы из других мест, возможно, потребуется compiler pass, чтобы указать сервису переводчика где находятся ваши файлы.
В Symfony 2.8, служба translator
получила новую опцию под названием paths
, которая позволяет определить массив путей, где компонент должен искать файлы перевода:
# app/config/config.yml translator: fallback: "%locale%" paths: ['%kernel.root_dir%/../vendor/internal/package/translations']
Источник: http://symfony.com/blog/new-in-symfony-2-8-translator-improvements