Как перевести интерфейс программы

В начале текущего года я решил создать собственное мобильное приложение. Найти дизайнера, программистов и выпустить в AppStore свой программный продукт.
Сейчас кредитный калькулятор в AppStore на рассмотрении. И я хочу рассказать, как я делал локализацию своего мобильного приложения.

Итак, код написан, требуется перевести программу на несколько языков: немецкий, английский, украинский.
Какие были варианты:

  • Использовать Google Translate — хороший вариант, но перевод в приближенный к предметной области, получить трудно. Машинный перевод все равно хромает.
  • Сайт http://nitro.alconost.com — дорого и непонятно какой будет результат. Ты имеешь дело с сайтом, а не с человеком
  • Перевести самому — дорого, неэффективно и результат будет некачественным.
  • Попросить знакомых — трудно найти тех, кто знает предметную область в совершенстве.

По поводу украинского, тут я обратился к дизайнеру. Мы договорились по поводу перевода. Т.е. я воспользовался вариантом 4.

KOVKA3D v.2.3 — как самостоятельно перевести интерфейс программы на другой язык

Описание проекта для переводчика

По остальным вопросам я решил иметь дело с человеком и обратиться к услугам сайта free-lance.ru. На данном сайте можно зарегистироваться и заказчикам и исполнителем одновременно. Я зарегистрировался заказчиком и опубликовал проект.
Вот текст описания проекта:

Требованиями к переводчику были

  • Знакомство с предметной областью.
  • Конечный перевод не сильно больше по длине чем исходный текст
  • Перевод файла локализации с сохранением структуры.

К моему удивлению ответов было достаточно много.

В целом предлагали от 200 рублей за 1000 знаков на английском, и от 300-400 на японском. Однако были и такие, кто предложил 10000 рублей за 6000 символов. Однако, даже зная немного английский и немецкий, я не мог понять, как получить перевод необходимого качества. Первый мой проект на фрилансе — я выбрал практически наиболее дешевого исполнителя.

Однако получив перевод, я понял что он меня не устраивает. Перевод был сделан без учета предметной области — финансы и кредиты.К примеру, перевод слова кредит звучал как «Kredit» на английском. Я не спорю, можно и так перевести, но мне нужен перевод близкий к носителю.

После публикации первого проекта я не получил должного результата. Вот к каким выводам я пришел.

  1. Хороший перевод стоит дорого, вряд ли студент даже с профильным образованием сможет выполнить хороший перевод
  2. Переводчики не сильно хорошо знакомы с текстовыми редакторами. Для перевода был дан файл локализации. Он был взять из проекта программы в XCode. Многие из переводчиков просто не смогли открыть файл — не знают про кодировку и другие текстовые редакторы. У файла было другое расширение, отличное от текстового файла.
    Вот что написал мне один из переводчиков: «Я бы взялась, но у меня не открывает файлы, не могу понять какого формата они и посмотреть что там? Если интересно, пишите!»
    Файл локализации интерфейса был структурирован следующим образом «key»=»value». Причем каждый ключ и значение должны быть в одной строке без переносов. Тот переводчик, что в итоге делал мне перевод, наделал в файле локализации кучу ошибок. Там пропали тире и появились не нужные кавычки. Кое-где была сбита разметка. В итоге пришлось править файл локализации самому.
  3. Слова на немецком и украинском обычно длиннее русских слов. Это следует учитывать при локализации мобильных приложений. Когда переводили на немецкий, очень много слов пришлось сокращать и переписывать. Тестирование локализованной программы нужно начинать как можно раньше.
  4. Результат работы все равно нужно проверять на корректность. К примеру первоначально одна фраза переводится одним вариантом. Однако далее по тексту фраза идет уже в ином переводе. Исполнитель не заинтересован в конечном результате — сделать качественный перевод. Исполнитель заинтересован получить деньги. Ваша задача получить результат с приемлемым качеством.

Установка русского языка интерфейса Windows 10

Как же я в конце концов выбрал переводчика.
Очень просто — я сделал тестовое задание. Вот как оно звучало:

Сразу стало понятно кто есть кто. Половине переводчиков это задание оказалось не по зубам.Они переводили кредитный калькулятор как Kredit Calculator, а дифференцированные как differentiated. Половина откликнувшихся просто не ответили. В итоге был выбран один, соотношение цена-качество которого меня устроило. Он переводил не идеально, однако дав ему необходимые пояснения, я получил перевод с нужным качеством.

Полезное по теме

Источник: mobile-testing.ru

Локализация приложения

Аннотация: В этой лекции вы научитесь создавать локализованные приложения с использованием класса LocalisedStrins и макроса TRANS.

Цель лекции: Научиться создавать приложения с поддержкой нескольких языков пользовательского интерфейса

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

Локализация приложения — это его адаптация к языковым и культурным особенностям страны или стран, отличных от места разработки программы, в которых оно будет использоваться. Локализация включает в себя перевод интерфейса программы, её документации, адаптацию алгоритмов алфавитной сортировки и предоставления данных (например, отображение разделителя дробной части десятичных дробей). В этой главе мы остановимся лишь на переводе интерфейса приложения.

Реализовать эту задачу можно двумя различными способами.

Например, можно поступить так, как мы это сделали в «Элементы управления. Компоненты меню» , когда переведённые строки вставляются прямо в код. Однако, во-первых, это неправильно идеологически, т.к. нарушает принцип инкапсуляции: либо переводчик должен получить доступ к исходным текстам программы, либо новый перевод должен переносить в код программист. Кроме того, тем самым резко затрудняется добавление новых языков: ведь для этого программу придётся каждый раз компилировать заново.

Читайте также:
Бюджет программы маркетинга это

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

В библиотеке Juce для реализации последнего подхода существует специальный класс , LocalisedStrings . Объект этого класса загружает строки перевода из текстового файла и заменяет ими эквивалентные строки, используемые в приложении.

Файл перевода имеет следующий формат:

language: Russian countries: ru «hello» = «привет» «goodbye» = «до свидания»

В том случае, если в текст локализации требуется включить кавычки, в файл перевода необходимо вставить двойные кавычки ( «» ).

Для замены в программе интерфейсных строк строками перевода можно воспользоваться двумя способами.

Во-первых, класс LocalisedStrings включает метод const String LocalisedStrings::translate(const String text) класса LocalisedStrings ( пример 21.1).

#define TRANS(stringLiteral) LocalisedStrings::translateWithCurrentMappings(stringLiteral
Листинг 21.1. Определение макроса TEXT

Метод пытается перевести строку text , получаемую в качестве параметра, используя заданное отображение (mapping) . Отображение задаётся с помощью метода static void LocalisedStrings::setCurrentMappings(LocalisedStrings* newTranslations) .

В том случае, если никакого отображения не было задано, translateWithCurrentMappings возвращает оригинальный текст.

Рассмотрим оба способа локализации интерфейса приложения на простых примерах.

Перевод строк интерфейса с помощью макроса TRANS

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

Программа, использующая строки из файла для перевода пользовательского интерфейса


Рис. 21.1. Программа, использующая строки из файла для перевода пользовательского интерфейса

Строки для перевода надписей на ярлыке и кнопке наша программа будет загружать из файла набора, который мы подготовим заранее. Выбор файла с тем или иным языком перевода будет осуществляться в зависимости от языковых настроек целевой операционной системы.

Собственно перевод будет осуществлять глобальный объект класса LocalisedStrings , указатель на который мы будем передавать в метод setCurrentMappings в качестве параметра. Этот указатель будет удаляться автоматически после того, как в нём отпадёт необходимость, поэтому во избежание утечек памяти нам необходимо воспользоваться паттерном одиночки (singleton). Напишем класс TTranslator , унаследовав его от LocalisedStrings ( пример 21.2).

#ifndef _TTranslator_h_ #define _TTranslator_h_ //————————————————— #include «../JuceLibraryCode/JuceHeader.h» //————————————————— class TTranslator : public LocalisedStrings < static TTranslator* pSelf; protected: TTranslator(const File FileToLoad) : LocalisedStrings(FileToLoad)<>public: static TTranslator* pInstance(const File FileToLoad) < if(!pSelf) pSelf = new TTranslator(FileToLoad); return pSelf; >>; //————————————————— TTranslator* TTranslator::pSelf = NULL; //————————————————— #endif
Листинг 21.2.

Класс TTranslator (файл TTranslator.h)

Теперь мы можем задать в качестве отображения ( mapping ) для перевода интерфейса программы посредством макроса TRANS строки, загруженные из файла перевода ( пример 21.3). Его название соответствует первым двум буквам локали, т.е. в случае, если языком операционной системы является русский (локаль ru_RU), то файл перевода будет называться «ru.lng». Разумеется, для имени файла вы можете выбрать и другое расширение.

#include «TCentralComponent.h» #include «TTranslator.h» #include //—————————————————— TCentralComponent::TCentralComponent() : Component («Central Component»), pHelloLabel(0), pCloseButton(0) < // Получаем первые две буквы текущей локали String sLocale(setlocale(LC_ALL, «»)); sLocale = sLocale.substring(0, 2); sLocale = sLocale.toLowerCase(); // Находим путь к исполняемому файлу нашей программы File Path = Path.getSpecialLocation(File::currentExecutableFile); // Получаем путь к программе String sPath = Path.getFullPathName(); sPath = sPath.trimCharactersAtEnd(Path.getFileName()); // Получаем полное имя файла перевода, исходя из текущей локали sPath += sLocale; sPath += «.lng»; // Загружаем строки файл перевода. File Translations(sPath); // и устанавливаем их в качестве отображения (mapping) LocalisedStrings::setCurrentMappings(TTranslator::pInstance(Translations)); // Переводим интерфейс программы с помощью макроса TRANS pHelloLabel = new Label(«Hello Label», TRANS(«Hello world!»)); addAndMakeVisible(pHelloLabel); pHelloLabel->setFont(Font(38.0000f, Font::bold)); pHelloLabel->setJustificationType(Justification::centred); pHelloLabel->setEditable(false, false, false); pHelloLabel->setColour(Label::textColourId, Colours::blue); pHelloLabel->setColour(TextEditor::backgroundColourId, Colours::azure); pCloseButton = new TextButton(«Close Button»); addAndMakeVisible(pCloseButton); pCloseButton->setButtonText(TRANS(«Close»)); pCloseButton->addListener(this); setSize (400, 200); >

Листинг 21.3. Реализация конструктора класса компонента содержимого TCentralComponent (файл TCentralComponent.cpp)

Перевод строк интерфейса с помощью метода translate

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

Локализация

В этом руководстве представлены основные понятия, лежащие в основе интернационализации и локализации , а также ссылки на инструкции по производству мобильных приложений Xamarin с помощью этих концепций.

Если вы хотите сразу перейти к техническим сведениям о локализации приложений Xamarin, начните с одной из этих статей, относящихся к конкретной платформе:

  • Кроссплатформенная локализация Xamarin.Forms с помощью RESX-файлов.
  • Локализация собственной платформы Xamarin.iOS.
  • Локализация собственной платформы Xamarin.Android.

i18n и L10n

Интернационализация — это процесс создания кода, способного отображать разные языки и адаптировать его для различных языковых стандартов (например, форматирования чисел и дат). Это также называется глобализацией.

Локализация — это следующий шаг: создание ресурсов (например, строк и изображений) для каждого языка и объединение их с приложением интернационализации.

Интернационализация часто сокращается до i18n — сокращено для 18 букв между «i» и «n». Локализация также сокращена до L10n — для 10 букв между «L» и «n».

Общие сведения

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

  • Макеты экрана и текст,
  • Значки, графика и цвета,
  • Видео и звуковые файлы,
  • Динамическое форматирование текста и текста (например, числа, валюта и даты),
  • Изменения макета для языков справа налево (RTL) и
  • Сортировка данных.

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

Вопросы проектирования

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

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

Читайте также:
Ошибка msvcp140 dll при запуске программ

Макеты и длина строки

Китайские и японские строки могут быть очень короткими. Иногда один или два символа могут быть достаточно значимыми для метки поля ввода.

Немецкие строки (например, могут быть очень длинными); иногда относительно короткое слово на английском языке становится очень длинным на других языках — либо обрезается, либо неожиданно переполняет макет.

Сравните длину строк для нескольких элементов на начальном экране iOS на английском, немецком и японском языках:

German vs Japanese string length

Обратите внимание, что Параметры на английском языке (8 символов) требует 13 символов для перевода на немецкий язык, но только 2 символа на японском языке.

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

Как правило, при создании фиксированных макетов (особенно параллельных элементов) допускается не менее 50 % больше ширины, чем для английских строк, необходимых для меток и текста. Это не решит каждую проблему, но предоставит буфер, который будет работать во многих случаях.

Проверка ввода

Остерегайтесь допущений при написании правил проверки. Может показаться допустимым требовать ввода текстового поля как минимум три символа на английском языке, так как одна буква очень редко имеет какое-либо значение. Однако на китайском и японском языках один символ может быть допустимым вводом, а для этих языков не имеет смысла сообщение проверки «по крайней мере 3 символа».

Другие, казалось бы, простые задачи, такие как проверка адреса электронной почты или URL-адреса веб-сайта, становятся более сложными с помощью подмножества ASCII.

Напишите правила проверки с учетом интернационализации — выберите наименее строгие правила или напишите логику, чтобы она работала по-разному для каждого языка.

Изображения и цвет

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

  • Изображения с изображением людей или определенных расположений — ваше приложение может оказаться более релевантными для пользователей, если оно отображает локальных пользователей или расположений.
  • Значки . Некоторые значки могут быть характерными для языка и региональных параметров, и вы можете упростить использование приложения, локализуя изображения для отражения локального понимания.
  • Цвета — некоторые культуры понимают цвета по-разному — красный может означать предупреждение в одном регионе, но удачи в другом. Обратитесь к собственным докладчикам при разработке приложения, чтобы определить, следует ли создавать механизм локализации цветов.

Видео и звук

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

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

Часто существует несколько способов решения проблем локализации. Самое главное — рассмотреть их заранее и убедиться, что приложение предназначено для их устранения.

Даты, время, числа и валюта

Если вы используете функции форматирования .NET, не забудьте указать язык и региональные параметры, чтобы десятичные разделители правильно анализировались (и не создавайте исключения преобразования). Например, 1,99 и 1,99 являются допустимыми десятичными представлениями в зависимости от языкового стандарта.

При получении данных из известного источника (т. е. из собственного кода или веб-службы, которым вы управляете), можно жестко закодировать идентификатор языка и региональных параметров, соответствующий форматированию, например InvariantCulture, который будет работать для стандартного форматирования английского языка.

double.Parse(«1,999.99», CultureInfo.InvariantCulture);

Если пользователь приложения вводит данные, выполните его синтаксический анализ с помощью экземпляра CultureInfo, который отражает языковой стандарт:

double.Parse(«1 999,99», CultureInfo.CreateSpecificCulture(«fr-FR»));

Языки справа налево (RTL)

Некоторые языки, такие как арабский, иврит и Урду (например, справа налево). Приложения, поддерживающие эти языки, должны использовать макеты экрана, которые адаптируются для чтения справа налево, например:

  • Текст должен выровняться по правому краю.
  • Метки должны отображаться справа от полей ввода.
  • Размещение кнопок по умолчанию обычно обратно.
  • Иерархические прокрутки навигации и анимация (и другие метафоры навигации и анимации), которые используют направление для контекста, также должны быть отменены.

Как iOS, так и Android поддерживают макеты справа налево и отрисовку шрифтов со встроенными функциями, которые помогают внести указанные выше корректировки. В настоящее время Xamarin.Forms не поддерживает отрисовку RTL автоматически.

Сортировка

Разные языки определяют порядок сортировки алфавитов по-разному, даже если они используют один и тот же набор символов.

Сведения о сравнении строк см. в рекомендациях по использованию строк в платформа .NET Framework, например, если язык (CultureInfo) влияет на порядок сортировки.

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

Текстовый поиск

Убедитесь, что вы пишете и тестируете алгоритм поиска с учетом нескольких языков. Рассмотрим следующие аспекты:

  • Автозавершение — если вы создали функцию автозавершения, убедитесь, что она содержит предложения, относящиеся к языку пользователя.
  • Сопоставление запросов с данными — будут ли поисковые запросы, введенные на определенном языке, выполняться только для содержимого, написанного на этом языке, или для всего содержимого в приложении?
  • Стебливание — если поиск создан для поиска похожих слов, корней слов и других оптимизаций поиска, создаются ли эти оптимизации для всех поддерживаемых языков?
  • Сортировка — убедитесь, что результаты отсортированы правильно (см. выше).

Данные из внешних источников

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

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

  • Различные источники— приложение может скачивать данные из другого источника в зависимости от языка или языкового стандарта пользователя. Локали новости, погода и цены на акции могут иметь больше смысла, чем то, загруженное с североамериканского канала.
  • Локализованный дисплей — если вы отображаете щебетать или фото-канал, вы должны отобразить метаданные (например, время, затраченное) на своем языке, даже если само содержимое остается на исходном языке.
  • Перевод — вы можете создать вариант перевода в приложении для машинного перевода входящих данных. Это может быть автоматическим или по усмотрению пользователя . Просто не забудьте уведомить пользователя, если это происходит, так как машинные переводы никогда не идеально подходят!
Читайте также:
Программа на pyqt5 пример

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

Не переведите

Для некоторых строк в приложении может не потребоваться перевод или, по крайней мере, требуется особое внимание переводчика. Примеры могут включать в себя следующие элементы:

  • URL-адреса — если вы перечисляете URL-адрес, его может потребоваться изменить по языку. Например, facebook.com не требует перевода, он автоматически обнаруживает язык на основном сайте. Другие сайты содержат содержимое, зависяющее от языкового стандарта, и вам может потребоваться предложить другой URL-адрес, например yahoo.com или yahoo.fr или yahoo.it.
  • Телефонные номера , особенно с различными кодами страны или номерами для абонентов, которые говорят на определенном языке.
  • Контактные данные — адреса и другие сведения могут отличаться в зависимости от языка или языкового стандарта.
  • Названия продуктов товарных У вас есть 5 сообщений». Они могут указать следующие строки для перевода.

    Плохо:

    «You have» «no» «message» «messages»

    а затем попытайтесь создать правильную фразу во всплывающем коде с помощью объединения строк:

    Плохо:

    «You have» + » » + numMsgs + » » + «messages» «You have» + » no » + «messages»

    Это не рекомендуется , поскольку оно не обязательно будет работать на всех языках и будет трудно переводчику понять контекст каждого короткого сегмента. Это также приводит к повторному использованию переведенных строк, что может вызвать проблемы позже, если они используются в разных контекстах (а затем обновляются).

    Разрешить повторное упорядочение параметров

    Для некоторых языков программирования требуется дополнительный синтаксис для указания порядка параметров в строке, однако .NET уже поддерживает концепцию нумерованных заполнителей, поэтому

    Хорошо:

    «a b cde »

    может быть переведено следующее (при изменении положения и порядка заполнителей)

    » f g h »

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

    Использование нескольких строк для кратности

    Избегайте таких строк, как «You have message/s.» использование определенных строк для каждого состояния, чтобы обеспечить лучшее взаимодействие с пользователем:

    Хорошо:

    «You have no messages.» «You have 1 message.» «You have 2 messages.» «You have messages.»

    Вам потребуется написать код в приложении, чтобы оценить отображаемое число и выбрать соответствующую строку. Некоторые платформы (включая iOS и Android) имеют встроенные функции для автоматического выбора лучшей строки множественного числа в зависимости от настроек текущего языка или языкового стандарта.

    Разрешение пола

    Латинские языки иногда используют разные слова в зависимости от пола темы. Если ваше приложение знает о полу, следует разрешить переведенным строкам это отражать.

    Существует также более очевидное дело даже на английском языке, где строки ссылаются на конкретного человека или пользователя вашего приложения. Например, на некоторых сайтах отображаются такие сообщения, как «Bob commented on his post» строки для мужчин, женщин и не двоичного или неизвестного пола:

    Хорошо:

    » commented on his post» » commented on her post» » commented on their post»

    Не используйте строки повторно

    Или более точно не используйте строки, так как они похожи, если сама строка имеет другую цель или значение.

    Например, представьте, что в приложении есть переключатель включено и выключение, а элементу управления переключателя требуется, чтобы текст «вкл.» и «выкл.» должен быть локализован. Вы также отображаете значение этого параметра в другом месте приложения в текстовой метке. Для отображения переключателя следует использовать разные строки (даже если они совпадают с языком по умолчанию), например:

    • «Вкл.» — отображается на самом коммутаторе
    • «Выкл.» — отображается на самом переключателе
    • «Вкл.» — отображается в метке
    • «Выкл.» — отображается в метке

    Это обеспечивает максимальную гибкость для переводчика:

    • В целях разработки, возможно, сам переключатель использует строчные буквы «вкл.» и «выкл.», но метка отображения использует верхний регистр «Вкл. » и «Выкл.».
    • Для некоторых языков может потребоваться сокращенное значение переключателя, которое должно соответствовать элементу управления пользовательского интерфейса, а полное (переведенное) слово может отображаться в метке.
    • Кроме того, для некоторых языков для отрисовки переключателя можно использовать «I» и «O» для культурного знакомства, но может потребоваться, чтобы метка читала «Вкл. » или «Выкл.».

    Службы перевода

    Машинный перевод

    Чтобы создать функции перевода в приложение, рассмотрите API Переводчик текста Azure.

    В целях тестирования можно использовать один из многих средств онлайн-перевода для включения локализованного текста в приложение во время разработки:

    Есть много других доступных. Качество машинного перевода, как правило, не считается достаточно хорошим, чтобы освободить приложение без предварительного рассмотрения и тестирования профессиональными переводчиками или носителями языка.

    перевод Professional

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

    Одним из самых известных служб является LionBridge. Большинство профессиональных служб поддерживают все распространенные типы файлов, включая строки, XML, RESX и POT/PO.

    Сводка

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

    Эти понятия можно применять к различным методам кроссплатформенной и кроссплатформенной интернационализации, которые можно использовать с помощью Xamarin.

    Продолжайте читать технические сведения о интересующей вас платформе:

    • Кроссплатформенная локализация Xamarin.Forms с помощью RESX-файлов.
    • Локализация собственной платформы Xamarin.iOS.
    • Локализация собственной платформы Xamarin.Android.

    Связанные ссылки

    • Обзор локализации Apple
    • Контрольный список локализации Android
    • Рекомендации по разработке приложений, готовых к разработке (MSDN)

    Источник: learn.microsoft.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru