Xamarin.Formsでアプリ名をローカライズする方法
普通の文字リソースに関してはPCLにresxファイルを追加して使うことで対応できたんですが、アプリ名をローカライズする方法が分からなかったので調べてみました。
iOS
info.plistに
- Localization native development region
- en
- Localizations
- ja
- en
- 以下必要な言語
を追加します。
Resourcesに言語.lprojというフォルダを作り、その配下にInfoPlist.stringsを置きます。 ビルドアクションはBundleResourceですが、追加した時から普通はそうなっているのでそのままでOKです。
各言語フォルダのInfoPlist.stringsの中で以下のようにアプリ名を指定します。
CFBundleDisplayName = "Xamarin";
CFBundleDisplayName = "ザマリン";
これでビルドすると、端末の言語設定に従いアプリ名が変化するようになります。
注意事項
言語切り替えでアプリ名が連動しない場合は、bin/objクリアを試してみてください。
Android
Resourcesにvalues-言語フォルダを追加し、その配下にstrings.xmlを置きます。
アイコン等も変える場合はdrawable-言語フォルダを作成してそこに置くと良いらしいです。
各strings.xmlの中身で対応するアプリ名を指定します。
<?xml version="1.0" encoding="UTF-8" ?> <resources> <string name="app_name">Xamarin</string> </resources>
<?xml version="1.0" encoding="UTF-8" ?> <resources> <string name="app_name">ザマリン</string> </resources>
Activityの属性のLabelにapp_nameを指定します。
[Activity(Label = "@string/app_name",Theme = "@style/SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,ScreenOrientation = ScreenOrientation.Portrait)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity {
UWP
UWPに関して補足リツイートを頂きました。ありがとうございます。
補足:
— 山本康彦@BluewaterSoft (@biac) 2017年3月15日
UWPでは、アプリ名に{ms-resource:AppName}のように書いて、文字列リソースを参照させます。 https://t.co/aV4gRHE04W#xamarin.formshttps://t.co/PaLUGHCrx0