プッシュが来たときにバナーのアラートの言語を変更するという問題に直面しています。実際、私は2つの言語で動作するアプリに取り組んでいます。 1つは英語で、2つ目はノルウェー語です。 Webサーバー側から受信したプッシュと、プッシュが来てアプリの外部にいるときにalert
キーに含まれる文字列がバナーに表示されます。ただし、要件として、言語を英語からノルウェー語に設定すると、プッシュが来ると、バナーのアラート文字列もノルウェー語に変更されるようにする必要があります。私の側でそれは可能ですか、それとも言語を変更するたびにサーバーから変更する必要がありますか?.
どんな提案も役に立ちます。
ありがとう
IOSのプッシュ通知にローカライズされたテキストを表示する方法は2つあります。
サーバーでメッセージをローカライズする
この場合、デバイス言語をサーバーに送信する必要があります。 iOSアプリに追加する必要のあるコードは、次のようになります。
NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
const char *langStr = [preferredLanguage UTF8String];
[self sendCurrentLanguage:langStr]; // Method that communicates with your server
次に、通知JSONペイロードのalert
キーを使用して、適切な言語で通知メッセージを送信できます。
通知ペイロードとともにローカリゼーション文字列を送信します
ローカライズされた文字列をペイロードで送信できます。 alert
キーは、ローカライズされた文字列を送信するために使用できる子loc-key
キーを受け入れます。
"alert" : {
"loc-key" : "My Localized String",
...
}
次に、対応する言語識別子内のLocalizable.strings
ファイルに次を追加します。
"My Localized String" = "The localized string in the language you want.";
最終的なローカライズされた文字列を作成するために引数を渡す必要がある場合は、通知ペイロードでloc-args
JSON配列として渡すこともできます。
"alert" : {
"loc-key" : "My Localized String",
"loc-args" : [ "First argument", "Second argument" ],
...
}
そして、あなたのLocalizable.strings
で:
"My Localized String" = "The localized string with first argument %@, and second argument %@."
または、位置を変更する必要がある場合:
"My Localized String" = "The localized string with second argument %2$@, and first argument %1$@.";