もくじ
https://tera1707.com/entry/2022/02/06/144447#WinUI3
やりたいこと
下記のページのやり方で、WinUI3でローカライズできることが分かった。
https://tera1707.com/entry/2022/03/24/224855
分かったのだが、ローカライズのためにResource.reswに書いた文言は、どこに出力されているのか?知りたい。
結論
色々調べた限り、下記だった。
パッケージPJでパッケージ&インストールしたアプリの場合
パッケージの中のresources.pri
に入る。
中身は、ただダブルクリックするだけでは開けない(中身が見れない)が、makepri.exe
というツールを使えば見れる。
VisualStudioInstallerで、UWP開発ツール一式を入れると入るらしい。
下記のファイルに対して、
こういうコマンドを、開発者コマンドプロンプトで実行する。
makepri.exe dump /if resources.pri /of aaa.xml
/if
は、見たいpriファイル。
/of
は、出力ファイル。priの中身をxmlとして出すファイル。
上記だと、aaa.xmlに、下記のような感じでソースの値が含まれる。
<ResourceMapSubtree name="Resources"> <NamedResource name="SimpleText" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/SimpleText"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>単純な文字列リソース</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>c</Value> </Candidate> </NamedResource> <ResourceMapSubtree name="MyButton"> <NamedResource name="Content" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/MyButton/Content"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>ボタン名称</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>b</Value> </Candidate> </NamedResource> <NamedResource name="Height" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/MyButton/Height"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>50</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>150</Value> </Candidate> </NamedResource> <ResourceMapSubtree name="[using:Microsoft.UI.Xaml.Automation]AutomationProperties"> <NamedResource name="Name" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/MyButton/[using:Microsoft.UI.Xaml.Automation]AutomationProperties/Name"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>添付プロパティ文言</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>tenpu</Value> </Candidate> </NamedResource> </ResourceMapSubtree> </ResourceMapSubtree> <ResourceMapSubtree name="MyStackPanel"> <NamedResource name="Background" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/MyStackPanel/Background"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>Black</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>red</Value> </Candidate> </NamedResource> </ResourceMapSubtree> <ResourceMapSubtree name="MyTextBlock"> <NamedResource name="Text" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/MyTextBlock/Text"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>テキストブロック文言</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>a</Value> </Candidate> </NamedResource> </ResourceMapSubtree> <ResourceMapSubtree name="PackResource"> <NamedResource name="Text" uri="ms-resource://40a02821-ea29-4b39-90c3-aec0996185b4/Resources/PackResource/Text"> <Candidate qualifiers="Language-JA-JP" type="String"> <Value>パックリソース1</Value> </Candidate> <Candidate qualifiers="Language-EN-US" isDefault="true" type="String"> <Value>PackResource1</Value> </Candidate> </NamedResource> </ResourceMapSubtree>
下記のように、WinUI3のexeのプロジェクトと、パッケージのプロジェクトそれぞれにリソースを持たせて、パッケージをビルドすると、上のファイルのように、パッケージのプロジェクトの中のresources.pri
の中に、全部のPJのリソースが入る。
WinUI3単品で起動できるようにしたアプリの場合
下記の記事で試した、WinUI3単品で起動できるようにする方法でも、同じ方法でローカライズできた。
WinUI3プロジェクトをビルドしたexeを直叩きで起動する
https://tera1707.com/entry/2022/02/27/223359
WinUI3でSelfContained=trueでビルドすると出るエラー対処 その1
https://tera1707.com/entry/2022/03/19/000916
WinUI3でSelfContained=trueでビルドすると出るエラー対処 その2
https://tera1707.com/entry/2022/03/19/004221
WinUI3でSelfContained=trueでビルドすると出るエラー対処 その3
https://tera1707.com/entry/2022/03/19/010307
その場合は、出力先に、<プロジェクト名>.pri
という名前で、priができる。
上の実験コードのPJだと、下記のようになる。
そのpriをmakepri.exe dump
をすると、同じように、その中にリソースがあることが見れる。
※当然、そのPJの中にある各言語のResources.reswの内容のみが含まれる。パッケージPJの分は含まれない。
参考
makepri.exe
https://learn.microsoft.com/en-us/windows/uwp/app-resources/compile-resources-manually-with-makepri
makepri.exe dump コマンド
https://learn.microsoft.com/en-us/windows/uwp/app-resources/makepri-exe-command-options#dump-command
WinUI3でSelfContained=trueでビルドすると出るエラー対処 その1 https://tera1707.com/entry/2022/03/19/000916
WinUI3でSelfContained=trueでビルドすると出るエラー対処 その2 https://tera1707.com/entry/2022/03/19/004221
WinUI3でSelfContained=trueでビルドすると出るエラー対処 その3 https://tera1707.com/entry/2022/03/19/010307