Twig(テンプレートエンジン)の実用的なi18nの例を探しています。Twig:Working internationalization(i18n)の例
言語ファイルに関しては、ドキュメントは少し疎です。彼らはどこに行くべきですか、彼らはどのように見えるべきですか?私は.po/.moファイルで頑張っています。
誰かが正しい方向に私を指すことができれば...
参照:本当にファイル自体を私の言語について多くを教えてくれないthe i18n extension example。
注:私はTwigをSymfonyの一部ではなく、単独で使用したいと考えています。ここで
は私のphpファイルです:
<?php
header('Content-Type: text/html; charset=utf-8');
$vars = array();
foreach($_POST as $key => $value) {
$vars[$key] = json_decode(utf8_encode(urldecode($value)));
}
/* Prepare Twig template enginge */
require_once './lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('./templates');
$twig = new Twig_Environment($loader, array(
//'cache' => './cache',
'cache' => false
));
/* i18n */
$twig->addExtension(new Twig_Extensions_Extension_I18n());
$availableLanguages = array(
'en' => 'en_EN',
'de' => 'de_DE',
'default' => 'de_DE'
);
// Set language
$locale = array_key_exists($_GET['lang'], $availableLanguages) ? $availableLanguages[$_GET['lang']] : $availableLanguages['default'];
putenv('LC_ALL='.$locale);
setlocale(LC_ALL, $locale);
// Specify the location of the translation tables
bindtextdomain('kalkulator', 'includes/locale');
bind_textdomain_codeset('kalkulator', 'UTF-8');
// Choose domain
textdomain('kalkulator');
$template = $twig->loadTemplate('print.tpl');
$html = $template->render($vars);
switch($_GET['action']) {
case 'mail':
break;
default:
echo $html;
break;
}
?>
そして内部は/ロケールが含まれて私は、次のファイルがあります。
-rw-r--r-- 1 user group 670 Jul 28 10:17 kalkulator-de_DE.mo
-rw-r--r-- 1 user group 982 Jul 28 10:22 kalkulator-de_DE.po
-rw-r--r-- 1 user group 688 Jul 28 10:38 kalkulator-en_EN.mo
-rw-r--r-- 1 user group 1004 Jul 28 10:38 kalkulator-en_EN.po
そして、私はこれを指定するためのタグを使用していますprint.tplファイル内に翻訳される部分:
{% trans %}
Text to be translated
{% endtrans %}
小枝はテンプレートエンジンです。あなたは国際化のために何を期待していますか?それはフランス語のテンプレートを処理することができますか?そしてキューバのもの?私はできるはずだ;) - あなたが探しているものを共有してください。 – hakre
私の変更された回答を参照してください。 Twigにはgettextで動作するi18n拡張があります。 –
[この拡張子](https://github.com/smmoosavi/twig-php-gettext)を使用することができます。この拡張モジュールは純粋なPHPとシステムのgettextに依存しません。 – seyed