我有一个项目,可以用作Dynamics NAV的插件。 它应该以当前使用的语言显示,英语是标准。 为了确保这一点,我有一个设置CurrentCulture和CurrentUICulture的方法。
在Dynamics NAV外部运行的测试项目中,表单会显示相应的翻译。
在动态资产净值中使用加载项时,表单总是英文,显示当前文化和当前UI文化被设置为正确的语言(我在多种情况下通过调试来检查)。
我尝试了两种设置:
两种情况下结果相同:
在资产净值之外启动程序:翻译成功
从NAV内部启动程序:始终使用标准资源
有没有人知道我是否遗漏了一个细节?
答案 0 :(得分:0)
问题是一个非常常见的问题:去资源被编译成“de”文件夹,结果NAV(就像经常那样)无法找到文件。
AssemblyResolve解决了这个问题:
Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var location = Path.Combine(
Path.GetDirectoryName(typeof(MyForm).Assembly.Location),
CultureInfo.CurrentCulture.Parent.Name,
args.Name.Substring(0, args.Name.IndexOf(",", StringComparison.OrdinalIgnoreCase)) + ".dll");
if (File.Exists(location))
{
return Assembly.LoadFrom(location);
}
return null;
}
}
要记住的唯一细节是在执行InitializeComponent函数之前订阅AssemblyResolve。