kamulog

xamarin.formsのネタなど

Xamarin.Formsでアプリ名をローカライズする方法

普通の文字リソースに関してはPCLにresxファイルを追加して使うことで対応できたんですが、アプリ名をローカライズする方法が分からなかったので調べてみました。

iOS

info.plistに

  • Localization native development region
    • en
  • Localizations
    • ja
    • en
    • 以下必要な言語

を追加します。

f:id:kamusoft:20170315025403p:plain

Resourcesに言語.lprojというフォルダを作り、その配下にInfoPlist.stringsを置きます。 ビルドアクションはBundleResourceですが、追加した時から普通はそうなっているのでそのままでOKです。

f:id:kamusoft:20170315025404p:plain

各言語フォルダのInfoPlist.stringsの中で以下のようにアプリ名を指定します。

CFBundleDisplayName = "Xamarin";
CFBundleDisplayName = "ザマリン";

これでビルドすると、端末の言語設定に従いアプリ名が変化するようになります。

注意事項

言語切り替えでアプリ名が連動しない場合は、bin/objクリアを試してみてください。

Android

Resourcesにvalues-言語フォルダを追加し、その配下にstrings.xmlを置きます。

f:id:kamusoft:20170315025405p:plain

アイコン等も変える場合は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に関して補足リツイートを頂きました。ありがとうございます。

参考