如何在UWP中创建参数化的本地化字符串

本文关键字:本地化 字符串 参数 创建 UWP | 更新日期: 2023-09-27 18:12:14

我正在尝试本地化一个字符串,表示"Hello{0}",其中{0}是用户的名称。我知道如何做到这一点;在XAML中使用x:Uid"Welcome"创建一个TextBlock,然后创建一个.resw文件,其中包含一个名为Welcome的资源。文本和值"Hello{0}"。但是如何将用户名硬塞进{0}呢?类似地,假设我想要一个字符串,如"创建于3/2/2016"或"你赚了$100.24",我想控制指定值的格式?我的应用程序正在使用MVVM,理想情况下,我会把参数化的值从模型中拉出来,但无论如何,我该如何使用类似string.Format的东西来构造这些字符串?

如何在UWP中创建参数化的本地化字符串

您可以通过代码检索字符串:

public static class ResourceRetriever
    {
        private static ResourceMap _resourceMap = null;
        public static ResourceMap ResourceMap
        {
            get
            {
                if (_resourceMap == null)
                {
                    _resourceMap=  Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap;                    
                }
                return _resourceMap;
            }
        }
        public static string GetString(string key)
        {
            return ResourceMap?.GetValue("Resources/" + key, new ResourceContext())?.ValueAsString;
        }
        public static string GetString(string key, ResourceContext context)
        {
            return ResourceMap?.GetValue("Resources/"+key, context)?.ValueAsString;
        }
    }

在资源文件中添加参数,并使用字符串。格式:

var myText = ResourceRetriever.GetString("MyText"); //Hello {0}
myText = String.Format(myText, username);