我知道大多数人使用下面的方法并为需要翻译的特定表创建翻译表,但这可能相当于表格的负荷。表格的语言翻译
CREATE TABLE Product
(
Product_id
,ProductTrans_id -- FK
)
CREATE TABLE ProductTranslation
(
ProductTrans_id
,Product_id
,Name
,Descr
,lang_code
)
下面的方法是否可行?假设您有许多表格需要翻译超过1列。你能否做以下事项,将所有翻译保留在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)
)
所以使用第二种方法,你会得到像这样
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
第二种方法似乎是一个很大的开销,并将涉及多个获取单个产品的翻译列..如果我正确地理解它..? +1,因为这是个好问题! –
我想一个好方法是首先考虑你的查询将看起来像什么..这将要求表设计 –
在第二种方法,你可以筛选TableName和ColumnName,然后通过table_row_id链接。也许很慢查询。只是想办法做到这一点,当需要翻译新表或列时,不需要模式更改。 – davey