0

アラビア語と英語をサポートする Android アプリケーションを開発していますが、データベースの設計についてはまだ混乱しています。

私が従っているアプローチは

  • 2 つのレコード (アラビア語と英語) を保持する言語テーブルの作成
  • 通常のデータを保持するテーブルの作成 (言語固有ではない)
  • 言語固有のコンテンツを保持する変換テーブルの作成

たとえば、(ヘルプ) を実装するために、次のテーブルを作成しました。

Language        (int id, text Code)
Help            (int id)
Help_translation(int id, int Help_id, int Language_id, text Question, text Answer)

私はこの解決策を何度も読んできましたが、何もしない (ヘルプ) の別の表をなぜ持っているのか、まだわかりません!

私のアプローチに何か問題がありますか?

4

1 に答える 1

0

一見すると、言語テーブルはシステムに一度だけ表示されます。ISO 国コード (ISO 3166) と ISO 言語コード (ISO 639-2) に基づいて、言語と地域に 'll_tt' 表記を使用することをお勧めします。したがって、en_gb英国英語、en_us米国英語、ar_saサウジアラビア アラビア語、およびar_egエジプト アラビア語の場合があります。これは、現在必要としているよりも強力かもしれませんが、将来の方向性を示します。

したがって、Language テーブルには次の列が含まれる場合があります。

  • id整数 (自動インクリメント) 主キー。
  • codechar(5) — ユニーク。

デザインのヘルプ テーブルは、「文書化」を目的としています。アプリケーションが使用できる有効なヘルプ番号を記録します。表のより完全なバージョンには、メッセージに関する情報が含まれる場合があります。導入されたバージョン。どのバージョンで廃止されたか (またはそうでない場合もあります — 約 10 年間のリリースで使用するのに適した国際化されたメッセージ ファイルがあります)。バージョンに関連付けられた日付 — またはバージョンの代わりの日付; 「翻訳者への注意事項」 (特別なガイドラインが必要な場合は、メッセージの翻訳方法に関するガイドライン)。

当面は、ヘルプ ID 番号だけの最小限のバージョンのヘルプ テーブルで十分です。

  • 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_IDLanguage_ID.

別の設計では、「メッセージ ID」と「言語 ID」、および翻訳された文字列 (メッセージ ID と言語 ID の主キー) を含む単純な変換テーブルがあります。メッセージのテーブルがあり、有効なメッセージ ID と以前のタイプのアウトラインのサポート データを識別します。これには、特定の言語/地域のメッセージの翻訳版がない場合に使用される (翻訳されていない) デフォルト メッセージが含まれる場合があります (または、不足しているメッセージを処理するためのより複雑なスキームを作成して、アラビア語が要求されたときに翻訳がたとえば、リビア (LY) は不完全であり、フォールバックしar_sa、その後にフォールバックします。en_gb)。ヘルプ テーブルには、ヘルプ ID と、質問用と回答用の 2 つのメッセージ ID 値が含まれる場合があります。このスキームの利点は、翻訳されたすべてのメッセージが 1 つのテーブルにあることです。

間違いなく、考案できる他のスキームがあります。

于 2012-12-29T22:02:52.160 に答える