我們正計劃爲我們的ASP.NET網站添加多語言支持。我瞭解從基於當前文化的資源文件中抽取字符串的一般過程,但處理以下情況的最佳方法是什麼?多語言ASP.NET網站的動態生成語句
比方說,我們想向用戶展示他們今天製作了多少堆棧溢出帖子。可以說,i
是職位數。如果你只是用英文工作,你會得到下面的代碼。
if(i == 1)
{
postCountText = "You have made " + i + " post today";
} else {
postCountText = "You have made " + i + " posts today";
}
因此,正在創建的文本是基於我們是在處理單數還是複數的帖子。
如果我們想用其他語言創建帖子數文本呢?顯然,我們不能像上面那樣有很多條件語句,所以資源文件中的字符串需要自動工作來創建所需的輸出文本。在另一種語言中,當您在單數和複數之間移動時,它可能不僅僅是post(s)
單詞發生變化,也可能是單詞today
。
我到目前爲止唯一的想法是在外部資源文件中存儲兩個字符串,一個用於單數,另一個用於複數,然後將String.Format
應用於這些以將帖子數插入正確的位置。
即英語的資源文件將包含以下兩個字符串:
singlePostCount : "You have made {0} post today"
pluralPostCount : "You have made {0} posts today"
然後我會在下面的代碼來創建輸出文本:
if(i == 1)
{
postCountText = String.Format(GetResourceString("singlePostCount"), i);
} else {
postCountText = String.Format(GetResourceString("pluralPostCount"), i);
}
這則允許文本正確地更改任何語言。但是,如果某個語言的帖子數爲零,那麼需要不同的文本呢?等等。
這基本上是像「你讓{0}今天的帖子」從這個問題,我認爲這是不一樣的,他是什麼想知道。實際的問題是:如果句子根據$ amount $?的值而變化,該怎麼辦? – 2009-02-09 14:48:00