Является ли базовая информационная база Base International для соответствия второму языку для всех неклассифицированных языков и строк?

Я просмотрел некоторые документы и видеоролики по интернационализации на Apple-разработчике, но я не нашел явного ответа на этот вопрос. В учебниках Apple я вижу папку Base.lproj рядом с en.lproj и zh.lproj - пример перевода (локализация) происходит с английского на китайский. Но они говорят мне, что есть файл en.lproj/myStoryboard.strings, и это путает. Я не вижу смысла в создании английской локализации для раскадровки (это уже на английском языке).

  • Итак, мои вопросы, если пользователь когда-нибудь увидит строки в Base.lproj/myStoryboard.storyboard?
  • Строки в этом файле должны быть строками по умолчанию, которые отображаются пользователю, если система не может найти предпочтительную языковую папку пользователя в моем пакете?
  • Могу ли я явно сказать "никогда не использовать Base.lproj/myStoryboard.storyboard, всегда отступать на en.lproj/myStoryboard.strings"?

Другими словами:
Скажем, я хочу, чтобы мое приложение отображалось на английском языке всякий раз, когда пользовательский язык недоступен, но мой Base.lproj/myStoryboard.storyboard находится на шведском языке. Должен ли я локализовать базовую раскадровку на sv.lproj/myStoryboard.strings и перевести все строки в базовом раскадровке на английский, чтобы выполнить это?

Ответ 1

В моем случае XCode 5 не создал en.lproj/myStoryboard.strings, там только оригинальная раскадровка в папке Base.lproj. Может быть, это проблема старого XCode?

Попробуйте удалить этот файл и посмотреть, совпадает ли ваше приложение с Base.lproj по умолчанию, английские строки.

В файле Info.plist должна быть запись Localization native development region, которая указывает на папку lproj, которая будет использоваться в случае, если требуемая строка не существует на предпочтительном языке.

Я не уверен в этом, но я думаю, что вы должны использовать en, а пользовательский интерфейс с Base.lproj автоматически отменится на Base.lproj.

Помогает ли это вам каким-либо образом?

Ответ 2

  • Итак, мои вопросы, если пользователь когда-либо увидит строки в Base.lproj/myStoryboard.storyboard?

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

Строки в этом файле должны быть строками по умолчанию, которые отображаются пользователю, если система не может найти предпочтительную языковую папку пользователя в моем пакете?

Это не связанные понятия. Строки, встроенные в раскадровку, эквивалентны тем, что они указаны в en.lproj. После этого языковой резерв работает так же, как без Base.lproj.

Могу ли я сказать "никогда не использовать Base.lproj/myStoryboard.storyboard, всегда возвращайтесь к en.lproj/myStoryboard.strings"?

Если у вас есть en.lproj/myStoryboard.strings, а английский - язык разработки, они всегда будут заменять строки, встроенные в Base.lproj/myStoryboard.storyboard для английского языка. В том числе, когда английский язык не является предпочтительным языком, но в конечном итоге выбирается как запасной язык.