5

GettextICU MessageFormatについて読んだとき、どちらもローカリゼーションに対する反対のアプローチであると常に説明されています。

しかし、両方を組み合わせることは興味深いアイデアだと思いました。書式設定には MessageFormat を使用し、言語に基づいて適切なテンプレートを選択するには Gettext を使用します。次の行に沿って:

setlocale(LC_ALL, lang)
output = MessageFormat(lang, gettext("There is {number 1} Foo in bar."), [1])

この方法の明白な (またはそれほど明白ではない) 欠点はありますか? 翻訳されたテンプレートがどのように選択されるかについて、MessageFormat の中心的な部分が欠けていますか?

4

1 に答える 1

4

あなたの方法の明らかな問題は、複数形がどのように処理されるかです。ICU にはCLDR の複数ルールのサポートが組み込まれていますが、gettext が使用しているものほど簡単でも柔軟でもありません。
基本的に、gettext では、翻訳者は必要な数の複数形を追加できます。これは、.po ファイル ヘッダーの選択規則によって管理されます。これは、CLDR ルール (CLDR のバージョンによっては正しくない可能性があります) を使用するよりも柔軟で正確なアプローチです。

于 2012-12-06T10:29:01.727 に答える