現在Unityでスマホ向けアプリを制作しております。
SQLite(SQLiteUnityKitを使用)を使用してデータベースから
複数のテーブルを結合して検索をし、結果を返しTextに表示等をおこなっています。
テーブル構成(実際にはテーブル数は30以上あります)
キャラクターテーブル
chara_id | name | description |
---|---|---|
1 | 太郎 | 説明1 |
2 | 二郎 | 説明2 |
3 | 三郎 | 説明3 |
... | ... | ... |
武器テーブル
wepon_id | name | description |
---|---|---|
1 | 剣 | 説明1 |
2 | 斧 | 説明2 |
3 | 槍 | 説明3 |
... | ... | ... |
キャラと武器の対応テーブル
chara_id | wepon_id |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
... | ... |
実現したいこと
現在日本語のみに対応しているのですが、多言語対応をしたいと思っています。
その際に以下の方法を考えたのですが、どのように実装すれば管理しやすいでしょうか。
下記3パターンを考えてみたのですが、これ以外にもおすすめの方法などありましたらご教授お願いいたします。
#####1. 各言語ごとにデータベースファイルを分け、読み込むデータベースファイルをスクリプトで切り替える。
db_ja.db
db_en.db
を別ファイルで作成。
void OpenDataBase(Language lang) { string dbName = "db_ja.db"; switch (lang) { case Language.Japanese: dbName = "db_ja.db"; break; case Language.English: dbName = "db_en.db" break; } sqlDB = new SqliteDatabase(dbName); }
※ただしこの場合、文字列以外のデータが各DBファイルで重複するので、DBファイルの容量が増えてしまうのが懸念。
#####2. 文字列を別テーブルで定義し、各テーブルは文字列テーブルのidを参照。検索時に得たい言語を指定して検索。
文字定義テーブル
|string_id|ja|en|...|
|:--|:--|
|1|太郎|tarou|
|2|二郎|jirou|
|3|三郎|saburou|
|...|...|
※これだと全てのテーブルの文字列が1つにまとまってしまうので、実際は各テーブル毎の文字列定義テーブルを作る?
各テーブルはstring_idを参照。
var weponName = GetWeponName(id,language)
のように検索する。
#####3. 各テーブルにname_ja
name_en
のように対応言語ごとの列を作成
キャラクターテーブル
chara_id | name_ja | name_en |
---|---|---|
1 | 太郎 | tarou |
2 | 二郎 | jirou |
3 | 三郎 | saburou |
... | ... | ... |
これはないですね・・・。
回答3件
あなたの回答
tips
プレビュー