Silverlight本地化的最佳实践?
是否有人拥有Silverlight本地化的最佳实践或经验。将资源绑定到XAML,但结果非常混乱:Silverlight本地化的最佳实践?,silverlight,localization,Silverlight,Localization,是否有人拥有Silverlight本地化的最佳实践或经验。将资源绑定到XAML,但结果非常混乱: <TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedStrings }}"/> 其中的一页将使XAML无法读取 有什么捷径吗?前段时间我问了一个类似但更复杂的问题() MSDN上给出的示例确实不足以进行严格的本地化,它假设每个字符串都完全存在并且没有参数,实际情况是您
<TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedStrings }}"/>
其中的一页将使XAML无法读取
有什么捷径吗?前段时间我问了一个类似但更复杂的问题() MSDN上给出的示例确实不足以进行严格的本地化,它假设每个字符串都完全存在并且没有参数,实际情况是您希望在字符串中嵌入值,但需要占位符来标记该变量在字符串中的位置,以便翻译器可以在转换时移动标记 您可以通过在silverlight中实现多绑定来实现更高级的机制-Colin Eberhardt做了一个很好的实现()-稍作调整,并结合多值转换器,您可以执行多个绑定,允许第一个绑定到语言文件,以及要嵌入的参数的后续绑定
这是一个相当痛苦的事情,但本地化的故事只是明显缺乏-即使在PDC09上通过silverlight 3/4聊天,目前还没有一个很好的路线-如果WPF多绑定可以让它通过SL4,这会稍微容易一些,但我还没有看到一个好的替代实现,除了人们从ViewModel输出所有字符串之外——从“设计师”的角度看,这似乎是错误的。我同意微软对Silverlight(以及WPF和Windows Phone)本地化的建议是非常初级的。它有几个问题。最重要的是
<TextBlock Text="Hello World"/>
查看、编辑和维护比
<TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedString }}"/>
+
<data name="LocalizedString" xml:space="preserve">
<value>Hello World</value>
</data>
+
你好,世界
您需要做的是将硬编码字符串保存到XAML中,并本地化XAML本身。如果没有好的工具,这将变得非常困难。这就是为什么我建议您使用能够定位XAML的本地化工具。这还不够,因为如果您已经本地化了XAML,您仍然需要将它们编译成附属asembly文件,并最终将附属文件包含在XAP文件中
您需要有一个工具,可以本地化RESX和XAML,还可以编译本地化的附属程序集文件。有一些工具可以做到这一点(例如Sisulizer)
如果您只想使用VisualStudio,那么您必须坚持Microsoft的最佳实践