Я пытаюсь локализовать свое приложение с Xcode 10 для iOS 12, и у меня возникают некоторые проблемы:
- Я хочу исключить некоторые элементы пользовательского интерфейса, которые не нуждаются в переводе;
- Я хочу обрабатывать форматированный текст более логичным способом.
На моем экране есть несколько элементов пользовательского интерфейса, текст которых должен динамически устанавливаться во время выполнения. Например, метка, которая показывает прогресс. Эта метка содержит некоторый текст-заполнитель (например, «Ход выполнения»), который не нужно переводить. Тем не менее, это заканчивается в моем файле XLIFF после экспорта раскадровки. (Я понимаю, что могу добавить примечание для переводчика, но с таким количеством элементов пользовательского интерфейса это действительно загрязняет файлы XLIFF.)
Поэтому возникает вопрос: есть ли способ указать в моей раскадровке, что этот текст не нужно переводить и, таким образом, его можно исключить из файла XLIFF?
Вторая проблема связана с форматированным текстом. Я хочу отформатировать текстовые строки для отображения в метке прогресса, и я попробовал следующее:
let formattedText = String.localizedStringWithFormat("Checking credentials for user '%@'...", userName)
label.text = NSLocalizedString(formattedText, comment: "Bla bla bla")
Это компилируется нормально, а экспортер не жалуется. К сожалению, он не попадает в файл XLIFF. Ну, иногда так и бывает: у меня больше таких форматированных строк, и у меня такое ощущение, что в моем файле XLIFF заканчивается только одна.
Затем я изменил свой код на:
label.text = NSLocalizedString(String.localizedStringWithFormat("Checking credentials for user '%@'...", userName), comment: "Bla bla bla")
т.е.. Я заменил параметр formattedText
на функцию String.localizedStringWithFormat(...)
, и тогда, похоже, он работает. Но я нахожу первую конструкцию намного понятнее и не могу понять, почему это не работает.
(Я также попытался создать файл Localizable.strings
и заполнить его genstrings
; это дает мне сообщение об ошибке в таких конструкциях.)
Это проблема XCode или я делаю что-то не так?