Укажите базовую локализацию для локализованных отформатированных строк APNS
Мои базовые локализации находятся в раскадровках, но также в такой структуре:
struct Strings {
struct Restaurant {
static let makeCall = NSLocalizedString("Restaurant-makeCall", value: "Call %@", comment: "Restaurant-makeCall: title for button that allows you to call a place")
}
//...many more
}
Это работает довольно хорошо, потому что он хранит их в одном месте, определяет ключ, который отделен от базового значения перевода, и дает мне автозаполнение, когда я их использую: Strings.Restaurant.makeCall
Для ввода переводов я использую процесс импорта / экспорта xliff: editor > export for localization
, Я обнаружил, что у генстрины были проблемы с произвольной формой NSLocalizedString
,
Это все работает хорошо, пока я не получу Локализованные Сообщения APNS. Учитывая loc-key
и необязательно loc-args
Они ищут соответствующий ключ локализации.
Для переводов это работает, потому что для каждого перевода создаются строки Localizable.strings, когда я импортирую переведенный файл xliff.
Для моего базового перевода нет файла Localizable.strings. Я пытался сделать один, но экспорт xliff не замечает эти поля, чтобы добавить к другим переводам, поэтому я думаю, что это не правильный способ сделать это.
Как добавить базовые переводы таким образом, чтобы они работали для APNS?
1 ответ
Один функциональный, но дублирующий подход заключается в определении их в обоих местах:
- Определите ключи (и неиспользуемые значения) в
Strings
структура. Экспорт xliff замечает это, и это позволяет другим языкам предоставлять переводы - Определите ключи и значения в
Localizable.strings
файл, который вы создаете для базового перевода. Это позволяет APNS находить значения, когда вы находитесь на базовом языке, но экспорт xliff их не видит.
Это работает, но если кто-нибудь когда-нибудь изменит один файл, не обновляя другой файл, возникнут различия в переводе, которые будет трудно обнаружить, поэтому мне это не очень нравится.