2016-04-04 36 views
2

背景
我們有一箇舊的webforms應用程序,我們沒有使用任何我知道的自定義語言/全球化代碼。我們正在將resx文件用於特定於文化的資源。對於中文,我們目前有 resx文件:zh,zh-cn,zh-hans和zh-hant。爲了簡單起見,我希望將其配對爲:zh-hans和zh-hant。我們不打算支持任何特定於地區的變體;只是通用的簡體中文和通用繁體中文。如果我不需要支持特定於語言環境的變體,我可以只使用zh-Hans/zh-Hant resx文件嗎?

問題(S)

  1. 我的主要問題是:有沒有在那裏我會需要有比ZH-漢斯或者ZH-HANT文件,爲中國更多的情境? *需要支持任何特定於語言環境的變體。

    基本上,我需要保證,如果用戶瀏覽到使用ZHZH-CNZH-SG語言代碼我們的網站,他們將獲得的資源從ZH-漢斯文件,如果他們使用瀏覽ZH -TWZH-HK,或ZH-MO,他們得到來自ZH-HANT文件資源。這些是我所知道的唯一的中文代碼,但是如果有其他代碼,他們也應該包括在這裏 - 基本上講一位使用中文的用戶,他們的瀏覽器設置爲任何中文語言,應該看到適當的簡體或繁體中文 - 絕對不會見英文。

    到目前爲止,我的測試似乎表明,是的,.NET可以正確解決它們,但我想確保沒有隱藏或罕見的情況丟失。

  2. 我知道zh-hans和zh-hant代碼有點新 - 並被認爲是「父母」文化。我也知道舊的通用父母代碼是zh-chs和zh-cht。 有沒有舊的瀏覽器允許選擇這些zh-chs/zh-cht代碼,如果有的話,.NET是否仍能正確解析它們?

  3. 我不能完全肯定 .NET如何解析正確的資源文件,所以如果有人能在正確的方向指向我,如什麼類/命名空間參與,這也將是巨大的。


資源
Language codes for simplified Chinese and traditional Chinese?
IETF Language Tags

回答

2

答案是否定的 - 你無法只ZH-漢斯/ ZH-HANT。因爲,如果你這樣做,並且你的瀏覽器通過了基地代碼zh,它將不會自動解析到zh-hans或zh-hant的resx文件。

原因是由於所謂的「Resource Fallback Process」。

基本上,.NET通過層次結構解析資源。它將從請求的文化代碼開始,如果該特定文化代碼的resx不存在,則它將開始沿着層次結構向上移動,搜索確實有的下一個文化代碼。但是,它永遠不會下降,只會上升。


這裏是層次結構ZH-SG [新加坡]的一個例子:

  1. 不變
  2. ZH
  3. ZH-漢斯
  4. ZH-CHS(傳統通用代碼)
  5. zh-sg(locale-specific codes)

首先它尋找zh-sg。如果zh-sg沒有資源文件,它會查找zh-chs。如果zh-chs沒有資源文件,它會查找zh-Hans。等等。

只有zh-Hans和zh-Hant可以用於所有特定於語言環境的代碼,例如zh-sg,zh-tw等。某些瀏覽器允許您選擇通用簡化(zh-Hans)或通用傳統(zh-Hant),顯然它也適用於這些場景。 不會工作的唯一場景是當基礎中文zh被選中並通過請求時。在這種情況下,如果zh不存在,下一個看起來就是不變的文化 - 在這種情況下,它會返回英文文本 - 這顯然不是我們想要的。

我的溶液中,然後,呈向下配對具有基部ZH,和ZH-漢特爲我的2碼。然後Base zh是包含簡體文本的文件,zh-Hant當然是包含傳統文本的文件。我可以用相反的方法做到這一點(使zh包含傳統文本,並使用zh-Hans進行簡化),但是真的,我沒有找到有關基本zh應該代表什麼的準則。它應該是簡化的,還是應該是傳統的?我懷疑這主要是一個偏好問題。通過快速搜索幾個受歡迎的網站,發現在大多數情況下,對基本zh的請求會生成谷歌翻譯認爲是簡體的文本。在少數情況下,它的確產生了Traditional。但是,我按照大多數人似乎在做的事情去做。

+0

太棒了,謝謝你的詳細解答! –

相關問題