C#类库本地化

时间:2009-07-16 16:59:28

标签: c# localization

我需要在类库中快速介绍本地化

我不想从用户上下文中提取语言环境,而是将用户存储在数据库中,并且他们的语言环境也在数据库中设置....

我在类库中的函数已经可以从db中的用户配置文件中提取语言环境代码...现在我想根据语言环境包含使用resx ...

我需要几个步骤来正确地执行此操作...

是的 - 我已经搜索了这个,还有一些研究,但我能找到的所有教程都太复杂了,无法满足我的需求。

3 个答案:

答案 0 :(得分:24)

不幸的是,这个主题太复杂了。 ;)我知道,我也做过研究。

为了让你开始,

  1. 在程序集中创建一个Resources目录。

  2. 以英语开头,并在该目录中添加“资源文件”(.resx)。将其命名为“text.resx”。如果找不到本地化资源,应用程序将默认退出此文件。

  3. 添加文字资源。

  4. 添加其他资源文件。将此名称命名为“text.es.resx”。注意文件名的“es”部分。在这种情况下,这定义了西班牙语。请注意,每种语言都有自己的字符代码定义。看一下。

  5. 将西班牙语资源添加到其中。

  6. 现在我们有资源文件可供使用,让我们尝试实现。

    要设置文化,请从数据库记录中提取。然后执行以下操作:

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

    这可能发生在已加载程序集的应用程序中或在程序集初始化本身中。你选。

    要使用资源,您只需在程序集中执行以下操作:

    public string TestMessage() {
      return Resources.Text.SomeTextValue;
    }
    
    塔达。资源变得简单。如果您需要更改用户控件或直接在aspx页面中执行某些操作,事情会变得复杂一些。如果您需要更多信息,请更新您的问题。

    请注意,您可以拥有名为“text.es-mx.resx”的资源文件,这些文件将特定于墨西哥西班牙语。但是,这并不总是必要的,因为“es-mx”会在它回退到默认值之前回退到“es”。只有您知道您的资源需要具体的具体情况。

答案 1 :(得分:1)

使用其中的文化命名您的resxes(例如,resource_en-GB.resx),并根据文化选择要查询的资源。

答案 2 :(得分:0)

要从代码访问资源文件,您需要打开资源文件,然后更改"访问修饰符"下载到" public",我的是#34;没有代码生成"。之后,您可以访问:Resources.FileName.ResourceName。