Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight本地化的最佳实践?_Silverlight_Localization - Fatal编程技术网

Silverlight本地化的最佳实践?

Silverlight本地化的最佳实践?,silverlight,localization,Silverlight,Localization,是否有人拥有Silverlight本地化的最佳实践或经验。将资源绑定到XAML,但结果非常混乱: <TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedStrings }}"/> 其中的一页将使XAML无法读取 有什么捷径吗?前段时间我问了一个类似但更复杂的问题() MSDN上给出的示例确实不足以进行严格的本地化,它假设每个字符串都完全存在并且没有参数,实际情况是您

是否有人拥有Silverlight本地化的最佳实践或经验。将资源绑定到XAML,但结果非常混乱:

<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)本地化的建议是非常初级的。它有几个问题。最重要的是

  • 很难编辑和维护两个单独的文件:XAML和RESX
  • 当您将字符串内容从XAML移动到RESX时,它会丢失大部分内容
  • XAML变得更难阅读和维护
  • 这是因为Microsoft工具,如Visual Studio,不提供任何本地化XAML的方法。这里一个简单的例子是本地化XAML,将本地化XAML和本地化RESX一起包含到附属程序集文件中

    <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的最佳实践