私はMustacheとi18n(php、Wordpress内)を併用しようとしています。私は、このような何かひげそりパラメータ付きの口頭番号
class my_i18n {
public function __trans($string) {
return __($string, 'theme-name');
}
}
class mytache {
public function __()
{
return array('my_i18n', '__trans');
}
}
その後出力に国際化文字列でテンプレートをうまく働い__基本的な機能を持って、私は単にこれまでのところ、すべてがうまくている。この
$context = new mytache;
$template = "<div>{{#__}}String to translate{{/__}}</div>";
$m = new Mustache;
echo $m->render($template, $context);
を行うことができます。しかし、私はパラメータで文字列を翻訳できるようにしたい。すなわちsprint_f(__('Account Balance: %s'), $balance);
に相当します。
私は{{#__}}Account Balance: {{balance}}{{/__}}
のような何かをすると動作しないようです。内側のタグが最初に変換されるため、フレーズの翻訳が見つかりませんので、私は推測しています。
Mustacheでこれをきれいに達成する方法はありますか?
UPDATEは:ここ(bobthecowから巨大な助けを借りて)最終結果の抜粋です:私に代わって
class I18nMapper {
public static function translate($str) {
$matches = array();
// searching for all {{tags}} in the string
if (preg_match_all('/{{\s*.*?\s*}}/',$str, &$matches)) {
// first we remove ALL tags and replace with %s and retrieve the translated version
$result = __(preg_replace('/{{\s*.*?\s*}}/','%s', $str), 'theme-name');
// then replace %s back to {{tag}} with the matches
return vsprintf($result, $matches[0]);
}
else
return __($str, 'theme-name');
}
}
class mytache {
public function __()
{
return array('I18nMapper', 'trans');
}
}
「それは動作しません」>。< –
ひげそりテンプレートから文字列を抽出するのにどのようなキーワードを使用しましたか? –