一見すると、言語テーブルはシステムに一度だけ表示されます。ISO 国コード (ISO 3166) と ISO 言語コード (ISO 639-2) に基づいて、言語と地域に 'll_tt' 表記を使用することをお勧めします。したがって、en_gb英国英語、en_us米国英語、ar_saサウジアラビア アラビア語、およびar_egエジプト アラビア語の場合があります。これは、現在必要としているよりも強力かもしれませんが、将来の方向性を示します。
したがって、Language テーブルには次の列が含まれる場合があります。
id整数 (自動インクリメント) 主キー。
codechar(5) — ユニーク。
デザインのヘルプ テーブルは、「文書化」を目的としています。アプリケーションが使用できる有効なヘルプ番号を記録します。表のより完全なバージョンには、メッセージに関する情報が含まれる場合があります。導入されたバージョン。どのバージョンで廃止されたか (またはそうでない場合もあります — 約 10 年間のリリースで使用するのに適した国際化されたメッセージ ファイルがあります)。バージョンに関連付けられた日付 — またはバージョンの代わりの日付; 「翻訳者への注意事項」 (特別なガイドラインが必要な場合は、メッセージの翻訳方法に関するガイドライン)。
当面は、ヘルプ ID 番号だけの最小限のバージョンのヘルプ テーブルで十分です。
Help_Translation テーブルには、アプリケーションが表示する文字列が格納されます。ここidでは列の価値は最小限です。私はそれを省略します(ただし、必要に応じて保持できます)。Help_ID列は、ヘルプ テーブルへの外部キー参照です。このLanguage_ID列は、Language テーブルへの外部キー参照です。選択したアプリケーションでは、ヘルプ項目ごとに質問と回答の両方があるようです。
したがって、Help_Translation テーブルには次の列があります。
id整数 (自動インクリメント、オプション、いつ使用するかわからない)。
Help_ID整数 — 外部キーはヘルプ (ID) を参照します。
Language_IDinteger — 外部キー参照 Language(ID)。
Questiontext — 指定された Help_ID の適切な言語での質問。
Answertext — 指定された Help_ID の適切な言語での質問への回答。
- 主キー:
Help_IDとLanguage_ID.
別の設計では、「メッセージ ID」と「言語 ID」、および翻訳された文字列 (メッセージ ID と言語 ID の主キー) を含む単純な変換テーブルがあります。メッセージのテーブルがあり、有効なメッセージ ID と以前のタイプのアウトラインのサポート データを識別します。これには、特定の言語/地域のメッセージの翻訳版がない場合に使用される (翻訳されていない) デフォルト メッセージが含まれる場合があります (または、不足しているメッセージを処理するためのより複雑なスキームを作成して、アラビア語が要求されたときに翻訳がたとえば、リビア (LY) は不完全であり、フォールバックしar_sa、その後にフォールバックします。en_gb)。ヘルプ テーブルには、ヘルプ ID と、質問用と回答用の 2 つのメッセージ ID 値が含まれる場合があります。このスキームの利点は、翻訳されたすべてのメッセージが 1 つのテーブルにあることです。
間違いなく、考案できる他のスキームがあります。