Xamarin.Forms:UWP应用程序的本地化

tes*_*ing 2 localization xamarin xamarin.forms uwp

如果我在UWP设备上运行我的应用程序,我会在Output窗口中收到以下警告:

MakePRI:警告0xdef00522:为语言'en,de'找到的资源,但找不到默认语言的资源:'de-DE,en-US'.使用默认语言更改默认语言或限定资源.http://go.microsoft.com/fwlink/?LinkId=231899

不知道这是否相关,但我也知道

1> C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2459,5):警告:APPX4001:构建属性AppxBundlePlatforms未明确设置并基于计算目前正在建筑.使用"创建应用程序包"向导或编辑项目文件进行设置.

这个页面说明我有语言特定的资源,我没有用语言标签限定.我怎样才能知道这些资源是哪些资源?

我在Assets文件夹中有图像,但它们与语言无关.此外,我在Package.appxmanifestto中设置了默认语言de-DE.如果我从警告中搜索语言缩写,我只能在输出文件夹中找到一个priconfig.xml和.AppxManifest.xmlDebug

我该怎么做才能删除此警告?

编辑:

如果我添加一个AppResources.en-US.resx文件(目前我已将其en-US设置为默认语言Package.appxmanifest),警告似乎消失了.另外,我有一个AppResources.de.resxAppResources.resx(应该en)的文件.但是为什么示例项目不需要这样的文件,尽管应该有相同的设置?我错过了什么?

Nic*_*SFT 6

如果我添加 AppResources.en-US.resx 文件(目前我在 Package.appxmanifest 中将 en-US 设置为默认语言),警告似乎消失了。此外,我有一个 AppResources.de.resx 和 AppResources.resx 文件(应该是 en)。但是为什么示例项目不需要这样的文件,尽管应该有相同的设置?我缺少什么?

正如你所说,AppResources.resx是恩。您可以展开 Portable Class Library (PCL) 项目中的 Properties 节点并双击 AssemblyInfo.cs 文件。将以下行添加到文件中以将中性资源汇编语言设置为英语:

[assembly: NeutralResourcesLanguage("en")]
Run Code Online (Sandbox Code Playgroud)

这会通知资源管理器应用程序的默认区域性,从而确保当应用程序在英语语言环境中运行时,将显示在语言中性 RESX 文件 (AppResources.resx) 中定义的字符串。

您已经在 中设置en-US为默认语言Package.appxmanifest,但是没有对应的文件。所以它会抛出警告。

示例工程的默认语言是en-US,没有对应的文件。它也在我身边发出同样的警告。如果将默认语言修改为en,则警告消失。因为它已设置AppResources.resxenAssemblyInfo.cs文件中。

你可以参考更多的敌人AssemblyInfo支持的语言


bat*_*aci 5

只是为了扩展Nico Zhu - MSFT的答案,如果您使用.Net Standard,则没有assemblyInfo.cs文件,因为所有内容都存储在csproj文件中.因此,只需转到共享项目的属性,将Project中性语言更改为resx默认文件.或者您可以右键单击项目并编辑项目和下面的行.

对我来说问题是,在从PCL转换为Net Standard后,突然UWP应用程序没有选择默认资源文件en-US.我认识到因为我在assmeblyInfo.cs中有这个设置,因为它被删除了,它没有用.但不知何故,它适用于Android项目.

  <PropertyGroup>
     <NeutralLanguage>en-US</NeutralLanguage>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我可以证实这适用于`Xamarin.Forms`:D (2认同)