多くの小さなパッケージで構成される大規模なアプリケーションを開発しています。各パッケージには、ローカライズ用の独自のリソースファイルセットがあります。
ローカライズ文字列を整理して命名するための最良のアプローチは何ですか?
これまでの私の考えは次のとおりです。
重複の処理
同じテキスト(たとえば、「Zip code」)が特定のパッケージ内で複数回出現する場合があります。プログラミング本能(DRY)は、すべてのオカレンスで共有される単一の文字列リソースを作成するように指示します。
繰り返しになりますが、翻訳者は場所によっては長い翻訳( "Postleitzahl")を選択し、スペースの少ない場所では短い翻訳( "PLZ")を選択することもできます。または、一部のオカレンス(「Zip code:」)にコロンを追加し、他のオカレンスには追加しないこともできます。または、場所によっては異なる大文字(「郵便番号」)が必要になる場合があります。これらの引数はすべて、内容が同一であっても、使用ごとに1つのリソースを作成することを指します。
ネーミング
重複を排除することを目的とする場合、contentでリソースに名前を付けることは理にかなっています。おそらくプレフィックスを介した使用の種類を示唆しています。我々が持っているかもしれだからlabelOK
= 「OK」を、messageFileTooLarge
= 「ファイルは、最大ファイルサイズを超えています。」、およびlabelZipCode
= "Zip code"。
コンテンツによる命名には、フォーマット引数を自然に処理できるという利点があります。リソースはmessageFileHas_0_MBWhileMaximumIs_1_MB
明らかに、実際のファイルサイズと最大ファイルサイズの2つのフォーマット引数を取ります。
ただし、重複を許可する場合、コンテンツだけで名前を付けることは意味がありません。一意のリソース名を取得するには、リソース名に使用場所を何らかの形で含める必要があります。識別子は少し長くなる傾向がありますが、グラフィカルコントロールでは機能します:fileSelectionConfirmationButtonText
= "OK"、customerDetailsTableColumnZipCode
= "Zip Code"。ただし、非ビジュアルコードファイルの場合は難しくなります。最終的に表示される場所がわからない場合、文字列の特定の使用法にどのように名前を付けますか?コードファイルと関数名で?私にはかなり不器用で脆いようです。
全体として、重複を許可しようとしていますが、これをサポートする一貫した命名スキームを見つけるのに苦労しています。
編集:この質問には2つの側面があります。リソースを整理する方法(DRYと複製)、および名前の付け方です。これまでのところ、答えは最初の側面に集中しています。命名規則に関するフィードバックをお願いします!