了解如何本地化资源

sra*_*sra 12 .net c# resources localization embedded-resource

我知道有很多例子,但我没有理解它...我只想本地化一些字符串和文本文件.这就是我目前接收字符串或文件内容的方法

MyResources.ResourceManager.GetString(name + "IdentString");
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找一种存储其他语言的方法.资源被包装到ASP.Net MVC应用程序使用的提供程序(目前大约有12个提供程序,但将来会增长)(没有附加视图!)

据我所知,有两种方法可以存档:

  • 包含资源的每种语言的附属程序集
  • 基于文件的ResourceManager,其中每种语言都有自己的二进制资源文件

据我所知,我必须在两种情况下都使用外部工具,并且必须将一些附属程序集链接到资源管理器自动加载的源资源(每种语言一种),或者我必须使用加载的FilebasedResourceManager来自外部位置的资源文件(每种语言的二进制版本).这意味着在这两种情况下,只有原始资源嵌入到项目中,而其他资源只是以某种形式附加.我做对了还是我完全错了?

一些额外的信息

没有必要说我不知道​​应该采取哪种方式,或者它们如何真正起作用,或者是否有其他方式.当我开始寻找这个时,我想到只是在约会之后命名我的资源文件,fr-resource.resx或者de-resource.resx资源管理器可以获取线程文化或给定的一个并尝试从该资源获取字符串或回退到默认值.但是我发现了一些关于卫星的东西(只是让我想起一首该死的歌)应该注册web.config但需要通过外部工具构建......

Jan*_*Vos 10

根据文化重命名resx文件,您走在正确的道路上.但是,您可以将它们命名为以下内​​容

  • resources.resx (这将是默认的后备.)
  • resources.de.resx (这将是文化中立的德国资源.)

如果你在项目中放置这些文件旁边的默认RESX,包括他们那么编译器会照顾建设sattelite组件,和资源管理器将发现他们的照顾.

Sattelite装置将被引入一个带有文化名称的子文件夹中.所以如果你有\myApp.exe输出你也会得到一个\de\myApp.resources.dll

您无需执行任何操作即可将这些文件链接到原始程序集.如果你"忘记"提供这些sattelite程序集,你的应用程序就没有德国资源并且会回到默认状态.