ローカリゼーションは困難です。本当に難しいです。 "pairs of words" => "Wortpaare"
だけではありません 、それよりもはるかに複雑です。ほとんどの人がgettextを見て、「うーん、醜い」に行くときに忘れてしまうこと ローカリゼーションプロセス 実装の技術的な詳細よりもはるかに重要です。これは、実際の翻訳者は通常プログラマーではなく、おそらく社内にいないためです。これはあなたが思っているよりもはるかに多くの頭痛を引き起こします。 gettextは本当に古く、バトルテストが行われ、このプロセスをサポートするように調整された巨大なツールチェーンが背後にあります。 i18nとl10nを適切に実行するには、強力なシステムが必要です。 gettextはそれであり、幅広いツールからのサポートがあります。自作の翻訳システム™はそうではありません。
まず、抽出するための堅牢なシステムが必要です 翻訳可能な文字列。ソースコードから翻訳可能な文字列を自動的かつ再現可能に抽出することができなければ、翻訳したい新しい文字列ごとに膨大な作業が必要になります。 gettextでは、xgettext
次に、翻訳が失われることなく、可能であればわずかに変更された翻訳のみが保持されるように、抽出された文字列を既存の翻訳と同期するツールが必要です。 gettextでは、msgmerge
次に、文字列に追加情報を追加する方法が必要です。カテゴリ、「ドメイン」、コンテキストでグループ化できるようにしたい場合、翻訳者のコメントをソースコードに追加したい場合、翻訳者が翻訳にコメントを追加できるようにしたい場合があります。 gettextはそれをすべてサポートします。
次に、ファイルを中国に送信してそこで翻訳してもらう可能性があるため、さまざまなツールから適切にサポートされているファイル形式が必要です。それらを外部の翻訳者に送信する理由は、変更をマージするための優れた同期ツールが必要な理由でもあります。これは、非常に非同期のプロセスである可能性があるためです。 gettextは非常に古いため、POファイルは非常によくサポートされています。特定のニーズに応じて、さまざまなレベルでローカリゼーションプロセスをサポートする多くのオープンソースおよび商用ツールがあります。
ローカリゼーションのタスクを過小評価しないでください。プロセスに適したツールを選択して学習してください。確かに最も初心者に優しいわけではないにしても、gettextは素晴らしいツールです。
価値のあるものとして、ここにTwigのgettext拡張機能 、これにより、PHPのgettextがさらに改善されます。