Windows 8 XAML多语言翻译

Windows 8 XAML多语言翻译,xaml,windows-8,microsoft-metro,windows-runtime,winrt-xaml,Xaml,Windows 8,Microsoft Metro,Windows Runtime,Winrt Xaml,我使用多语言工具包翻译我的应用程序,并使用伪语言对其进行测试。它适用于我在代码(C#)中翻译的字符串,但我无法确定如何使其自动翻译XAML中的标记 我一直在用它作为教程,但我想不出来。我也在谷歌上搜索过,但还是没找到 例如,我创建了一个“水印”文本框(它继承自TextBox,默认情况下在其中显示一些文本,用户没有输入任何文本,并且项目没有焦点。XAML如下所示(我用“…”替换了一般定位内容): 我可以在上面的链接中看到它说: MediumButton.[using:Windows.UI.Xaml

我使用多语言工具包翻译我的应用程序,并使用伪语言对其进行测试。它适用于我在代码(C#)中翻译的字符串,但我无法确定如何使其自动翻译XAML中的标记

我一直在用它作为教程,但我想不出来。我也在谷歌上搜索过,但还是没找到

例如,我创建了一个“水印”文本框(它继承自
TextBox
,默认情况下在其中显示一些文本,用户没有输入任何文本,并且项目没有焦点。XAML如下所示(我用“…”替换了一般定位内容):

我可以在上面的链接中看到它说:

MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name
但我真的不确定这是什么意思

即使有一个按钮,这似乎是最简单的翻译,我也无法让它工作。XAML是:

<Button x:Name="RemovePhotoButton" x:Uid="MainPage_RemovePhoto" Content="" HorizontalAlignment="Center" Margin="222,0,974,78" Grid.Row="1" VerticalAlignment="Bottom" Width="170" Height="45"/>

但当在应用程序中运行或在设计的浏览器中查看时,按钮保持空白,上面没有文本

资源的设置如下所示:

而且它很好地填写了翻译文件:

我可以使用上面链接中的代码将其翻译成C语言,只是不使用XAML

只是想知道是否有人能帮我解决这个问题,或者给我指出正确的方向


谢谢

首先,我认为您的资源名称中缺少的是您要设置的属性。虽然我自己从未使用过它,但我会这样理解:

您的xaml需要更改为

<local:WatermarkTextbox x:Name="TitleTextBox" x:Uid="MainPage_EnterATitle" Watermark="" ... Style="{StaticResource TextBoxStyle1}" />
关于这个角色

MediumButton。[使用:Windows.UI.Xaml.Automation]AutomationProperties.Name


这仅在引用的属性是附加属性时使用。例如,如果您的水印属性不会附加到控件中。但在您的情况下,这并不重要。

首先,我认为您的资源名称中缺少的是您要设置的属性。虽然我本人从未使用过它,但我会这样理解:

您的xaml需要更改为

<local:WatermarkTextbox x:Name="TitleTextBox" x:Uid="MainPage_EnterATitle" Watermark="" ... Style="{StaticResource TextBoxStyle1}" />
关于这个角色

MediumButton。[使用:Windows.UI.Xaml.Automation]AutomationProperties.Name


这仅在引用的属性是附加属性时使用。例如,如果您的水印属性不会附加到控件的一部分。但在您的情况下,这并不重要。

不确定我是否理解“XAML中的标记会自动转换”.x:Uid本质上是在资源文件中查找的一个键,然后您为感兴趣的属性(如示例中的问候语.Text)提供本地化值。您链接到的快速启动是否不适用于您?您在该特定示例中看到了什么错误/行为?很抱歉造成混淆。我已在主帖子中添加了一些额外的内容让我们从一个简单的例子开始——按钮——你的资源文件是什么样子的(内容和名称/文件夹层次结构)?它看起来与当前的文化不匹配,因此没有任何内容。设置如下:它可以很好地填充已翻译的文档:我可以使用原始问题中链接的代码将其翻译为代码。所谓“在代码中翻译”,我指的是使用C#,而不是XAML。我不确定是否理解“XAML中的标记将自动转换".x:Uid本质上是在资源文件中查找的一个键,然后您为感兴趣的属性(如示例中的问候语.Text)提供本地化值。您链接到的快速启动是否不适用于您?您在该特定示例中看到了什么错误/行为?很抱歉造成混淆。我已在主帖子中添加了一些额外的内容让我们从一个简单的例子开始——按钮——你的资源文件是什么样子的(内容和名称/文件夹层次结构)?它看起来与当前的文化不匹配,因此没有任何内容。设置如下:它可以很好地填充已翻译的文档:我可以使用原始问题中链接的代码将其翻译为代码。所谓“在代码中翻译”,我指的是使用C#,而不是XAML。我已经尝试过这种方法,它只会使水印为空(看起来它正在将字符串设置为“”,而根本没有对其进行本地化)嗯,你能在一个非常简单的测试中,使用文本框和文本属性来尝试吗?我附近没有windows 8开发pc,否则我会尝试。它也是空的。使用的XAML是
,其中Uid在多语言psedou语言文件中被翻译为“[BB8D1][!!ŘmνÎmĝmę!!”资源键是什么?CreateDialog_RemoveCoverPhotoButtonText.Text应该是正确的。若要本地化应用程序栏按钮文本,资源文件中的属性名称应为:myAppBarButton。[使用:Windows.UI.Xaml.Automation]AutomationProperties.Name。您的页面中会有XAML,就像我尝试过的那样,它只会使水印为空(看起来它将字符串设置为“”,而根本没有对其进行本地化)嗯,你能在一个非常简单的测试中,使用文本框和文本属性来尝试吗?我附近没有windows 8开发pc,否则我会尝试。它也是空的。使用的XAML是
,其中Uid在多语言psedou语言文件中被翻译为“[BB8D1][!!ŘmνÎmĝmę!!”资源键是什么?CreateDiary_RemoveCoverPhotoButtonText.Text应该是正确的。若要本地化应用程序栏按钮文本,资源文件中的属性名称应该是:myAppBarButton。[使用:Windows.UI.Xaml.Automation]AutomationProperties.name。而页面中的Xaml应该是foo
<local:WatermarkTextbox x:Name="TitleTextBox" x:Uid="MainPage_EnterATitle" Watermark="" ... Style="{StaticResource TextBoxStyle1}" />
MainPage_EnterATitle.Watermark