2008-10-02 89 views
17

我一直在玩.NET內置的本地化功能,他們似乎都依賴於將數據放入resx文件。你如何本地化一個數據庫驅動的網站

但是大多數系統不能依靠這個,因爲它們是數據庫驅動的。那麼你如何解決這個問題呢?有沒有建立在.NET的方式,或者你在SQL中創建一個翻譯表,並手動做這一切?如果你必須在大多數網站上這樣做,是否有任何理由甚至使用resx的本地化方式?

一個例子是我在我的網站上有一個FAQ列表,我在數據庫中保存了這個列表,所以我可以輕鬆地添加/刪除更多,但通過將其放入數據庫中,我沒有好的方法來翻譯這個信息轉換成多種語言。

回答

16

在我看來,本地化動態內容(例如,你的FAQ)應該由你在你的數據庫中完成。根據問題的存儲方式,我可能會創建一個「區域設置」列,並在從數據庫中選擇常見問題時使用該列。我不確定當你開始本地化大量表格時這是否會很好地擴展。

對於靜態內容(例如,表單字段標籤,靜態文本,圖標等),您應該可以很好地使用基於文件的資源。但是,如果你真的想要創建一個可以處理這個問題的自定義資源提供者實現,這看起來不會太難。

下面是一些相關鏈接:

0

目前,T轉換不是可以自動完成的。最好的方法是讓一個人翻譯並使用Nick的方法來顯示正確的語言。

2

對於數據模型中的給定項目,將說明部分拆分爲具有區域設置Id列(LCID)的本地化表格。

所以表產品不會實際上包含的產品描述或名稱,而只是它的硬性價值(產品編號,EAN,NumberInStock,NextStockData,IsActive,|評論)等

產品描述則包含 ProductId,Name,Description,LCID

2

我住在加拿大,所以使用多種語言是一件大事。我見過兩種方法。第一個選項是將特定記錄的所有本地化數據存儲在不同的表中,通過主鍵鏈接到原始表以及區域設置。第二種選擇類似於第一種,除了每種語言環境都有一個不同的表格,區域設置作爲表格名稱的後綴。

選項A

Item (ItemID, ...) 
ItemLocal (ItemID,LocaleID,....) 

選項B

Item (ItemID, ...) 
Item_ENUS (ItemID,....) 
Item_ENGB (ItemID,....) 
Item_FR (ItemID,....) 

第三個選擇我想到了最近的,這將是非常好的,如果一個數據庫支持它本身是存儲值的所有當地人在同一個領域。如果該字段設置爲varchar-multilocal,那麼您將不得不通過傳遞參數來指定語言來訪問它。就我所知,沒有像這樣存在的東西,但是我認爲這會讓事情變得更容易,並且更加流暢。

+3

FYI:local!= locale – Tanktalus 2008-10-02 20:04:14