2013-09-04 9 views
15

プッシュが来たらバナーでアラートの言語を変更する問題に直面しています。実際に私は2つの言語で動作するアプリケーションに取り組んでいます。 1つは英語で、2つ目はノルウェー語です。プッシュが私のウェブサーバーの終わりから受け取っていて、プッシュが来て、あなたがアプリの外にいるとき、alertのキーにある文字列がバナーに表示されます。しかし、私が英語からノルウェー語に言語を変更した場合、プッシュが来るとバナーのアラート文字列もノルウェー語に変わることを条件とします。私の終わりに可能になるか、言語を変えるたびにサーバーから変更する必要があります。プッシュ通知のバナーでアラートの言語を変更

提案が参考になります。

おかげ

答えて

61

の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" : "My Localized String", 
    ... 
} 

そして、対応言語の識別子中にあなたLocalizable.stringsファイルで、次の行を追加します:alertキーを使用すると、ローカライズされた文字列を送信するために使用することができ、子供loc-keyキーを受け付け

"My Localized String" = "The localized string in the language you want."; 

場合最終的にローカライズされた文字列を構築するために引数を渡す必要がある場合は、通知ペイロードのloc-args JSON配列として渡すこともできます。

そして、あなたのLocalizable.strings中:

"My Localized String" = "The localized string with first argument %@, and second argument %@." 

それとも、あなたが位置を変更する必要がある場合:

"My Localized String" = "The localized string with second argument %[email protected], and first argument %[email protected]"; 
+0

が、私はあまりにも、それは管理しやすいものになるかどうか人の名前を含めるダイナミックテキストを持っていますか? – iEinstein

+0

@AshutoshMishra私の更新答えを見てください。 'loc-args'の中で引数を渡すことができ、位置指定の置換にフォーマット指定子を使用することができます。 –

+0

は$または@ですか?どのようにして最初の議論をどこに置くのか、どこをどこに置くのかを知る方法。数字からですか(1と2)? – iEinstein

関連する問題