Локализация в Xamarin.iOSLocalization in Xamarin.iOS

В этом документе описываются функции локализации в пакет SDK для iOS и способ доступа к ним с помощью Xamarin.This document covers the localization features of the iOS SDK and how to access them with Xamarin.

Ссылаться на кодировки интернационализации инструкции, в том числе наборов и кодовых страниц, символ в приложениях, которые нужно обработать данные не в Юникоде.Refer to the Internationalization Encodings for instructions on including character sets/code pages in applications that must process non-Unicode data.

функции платформы iOSiOS platform features

В этом разделе описываются некоторые возможности локализации в iOS.This section describes some of the localization features in iOS. Перейдите к разделу разделу определенный код и примеры.Skip to the next section to see specific code and examples.

ЯзыкLanguage

Пользователям выбрать язык в параметры приложения.Users choose their language in the Settings app. Этот параметр влияет на строки языка и изображений, отображаемых в операционной системе и приложениях.This setting affects the language strings and images displayed by the operating system and in apps.

Чтобы определить язык, используемой в приложении, получить первый элемент NSBundle.MainBundle.PreferredLocalizations:To determine the language being used in an app, get the first element of NSBundle.MainBundle.PreferredLocalizations:

var lang = NSBundle.MainBundle.PreferredLocalizations[0];

Это значение будет равно код языка, такие как en для английского языка, es для испанского языка, ja для японского языка, и т.д. Возвращаемое значение будет ограничен одной из локализации, поддерживаемый приложением (используя резервные правила для определения оптимального совпадения).This value will be a language code such as en for English, es for Spanish, ja for Japanese, etc. The value returned is restricted to one of the localizations supported by the application (using fallback rules to determine the best match).

Код приложения не всегда необходимо проверить это значение — Xamarin и iOS обоих предоставляет возможности, которые автоматически обеспечивают правильную строку или ресурсов для языка пользователя.Application code does not always need to check for this value – Xamarin and iOS both provide features that help to automatically provide the correct string or resource for the user's language. Эти функции описаны в оставшейся части этого документа.These features are described in the remainder of this document.

Примечание

Используйте NSLocale.PreferredLanguages для определения настроек языка пользователя, независимо от того, локализации, поддерживаемый приложением.Use NSLocale.PreferredLanguages to determine the user's language preferences, regardless of the localizations supported by the app. Значения, возвращаемые этим методом, изменения в iOS 9; см. в разделе технические TN2418 Примечание подробные сведения.The values returned by this method changed in iOS 9; see Technical Note TN2418 for details.

Языковой стандартLocale

Пользователь нажимает кнопку языковый стандарт в параметры приложения.Users choose their locale in the Settings app. Этот параметр влияет на способ форматирования дат, времени, чисел и валюты.This setting affects the way that dates, times, numbers, and currency are formatted.

Это позволяет пользователям выбрать ли они видеть форматы времени 12- или 24-часовой, является ли их десятичного разделителя запятую или точку и порядок день, месяц и год в отображения даты.This lets users choose whether they see 12-hour or 24-hour time formats, whether their decimal separator is a comma or a point, and the order of day, month and year in date display.

С помощью Xamarin у вас есть доступ к классам Apple iOS (NSNumberFormatter) а также классы .NET в System.Globalization.With Xamarin you have access to both Apple’s iOS classes (NSNumberFormatter) as well as the .NET classes in System.Globalization. Разработчики должны оценить которого лучше подходит для своих потребностей, так как существуют различные функции, доступные в каждом.Developers should evaluate which is better suited to their needs, as there are different features available in each. В частности Если извлечение и отображение цен покупки в приложении, с помощью StoreKit следует использовать классы форматирования Apple для возвращаются сведения о цене.In particular, if you are retrieving and displaying In-App Purchase prices using StoreKit you should use Apple’s formatting classes for the price information returned.

Текущий языковой стандарт, можно запросить с помощью любого из двух способов:The current locale can be queried by either of two ways:

  • NSLocale.CurrentLocale.LocaleIdentifier
  • NSLocale.AutoUpdatingCurrentLocale.LocaleIdentifier

Первое значение могут быть кэшированы в операционной системе и поэтому может не всегда отражать текущего выбранного языка пользователя.The first value can be cached by the operating system and so might not always reflect the user’s currently selected locale. Используйте второе значение для получения текущего выбранного языкового стандарта.Use the second value to obtain the currently selected locale.

Примечание

Mono (среда выполнения .NET основе Xamarin.iOS) и API для iOS компании Apple не поддерживают одинаковые наборы комбинаций языка или региона.Mono (the .NET runtime upon which Xamarin.iOS is based) and Apple’s iOS APIs do not support identical sets of language/region combinations. Из-за этого, имеется возможность выбрать комбинацию языка или региона в iOS параметры приложения, которые не сопоставлены допустимое значение в Mono.Because of this, it’s possible to select a language/region combination in the iOS Settings app that does not map to a valid value in Mono. Например установка iPhone язык на английский и его регион в Испании приведет к следующим интерфейсам API для получения различных значений:For example, setting an iPhone’s language to English and its region to Spain will cause the following APIs to yield different values:

  • CurrentThead.CurrentCulture: en US (Mono API)CurrentThead.CurrentCulture: en-US (Mono API)
  • CurrentThread.CurrentUICulture: en US (Mono API)CurrentThread.CurrentUICulture: en-US (Mono API)
  • NSLocale.CurrentLocale.LocaleIdentifier: en_ES (Apple API)NSLocale.CurrentLocale.LocaleIdentifier: en_ES (Apple API)

Так как использует Mono CurrentThread.CurrentUICulture для выбора ресурсов и CurrentThread.CurrentCulture для форматирования дат и валюты, локализации, основанная на Mono (например, с RESX-файлами) может не обеспечивать ожидаемые результаты для этих сочетаний языка или региона.Since Mono uses CurrentThread.CurrentUICulture to select resources and CurrentThread.CurrentCulture to format dates and currencies, Mono-based localization (for example, with .resx files) may not yield expected results for these language/region combinations. В таких ситуациях используют интерфейсы API Apple для локализации, при необходимости.In these situations, rely on Apple's APIs to localize as necessary.

NSCurrentLocaleDidChangeNotificationNSCurrentLocaleDidChangeNotification

Создает iOS NSCurrentLocaleDidChangeNotification когда пользователь обновляет их языкового стандарта.iOS generates an NSCurrentLocaleDidChangeNotification when the user updates their locale. Приложения могут вести прослушивание для этого уведомления, пока они выполняются и можно внести соответствующие изменения в пользовательский интерфейс.Applications can listen for this notification while they are running and can make appropriate changes to the UI.

Основные сведения о локализации в iOSLocalization basics in iOS

Следующие функции iOS легко будет применить в Xamarin, чтобы предоставлять локализованные ресурсы для отображения пользователю.The following features of iOS are easily leveraged in Xamarin to provide localized resources for display to the user. Ссылаться на TaskyL10n пример чтобы узнать, как реализовать эти идеи.Refer to the TaskyL10n sample to see how to implement these ideas.

Указания по умолчанию и поддерживаемые языки в файле Info.plist.Specifying default and supported languages in Info.plist

В технические вопросы И ответы QA1828: Определение языка для приложений iOS, Apple описывает, как iOS выбирает язык, используемый в приложении.In Technical Q&A QA1828: How iOS Determines the Language For Your App, Apple describes how iOS selects a language to use in an app. Следующие факторы влияют на язык, который отображается:The following factors impact which language is displayed:

  • Пользователь Предпочитаемые языки (в параметры приложения)The user's preferred languages (found in the Settings app)
  • Локализации, в состав приложения (.lproj папки)The localizations bundled with the app (.lproj folders)
  • CFBundleDevelopmentRegion (Info.plist значение, указывающее язык по умолчанию для приложения)CFBundleDevelopmentRegion (Info.plist value specifying the default language for the app)
  • CFBundleLocalizations (Info.plist массиве, указывающий все поддерживаемые локализации)CFBundleLocalizations (Info.plist array specifying all supported localizations)

Как указано в технические вопросы И ответы, CFBundleDevelopmentRegion представляет регион по умолчанию и язык приложения.As indicated in the Technical Q&A, CFBundleDevelopmentRegion represents an app's default region and language. Если приложение не поддерживает явным образом любой из предпочитаемых языков пользователя, он будет использовать язык, указанный по этому полю.If the app doesn't explicitly support any of a user's preferred languages, it will use the language specified by this field.

Важно!

iOS 11 применяет этот механизм выбора языка более строго, чем предыдущие версии операционной системы.iOS 11 applies this language selection mechanism more strictly than did previous versions of the operating system. По этой причине любого приложения iOS 11, явно не объявлен поддерживаемых локализации — включая .lproj папки или задав значение для CFBundleLocalizations — может отображаться другой язык в iOS 11, чем это было в iOS 10.Because of this, any iOS 11 app that does not explicitly declare its supported localizations – either by including .lproj folders or setting a value for CFBundleLocalizations – may display a different language in iOS 11 than it did in iOS 10.

Если CFBundleDevelopmentRegion не был указан в Info.plist файл, средства сборки Xamarin.iOS в настоящее время использовать значение по умолчанию en_US.If CFBundleDevelopmentRegion has not been specified in the Info.plist file, the Xamarin.iOS build tools currently use a default value of en_US. Возможно, ситуация изменится в будущем, это означает, что язык по умолчанию является английский.While this may change in a future release, it means that the default language is English.

Чтобы убедиться, что приложение выбирает это ожидаемый язык, выполните следующие действия:To ensure that your app selects an expected language, take the following steps:

  • Укажите язык по умолчанию.Specify a default language. Откройте Info.plist и использовать источника представления, чтобы задать значение для CFBundleDevelopmentRegion ключ; в формате XML, он должен выглядеть следующим образом:Open Info.plist and use the Source view to set a value for the CFBundleDevelopmentRegion key; in XML, it should look similar to the following:
<key>CFBundleDevelopmentRegion</key>
<string>es</string>

В этом примере использует «es», чтобы указать, что если ни один из пользователей предпочитаемый языков, по умолчанию на испанский язык.This example uses “es” to specify that when none of a user’s preferred languages are supported, default to Spanish.

  • Объявите все поддерживаемые локализации.Declare all supported localizations. В Info.plist, использовать источника представления, чтобы задать массив для CFBundleLocalizations ключ; в формате XML, он должен выглядеть следующим образом:In Info.plist, use the Source view to set an array for the CFBundleLocalizations key; in XML, it should look similar to the following:
<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>es</string>
    ...
</array>

Приложений Xamarin.iOS, локализованные с помощью механизмов .NET, такие как RESX-файлах необходимо предоставить эти Info.plist также значения.Xamarin.iOS apps that have been localized using .NET mechanisms such as .resx files must provide these Info.plist values as well.

Дополнительные сведения об этих Info.plist ключи, взгляните на Apple справочника по ключам сведения свойства списка.For more information about these Info.plist keys, take a look at Apple's Information Property List Key Reference.

Метод GetLocalizedStringGetLocalizedString method

NSBundle.MainBundle.GetLocalizedString Метод выполняет поиск локализованного текста, который будет сохранен в .strings файлы в проекте.The NSBundle.MainBundle.GetLocalizedString method looks up localized text that has been stored in .strings files in the project. Эти файлы организованы по языку, в специальную каталогов с помощью .lproj суффикс (Обратите внимание, что буквы расширения строчную букву «L»).These files are organized by language, in specially named directories with an .lproj suffix (note the first letter of the extension is a lower-case "L").

расположение файлов .strings.strings file locations

  • Base.lproj — это каталог, содержащий ресурсы для языка по умолчанию.Base.lproj is the directory that contains resources for the default language. Часто он расположен в корневом каталоге проекта (но может также размещаться в ресурсы папку).It is often located in the project root (but can also be placed in the Resources folder).
  • <Язык>.lproj создаются каталоги для каждого поддерживаемого языка, обычно в ресурсы папки.<language>.lproj directories are created for each supported language, usually in the Resources folder.

Может существовать несколько разных .strings файлов в каждом каталоге языка:There can be a number of different .strings files in each language directory:

  • Localizable.strings — в основной список локализованный текст.Localizable.strings – the main list of localized text.
  • InfoPlist.strings — некоторые определенные ключи разрешены в этот файл для преобразования вещи, такие как имя приложения.InfoPlist.strings – certain specific keys are allowed in this file to translate things such as the application name.
  • < имя раскадровки > .strings — необязательный файл, который содержит переводы для элементов пользовательского интерфейса в раскадровке..strings – optional file that contains translations for user interface elements in a storyboard.

Действие при построении для этих файлов должна быть пакета ресурсов.The Build Action for these files should be Bundle Resource.

формат файла .strings.strings file format

Используется следующий синтаксис для локализованных строковых значений:The syntax for localized string values is:

/* comment */
"key"="localized-value";

Следует экранировать следующие символы в строках:You should escape the following characters in strings:

  • \" Квота\" quote
  • \\ обратная косая черта\\ backslash
  • \n символ новой строки\n newline

Ниже приведен пример es/Localizable.strings (т. е. Испанский) файл из образца:This is an example es/Localizable.strings (ie. Spanish) file from the sample:

"<new task>" = "<new task>";
"Task Details" = "Detalles de la tarea";
"Name" = "Nombre";
"task name" = "nombre de la tarea";
"Notes" = "Notas";
"other task info"= "otra información de tarea";
"Done" = "Completo";
"Save" = "Guardar";
"Delete" = "Eliminar";

ИзображенийImages

Для локализации изображение в iOS:To localize an image in iOS:

  1. См. изображение в коде, например:Refer to the image in code, for example:

    UIImage.FromBundle("flag");
    
  2. Поместите файл изображения по умолчанию flag.png в Base.lproj (языкового каталога собственной разработки).Place the default image file flag.png in Base.lproj (the native development language directory).

  3. При необходимости поместите локализованные версии изображения в .lproj папки для каждого языка (например)Optionally place localized versions of the image in .lproj folders for each language (eg. ES.lproj, ja.lproj).es.lproj, ja.lproj). Используйте это имя flag.png в каждом каталоге языка.Use the same filename flag.png in each language directory.

Если изображение отсутствует для определенного языка, iOS будет переключиться на родном языке папку по умолчанию и загрузить изображение из него.If an image is not present for a particular language, iOS will fall back to the default native language folder and load the image from there.

Изображения при запускеLaunch images

Использовать стандартным соглашениям об именовании для изображений при запуске (XIB и раскадровки для моделей iPhone 6) при помещении их в .lproj каталоги для каждого языка.Use the standard naming conventions for the launch images (and the XIB or Storyboard for iPhone 6 models) when placing them in the .lproj directories for each language.

Default.png
Default@2x.png
Default-568h@2x.png
LaunchScreen.xib

Имя приложенияApp name

Размещение InfoPlist.strings файл .lproj каталог позволяет переопределить некоторые значения в приложении Info.plist, включая имя приложения:Placing an InfoPlist.strings file in an .lproj directory lets you override some values from the app's Info.plist, including the application name:

"CFBundleDisplayName" = "LeónTodo";

Другие ключи, которые можно использовать для локализовать строки для конкретного приложения являются:Other keys that you can use to localize application-specific strings are:

  • CFBundleNameCFBundleName
  • CFBundleShortVersionStringCFBundleShortVersionString
  • NSHumanReadableCopyrightNSHumanReadableCopyright

Значения даты и времениDates and times

Несмотря на то, что можно использовать встроенные функции даты и времени .NET (вместе с текущим CultureInfo) для форматирования дат и времени для языкового стандарта, это приводит к пропуску зависящих от языкового стандарта пользовательских параметров (которые можно задать отдельно от языка).Although it is possible to use the built-in .NET date and time functions (along with the current CultureInfo) to format dates and times for a locale, this would ignore locale-specific user-settings (which can be set separately from language).

Используйте iOS NSDateFormatter для получения выходных данных, соответствующего выбранному языкового стандарта пользователя.Use the iOS NSDateFormatter to produce output that matches the user's locale preference. В следующем примере кода показаны основные дату и время, в параметры форматирования:The following sample code demonstrates the basic date and time formatting options:

var date = NSDate.Now;
var df = new NSDateFormatter ();
df.DateStyle = NSDateFormatterStyle.Full;
df.TimeStyle = NSDateFormatterStyle.Long;
Debug.WriteLine ("Full,Long: " + df.StringFor(date));
df.DateStyle = NSDateFormatterStyle.Short;
df.TimeStyle = NSDateFormatterStyle.Short;
Debug.WriteLine ("Short,Short: " + df.StringFor(date));
df.DateStyle = NSDateFormatterStyle.Medium;
df.TimeStyle = NSDateFormatterStyle.None;
Debug.WriteLine ("Medium,None: " + df.StringFor(date));

Результаты для английского языка в США:Results for English in the United States:

Full,Long: Friday, August 7, 2015 at 10:29:32 AM PDT
Short,Short: 8/7/15, 10:29 AM
Medium,None: Aug 7, 2015

Результаты для Испанский (Испания):Results for Spanish in Spain:

Full,Long: viernes, 7 de agosto de 2015, 10:26:58 GMT-7
Short,Short: 7/8/15 10:26
Medium,None: 7/8/2015

Ссылаться на Apple модули форматирования даты Дополнительные сведения см.Refer to the Apple Date Formatters documentation for more information. При тестировании, зависящих от национальной настройки даты и времени, форматирование, выберите оба варианта iPhone языка и регион параметры.When testing locale-sensitive date and time formatting, check both iPhone Language and Region settings.

Макет справа налево (RTL)Right-to-Left (RTL) layout

iOS предоставляет ряд возможностей для помощи в создании приложений, использующих справа НАЛЕВО:iOS provides a number of features to assist in building RTL-aware apps:

  • Используйте автоматический макет leading и trailing атрибуты для выравнивания элемента управления (который соответствует влево и вправо для английского языка, но обращено для языков RTL).Use auto layout's leading and trailing attributes for control alignment (which corresponds to left and right for English, but is reversed for RTL languages). UIStackView Управления особенно полезна для размещения элементов управления, которые следует учитывать справа НАЛЕВО.The UIStackView control is particularly useful for laying out controls to be RTL-aware.
  • Используйте TextAlignment = UITextAlignment.Natural для выравнивания текста (которая остается для большинства языков, но для справа НАЛЕВО).Use TextAlignment = UITextAlignment.Natural for text alignment (which will be left for most languages but right for RTL).
  • UINavigationController автоматически зеркально отражает "Назад" и меняет направление прокрутки.UINavigationController automatically flips the back button and reverses swipe direction.

Ниже показаны снимки экрана локализованные Tasky пример в арабском и иврите (несмотря на то, что в полях был введен на английском языке):The following screenshots show the localized Tasky sample in Arabic and Hebrew (although English has been entered in the fields):

iOS автоматически отменяет UINavigationController, и другие элементы управления размещаются внутри UIStackView или с автоматическим макетом.iOS automatically reverses the UINavigationController, and the other controls are placed inside UIStackView or aligned with Auto-Layout. Текст справа НАЛЕВО локализовать с помощью .strings файлы в так же, как текст слева Направо.RTL text is localized using .strings files in the same way as LTR text.

Локализация пользовательского интерфейса в кодеLocalizing the UI in code

Tasky (локализованные в коде) примере показано, как для локализации приложения, где создается пользовательского интерфейса в код (а не файлы Xib или раскадровки).The Tasky (localized in code) sample shows how to localize an application where the user-interface is built in code (rather than XIBs or storyboards).

Структура проектаProject Structure

Файл Localizable.stringsLocalizable.strings file

Как описано выше, Localizable.strings формат файла состоит из пары "ключ значение".As described above, the Localizable.strings file format consists of key-value pairs. Раздел описывает назначение строки, а значение — переведенный текст, используемый в приложении.The key describes the intent of the string and the value is the translated text to be used in the app.

Испанский (es) локализации для примера, показаны ниже:The Spanish (es) localizations for the sample are shown below:

"<new task>" = "<new task>";
"Task Details" = "Detalles de la tarea";
"Name" = "Nombre";
"task name" = "nombre de la tarea";
"Notes" = "Notas";
"other task info"= "otra información de tarea";
"Done" = "Completo";
"Save" = "Guardar";
"Delete" = "Eliminar";

Выполнение локализацииPerforming the localization

В коде приложения, где бы ни пользовательский интерфейс отображаемый текст задается (будь то текст метки, или заполнитель входных данных и т. д) в коде используется iOS GetLocalizedString функции для получения правильное преобразование для отображения:In the application code, wherever a user interface's display text is set (whether it is a label's text, or an input's placeholder, etc) the code uses the iOS GetLocalizedString function to retrieve the correct translation to display:

var localizedString = NSBundle.MainBundle.GetLocalizedString ("key", "optional");
someControl.Text = localizedString;

Локализация пользовательских интерфейсов раскадровкиLocalizing storyboard UIs

Образец Tasky (локализованные раскадровки) показано, как локализовать текст на элементы управления в раскадровке.The sample Tasky (localized storyboard) shows how to localize text on controls in a storyboard.

Структура проектаProject structure

Base.lproj каталог содержит раскадровку, а также должен содержать все образы, используемые в приложении.The Base.lproj directory contains the storyboard, and should also contain any images used in the application.

Содержать другие каталоги языка Localizable.strings файл все строковые ресурсы, на которые ссылается код, а также MainStoryboard.strings файла, содержащего переводы для текста в раскадровки.The other language directories contain a Localizable.strings file for any string resources referenced in code, as well as a MainStoryboard.strings file that contains translations for text in the storyboard.

Каталоги язык должен содержать копию все образы, которые локализованы, чтобы переопределить имеющемуся в Base.lproj.The language directories should contain a copy of any images that have been localized, to override the one present in Base.lproj.

Идентификатор объекта или ИД локализацииObject ID / Localization ID

При создании и изменении элементов управления в раскадровке, выделите каждый элемент управления и проверьте их использовать для локализации:When creating and editing controls in a storyboard, select each control and check the ID to use for localization:

  • В Visual Studio для Mac, он расположен в панели свойств и вызывается ИД локализации.In Visual Studio for Mac, it's located in the Properties Pad and is called Localization ID.
  • В Xcode, он называется идентификатор объекта.In Xcode, it's called Object ID.

Это строковое значение часто имеет форму, например «NF3-h8-xmR», как показано на следующем снимке экрана:This string value often has a form such as "NF3-h8-xmR", as shown in the following screenshot:

Это значение используется в .strings файл, чтобы автоматически назначить переведенный текст каждого элемента управления.This value is used in the .strings file to assign translated text automatically to each control.

MainStoryboard.stringsMainStoryboard.strings

Формат файла перевода раскадровки аналогичен Localizable.strings файлов, за исключением того, что ключ (значение слева) не может быть определена пользователем, но вместо этого должен иметь особый формат: ObjectID.property.The format of the storyboard translation file is similar to the Localizable.strings file, except that the key (the value on the left) cannot be user-defined but instead must have a very specific format: ObjectID.property.

В примере Mainstoryboard.strings ниже представлены UITextFieldимеют placeholder свойство text, которое можно локализовать; UILabelимеют text свойство; и UIButtons текст по умолчанию задается с помощью normalTitle:In the example Mainstoryboard.strings below you can see UITextFields have a placeholder text property that can be localized; UILabels have a text property; and UIButtons default text is set using normalTitle:

"SXg-TT-IwM.placeholder" = "nombre de la tarea";
"Pqa-aa-ury.placeholder"= "otra información de tarea";
"zwR-D9-hM1.text" = "Detalles de la tarea";
"bAM-2j-Rzw.text" = "Notas";           /* Notes */
"NF3-h8-xmR.text" = "Completo";        /* Done */
"MWt-Ya-pMf.normalTitle" = "Guardar";  /* Save */
"IGr-pR-05L.normalTitle" = "Eliminar"; /* Delete */

Важно!

С помощью раскадровки с помощью классов размера может привести переводов, которые не отображаются в приложении.Using a storyboard with size classes may result in translations that do not appear in the application. Заметки о выпуске Apple Xcode указывают, что storyboard "или" XIB будет не локализовано правильно при три вещи: он использует классы размера, локализации базового и целевого объекта сборки устанавливаются в универсальные и целей сборки iOS 7.0.Apple's Xcode Release Notes indicate that a storyboard or XIB will not localize correctly if three things are true: it uses size classes, the base localization and the build target are set to Universal, and the build targets iOS 7.0. Исправление заключается в повторяющийся свой файл раскадровки, строки в два идентичных файла: MainStoryboard~iphone.strings и MainStoryboard~ipad.strings, как показано на следующем снимке экрана:The fix is to duplicate your storyboard strings file into two identical files: MainStoryboard~iphone.strings and MainStoryboard~ipad.strings, as shown in the following screenshot:

Листинг App StoreApp Store listing

Соответствует Apple вопросы и ответы для локализация приложения Store ввести переводы для каждой страны, ваше приложение находится на продажи.Follows Apple's FAQ on App Store Localization to enter translations for each country your app is on sale. Обратите внимание, их предупреждение, переводы будет отображаться только в том случае, если приложение содержит локализованный .lproj каталог для языка.Note their warning that the translations will only appear if your app also contains a localized .lproj directory for the language.

СводкаSummary

В этой статье рассматриваются основные сведения о локализации приложений iOS с помощью функции встроенных ресурсов обработки и раскадровки.This article covers the basics of localizing iOS applications using the built-in resource handling and storyboard features.

Дополнительные сведения о i18n и L10n для iOS, Android и кросс платформенных приложений (включая Xamarin.Forms) в в этом руководстве кросс платформенные.You can learn more about i18n and L10n for iOS, Android and cross-platform apps (including Xamarin.Forms) in this cross-platform guide.