2013-09-04 12 views
15

Sono di fronte a un problema per cambiare la lingua di avviso nel banner quando arriva il push. In realtà sto lavorando su un'app che funziona in due lingue. Uno è inglese e il secondo è norvegese. Il push che sto ricevendo dal mio server web e quello che ha la stringa nella chiave alert viene visualizzato nel banner quando arriva il push e tu sei fuori dall'app. Ma come requisito vogliamo che se cambio la lingua dall'impostazione dall'inglese al norvegese, quando arriva il push la stringa di avviso del banner cambierebbe anche in norvegese. Sarà possibile alla mia fine o devo cambiarlo dal server ogni volta che cambio lingua.Cambia la lingua di avviso nel banner della notifica push

Qualsiasi suggerimento sarebbe utile.

Grazie

risposta

61

Ci sono due modi per visualizzare testo localizzato in una notifica push in iOS:

localizzare il messaggio nel server

In questo caso, è necessario inviare la lingua del dispositivo al tuo server. Il codice è necessario aggiungere al vostro iOS sarebbe simile al seguente:

NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0]; 
const char *langStr = [preferredLanguage UTF8String]; 
[self sendCurrentLanguage:langStr]; // Method that communicates with your server 

Quindi è possibile inviare il messaggio di notifica nella lingua appropriata utilizzando la chiave alert nel payload di notifica JSON.

inviare una stringa di localizzazione con il carico utile di notifica

È possibile inviare la stringa localizzata nel payload. La chiave alert accetta un loc-key chiave figlio che è possibile utilizzare per inviare una stringa localizzata:

"alert" : { 
    "loc-key" : "My Localized String", 
    ... 
} 

E poi, nel Localizable.strings di file all'interno del identificatore di lingua corrispondente, aggiungere il seguente:

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

Se è necessario passare argomenti per creare la stringa finale localizzata, è possibile passarla come array JSON loc-args anche nel payload della notifica:

"alert" : { 
     "loc-key" : "My Localized String", 
     "loc-args" : [ "First argument", "Second argument" ], 
     ... 
    } 

E, nella tua Localizable.strings:

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

Oppure, se avete bisogno di cambiare le posizioni:

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

ma ho il testo dinamico che includono nome della persona anche allora come sarà gestibile? – iEinstein

+0

@AshutoshMishra Vedi la mia risposta aggiornata. È possibile passare argomenti all'interno di "loc-args" e utilizzare gli specificatori di formato per la sostituzione posizionale. –

+0

è $ o @? e come saprà dove mettere la prima discussione e dove metterla in secondo piano. Proviene dai numeri (1 e 2)? – iEinstein