2011-04-13 35 views
0

我正在研究.NET(VB.NET)中CMS的國際化。在管理部分,我們使用了資源,但對於我們需要UI的客戶來說,有人可以看到標籤並將它們從一種語言翻譯成另一種語言。.NET中的國際化。數據庫驅動?資源交互?

所以,首先想到的是做數據庫三和用表驅動:

Label  Translation   Language 
-----  -----------   -------- 
id   id     id 
name  keyname_id   name 
filename language_id 
      value 

然後創建一個界面,這樣就可以讓客戶首先選擇你想翻譯的頁面的文件名,標籤,然後選擇他想要的語言並翻譯它,並將其存儲在翻譯表中。 我在這裏看到一個問題:我將如何從頁面上獲取所有標籤?

我還發現了一個可以以交互方式進行翻譯的資源管理器的示例。 This is the example。 這個解決方案的好處是你正在使用資源,所以一切都變得更容易,因爲一些工作已經完成。另一方面,這種結構可能更難實施,我不知道,因爲我沒有經歷過這個。

那麼,您如何看待這兩種方法呢?什麼對你更好?也許有第三種方法更容易?


編輯:我也發現有關Resource-provider model此鏈接。你怎麼看待這件事?也許它可能是有用的,但我不知道,也許這對我的目的太多了。我想從哪裏開始

+0

請參閱這些問題[如何翻譯另一種語言的ASP.Net網站](http://stackoverflow.com/questions/2973632/how-to-translate-website-in-another-languageasp-net-c)以及[在.Net中進行本地化的有效策略](http://stackoverflow.com/questions/5253614/effective-strategies-for-localization-in-net) – MarkJ 2011-04-13 11:37:57

+0

好的。我會檢查他們。謝謝! – alfizqu 2011-04-13 11:52:40

+0

嗯......我看過他們,他們是非常有用的,第一個是很好的建議,好的,第二個給翻譯好主意,但沒有用戶界面,事實上我翻譯了一部分CMS與此技術,但客戶端有一部分,我需要一個UI,以便他可以選擇他的標籤並輕鬆翻譯。感謝這些鏈接! ;-) – alfizqu 2011-04-13 12:48:11

回答

0

在LedgerSMB,我們就用下面的方法:

  1. 應用字符串(和字符串代碼)獲取一個標準的國際化框架(GNU gettext的基本)翻譯。

  2. 業務數據在數據庫中獲得手動轉換。所以,你可以添加翻譯到的部門名稱,項目名稱,產品和服務等的描述

我們給你說的這個問題的方法是加入其他表,所以我們可能有:

CREATE TABLE parts (
    id int primary key.... -- autoincrements but not relevant to this example 
    description text, 
    ... 
); 

CREATE TABLE language (
    code varchar(5) primary key, -- like en_US 
    name text unique, 
); 

CREATE TABLE parts_translation (
    parts_id int not null references parts(id), 
    language_code varchar(5) not null references language(code), 
    translation text 
); 

然後我們可以在運行時根據所需的語言進行查詢。