【问题标题】:c# internationalization text resourcesc# 国际化文本资源
【发布时间】:2013-09-01 17:01:51
【问题描述】:

我正在构建一个可以支持多种语言的 c# windows 窗体应用程序。为了存储所有字符串资源,我为每种文化使用.resx 文件。我设法使应用程序工作,但我前段时间在某处读到资源字符串也可以存储在文本文件中。您能解释一下如何在文本文件中写入字符串以及如何为每种文化加载每个文本文件吗?谢谢。

PS:我是初学者,请多多包涵。

【问题讨论】:

    标签: c# .net internationalization globalization


    【解决方案1】:

    在 resx 文件中,您将获得添加文件的选项(从左上角菜单),您可以从解决方案中添加文本文件,这些文件将在构建期间添加到 resx 现在您可以更改解决方案中的文本文件并在构建时更改将成为 resx 的一部分。

    我过去在同一个 resx 中使用过每种文化的一个文件,一旦应用了解文化,我就会从 resx 加载相应的文本文件。

    在文本文件中,我有“key:value”,我从中准备字典并缓存了它,这在我的简单/小型文化特定文本要求中更容易使用。

    http://msdn.microsoft.com/en-us/library/7k989cfy(v=vs.90).aspx

    【讨论】:

    • 我认为他不是要向资源中添加文本文件,而是要使用文本文件而不是资源,不是吗?
    【解决方案2】:

    您可以使用文本文件获取新闻 Win8 应用程序的资源。不确定这是否也适用于其他平台:

    http://msdn.microsoft.com/en-us/library/xbx3z216.aspx

    【讨论】:

      【解决方案3】:

      找到了!

      http://www.cnblogs.com/anorthwolf/archive/2010/08/23/1806686.html

      static public string GetStringRegistryValue(string key, string defaultValue)
      {
          RegistryKey rkCompany;
          RegistryKey rkApplication;
          rkCompany = Registry.CurrentUser.OpenSubKey(SOFTWARE_KEY, 
                      false).OpenSubKey(COMPANY_NAME, false);
          if( rkCompany != null )
          {
              rkApplication = rkCompany.OpenSubKey(APPLICATION_NAME, true);
              if( rkApplication != null )
              {
                  foreach(string sKey in rkApplication.GetValueNames())
                  {
                      if( sKey == key )
                      {
                      return (string)rkApplication.GetValue(sKey);
                      }
                  }
              }
          }
          return defaultValue;
      }
      

      【讨论】:

        猜你喜欢
        • 2014-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多