I am moving a small application from Symfony to a separate project, and only the Symfony Component on which it depends is the I18N string translation. Example:
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>
Is there a similar, preferably compatible system available as a PHP package?
I am interested in saving a file xmlwith translations, but I could also live in a different format.
Update
What I have now is inspired by @akky's answer:
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>
Unfortunately, the item <note>caused error messages, and therefore I deleted it.
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>
source
share