【问题标题】:.NET Globalization & Satellite DLL's.NET 全球化和卫星 DLL
【发布时间】:2009-12-12 05:33:38
【问题描述】:

我正在本地化我用 C# 编写的应用程序。

一切似乎都运行良好,使用附属资源程序集来翻译每个表单的字符串(根据本教程:http://msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx

但是,该应用程序最终将需要相当多的语言,这意味着我的工作目录中有很多目录(即 /zh-tw、/zh-cn、/fr-FR、/ja-JP 等)。我想通过将它们全部定位在 /languages 或 /resources 子目录中来稍微清理一下(换句话说,设置“附属程序集的基本路径”)。但是我到处搜索,找不到任何方法来自定义这些附属程序集的位置。

任何提示将不胜感激!

【问题讨论】:

    标签: c# .net localization resources globalization


    【解决方案1】:

    找到了一个更简单的解决方案 - 在 app.config 中:

    <configuration>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath=".;Lang" />
      </assemblyBinding>
    </runtime>
    </configuration>
    

    然后,您可以将所有这些目录扔到“Lang”子目录中,它开箱即用!编译后的构建后事件也很方便在其中自动复制它们:)

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      恕我直言,我不会在这里改变任何东西。 .NET 中有一个标准的本地化机制,它基于卫星 dll 和这些子目录。如果您使用本地化工具,例如。 Passolo,它也将完全支持这种结构,仅此而已。

      会有很多子目录...那又怎样?其他一切都会相当复杂。

      【讨论】:

        【解决方案4】:

        将所有资源文件(即 *.resx)添加到 /Resource 文件夹并创建 ResourceManager 的对象,如下所示

        System.Resources.ResourceManager rm = new System.Resources.ResourceManager("ApplicationName.Resources.MyResource", Assembly.GetExecutingAssembly());

        这里说对于 lang de-DE,你的 resx 文件将被命名为 MyResource.de-DE.resx

        【讨论】:

          猜你喜欢
          • 2011-08-02
          • 2018-07-02
          • 1970-01-01
          • 1970-01-01
          • 2015-12-06
          • 1970-01-01
          • 1970-01-01
          • 2017-08-18
          • 1970-01-01
          相关资源
          最近更新 更多