- Руководство по локализации для iOS
- Что такое базовая интернационализация?
- Добавление новой локализации
- Где файл Localizable.strings?
- Локализация сторибордов
- Что не так с файлами [Storyboard].strings
- Локализация названия приложения
- Новый способ локализации приложений
- What programming languages can one use to develop iPhone, iPod Touch and iPad (iOS) applications?
- 10 Answers 10
- Change the language on your iPhone, iPad, or iPod touch
- Open Settings
- Tap General
- Select Language & Region
- Tap Device language
- Select your language
- Confirm your selection
- Руководство по локализации для iOS
- Что такое базовая интернационализация?
- Добавление новой локализации
- Где файл Localizable.strings?
- Локализация сторибордов
- Что не так с файлами [Storyboard].strings
- Локализация названия приложения
- Новый способ локализации приложений
Руководство по локализации для iOS
Локализация — это процесс, когда вы создаете для вашего приложения поддержку других языков. Часто вы сначала делаете приложение с англоязычным интерфейсом и затем локализуете его на другие языки, например, на японский.
Процесс локализации — трудоемкий, а его шаги потихоньку меняются по мере обновления XCode. Этот пост объясняет каждый шаг на основе последней версии XCode (7.3.1).
Переведено в Alconost
Перед началом работ по локализации убедитесь, что выбрали опцию «Использовать базовую интернационализацию» (Use Base Internationalization).
Что такое базовая интернационализация?
При создании проекта XCode автоматически генерирует ресурсы и структуру файлов для языка по умолчанию.
Это — так называемый базовый (Base) язык. Если вы делаете приложение для глобального рынка, в ваших базовых языковых ресурсах, как правило, будут тексты на английском языке.
Добавление новой локализации
Итак, у нас есть используемая по умолчанию базовая структура языковых ресурсов. Давайте добавим поддержку нового языка.
Выберите файл своего проекта в навигаторе (Project Navigator), затем выберите свой проект в списках проектов (Project) и целевых параметров (Targets). Откройте вкладку «Информация» (Info) и нажмите кнопку «+» под блоком «Локализации» (Localizations). Теперь выберите язык, который хотите поддерживать, из представленных в выпадающем списке.
XCode откроет диалог с набором ресурсов, которые необходимо добавить для нового языка. Нажатие кнопки «Завершить» (Finish) создаст эти файлы в папке нового языкового проекта под названием [новый язык].lproj. (В этом примере добавлена поддержка японского языка, соответственно, создана папка ja.lproj.)
Теперь у нас есть структура файлов в папке проекта, как в примере ниже.
Где файл Localizable.strings?
Файл Localizable.strings — там, где вы добавляете данные перевода как пары «ключ/значение».
Ранние версии XCode по умолчанию генерировали файл Localizable.strings, копии которого можно было легко создавать для других языков.
Последние версии XCode не создают файл Localizable.strings по умолчанию.
Чтобы добавить файл Localizable.strings, выберите File → New → File, а затем файл Strings (Strings File) на вкладке ресурсов (Resource) для iOS, задайте имя Localizable.strings и создайте файл.
Теперь у вас есть файл Localizable.strings для базового (Base) языка, как в примере ниже.
Чтобы добавить Localizable.strings для японского языка, выберите японский (Japanese) в обозревателе (File Inspector). Это создаст новый файл Localizable.strings file в папке ja.lproj.
Теперь у нас есть два файла Localizable.strings: один в папке Base.lproj, другой — в папке ja.lproj.
Давайте добавим слова и фразы, используемые в приложении, в файл Localizable.strings базового языка.
Ниже — пример добавления «Welcome» = «Welcome»;
Левая часть — это так называемый ключ, с помощью которого потом метод NSLocalizedString извлекает текст (значение) из правой части. Так выглядит этот тип данных — пары «ключ/значение».
Ниже — пример метода NSLocalizedString. Мы устанавливаем ключ как первый параметр метода, таким образом позволяя ему извлечь соответствующее значение из файла Localizable.strings и вернуть его. В этом примере мы получаем локализованные строки для заголовка, сообщения и кнопок уведомления.
Запуская приложение, мы видим уведомление с текстами на английском языке.
Следующий шаг: добавляем тексты на японском языке в файл Localizable.strings в папке ja.lproj. Используем те же ключи, но заменяем значения на соответствующие переводы на японский язык.
Затем в симуляторе iOS переключаем язык телефона на японский, запускаем приложение и видим уведомление с текстами на японском языке.
Переключать язык телефона каждый раз, когда надо проверить результаты локализации, слишком трудозатратно. В XCode предусмотрена удобная возможность переключать языки только для приложения, когда оно запущено в симуляторе iOS.
Чтобы сделать это, выберите Edit Scheme из выпадающего меню в левом верхнем углу окна XCode и поменяйте язык приложения (Application Language) с системного (System Language) на японский (Japanese). (Если потерялись, смотрите на скриншот ниже.)
Эта конфигурация не переключит язык телефона в симуляторе, но поменяет язык среды в приложении на указанный вами. Это удобно, когда вы добавляете несколько языков и хотите переключаться между ними для проверки результатов локализации.
Локализация сторибордов
Что ж, теперь мы знаем, как извлечь локализованные тексты с помощью NSLocalizedString и как подготовить данные в файлах Localizalbe.strings.
Этого достаточно, чтобы программно показывать локализованные тексты пользователям.
Следующий шаг — поддержка локализации текстов, заданных в сторибордах (Storyboards), например, названий кнопок. Если вы задаете названия кнопок или ярлыков в сторибордах и не меняете эти тексты программно в контроллерах представлений (ViewControllers), вам придется делать локализацию ваших .storyboard-файлов.
Чтобы добавить данные перевода к словам, используемым в сторибордах, дла начала выберите файл сториборда в навигаторе (Project Navigator), затем найдите и добавьте японский (Japanese) в обозреватель (File Inspector) справа. Это создаст файл [StoryboardFileName].strings в папке ja.lproj. В примере ниже для файла Main.storyboard создан файл Main.strings (Japanese).
В файле Main.strings вы увидите нечто подобное.
Замените часть «Get Started» на соответствующую японскую фразу.
Запустите приложение. Убедитесь, что название кнопки правильно локализовано на японский.
Что не так с файлами [Storyboard].strings
Единственная проблема в том, что файл Main.strings не обновляется, когда вы добавляете новые компоненты пользовательского интерфейса в файл сториборда.
Потому вам всегда придется сначала определиться с компонентами интерфейса и только потом создавать Main.strings, включая, например, японскую локализацию в обозревателе (File Inspector).
Локализация названия приложения
Чтобы локализовать название приложения или что-нибудь другое из файла Info.plist, создайте файл InfoPlist.strings.
Выберите Go to File → New → File, затем файл Strings (Strings File) на вкладке ресурсов (Resource) для iOS и задайте имя InfoPlist.strings. Сохраните файл InfoPlist.strings в папке Base.lproj. (Теперь XCode отнесет этот файл InfoPlist.strings к базовому языку.)
Обычно мы локализуем эти два значения в файле info.plist:
- CFBundleDisplayName — название приложения в том виде, в котором оно отображается на главном экране;
- NSHumanReadableCopyright — информация об авторских правах (например: 2014, Goldrush Computing Inc. Все права защищены).
Укажите название приложения и информацию об авторских правах для этих ключей, как в примере ниже.
Затем в обозревателе (File Inspector) выберите японский, чтобы добавить InfoPlist.strings в папку ja.lproj (для этого файл InfoPlist.strings должен оставаться выделенным).
В файле InfoPlist.strings (Japanese), замените значения переводами на японский, как в примере.
Запустите приложение и посмотрите, правильно ли название вашего приложения локализовано на японский.
Вот и весь процесс локализации приложения на другой язык.
Новый способ локализации приложений
Я написал множество приложений и много работал над локализацией. Она ощутимо отнимает рабочее время, поэтому я всегда искал способы упростить её. И наконец мы создали инструмент, который облегчает процесс локализации — он называется InAppTranslation. Если вам интересно, заходите на наш сайт — inapptranslation.com.
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией приложений, игр и сайтов на 60 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
Источник
What programming languages can one use to develop iPhone, iPod Touch and iPad (iOS) applications?
What programming languages can one use to develop iPhone, iPod Touch and iPad (iOS) applications?
Also are there plans in the future to expand the amount of programming languages that iOS will support?
10 Answers 10
Apple lifted the restrictions on non-Objective C/C/C++ apps — you just can’t load code that isn’t in the app bundle.
MonoTouch lets you use .NET languages — C# is directly supported, but if you have Windows, you can make assemblies in any .NET language and use it.
There are rumors that Apple is going to support other languages directly — I keep hearing ruby, but they are just rumors.
I think Lua is being used for game logic on a lot of apps.
EDIT (in 2018): Generally you can use any language that you can get to compile for iOS or even install language interpreters. The main thing you cannot do is load code from the Internet that wasn’t in the app bundle.
People do this all of the time anyway (see React Native apps loading JavaScript from servers), but, technically, it’s not allowed. The main thing that will get you attention from Apple if you make some kind of App Store that loads whole App-like things.
EDIT (in 2020): from @Pylot in comments: I know this is a long time ago, but now at least technically you can load code that isn’t embedded in the app, as you can write with JavaScript using the webview. Not staying your answer is wrong or anything, I definitely agree with you. but I was looking for something and found this post on the way. Figured if anyone sees this it might help them out.
The SDK agreement and App store guidelines have been changed (circa Sept 2010).
You can now probably use any compiled language that will compile to the same static ARM object file format as Xcode produces and that will link to (only) the public API’s within Apple’s frameworks and libraries. However, you can not use a JIT compiled language unless you pre-compile all object code before submission to Apple for review.
You can use any interpreted language, as long as you embed the interpreter, and do not allow the interpreter or the app to download and run any interpretable code other than code built into the app bundle before submission to Apple for review, or source code typed-in by the user.
Objective C and C will likely still be the most optimal programming language for anything requiring high performance and the latest API support (* see update below), as those are the languages for which Apple targets its iOS frameworks and tunes its ARM processor chipsets. Apple also supports the use of Javascript/HTML5 inside a UIWebView. Those are the only languages for which Apple has announced support. Anything else you will have to find support elsewhere.
But, if you really want, there are at least a half dozen BASIC interpreters now available in the iOS App store, so even «Stone Age» programming methodology is now allowed.
Added: (*) As of late 2014, one can also develop apps using Apple’s new Swift programming language. As of early 2015, submitted binaries must include 64-bit (arm64) support.
Источник
Change the language on your iPhone, iPad, or iPod touch
You can change the language setting on your iPhone, iPad, or iPod touch if it’s incorrect or if you’ve accidentally changed the language to one you don’t understand.
Open Settings
On the Home screen, tap Settings.
Tap General
On the next screen, tap General.
Select Language & Region
Scroll down and tap Language & Region.
Tap Device language
On the next screen, tap «[Device] Language».
Select your language
Pick your language from the list.
Confirm your selection
An alert will ask you to confirm the new language. Tap the first option.
After your device updates the language, your device should automatically display the language you selected.
Источник
Руководство по локализации для iOS
Локализация — это процесс, когда вы создаете для вашего приложения поддержку других языков. Часто вы сначала делаете приложение с англоязычным интерфейсом и затем локализуете его на другие языки, например, на японский.
Процесс локализации — трудоемкий, а его шаги потихоньку меняются по мере обновления XCode. Этот пост объясняет каждый шаг на основе последней версии XCode (7.3.1).
Переведено в Alconost
Перед началом работ по локализации убедитесь, что выбрали опцию «Использовать базовую интернационализацию» (Use Base Internationalization).
Что такое базовая интернационализация?
При создании проекта XCode автоматически генерирует ресурсы и структуру файлов для языка по умолчанию.
Это — так называемый базовый (Base) язык. Если вы делаете приложение для глобального рынка, в ваших базовых языковых ресурсах, как правило, будут тексты на английском языке.
Добавление новой локализации
Итак, у нас есть используемая по умолчанию базовая структура языковых ресурсов. Давайте добавим поддержку нового языка.
Выберите файл своего проекта в навигаторе (Project Navigator), затем выберите свой проект в списках проектов (Project) и целевых параметров (Targets). Откройте вкладку «Информация» (Info) и нажмите кнопку «+» под блоком «Локализации» (Localizations). Теперь выберите язык, который хотите поддерживать, из представленных в выпадающем списке.
XCode откроет диалог с набором ресурсов, которые необходимо добавить для нового языка. Нажатие кнопки «Завершить» (Finish) создаст эти файлы в папке нового языкового проекта под названием [новый язык].lproj. (В этом примере добавлена поддержка японского языка, соответственно, создана папка ja.lproj.)
Теперь у нас есть структура файлов в папке проекта, как в примере ниже.
Где файл Localizable.strings?
Файл Localizable.strings — там, где вы добавляете данные перевода как пары «ключ/значение».
Ранние версии XCode по умолчанию генерировали файл Localizable.strings, копии которого можно было легко создавать для других языков.
Последние версии XCode не создают файл Localizable.strings по умолчанию.
Чтобы добавить файл Localizable.strings, выберите File → New → File, а затем файл Strings (Strings File) на вкладке ресурсов (Resource) для iOS, задайте имя Localizable.strings и создайте файл.
Теперь у вас есть файл Localizable.strings для базового (Base) языка, как в примере ниже.
Чтобы добавить Localizable.strings для японского языка, выберите японский (Japanese) в обозревателе (File Inspector). Это создаст новый файл Localizable.strings file в папке ja.lproj.
Теперь у нас есть два файла Localizable.strings: один в папке Base.lproj, другой — в папке ja.lproj.
Давайте добавим слова и фразы, используемые в приложении, в файл Localizable.strings базового языка.
Ниже — пример добавления «Welcome» = «Welcome»;
Левая часть — это так называемый ключ, с помощью которого потом метод NSLocalizedString извлекает текст (значение) из правой части. Так выглядит этот тип данных — пары «ключ/значение».
Ниже — пример метода NSLocalizedString. Мы устанавливаем ключ как первый параметр метода, таким образом позволяя ему извлечь соответствующее значение из файла Localizable.strings и вернуть его. В этом примере мы получаем локализованные строки для заголовка, сообщения и кнопок уведомления.
Запуская приложение, мы видим уведомление с текстами на английском языке.
Следующий шаг: добавляем тексты на японском языке в файл Localizable.strings в папке ja.lproj. Используем те же ключи, но заменяем значения на соответствующие переводы на японский язык.
Затем в симуляторе iOS переключаем язык телефона на японский, запускаем приложение и видим уведомление с текстами на японском языке.
Переключать язык телефона каждый раз, когда надо проверить результаты локализации, слишком трудозатратно. В XCode предусмотрена удобная возможность переключать языки только для приложения, когда оно запущено в симуляторе iOS.
Чтобы сделать это, выберите Edit Scheme из выпадающего меню в левом верхнем углу окна XCode и поменяйте язык приложения (Application Language) с системного (System Language) на японский (Japanese). (Если потерялись, смотрите на скриншот ниже.)
Эта конфигурация не переключит язык телефона в симуляторе, но поменяет язык среды в приложении на указанный вами. Это удобно, когда вы добавляете несколько языков и хотите переключаться между ними для проверки результатов локализации.
Локализация сторибордов
Что ж, теперь мы знаем, как извлечь локализованные тексты с помощью NSLocalizedString и как подготовить данные в файлах Localizalbe.strings.
Этого достаточно, чтобы программно показывать локализованные тексты пользователям.
Следующий шаг — поддержка локализации текстов, заданных в сторибордах (Storyboards), например, названий кнопок. Если вы задаете названия кнопок или ярлыков в сторибордах и не меняете эти тексты программно в контроллерах представлений (ViewControllers), вам придется делать локализацию ваших .storyboard-файлов.
Чтобы добавить данные перевода к словам, используемым в сторибордах, дла начала выберите файл сториборда в навигаторе (Project Navigator), затем найдите и добавьте японский (Japanese) в обозреватель (File Inspector) справа. Это создаст файл [StoryboardFileName].strings в папке ja.lproj. В примере ниже для файла Main.storyboard создан файл Main.strings (Japanese).
В файле Main.strings вы увидите нечто подобное.
Замените часть «Get Started» на соответствующую японскую фразу.
Запустите приложение. Убедитесь, что название кнопки правильно локализовано на японский.
Что не так с файлами [Storyboard].strings
Единственная проблема в том, что файл Main.strings не обновляется, когда вы добавляете новые компоненты пользовательского интерфейса в файл сториборда.
Потому вам всегда придется сначала определиться с компонентами интерфейса и только потом создавать Main.strings, включая, например, японскую локализацию в обозревателе (File Inspector).
Локализация названия приложения
Чтобы локализовать название приложения или что-нибудь другое из файла Info.plist, создайте файл InfoPlist.strings.
Выберите Go to File → New → File, затем файл Strings (Strings File) на вкладке ресурсов (Resource) для iOS и задайте имя InfoPlist.strings. Сохраните файл InfoPlist.strings в папке Base.lproj. (Теперь XCode отнесет этот файл InfoPlist.strings к базовому языку.)
Обычно мы локализуем эти два значения в файле info.plist:
- CFBundleDisplayName — название приложения в том виде, в котором оно отображается на главном экране;
- NSHumanReadableCopyright — информация об авторских правах (например: 2014, Goldrush Computing Inc. Все права защищены).
Укажите название приложения и информацию об авторских правах для этих ключей, как в примере ниже.
Затем в обозревателе (File Inspector) выберите японский, чтобы добавить InfoPlist.strings в папку ja.lproj (для этого файл InfoPlist.strings должен оставаться выделенным).
В файле InfoPlist.strings (Japanese), замените значения переводами на японский, как в примере.
Запустите приложение и посмотрите, правильно ли название вашего приложения локализовано на японский.
Вот и весь процесс локализации приложения на другой язык.
Новый способ локализации приложений
Я написал множество приложений и много работал над локализацией. Она ощутимо отнимает рабочее время, поэтому я всегда искал способы упростить её. И наконец мы создали инструмент, который облегчает процесс локализации — он называется InAppTranslation. Если вам интересно, заходите на наш сайт — inapptranslation.com.
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией приложений, игр и сайтов на 60 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
Источник