Intereting Posts
Можно ли создавать статические переменные во время выполнения в PHP? Сервер Nginx (не отображаются изменения) – Удалить кеш? PHP mail () возвращает false, но ошибка не регистрируется Что такое функция RECURSIVE в PHP? Обновите страницу PHP для каждой предопределенной секунды. как автоматически копировать весь каталог в виде эскизов, используя phpthumb (или некоторую другую библиотеку) PHP – Если переменная не пуста, echo html-код Разрешения на работу и папки Cron – разрешение отклонено simplexml_load_string не анализирует мою XML-строку. Проблема с кодировкой? Параметрированные запросы PHP / MySQL Скрыть узлы Drupal из поиска Ошибка PHP Mailer: ошибка Mailer – должен содержать как минимум один адрес электронной почты получателя Получать отфильтрованные значения из значений типа массива между диапазоном 10-20 Хорошо ли использовать сериализацию в PHP для хранения данных в БД? Сделать $ _SESSION доступным в контроллерах

Symfony 1.4 совместимая система перевода I18N?

Я переношу небольшое приложение из Symfony в отдельный проект, и единственным компонентом Symfony, от которого он зависит, является строковый перевод I18N. Например:

Есть ли аналогичная, предпочтительно совместимая система, доступная в виде пакета 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> 

    Название файла файла ресурсов – XLIFF. Вы можете найти XLIFF для обработки php-пакетов, а также xliff2 (ваш любимый формат i18n).

    Вы можете использовать перевод компонентов Symfony, даже если вы не используете Symfony в новом проекте. Композитор и автозагрузка сделают его доступным в вашем обычном проекте php. Я рекомендую это.