我有一个Windows Phone应用程序,我希望本地化。因为我在运行时从服务器下载翻译,所以我不能使用AppResources。我想要做的是创建一个转换器,将转换值中的字符串更改为字符串。 类似的东西:
Text="{"STRING_OK", Converter={StaticResource TranslationConverter}}"
当然,这段代码不能编译,但有没有解决方法呢?我怎样才能将转换器用于硬编码值?
答案 0 :(得分:5)
另一种比创建MarkupExtension
更简单的解决方法是将硬编码值设置为转换器参数。无论如何,正如@KingKing已经指出的那样,我们仍然需要绑定才能使用Converter
。我们可以让转换器忽略通过绑定传递的值,只考虑转换逻辑中的ConverterParameter
:
Text="{Binding Converter={StaticResource TranslationConverter},
ConverterParameter=STRING_OK}"
答案 1 :(得分:1)
您无法为各种语言创建固定数量的AppResource,因为您的情况是动态翻译过程,但您仍然可以为您的硬编码字符串值创建一个Appresource文件,然后您可以使用我们自己的转换器。 / p>
Text =“{Binding Path = LocalizedResources.TextLabelLocale,Source = {StaticResource LocalizedStrings},Converter = {StaticResource TranslationConverter}}”
public class LocalizedStrings { public LocalizedStrings() { }
private static sdkGlobalizationCS.AppResources localizedResources = new sdkGlobalizationCS.AppResources();
public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }
}