Подтвердить что ты не робот

Нужен ли мне английский язык рядом с базой, которая бы содержала то же самое "перевод"?

Я ожидаю, что базовый файл будет содержать мои английские слова, так как мой проект имеет локальную область локализации локализации, установленную на английском языке.

Обновление - чтобы уточнить мой вопрос:

enter image description here

4b9b3361

Ответ 1

Хотя я не совсем уверен, правильно ли я это сделаю, я постараюсь ответить на ваш вопрос TTBOMK.

Предположим, что вы используете NSLocalizedString(key, comment) из своего кода. Вы можете ясно видеть, что первый аргумент на самом деле является ключом для строки, а не самой переведенной (или переведенной) строкой. Поэтому, когда вы "пишете код", вы фактически не записываете строки на базовом языке - или на любой другой язык. Вы должны думать, что вы добавляете в свой код строковые заполнители.

В дальнейшем вы должны создать файл Localizable.strings для каждого языка, который вы хотели бы поддержать, в форме key = value;. Чтобы ваш пользовательский интерфейс отображался, по крайней мере, на одном человеко-читаемом языке, у вас должен быть хотя бы один Localizable.strings файл с соответствующими строковыми значениями для каждого ключа-заполнителя.

Например: если у вас в коде есть NSLocalizedString(@"ConfirmationButtonTitle", @"Yada yada"), то имеет смысл иметь файл Localizable.strings, содержащий в нем элемент "GreenButtonTitle" = "Tap here to confirm";. Если вы не создаете файл Localizable.strings или файл Localizable.strings содержат ключ GreenButtonTitle, тогда заголовок кнопки возвращается к ConfirmationButtonTitle, так как это имя ключа-заполнителя.

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

Итак, если бы вы вместо этого использовали предыдущий пример NSLocalizedString, например NSLocalizedString(@"Tap here to confirm", @"Yada yada"), тогда ваш файл default/base Localizable.strings, вероятно, содержал бы такой элемент, как "Tap here to confirm" = "Tap here to confirm";.

Что происходит здесь, это не то, что вы повторяете себя, но вместо этого вы называете свой ключ точно так же, как и строковое значение вашего базового языка, вот и все.

ИЗМЕНИТЬ

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

Ответ 2

Помимо вопроса о том, какие конечные пользователи языка будут видеть, вам нужно также рассмотреть, что будет показано в AppStore. Мой текущий опыт заключается в том, что если вы используете Base for English, английский не появится в списке поддерживаемых языков (как Apple знает, на каком языке ваша базовая локализация) в описании вашего приложения.

Я сам встречал эту проблему - базовый (английский), немецкий и русский

Настройки цели относятся к:

Localization native development region = en

Но на Appstore он появляется в этой форме:

Languages: German, Russian

ссылка на английский

Я рассматриваю дублирование базовой локализации на английском (не высокий приоритет, так как пользователи видят со скриншотов, что приложение работает на английском языке в любом случае)

Изменить:, похоже, в iOS8 есть другое поведение. Параметры приложения (Settings.bundle), похоже, игнорируют базовый перевод, если любой из переводов соответствует вашему "Предпочтительному языковому заказу".

Другими словами, приложение локализовано: Base, German, Russian. iPhone настроен на использование английского языка, предпочтительный язык - английский, немецкий, русский.

Настройки приложения заходят... Немецкий!

Еще раз: это применяется только к настройкам не к самому приложению!

Ответ 3

В соответствии с documentation (прокрутите вниз до "Создание строковых файлов для пользовательского текста в вашем коде" ), вы не должны добавьте Localizable.strings в базовую локализацию. Даже если язык разработки - английский, создайте отдельную папку и Localizable.strings для английского языка. Создайте другие для каждого дополнительного языка, который вы хотите добавить.

Дальнейшее чтение