web-dev-qa-db-ja.com

プッシュ通知のバナーでアラートの言語を変更する

プッシュが来たときにバナーのアラートの言語を変更するという問題に直面しています。実際、私は2つの言語で動作するアプリに取り組んでいます。 1つは英語で、2つ目はノルウェー語です。 Webサーバー側から受信したプッシュと、プッシュが来てアプリの外部にいるときにalertキーに含まれる文字列がバナーに表示されます。ただし、要件として、言語を英語からノルウェー語に設定すると、プッシュが来ると、バナーのアラート文字列もノルウェー語に変更されるようにする必要があります。私の側でそれは可能ですか、それとも言語を変更するたびにサーバーから変更する必要がありますか?.

どんな提案も役に立ちます。

ありがとう

21
iEinstein

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-argsJSON配列として渡すこともできます。

"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$@.";
73
Daniel Martín