簡體   English   中英

字符串作為資源文件名

[英]String as resource file name

我不確定這里的術語,但我需要訪問一個特定的資源文件,其名稱是計算的字符串。

例如:

我有一個名為“resFile-en-GB”的資源文件我可以使用“resFile-en-GB.stringKey”訪問內部的字符串。 現在我需要將文化信息添加到字符串的末尾。

string stringA = "resfile-";
string stringB = "en-GB";
string stringC = stringA + stringB;

現在我需要使用“stringC”作為資源文件名,如“stringC.stringKey”我將如何進行此操作?

您可以通過ResourceManager訪問資源,然后使用GetString(key),在這種情況下可能更容易:

var resourceManager = new ResourceManager(stringC, Assembly.GetExecutingAssembly())
resourceValue = resourceManager.GetString(key);

您可以使用資源文件使您的應用程序成為多語言。

將資源文件添加到您的解決方案中

這是顯而易見的第一步。 例如,在解決方案ResourceFiles添加一個文件夾並添加resx文件:

  • LanguageStrings.resx
  • LanguageStrings-FR-FR.resx
  • LanguageStrings-NL-NL.resx

LanguageStrings.resx將包含default語言,比方說英語。 fr-FR將包含法語,而nl-NL將包含荷蘭語。 您只需將項添加到資源文件即可。 例如HelloWorld = Hello world。

是的,所以你將HelloWorld密鑰添加到你的三個語言字符串.resx文件中,並帶有正確的翻譯。

樹立文化

在您的應用程序中的某個位置,您希望能夠設置語言。 它可能在某個事件處理程序(列表框或您想到的任何內容)中。 在那里,您需要在LanguageStrings上設置所選的文化信息。

var cultureInfo = new System.Globalization.CultureInfo("nl-NL");
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
LanguageStrings.Culture = cultureInfo;

這將語言設置為硬編碼為荷蘭語。 顯然你想制作“nl-NL”變量,以便你可以將語言設置為用戶選擇的任何語言。

獲取本地化字符串

最后,您希望從資源文件中檢索本地化字符串。 例如:

 label.Text = LanguageStrings.HelloWorld;

魔術在這里發生了。 不必定義應使用哪個語言資源文件來檢索本地化字符串。 這樣做因為您已經為資源文件設置了所需的語言( LanguageStrings.Culture = .. )。

這是基礎知識,我希望這能幫到你。

ResourceManager.GetString方法應該可以幫助您實現這一目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM