これが私がやろうとしていることです。次の構造のテーブルがあります。これは、他のテーブルの他のデータの翻訳された値を保持することになっています
Translations
| Language id | translation | record_id | column_name | table_name |
====================================================================
| 1 | Hello | 1 | test_column | test_table |
| 2 | Aloha | 1 | test_column | test_table |
| 1 | Test input | 2 | test_column | test_table |
ビューで使用するコードには、このテーブルを検索し、ユーザーの言語で文字列を返す関数があります。文字列が自分の言語に翻訳されていない場合、関数はアプリケーションのデフォルトで文字列を返します (としましょうID = 1
)
正常に動作しますが、これを適用するには約 600 個のビュー ファイルを使用する必要があります...元のレコードの直前に CodeIgniter モデルに SQL を挿入して$this->db->get()
、元の列を翻訳したもの。
このようなもの:
$this->db->select('column_name, col_2, col_3');
// Injected SQL pseudocode:
// If RECORD EXISTS in table Translations where Language_id = 2 and record_id = 2 AND column_name = test_column AND table_name = test_table
// BEGIN
// SELECT translations.translation as column_name
// WHERE translations.table_name = test_table AND column_name = test_column AND record_id = 2
// END
// ELSE
// BEGIN
// SELECT translations.translation as column_name
// WHERE translations.table_name = test_table AND column_name = test_column AND record_id = 1
// END
$this->db->get('test_table');
これはどういうわけか行うことは可能ですか?