我已将三个嵌入文件添加到我的C#程序集
Resources\ErrorMessages.de_DE.json
Resources\ErrorMessages.en_US.json
Resources\ErrorMessages.json
当我这样称呼时:
Assembly.GetExecutingAssembly().GetManifestResourceNames()
我明白了:
{string[3]}
[0]: "MyNamespace.Resources.ErrorMessages.en_US.json"
[1]: "MyNamespace.Resources.ErrorMessages.de_DE.json"
[2]: "MyNamespace.Resources.ErrorMessages.json"
如果我像这样设置当前的文化:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");
- 并检索这样的资源:
Assembly.GetExecutingAssembly().GetManifestResourceStream("MyNamespace.Resources.ErrorMessages.json");
- 我得到了默认的资源文件;没有" de_DE"和" en_US"。
我希望得到与我当前文化背景相对应的资源流。我是否真的必须自己指定特定于语言的资源?
如果我这样做,我可以检索资源:
var language = CultureInfo.CurrentCulture.Name.Replace("-", "_");
var localResourceName = string.Format(CultureInfo.InvariantCulture, "MyNamespace.Resources.ErrorMessages.{0}.json", language);
var defaultResourceName = "MyNamespace.Resources.ErrorMessages.json";
var jsonStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(localResourceName) ??
Assembly.GetExecutingAssembly().GetManifestResourceStream(defaultResourceName);