有没有一种方法可以不使用默认的resx文件进行国际化?

4
我们正在进行一个ASP.NET项目,使用resx文件实现国际化。然而,只有在创建默认资源文件(例如Page.ascx.resx)时才能编译。它不允许我们仅使用特定于文化的文件(如Page.ascx.en-US.resx,Page.ascx.km-KH.resx,Page.ascx.pl-PL.resx等)。我已经使用了以下程序集属性。这让我编译了,但是我得到了运行时错误。
[assembly: NeutralResourcesLanguageAttribute("km-KH",UltimateResourceFallbackLocation.Satellite)]

有什么建议吗?

谢谢!

1个回答

3
不,我认为不是这样的——资源文件的基本假设是始终存在后备策略:如果你查找“German (Switzerland)”(即de-CH),并找到它,就会使用它。如果它不存在,则会查找“通用”的德语(即“de”)并使用它,如果连这个也失败了,总会有基本标准的resx文件作为后备。
默认的resx(没有任何文化,如“de-CH”)将编译到您的默认程序集中,这样即使没有任何语言和文化特定的卫星程序集,您的应用程序也可以正常工作。
这实际上是ASP.NET系统内部的一个基本设计假设,因此我不会试图“对抗”该系统——采用它,并习惯它。从长远来看,这会更容易。

我一直在尝试找到不使用回退的方法。我有非常具体的功能需求。应该有某种控制方式,他们强制执行这个功能而不允许参数化或覆盖,这似乎很愚蠢。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接