我一直在查看此页面Programmatic way to get all the available languages (in satellite assemblies)上的建议,并决定此建议最合适:
public IEnumerable<CultureInfo> GetSupportedCulture()
{
//Get all culture
CultureInfo[] culture = CultureInfo.GetCultures(CultureTypes.AllCultures);
//Find the location where application installed.
string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
//Return all culture for which satellite folder found with culture code.
return culture.Where(cultureInfo => Directory.Exists(Path.Combine(exeLocation, cultureInfo.Name)));
}
所以,我创建了一个小的测试方法,但是我注意到我们的资源文件之一没有生成。
例如,以下是.resx文件(位于单独的库项目中):
因此,当我转到执行程序集的bin目录时,我只会看到以下文件夹:es-ES和fr-FR
在文件夹中,当然是resources.dll文件。
有人知道为什么在构建期间未创建vn-VN文件夹/resources.dll文件吗?英文也不存在,但我半信半疑,因为这是我们的默认设置,并且LanguageResources.resx文件名中不包含“ en-US”。
我已经检查了包含Resource文件的库的.csproj文件-看不到明显的东西。
但是,我确实在构建日志中找到了它:
并且由于既没有英文也没有越南文的resources.dll文件的产生,所以我认为这可能与它有关。
有人能对此有所启示吗?告诉我如何解决这个问题?
答案 0 :(得分:0)
对不起,
实际上,经过进一步的挖掘(很抱歉,我应该在发布之前这样做)-我发现我的System.Globalization.CultureInfo列表不包含vn-VN的定义。
因此,然后我查看了语言环境列表,并且只看到了vi-VN,但是这篇文章说vn-VN String.Format consider locale or not?是有效的。
最重要的是,文件夹和资源文件未显示在我的机器上是因为不支持区域性。
一旦我将文件名更改为使用vi-VN,它就起作用了。
有人知道vn-VN是否有效吗?还是还是?
谢谢!