Локализация XCode: базовая концепция без избыточности - PullRequest
0 голосов
/ 12 февраля 2020

Я немного запутался в реализации локализации в Xcode. Я знаю, что могу предоставить столько языков, сколько захочу, создав соответствующие папки XY.Iproj и вставив в них файлы .strings и Localizable.strings. Все это происходит автоматически с Xcode.

К сожалению, у меня проблемы с пониманием концепции Base. Насколько я понял, язык разработки должен использоваться там. В моем случае это Engli sh, поэтому я должен писать в раскадровке и файлах XIB как текст непосредственно в Engli sh? Например, заголовок (метка) страницы настроек с содержанием «Настройки»?

Но почему у меня также есть файл .strings с переводом на английский язык sh? Это было бы излишним, потому что я уже ввел текст Engli sh непосредственно в базовый файл, а файл .strings снова содержит тот же текст.

Или файлы раскадровки и XIB имеют только идентификаторы, такие как "settings_page_headline" как контент для ярлыков? Но это чепуха, потому что эти ярлыки ни на что не годны ...

Или я могу полностью удалить .strings для перевода Engli sh, если я уже вставил содержимое Engli sh в раскадровку и Файлы XIB?

Надеюсь, вы меня немного просветите. Конечно, я прочитал документацию Apple, там моя проблема понимания обсуждается не столько, сколько мне нужно для ее понимания.

Main.storyboard (Base) и Main.strings (Engli sh) содержат то же содержание:

Main.storyboard and Main.strings (English) contain the same content

Содержимое Main.storyboard (Base): Content of the Main.storyboard (Base)

Содержимое Main.strings (Engli sh):

"tos-eB-aJc.title" = "Send Feedback";
"S56-oM-eis.title" = "Rate this App";

1 Ответ

0 голосов
/ 12 февраля 2020

Из документации Apple: Xcode создает папку Base.lproj в папке вашего проекта и добавляет к ней выбранные вами файлы ресурсов. Xcode создает языковую папку для языка разработки, но добавляет в нее только ресурсы, которые требуют перевода. Например, если вы выберете Engli sh в качестве языка разработки, Xcode вставит файл ресурса в папку проекта Base.lproj, но не в папку en.lproj, поскольку ресурс уже находится в Engli sh. ссылка: InternationalizingYourUserInterface

Насколько я понимаю, это было сделано для оптимизации импорта файлов локализации. Также вы не можете локализовать некоторые .xib. Если вы хотите понять, как, по каким логам c и в каком порядке загружаются файлы локализации, прочитайте этот документ от Apple: LocalizingYourApp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...