2009-07-16 76 views
17

我需要一個非常快速的介紹本地化類庫C#類庫本地化

我不感興趣,從用戶上下文拉動區域,而我已經存儲在數據庫中的用戶,他們的語言環境也設置在db ....

我的類庫中已經可以從數據庫中的用戶配置文件拉動區域設置代碼的功能......現在我想包括使用RESX根據地區不同,...

我需要幾個步驟才能正確執行此操作...

是的 - 我已經使用了這個和一些研究,但是我可以找到的所有教程都太複雜,無法滿足我的需求。

+0

我遇到了一些奇怪的外星人從MSDN看teqniques ...使用AL ...當然,我可以完成這只是使用標準的視覺工作室? – 2009-07-16 17:05:26

回答

21

不幸的是,這個問題太複雜了。 ;)我知道,我也完成了研究。

爲了讓您一開始雖然,

  1. 創建您的程序集資源目錄。

  2. 以英文開頭並向該目錄添加「資源文件」(.resx)。將其命名爲「text.resx」。如果無法找到本地化的資源,應用程序將默認退出此文件。

  3. 添加您的文本資源。

  4. 添加另一個資源文件。將其命名爲「text.es.resx」。請注意文件名的「es」部分。在這種情況下,它定義了西班牙語。請注意,每種語言都有自己的字符代碼定義。看看那個。

  5. 添加您的西班牙資源。

既然我們有資源文件可以使用,那麼讓我們嘗試實現。

爲了設置文化,從數據庫記錄中提取該文化。然後執行以下操作:

String culture = "es-MX"; // defines spanish culture 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 

這可能發生在加載了您的程序集或程序集初始化本身的應用程序中。你選。

要utlize資源,所有你需要做的就是像你的組件中的以下內容:

public string TestMessage() { 
    return Resources.Text.SomeTextValue; 
} 

ただ。資源變得容易。如果您需要更改用戶控件或直接在aspx頁面中執行某些操作,事情會變得更復雜一些。如果您需要更多信息,請更新您的問題。

請注意,您可以將資源文件命名爲「text.es-mx.resx」,這將特定於墨西哥西班牙文。但是,這並非總是必要的,因爲「es-mx」在回到默認值之前會回退到「es」。只有你會知道你的資源需要具體具體。

+0

目前聽起來不錯,除了Resouces.Text.SomeTextValue - 從哪裏來的,我需要包含哪些名稱空間? – 2009-07-17 11:24:02

+0

只需修復步驟1. SomeTextValue的完整名稱空間爲:MyAssemblyName.MyResourcesDirectoryName.MyResourceFile.MyTextValue。因此,使用我的示例,它將是:MyAssemblyName.Resources.Text.SomeTextValue。 – NotMe 2009-07-17 18:46:16

1

爲您的resxes命名爲文化(例如resource_en-GB.resx),並根據文化選擇要查詢的資源。

+0

讓我試試這個 – 2009-07-16 17:09:01

0

爲了從代碼中訪問資源文件,需要打開資源文件,然後將「Access Modifier」下拉列表更改爲「public」,我的代碼是「no code generation」。之後,您可以訪問像:Resources.FileName.ResourceName。