Расширения файлов |
.xlf, .xliff |
Расширение API |
symfony_xliff |
Импорт |
Да |
Экспорт |
Да |
Поддержка форм множественного числа |
Нет |
Поддержка описания |
Да |
Варианты формата |
enclose_in_cdata include_translation_state |
Symfony является высокопроизводительным фреймворком PHP, состоящим из различных предопределенных компонентов PHP. Локализация для приложений, построенных с использованием Symfony, может происходить с помощью таких форматов файлов, как .XLIFF, .YAML и массивы PHP.
Разница между Symfony .XLIFF и стандартным .XLIFF заключается в том, как они определяют, что представляет собой каждый <trans-unit>
. В то время как стандартные .XLIFF (а также большинство вариаций .XLIFF, поддерживаемых другими фреймворками) используют атрибут id
, Symfony .XLIFF использует атрибут resname
в качестве идентификатора.
Чтобы гарантировать, что строки загружаются в правильный locale, атрибут target-language
в заголовке файла Symfony .XLIFF должен соответствовать имени языкового стандарта, настроенному в соответствующем проекте.
Параметры формата
Идентификатор |
enclose_in_cdata |
Тип |
булевский |
Загрузить |
Нет |
Скачать |
Да |
По умолчанию |
false |
Описание |
Заключает переводы, содержащие html-теги, в CDATA. Если отключено, неподдерживаемые HTML-сущности заменяются их декодированными значениями. Например:
|
Идентификатор |
include_translation_state |
Тип |
булевский |
Загрузить |
Нет |
Скачать |
Да |
По умолчанию |
false |
Описание |
Включить состояние переводов в целевом языковом стандарте. Каждый |
Образец кода
<?xml version="1.0" encoding="UTF-8"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2"> <file original="global" datatype="plaintext" source-language="de-DE" target-language="en-GB"> <body> <trans-unit id="boolean_key" resname="boolean_key"> <source xml:lang="de-DE">--- true </source> <target xml:lang="ru-RU">--- правда </target> </trans-unit> <trans-unit id="empty_string_translation" resname="empty_string_translation"> <source xml:lang="de-DE"/> <target xml:lang="ru-RU"/> </trans-unit> <trans-unit id="key_with_description" resname="key_with_description"> <source xml:lang="de-DE">Посмотри на это! Этот ключ имеет описание!</source> <target xml:lang="ru-RU">Проверь это! This key has a description! (По крайней мере, в некоторых форматах)</target> <note>Я очень важное описание для этого ключа!</note> </trans-unit> <trans-unit id="key_with_line-break" resname="key_with_line-break"> <source xml:lang="de-DE">Этот перевод содержит перенос строки.</source> <target xml:lang="ru-RU">Этот перевод содержит перенос строки.</target> </trans-unit> <trans-unit id="nested.deeply.key" resname="nested.deeply.key"> <source xml:lang="de-DE">Я глубоко вложенный ключ</source> <target xml:lang="ru-RU">Я глубоко вложенный ключ.</target> </trans-unit> <trans-unit id="nested.key" resname="nested.key"> <source xml:lang="de-DE">Этот ключ вложен в пространство имен.</source> <target xml:lang="en-GB">Этот ключ вложен в пространство имен.</target> </trans-unit> <trans-unit id="null_translation" resname="null_translation"> <source xml:lang="de-DE"/> <target xml:lang="ru-RU"/> </trans-unit> <trans-unit id="sample_collection" resname="sample_collection"> <source xml:lang="de-DE">--- - первый элемент - второй элемент </source> <target xml:lang="en-GB">--- - первый элемент - второй элемент - третий элемент </target> </trans-unit> <trans-unit id="simple_key" resname="simple_key"> <source xml:lang="de-DE">Просто простой ключ с простым сообщением.</source> <target xml:lang="en-GB">Просто простой ключ с простым сообщением.</target> </trans-unit> <trans-unit id="unverified_key" resname="unverified_key"> <source xml:lang="de-DE">Этот перевод еще не подтвержден и ждет этого!</source> <target xml:lang="en-GB">Этот перевод еще не подтвержден и ждет этого. (В некоторых форматах мы также экспортируем этот статус)</target> </trans-unit> </body> </file> </xliff>