【发布时间】:2019-06-17 09:22:08
【问题描述】:
我在 .Net-Core 中有一个微服务,它必须处理 resx 文件中的一些资源,并根据我通过调用 API 提供的文化返回它们,因此我不会使用当前线程的文化,但是当我调用 GetString(key,culture) 方法时,它总是返回默认语言。 我目前有 2 个 resx 文件:resource.resx 和 resource.it-IT.resx 如果我使用 it-IT 文化字符串调用 api,我总是在 resource.resx 文件中而不是在 resource.it 中获得翻译-IT.resx 文件
resx 文件位于另一个名为 Localization 的项目中
我有一个通用方法,我传递了我必须本地化的 Enum 和存储本地化的文件的类型,然后我编写资源的键并调用 GetString 方法。 我也试过用
改变当前线程的文化Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(cultureName);
public static string GetDisplayName(this Enum e, Type resourceType, string cultureName)
{
var rm = new ResourceManager(resourceType);
var resourceDisplayName = rm.GetString(e.GetType().Name + "_" + e, CultureInfo.CreateSpecificCulture(cultureName));
return string.IsNullOrWhiteSpace(resourceDisplayName) ? string.Format("[[{0}]]", e) : resourceDisplayName;
}
我进行了更多调查,当我检查资源管理器时,我有 3 个资源集
resource
resource.it
resource.it-IT
如果我在这 3 个资源集中检查,我的所有资源总是用英文显示,似乎资源管理器没有加载 resx 意大利文文件
【问题讨论】:
标签: c# web-services .net-core localization resx