można wziąć podejście zaproponowane przez Ascorbin albo zaimplementować coś podobnego do tego, co mają firmy Apple w swoich powiadomień push:
Twój serwer może wysłać wiadomość GCM z parametrem, który jest kluczem do wiadomości. Aplikacja na Androida będzie musiała zawierać dla każdego możliwego klucza ciągi, które powinny być wyświetlane dla niego w każdym z 7 języków (przy użyciu wielu kopii pliku strings.xml). Następnie odbiornik GCM w twojej aplikacji otrzyma klucz z serwera i pobierze pasujący do niego ciąg zasobów (automatycznie uzyska ciąg zgodny z ustawieniami regionalnymi urządzenia). W ten sposób nie musisz martwić się o lokalizację na swoim serwerze. Wadą tego podejścia jest to, że wszystkie wiadomości muszą być wstępnie zdefiniowane w aplikacji.
Można również dodać parametry do klucza wiadomości, takiego jak Apple do. Na przykład serwer wysyła klucz = "NEW_MAIL_FROM" i param1 = "John". Aplikacja znajduje zasób ciągów dla tego klucza (pozwala założyć, że urządzenie używa języka angielskiego) - "Masz wiadomość od {0}" - i zastępuje parametr John, wyświetlając komunikat "Masz wiadomość od Johna". Urządzenie z różnymi lokalizacjami wyświetli komunikat w innym języku.
Tak, ale co jeśli między czasem wysłania tokena urządzenia na serwer a czasem, kiedy zdecydujemy się wysłać do użytkownika powiadomienie, użytkownik zmienia swój język? Na serwerze nadal mamy stary język, wysłany wraz z tokenem, jakiś czas temu, a nie aktualny język.W takim przypadku aplikacja może wysyłać serwerowi bieżący język za każdym razem, gdy użytkownik zmieni ustawienia narodowe. – bitek
To prawda, ale jak często to będzie miało miejsce? Jak często zmieniasz język swojego telefonu? – FWeigl
Nie ma znaczenia jak często, może się zdarzyć. Inne odpowiedzi sugerują, że otrzymują "klucze" w powiadomieniu i dopasowują je do zlokalizowanych zasobów ciągów, co jest znacznie lepszym podejściem (schludnie, prosto i kuloodpornie). –