Sistema di traduzione I18N compatibile con Symfony 1.4?
-
21-12-2019 - |
Domanda
Sto migrando una piccola applicazione da Symfony in un progetto separato, e l'unico Il componente di Symfony da cui dipende è la traduzione di stringhe I18N.Per esempio:
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>
Esiste un sistema simile, preferibilmente compatibile, disponibile come pacchetto PHP?
Sono interessato a mantenere il xml
file con le traduzioni, ma potrei anche
vivere con un formato diverso.
Aggiornamento
Quello che ho adesso, ispirato dalla risposta di @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>
Sfortunatamente, il
<note>
L'elemento ha causato messaggi di errore e così l'ho rimosso.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>
Soluzione
Il nome del formato del file di risorse è XLIFF.Potresti trovare XLIFF che gestisce pacchetti php, nonché convertitori xliff2 (il tuo formato i18n preferito).
Puoi usare Traduzione dei componenti Symfony anche se non stai usando Symfony nel nuovo progetto.Il compositore e il caricamento automatico lo renderanno disponibile sul tuo normale progetto php.Lo consiglio.