如何使用多个RESX文件

时间:2013-10-31 06:51:29

标签: c# visual-studio windows-phone-8 localization resx

我正在努力将iOS App移植到WP8。 iOS应用程序已本地化为5种不同的语言。本地化字符串存储在不同的文件中。例如,“app.strings”包含应用程序的所有字符串,“common.strings”包含其他应用程序中使用的字符串。当然每个.strings文件有5个版本(app.de.strings,app.en.strings,....)。

在iOS代码中,我可以简单地引用“String_ID_123”,系统将自动在所有.strings文件中搜索该字符串,并显示正确的值,无论该字符串是否可以在app.strings中找到,常见。字符串或其他地方这对WP8也有可能吗?

VS自动创建了两个文件以支持本地化:

  • AppResources.resx ,其中包含实际字符串( AppRessources.Designer.cs 作为代码隐藏)
  • LocalizedStrings.cs ,这是一个支持绑定的助手类

当然,我可以将额外的.resx文件添加到项目中,并使用它们创建与iOS项目相同的结构。但是我必须添加其他版本的LocalizedStrings.cs(例如LocalizedStrings_Common.cs),它们也引用了正确的.resx。然后我必须在XAML中明确使用正确的Souce。

我必须知道String_ID_123的定义。有没有办法让XAML / C#自动执行此操作?

1 个答案:

答案 0 :(得分:1)

我担心VS不会帮助你。首先,如果不指定它所在的资源文件,则无法解决String_ID_123。其次,当您添加其他资源文件(例如CommonResources.resx)时,VS将不会为您修改LocalizedStrings。你必须自己做。

   public class LocalizedStrings
    {
        private static AppResources _localizedResources = new AppResources();
        private static CommonResources _locallizedCommonResources = new CommonResources();

        public AppResources LocalizedResources { get { return _localizedResources; } }
        public CommonResources LocalizedCommonResources { get { return _locallizedCommonResources; } }

第三,当您为项目添加新语言时,VS将为您生成AppResources.fr.resx,但不会生成CommonResources.fr.resx。你必须自己添加一份副本。