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