ほとんどの人が以下のアプローチを使用して、翻訳が必要な特定のテーブルの翻訳テーブルを作成することを知っていますが、これはテーブルの負荷になる可能性があります。
CREATE TABLE Product
(
Product_id
,ProductTrans_id -- FK
)
CREATE TABLE ProductTranslation
(
ProductTrans_id
,Product_id
,Name
,Descr
,lang_code
)
以下のアプローチは実行可能でしょうか?複数の列を翻訳する必要があるテーブルがたくさんあるとします。次のようにして、すべての翻訳を 1 つのテーブルに保持できますか? このテーブルは、時間の経過とともにサイズが非常に大きくなると思います。
CREATE TABLE translation_entry (
translation_id int,
language_id int,
table_name nvarchar(200),
table_column_name nvarchar(200),
table_row_id bigint,
translated_text ntext
)
CREATE TABLE translation_language (
id int,
language_code CHAR(2)
)
したがって、2番目のアプローチを使用すると、次のようなテキストが得られます
select
product.name
,translation_entry.translated_text
from product
inner join translation_entry on product.product_id = translation_entry.table_row_id
and translation_entry.table_name = 'Product' and translation_entry.table_column_name = 'Name'
and language_id = 3