2017-09-06 50 views
0

如果我的UWP設備,我得到的Output窗口下面的警告上運行我的應用程序:Xamarin.Forms:在UWP應用的本地化

MakePRI:警告0xdef00522:資源發現語言(S)「 en,de',但沒有找到默認語言的資源:'de-DE,en-US'。更改默認語言或使用默認語言限定資源。 http://go.microsoft.com/fwlink/?LinkId=231899

不知道這是相關的,但我也得到

1> C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ v14.0 \ AppxPackage \微軟.AppXPackage.Targets(2459,5):警告:APPX4001:構建屬性AppxBundlePlatforms未明確設置,並根據當前的構建體系結構進行計算。使用「創建應用程序包」嚮導或編輯項目文件進行設置。

This page指出,我擁有語言特定的資源,但是我沒有使用語言標記進行限定。我如何知道這些資源是哪些?

我在Assets文件夾中有圖像,但它們是與語言無關的文件夾。此外,我已將Package.appxmanifest中的默認語言設置爲de-DE。如果從警告中搜索語言縮寫,我只能在Debug輸出文件夾中找到priconfig.xmlAppxManifest.xml

我應該怎麼做才能刪除此警告?

編輯:

的警告似乎消失了,如果我添加一個AppResources.en-US.resx文件(目前我有en-US設置爲默認語言在Package.appxmanifest)。此外,我有一個文件AppResources.de.resxAppResources.resx(應該是en)。但爲什麼sample project不需要這樣的文件,儘管應該有相同的設置?我錯過了什麼?

+0

此消息與字符串。你有沒有Resources.resw文件?它們通常在UWP項目中的字符串文件夾下,f.e. Strings-> EN-我們 - > Resources.resw。我懷疑你有那些名爲「en」和「de」的文件夾,嘗試將它們重命名爲「en-us」和「de-de」。 –

+0

我有'resw'文件,但只在調試構建文物。 UWP項目中目前沒有* Strings *文件夾。 – testing

+0

這可能是問題所在。我並不是100%確定xamarin.forms中的本地化工作方式,但是在純粹的UWP項目中,如果您聲明支持的語言,則需要具有帶語言特定子文件夾的「字符串」文件夾。更多信息[在這裏](https://docs.microsoft.com/en-us/windows/uwp/globalizing/put-ui-strings-into-resources)。 –

回答

1

如果我添加一個AppResources.en-US.resx文件(目前我已將en-US設置爲Package.appxmanifest中的默認語言),警告似乎消失。另外,我有一個AppResources.de.resx和AppResources.resx文件(應該是en)。但爲什麼示例項目不需要這樣的文件,儘管應該有相同的設置?我錯過了什麼?

如您所說,AppResources.resx是en。您可以展開可移植類庫(PCL)項目中的「屬性」節點,然後雙擊AssemblyInfo.cs文件。以下行添加到文件,以中性資源彙編語言設置爲英文:

[assembly: NeutralResourcesLanguage("en")] 

此通知應用程序的默認區域性的資源管理器,因此確保在中性語言RESX文件(AppResources定義的字符串。 resx)將在應用程序在英文區域設置中運行時顯示。

您已將en-US設置爲Package.appxmanifest中的默認語言,但是沒有與之相對應的文件。所以它會發出警告。

示例項目的默認語言爲en-US,並且沒有與其對應的文件。它也會在我身邊發出同樣的警告。如果將默認語言修改爲en,則警告消失。因爲它已在AssemblyInfo.cs文件中將AppResources.resx設置爲en。你可以參考AssemblyInfo,Supported languages

+0

因此,如果我得到這個權利'Package.appxmanifest'中的默認語言不需要4個字符的字符串。如果我將它設置爲'en',並將中性資源彙編語言定義爲'en',我應該沒問題?這與哪種語言是默認語言無關嗎? – testing

+0

是的,它不需要4個字符的字符串,並且哪種語言是默認語言並不重要。但是,這三部分中設置的語言必須相同。 –

+0

你的意思是哪三個部分? PCL中的'Package.appxmanifest','AssemblyInfo.cs'和...?如果我在示例* UsingResxLocalization *中將語言設置爲'en',我仍然可以獲得*爲語言找到的資源en,de,de-ch,es,fr,id,ja,ms,pt,pt-br ,zh-hans,zh-hant',但沒有找到默認語言的資源:'en-US'。*現在,我在我的項目中和實際設備上嘗試了相同的結果。警告不會消失。我是否應該將'NeutralResourcesLanguage'也添加到UWP項目的'AssemblyInfo.cs'中?這似乎也沒有改變它。我使用安裝了Xamarin 4.6.0.299的VS2015。 – testing

0

只是爲了擴展Nico Zhu的答案 - MSFT 如果您使用.Net Standard,則沒有assemblyInfo.cs文件,因爲所有內容都存儲在csproj文件中。因此,只需轉到共享項目的屬性並將項目中立語言更改爲您的resx默認文件。 或者您可以右鍵單擊該項目並編輯項目和下面的行。

對於我來說,問題是,在從PCL轉換爲Net Standard後,突然UWP應用程序並未挑選en-US的默認資源文件。我意識到,因爲我在assmeblyInfo.cs中設置了這個設置,並且它被刪除了,所以它不起作用。但不知何故,它爲Android項目工作正常。

<PropertyGroup> 
    <NeutralLanguage>en-US</NeutralLanguage> 
    </PropertyGroup> 

enter image description here