【问题标题】:Windows 8 XAML Multilingual TranslationsWindows 8 XAML 多语言翻译
【发布时间】:2013-04-01 06:53:35
【问题描述】:

我使用多语言工具包翻译了我的应用程序,并一直在使用伪语言对其进行测试。它适用于我在代码 (C#) 中翻译的字符串,但我不知道如何制作它,以便自动翻译 XAML 中的标签。

我一直在使用http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965329.aspx 作为教程,但我无法弄清楚。我也在谷歌上搜索过,但仍然没有运气。

例如,我创建了一个“水印”文本框(它继承自 TextBox,默认情况下会在用户未输入任何文本且项目没有焦点的情况下显示一些文本。XAML 看起来像这样(我用'...'替换了通用定位的东西):

<local:WatermarkTextbox x:Name="TitleTextBox" Watermark="MainPage_EnterATitle" ... Style="{StaticResource TextBoxStyle1}" />

如您所见,它设置了一个名为Watermark 的属性,并带有正在使用多语言工具翻译的资源名称的“标签”。我不知道如何让它自动翻译。

另一个例子是使用底部应用栏按钮:

<Button x:Name="bottomAppBar_unpinFromStartButton" AutomationProperties.Name="MainPage_UnpinFromStart" Style="{StaticResource UnPinAppBarButtonStyle}" Click="bottomAppBar_unpinFromStartButton_Click"/>

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

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 中的标签是自动翻译的”。 x:Uid 本质上是在资源文件中查找的键,然后您为感兴趣的属性提供本地化值 - 例如示例中的 Greeting.Text。您链接到的 QuickStart 是否对您不起作用?您在该特定示例中看到了什么错误/行为?
  • 很抱歉给您带来了困惑。我已经用一些额外的信息更新了主帖,希望能把事情弄清楚。
  • 让我们从简单的案例开始——按钮——你的资源文件是什么样的(内容和名称/文件夹层次结构)?看起来它与当前的文化不匹配,所以什么都没有。
  • 这样设置:i.imgur.com/ahKFk.png 可以很好地填充翻译后的文档:i.imgur.com/QLpB9.png 我可以使用原始问题中链接中的代码将其翻译成代码。
  • “在代码中翻译”我的意思是使用 C#,而不是 XAML。

标签: xaml windows-8 microsoft-metro windows-runtime winrt-xaml


【解决方案1】:

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

您的 xaml 需要更改为

<local:WatermarkTextbox x:Name="TitleTextBox" x:Uid="MainPage_EnterATitle" Watermark="" ... Style="{StaticResource TextBoxStyle1}" />

你的资源需要一个带有键的条目

MainPage_EnterATitle.Watermark

关于带有

的部分

MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name

这仅在引用的属性是附加属性时使用。就像您的 Watermark 属性将附加而不是控件的一部分一样。但在你的情况下它并不重要。

【讨论】:

  • 我已经尝试过了,它只是让水印空白(看起来它正在将字符串设置为“”并且根本没有本地化它)
  • 嗯,你能尝试在一个非常简单的测试中做到这一点,使用一个文本框和 text 属性吗?我附近没有 Windows 8 开发电脑,否则我会试试看。
  • 它也是空白的。使用的 XAML 是 &lt;TextBox HorizontalAlignment="Left" Margin="835,505,0,0" Grid.Row="1" TextWrapping="Wrap" x:Uid="CreateDiary_RemoveCoverPhotoButtonText" Text="" VerticalAlignment="Top" Width="223"/&gt;,其中 Uid 在多语言伪语言文件中被翻译为“[BB8D1][!!_Řémôνê Îmãĝę_!!]”
  • 资源键是什么? CreateDiary_RemoveCoverPhotoButtonText.Text 应该是正确的。
  • 要本地化应用栏按钮文本,资源文件中的属性名称应如下所示:myAppBarButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name。并且您的页面中有 XAML,例如
猜你喜欢
  • 2015-04-03
  • 1970-01-01
  • 2022-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2016-10-27
相关资源
最近更新 更多