5

どちらが良いですか:

  1. gettext
  2. カスタムMySQL+キャッシュベースの機能

Gettextは一種の組み込み機能なので、パフォーマンスのために微調整されていると思います。poeditを使用することは苦痛であり、どのクライアントにも見せることは不可能です。

カスタム機能により、シンプルな翻訳インターフェースが可能になります。しかし、php/dbの使用には重いかもしれません。

どちらを使うと思いますか?

4

3 に答える 3

17

ローカライズは難しい。本当に難しいです。だけでなく"pairs of words" => "Wortpaare"、それよりもはるかに複雑です。ほとんどの人が gettext を見て「うーん、醜い」と言うときに忘れていることは、実装の技術的な詳細よりもローカリゼーションプロセスの方がはるかに重要だということです。これは、実際の翻訳者は通常、プログラマーではなく、おそらく社内にいないためです。これは、あなたが思っているよりもはるかに多くの頭痛を引き起こします. gettext は非常に古く、戦闘でテストされており、このプロセスをサポートするように調整された巨大なツールチェーンが背後にあります。i18n と l10n を適切に行うには、強力なシステムが必要です。gettext はそれであり、幅広いツールからサポートされています。あなたの Homebrewed Translation System™ はそうではありません。

まず第一に、翻訳可能な文字列を抽出するための堅牢なシステムが必要です。ソース コードから翻訳可能な文字列を自動的かつ再現可能に抽出できなければ、翻訳する新しい文字列ごとに膨大な作業が必要になります。gettext では、xgettextそれを行います。

次に、抽出された文字列を既存の翻訳と同期させるツールが必要です。これにより、翻訳が失われることはなく、可能であればわずかに変更された翻訳のみが保持されます。gettext では、msgmergeそれを行います。

次に、文字列に情報を追加する方法が必要です。それらをカテゴリ、「ドメイン」、およびコンテキストごとにグループ化できるようにしたい場合、翻訳者向けのコメントをソース コードに追加したい場合、翻訳者が翻訳にコメントを追加できるようにしたい場合があります。gettext はそれをすべてサポートします。

次に、ファイルを中国に送信して翻訳してもらう可能性があるため、さまざまなツールから適切にサポートされているファイル形式が必要です。それらを外部の翻訳者に送信する理由は、変更をマージするための優れた同期ツールが必要な理由でもあります。これは非常に非同期的なプロセスになる可能性があるためです。gettext は非常に古いため、PO ファイルは非常によくサポートされています。特定のニーズに応じて、さまざまなレベルでローカリゼーション プロセスをサポートするオープン ソース ツールや商用ツールが多数あります。

ローカリゼーションのタスクを過小評価しないでください。そのプロセスに適したツールを選択して学習してください。gettext は優れたツールですが、初心者向けではないことは確かです。

参考までに、Twigのgettext 拡張機能を次に示します。これにより、PHP の gettext がさらに優れたものになります。

于 2013-03-11T16:00:32.023 に答える
2

おそらく、MySQL と組み合わせて使用​​できるMemcachedを調べる必要があります。翻訳など、あまり頻繁に変更されないデータをフェッチするのに非常に便利です。

于 2013-03-11T15:06:39.960 に答える