記事一覧

Info.plist内の文字列を多言語化する方法 | Xamarin.iOS


以前の記事で「多言語化する方法 -ローカライズ-」についてご紹介しておりましたが、iOSのInfo.plistまでは多言語化していませんでしたので、今回は追記の記事をご紹介いたします。
iOSでは特定の機能にアクセスが必要な場合には、Info.plist内にそのアクセス権について記載しなければならない仕様となっています。特定の機能にアクセスが発生する場合には、確認ダイアログが表示されるのですが、Info.plist内では言語による分岐はできないのです。
よってその確認ダイアログを多言語化する方法について手順を追っていきたいと思います。


xamarin_ios_infoplist_localize_02.png


前提条件
・Windows10 Pro 64Bit
・Visual Studio 2015 Community Update3
・Xamarin 4.3.0.795 (NuGet Xamarin.Forms 2.3.4.247)
・macOS Sierra 10.12.4 / Xcode8.3.1 / Xamarin.iOS 10.6.0.10



1.Info.plistの実装

iOSプロジェクト直下にあるInfo.plistを修正します。
デフォルトの言語が英語の場合、以下のようになります。
デフォルトの言語が日本語の場合、Info.plistのCFBundleDevelopmentRegionの値をjaに変更して、NS*UsageDescriptionの値も日本語の文章に変更しましょう。
CFBundleLocalizationsはAppStoreに表示されるため、必要な言語の分だけ記述しましょう。

Info.plist
<plist version="1.0">
<dict>
    <key>NSCameraUsageDescription</key>
    <string>Please allow the application to scan using the camera.</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Please allow the application to use Bluetooth.</string>
    <key>NSCalendarsUsageDescription</key>
    <string>Please allow the application to access the calendar.</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Please allow the application to display the photo library.</string> 
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleLocalizations</key>
    <array>
        <string>en</string>
        <string>es</string>
        <string>fr</string>
        <string>ja</string>
        <string>ko</string>
        <string>pt</string>
        <string>ru</string>
        <string>zh-Hans</string>
        <string>zh-Hant</string>
    </array>
</dict>
</plist>



2.InfoPlist.stringsの実装

(1)iOSプロジェクト\Resourcesフォルダ内にそれぞれの「言語.lproj」フォルダを作成し、各フォルダ内にInfoPlist.stringsファイルを作成します。
※デフォルト言語のファイルは必要ありません。

(2)その際、ファイル全てのビルドアクションをBundleResourceに変更してください。

xamarin_ios_infoplist_localize_01.png


(3)InfoPlist.stringsファイルに実装する言語の翻訳文を入力します。

Resources\ja.lproj\InfoPlist.strings
CFBundleDisplayName = "AppName";
NSCameraUsageDescription = "カメラを利用してスキャンします。";
NSBluetoothPeripheralUsageDescription = "Bluetoothを利用します。";
NSCalendarsUsageDescription = "カレンダーを利用します。";
NSPhotoLibraryUsageDescription = "フォトライブラリを利用します。";

Resources\es.lproj\InfoPlist.strings
CFBundleDisplayName = "AppName";
NSCameraUsageDescription = "Permita que la aplicación escanee con la cámara.";
NSBluetoothPeripheralUsageDescription = "Permita que la aplicación utilice Bluetooth.";
NSCalendarsUsageDescription = "Permita que la aplicación acceda al calendario.";
NSPhotoLibraryUsageDescription = "Permita que la aplicación muestre la biblioteca de fotos.";


Info.plistを多言語化する手順は以上です。
あとはビルドして実行を確認するだけで、簡単ですね。



3.トラブルシューティング

InfoPlist.stringsを設置してもローカライズされない場合は以下をご確認ください。

(1)ファイルの文字コードはUTF-8に設定してください。UTF-8NとかShift_JISだと動作しません。これはInfo.plistも同様です。

(2)VisualStudio で開いていると見えない文字が挿入されている場合もあります。翻訳サイトからコピペするとついたりします。テキストエディタで開いてUTF-8で正しく表示されているかどうかを確認しましょう。

(3)CFBundleLocalizationsで記述してある言語分だけ**.lprojフォルダとInfoPlist.stringsファイルが設置されていることも確認してください。尚、Base.lprojフォルダは必要ありません。




最後までお読みいただきありがとうございます。
当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
http://itblogdsi.blog.fc2.com/blog-entry-81.html


関連記事

コメント

コメントの投稿

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語・データベース】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
Oracle10g SQLServer2008R2 SQLAnywhere8/11/16
ActiveReport CrystalReport ReportNet(IBM)
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。