如何在UWP应用程序(.NET)中本地化富文本?

如何在UWP应用程序(.NET)中本地化富文本?,.net,xaml,localization,uwp,multilingual,.net,Xaml,Localization,Uwp,Multilingual,我有一个多语言UWP应用程序,我需要本地化一些包含格式样式的文本 例如,我可以使用以下文本块: <textblock x:Uid="MyText"> <Bold>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer leo turpis, rhoncus ac libero maximus, lacinia eleifend sapien.</Bold><LineBreak/&

我有一个多语言UWP应用程序,我需要本地化一些包含格式样式的文本

例如,我可以使用以下文本块:

<textblock x:Uid="MyText">
 <Bold>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer leo turpis, rhoncus ac libero maximus, lacinia eleifend sapien.</Bold><LineBreak/> <Italic> Aenean pulvinar eros <Underline>sit amet sodales eleifend.</Underline></Italic> <LineBreak/><Bold>Aliquam feugiat sit amet risus ac venenatis.<LineBreak/> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<Bold><LineBreak/><Hyperlink NavigateUri="https://stackoverflow.com"> Fusce fermentum eleifend leo non pulvinar.</Hyperlink> 
</textblock>

Lorem ipsum dolor sit amet,是一位杰出的献身者。整型狮子座turpis,rhoncus ac libero maximus,lacinia eleifend sapien。埃涅亚的普尔文纳厄洛斯坐在阿梅特索达尔埃利芬德。阿莱奎姆·费吉亚坐在阿梅特·里苏斯·ac·维尼那提斯。佩伦特式居住者morbi tristique Sentecus et netus et malesuada以turpis egestas闻名。非枕叶发酵菌。
为了本地化textblock,我创建了一个“MyText.Text”记录为resw文件,但问题是我不能将xaml放入resw中


有一种方法或模式可以在.NET/UWP中本地化富文本?

无法使用Uid自动本地化格式化的XAML,但可以通过.resw文件中的C代码加载动态XAML

例如,在resw中,我将带有以下值的键
MY_FORMATTED_XAML

    <Span Name="SPAN_NAME" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
      <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sodales augue sit amet eros cursus, vitae tincidunt velit dictum. Vivamus in dolor sapien. Nunc ac dictum nulla.</Run>
      <LineBreak/>
      <Run Text="------------"/>
      <LineBreak/>
       <Run>
         Ut mollis massa ut tortor commodo cursus. Etiam at nisl eu lectus ornare iaculis. Sed consequat dignissim sapien, a tincidunt dolor rutrum at. Suspendisse accumsan eget ante ac aliquet. Nulla non dictum nisi. Nam ultrices libero ut orci pretium, finibus mollis mauris varius. Duis suscipit sapien cursus sagittis blandit. Donec hendrerit varius facilisis.                                                        
       </Run>
       <LineBreak/>
       <LineBreak/>
       <Run>
          <Bold>This is a sample for stackoverflow</Bold>
       </Run>      
       <LineBreak/>      
       <Run>      
           Nunc mollis porttitor arcu ac mattis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed lacinia mattis enim, a tincidunt nisi. Quisque accumsan, sapien quis fringilla pharetra, purus metus maximus velit, ac aliquam enim justo et ante. Aliquam malesuada at velit vel consequat.                
       </Run>&#160; 
<Italic>License:</Italic>
       <Hyperlink NavigateUri="http://unlicense.org">Unlicense 2016.</Hyperlink>
       <LineBreak/>

    </Span>
我用以下代码加载动态xaml:

String dynamicXaml = ResourceRetriever.GetString("MY_FORMATTED_XAML");
Span span = XamlReader.Load(dynamicXaml) as Span; 
this.MyTextBlock.Inlines.Add(span);

@IInspectable,我已经阅读了文档,我本地化了所有字符串,但我无法本地化格式化文本。我不明白,为什么格式化会有任何不同。这个过程是不是一样(除了你不翻译格式化指令)?因为如果我把xaml标记放到resw中,它们不会被解析,它会打印到文本中,用标记来阻止文本,而不格式化。我发现保留格式化的唯一方法是将每个格式化的句子分开,然后逐个进行转换。但这是不可行的,因为在某些语言中,句子顺序是不同的。
String dynamicXaml = ResourceRetriever.GetString("MY_FORMATTED_XAML");
Span span = XamlReader.Load(dynamicXaml) as Span; 
this.MyTextBlock.Inlines.Add(span);