一種特殊的多語言解決方案

2021-09-05 20:21:51 字數 2645 閱讀 8178

一直以來多語言問題都是個讓人頭疼的問題,不是這個問題有多難,而是很繁瑣,而我們目前的這個專案有點特殊,我希望最大限度的化繁為簡,以下是我解決這個問題的方案。

我們的專案有這樣兩個前提:

1、要支援多語言但最多三種語言,一般情況下就兩種語言,所以並沒有隨時切換語言的要求。

2、我們希望有一種可以初期不用管語言問題,之後統一翻譯的方案

基於這麼兩點,我們提出了這樣的方案:

1、初期寫程式時不用關心多語言的翻譯工作,只要將所有使用到中文的地方都用{}擴上

2、在資料庫中chinese會設定為唯一約束

3、所有的翻譯工作會在basepage中的render方法中作

4、所有的頁面會繼承basepage

5、翻譯時會根據當前的語言設定構建以language表中chinese做key,相應的語言為value的字典,然後查詢需要翻譯的字串是不是在字典中,如果不在就生成這一行。

資料庫設計四個字段

id,chinese,english,other

basepage原始碼

using

system;

using

system.data;

using

system.configuration;

using

system.linq;

using

system.web;

using

system.web.security;

using

system.web.ui;

using

system.web.ui.htmlcontrols;

using

system.web.ui.webcontrols;

using

system.web.ui.webcontrols.webparts;

using

system.xml.linq;

using

system.text.regularexpressions;

using

system.text;

using

system.collections;

using

system.collections.generic;

using

system.io;

using

system.diagnostics;

//////

basepage 的摘要說明

///public

class

basepage : system.web.ui.page

//需要替換的標籤,標籤頭為數字字母下劃線漢字

static

readonly

regex re 

=new

regex(@"

((\)|(\%7d))",

regexoptions.multiline 

|regexoptions.ignorepatternwhitespace);

//不需要替換的標籤

static

readonly

regex re_nr 

=new

regex(

@"[\w\w]*?

", regexoptions.multiline 

|regexoptions.ignorecase);

private

string

rendertag(

refstring

content)

content 

=sb.tostring();

}else

return

content;

}private

string

replacetag(

refstring

content)

,,matchcollection mc 

=re.matches(content);

if(dic 

==null

)for

(inti =

0; i 

<

mc.count; i++)

')))

'));if(

!dic.containskey(mc[i].value.trimstart(''

)))'

));}

}else

if(dic[mc[i].value.trimstart(''

)] ==

null

)else

')].tostring());}}

return

content;

}protected

override

void

render(htmltextwriter writer)

catch

(exception ex)

finally}}

這樣設計的

優點1、初期寫程式時不用關心多語言的翻譯工作,只要將所有使用到中文的地方都用{}擴上

2、省去了大量命名相應文字的工作

3、直接用中文標示要顯示到頁面的文字,容易理解

缺點1、如果中文是一樣的翻譯,而其他語言翻譯卻不一樣時不好解決,但這種情況似乎不常見

一種特殊的多語言解決方案

一直以來多語言問題都是個讓人頭疼的問題,不是這個問題有多難,而是很繁瑣,而我們目前的這個專案有點特殊,我希望最大限度的化繁為簡,以下是我解決這個問題的方案。我們的專案有這樣兩個前提 1 要支援多語言但最多三種語言,一般情況下就兩種語言,所以並沒有隨時切換語言的要求。2 我們希望有一種可以初期不用管語...

特殊的多語言解決方案

一直以來多語言問題都是個讓人頭疼的問題,不是這個問題有多難,而是很繁瑣,而我們目前的這個專案有點特殊,我希望最大限度的化繁為簡,以下是我解決這個問題的方案。我們的專案有這樣兩個前提 1 要支援多語言但最多三種語言,一般情況下就兩種語言,所以並沒有隨時切換語言的要求。2 我們希望有一種可以初期不用管語...

Cool MVC 多語言的另一種解決方案

hello,這篇文章之所以叫 mvc多語言的另一種解決方案,是因為園子裡已經有一篇叫 asp.net mvc 多語言解決方案 的文章了。文中提到 這裡使用了 resx 資源檔案,注意這裡這個檔案需要被編譯後才能使用,否則找不到已經增加的項。編譯這個可以使用.net 自帶的 resgen.exe。意思...