1

ネストされたキーを可能にするクリーンな国際化方法を探しています。

例: メッセージ = ブーツのツールを確認してください。
現在、ワードブートはソフトウェア全体で数百の文字列で使用されており、クライアントXに行くと、ブートをトランクに変更すると言います。したがって、次のような値にキーが埋め込まれた言語ファイルを作成したいと思います

message = ツールについて {boot} を確認してください。
ブーツ=トランク

これは SaaS アプリであり、ユーザーが Web インターフェイスを介して文字列を変更できるようにします。

4

2 に答える 2

0

あなたがしたいのは連結です- 2番目に一般的な国際化の欠陥です。言い換えれば、そうしないでください。この 100 個の文字列を複製することをお勧めします。文字列を連結する代わりに、有効なツール (正規表現をサポートするテキスト エディターなど) を使用するとかなり簡単です。

より長い説明:

  1. 多くの (ほとんどではないにしても) 言語にはInflectionの概念があります。つまり、連結したい単語をいくつかの異なる形式に翻訳する必要がある場合があります。

  2. 多くの場合、翻訳は文脈に依存します。単語がそのまま正確に翻訳されなければならない場合 (形式が変わるだけです)、文脈自体の場合は必要ありません。これは理論ではありません。次の例を検討してください。
    「{0} は {1} に切り替えられました」のような文字列がリソースにあり、「[some program] | [some function] has beenwitched [on] | [off]」に解決されました。問題は、それを正しくポーランド語に翻訳したい場合 (単なる例であり、他の多くの言語で発生します)、それがプログラムであるか関数であるかによって異なる必要があるということでした。プログラムが男性的 (" Program  [jakiś program] został [włączony] | [wyłączony]") であり、機能が女性的 ("* ] | [wyłączon* a * ]").
    単語の形式だけでなく、コンテキスト全体を変更する必要がありました (追加された単語を参照してください)!
    連結では実行できません。「ディスクのフットプリントはどうですか?」と言う人もいるかもしれません。 , スペースは最近安いです, それは何が正しいか間違っているかだけです. 数キロバイトを節約するためだけに単語を連結することは間違っており、深刻なローカライズ可能性の問題につながります.

  3. 場合によっては、抑揚が問題にならないこともありますが、状況に応じて、ムードを直説法から命令法に変更する必要があります。それは別の翻訳になります。

本当にメッセージ形式を使用する必要がある場合は、数値、通貨、および日付のみに使用することをお勧めします (有効な地域形式について覚えておいてください!)。

于 2012-05-26T08:33:00.570 に答える
0

これが良い考えかどうかはわかりません:

  • どの単語または一連の単語が実際に変更される前に、どの単語または一連の単語が変更されやすいかをどのように知ることができますか?
  • クライアントXが文から「お願いします」を削除したい場合はどうなりますか?
  • 複数形、さまざまな文法規則、単語間のジャンルの違いなどをどのように扱う予定ですか?

IMHO、システムは単純ですが、2%のケースで法案に適合するか、非常に複雑で、使用と構成が悪夢であり、とにかくめったに発生しない問題のために時間と可読性を失うことになりますアドホック検索/置換で修正できます。

単純なアプローチが適している場合は、トークンを識別するための特別なマークアップ (@boot@など) が必要であり、アプリケーションのビルド中に Ant の置換タスクなどを使用して置換を行います。

于 2012-05-26T06:53:07.590 に答える