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]";
ma ho il testo dinamico che includono nome della persona anche allora come sarà gestibile? – iEinstein
@AshutoshMishra Vedi la mia risposta aggiornata. È possibile passare argomenti all'interno di "loc-args" e utilizzare gli specificatori di formato per la sostituzione posizionale. –
è $ o @? e come saprà dove mettere la prima discussione e dove metterla in secondo piano. Proviene dai numeri (1 e 2)? – iEinstein