合并字符串资源文件

时间:2014-07-25 07:04:25

标签: win-universal-app

我正在使用Universal app(使用Prism)。这是我的情景。

我在以下项目中有一个字符串资源文件:

1)Windows - Resources.resw - 此文件具有特定于窗口的字符串资源。

2)WindowsPhone - Resources.resw - 此文件具有特定于电话的字符串资源

3)Shared - SharedResources.resw - 此文件具有在Windows和手机之间通用的字符串资源。

现在,我如何让ResourceLoader搜索资源" SharedResources.resw"和#34; Resources.resw"这两个文件?

有什么建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我已将ResourceLoader类扩展如下:

public class ResourceLoaderEx : IResourceLoaderEx
{
    //This method is used when the PCL contains .resx file instead of .resw.
    public string GetString(string resource,  string baseName, Assembly assembly)         {
            ResourceManager resourceManager = new ResourceManager(baseName, assembly);
            return resourceManager.GetString(resource);
    }


    public string GetString(string resource)
    {
        ResourceLoader resourceLoader;
        if (resource.Contains("\\"))
        {
            resourceLoader = ResourceLoader.GetForCurrentView(resource.Substring(0, resource.LastIndexOf("\\")));
            resource = resource.Substring(resource.LastIndexOf("\\") + 1);
        }
        else
        {
            resourceLoader = ResourceLoader.GetForCurrentView();
        }
        return resourceLoader.GetString(resource);
    }
}

本课程包括以下场景(下面的代码在我的UILoic类下):

var windowsSpecificResource = resourceLoader.GetString(@"windows");  // This will fetch the resource from Resources.resw file

 var sharedResource = resourceLoader.GetString(@"SharedResources\testforshared");  // This will fetch the resource from the SharedResources.resw file

var pclResource = resourceLoader.GetString("SaveErrorMessage", "Contoso.UILogic.Strings.Resources", typeof(Strings.Resources).GetTypeInfo().Assembly); // This will fetch the resource from Resources.resx file which is in my UILogic project.

有任何意见吗?