我知道大多數人使用下面的方法併爲需要翻譯的特定表創建翻譯表,但這可能相當於表格的負荷。表格的語言翻譯
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