Как приложения отображают сохраненные уведомления как локализованные строки?

Я пытаюсь локализовать свое приложение и заметил, что такие приложения, как Twitter и Facebook, немедленно переключают язык, используемый в предыдущих уведомлениях, хранящихся на сервере, в соответствии с языком устройств. Как они это делают?

Например, кто-то комментирует сообщение, чтобы уведомления были следующими:

John commented "hi" on your post. 

Позднее он переведен на французский язык, если язык устройства установлен на французский.

Сохранят ли они локализованную строку, такую ​​как:

 %@ commented %@ on your post. 

А потом каким-то образом ссылайтесь на эту строку в уведомлении вместе с переменными?

Есть много инструментов, связанных с локализацией, один из них похож на Phrasep . Способ работы этих инструментов довольно прост, и локализация в основном ориентирована на конечные элементы, а не на бэкэнд.

Вы определяете ключ для некоторого контента, и ключ может также принимать параметры. Таким образом, в вашем примере это может выглядеть следующим образом.

Английский: user_commented_message = %@ commented %@ on your post.

Немецкий: user_commented_message = %@ Kommentierte %@ auf Ihrem Beitrag.

Чем вы сохраните это в своем Localizable.strings , то, что поставляется с вашим бинарным приложением.

Как только локализация будет завершена, все, что вам нужно сделать, это создать правильную полезную нагрузку для вашего уведомления. В вашем примере это будет выглядеть примерно так:

 { aps = { alert = { "loc-args" = ( "John", "hi" ); "loc-key" = "user_commented_message"; }; badge = 1; sound = default; }; } 

Как вы можете видеть, вы передаете 2 аргумента в разделах loc-args , где вы в значительной степени определяете, что должно отображаться вместо %@ в вашем ключе. Порядок аргументов важен, они будут заменять %@ в том же порядке, что и в разделах loc-args .

В разделе loc-key вы в значительной степени определяете, какой ключ следует использовать из вашего Localizable.strings . С этого момента в Центре уведомлений будет отображаться уведомление, основанное на настройках языка устройства, читающих контент, словарь локализации, сервер Twitter или Facebook не имеет к этому никакого отношения.

Для дальнейшего чтения я бы рекомендовал взглянуть на руководство по программированию уведомлений Apple .

РЕДАКТИРОВАТЬ

  1. В этом сообщении говорится, что вы не можете одновременно использовать body и loc-args . Это эксклюзивная связь EATE ONE или OTHER.

  2. Если это в вашем приложении, просто используйте локализацию. Не отправляйте жестко кодированный языковой контент или сохраняйте текст на жестком диске на сервере, всегда используйте каждый текстовый контент с ключами локализации. Он все еще управляется на передней панели, сервер должен хранить только локализованные ключи, а не сам контент.

  • Проблемы с локализацией в приложении iPhone / iPad
  • Default.png - en-gb / Локализация Worldworld
  • локализация отображаемого имени пакета info.plist
  • Локализованные ошибки Parse.com
  • Локализация для общих строк пользовательского интерфейса
  • Японские строки не отображаются, если область и язык устройства установлены в Японии
  • Создайте localizable.strings из кода в iOS
  • Рекомендации по использованию локализации приложений для iOS
  • iOS AppStore: как добавить ключевые слова на арабском языке, чтобы сделать поиск с помощью арабских слов?
  • Локализация iOS: лучшие практики
  • вложенных папок в папках локализации iPhone
  • Давайте будем гением компьютера.