Symfony 1.4-kompatibles I18N-Übersetzungssystem?
-
21-12-2019 - |
Frage
Ich migriere eine kleine App von Symfony in ein separates Projekt, und die einzige Symfony -Komponente, von der sie abhängt, ist die I18N -String -Übersetzung.Zum Beispiel:
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>
Gibt es ein ähnliches, möglichst kompatibles System, das als PHP-Paket verfügbar ist?
Ich bin daran interessiert, das zu behalten xml
Datei mit Übersetzungen, aber ich könnte auch mit einem anderen Format leben.
Aktualisieren
Was ich jetzt habe, inspiriert von @akkys Antwort:
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>
Leider ist das
<note>
Das Element verursachte Fehlermeldungen, und so habe ich es entfernt.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>
Lösung
Der Name des Ressourcendateiformats ist XLIFF.Möglicherweise finden Sie XLIFF, das PHP-Pakete verarbeitet, sowie XLIFF2-Konverter (Ihr bevorzugtes i18n-Format).
Sie können verwenden Übersetzung von Symfony-Komponenten auch wenn Sie Symfony im neuen Projekt nicht verwenden.Composer und Autoload machen es in Ihrem regulären PHP-Projekt verfügbar.Ich empfehle es.