Файл локализации что это

Обновлено: 02.07.2024

Википедия повествует, что «локализация — это перевод и культурная адаптация продукта к особенностям определенной страны, региона или группы населения». И это самое чертовски короткое и точное определение, что видел свет. Под этим загадочным словосочетанием «культурная адаптация» скрывается целая глыба. Чтобы правильно локализовать продукт, требуется всестороннее изучение целевой культуры. Тогда программа/игра/книга/фильм будет правильно адаптирован к потребностям рынка и понят конечным потребителем.

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

Например, в Германии на законодательном уровне запрещено использование нацистской символики. Это значит, что изображение свастики придётся убрать из игры, предназначенной для распространения в Германии. Так, известны международные разбирательства, касающиеся серии игр Wolfenstein для ПК и для устройств на платформе iOS. Игру Wolfenstein 3D для платформ под управлением iOS (2011) убрали из магазина приложений App Store в Швейцарии и Австрии по причине наличия в ней свастики.

Однако Wolfenstein подвергалась цензуре и ранее. К примеру, в версии для Super Nintendo, вышедшей в 1994 году, все свастики были убраны из нацистского замка, а собаки охранников превратились в крыс. В том же 1994 году игра была запрещена в Германии. В ПК-версии Wolfenstein: The New Order (2014) для стран Германии и Австрии, в отличие от международной версии игры, также была введена цензура. А в Wolfenstein II: The New Colossus цензура пошла ещё дальше.

У Гитлера забрали его фирменные усы, фамильярно называли канцлером, а свастику заменили на трёхконечную руну.

Однако перевод — слишком общий термин. Так, Википедия присваивает переводу те же качества, что и локализации:

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

Давайте по пунктам разберём, что же характерно для перевода, а что для локализации.

В блоге переводчика и локализатора Аникьева есть пример, на котором хорошо можно понять тонкости локализации. Пример основан на переводах книги Аллена Карра «Лёгкий способ бросить курить»:

Первое — прекращение повторяющихся ночных кошмаров, мучивших меня каждую ночь. Мне снилось, что меня преследуют… Когда я описывал, что каждую ночь за мной кто‑то гонится во сне, я однажды набрал вместо «преследование» — «целомудрие». Возможно, это была одна из «опечаток по Фрейду», но она подсказала мне, как лучше всего перейти ко второму преимуществу.

Вам непонятно, как можно так опечататься? Тайну приоткрывает сноска, которая в разных вариантах книги может оказаться как внизу страницы, так и в конце книги:

Слова «преследование» (chase) и «целомудрие» (chaste) в английском языке отличаются лишь одной буквой.

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

Мне снилось, что я иду по непрочному полу… Когда я описывал, что во сне я хожу по непрочному полу, я однажды набрал вместо «непрочному» — «непорочному».

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

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

Кроме поставляемых по умолчанию языковых файлов есть возможность скачать и установить файлы для дополнительных языков (см. специальный раздел на нашем сайте и проект локализации на сайте Transifex) .

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

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

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

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

Языковые файлы используемые системой, делятся на типы: системные, локализация расширений, локализация тем оформления, и соответственно, размещаются в различных каталогах. Ниже приведена таблица с описанием основных файлов и указанием размещения. Строка lang_code подразумевает описнный выше 2-х буквенный код языка.

Давайте для примера взглянем на основной файл локализации ` main.en.lang.php `:

Как было сказано выше файл локализации это обычный PHP файл содержащий определение массива записей с языковыми данными. Начиная с версии 0.9.13 для опиисания используются только строковые данные. Т.е. не допускается использование вложенных массивов (подробнее о формате и почему это так смотрите здесь).

В начале файла идет служебная информация в виде комментария формата PHPDoc, определяющая принадлежность к тому или иному расширению, копирайты и прочее.
Ниже строки ` defined('COT_CODE') or die('Wrong URL.'); ` мы видим, собственно, определение языковых данных.

Текстовые данные задаются в формате как отдельные элементы плоского массива в виде ` ключ => значение `.

Ключ (идентификатор) это строка, которая однозначно идентиицирает данную запись. Этот ключ должен быть уникален и не меняться в языковых файлах различных языков. Ключ используется для доступа к олкализованной строке из PHP кода или из шаблонов тем оформления (*.tpl), например так: (подробнее о шаблонах в использовании данных смотри по ссылке). При таком вызове этот тег будет заменен на соответствующее значение (в нашем примере это строка 'Доступ'). Основные строки содержаться в массиве $L .
Cotonti позволяет задавать строки локализации для множественных форм (числительных) — для этого предусмотрен отдельный массив $Ls . Он используется функцией `cot_declension()`, применимой как из PHP кода, так и для вызова из шаблона.

Существует 2 спосоа изменить язык интерфейса сатйа:

    изменить язык в профиле пользователя. Изменения коснуться только выбранного пользователя;

Изменить основной язык в файле настроек datas/config.php :

Эти изменения конуться всех не зарегистированных пользователей, а также всех новых пользователей.
Если вы хотите запретить пользователям менять язык интерфейса —это можно сделать в панеле управления опцией « Принудительная установка языка по умолчанию для всех пользователей » (Панель администрирования → Конфигурация → Локализация).

В двух словах, чтобы создать собственную локализацию надо :

  • создать дополнительные файлы с соответствующим языковым кодом (можно скопировать текущие ищменив код). Какие именно см. выше в таблице «размещение файлов»;
  • перевести языковые строки (весь текст после знака “=”, значения массива). При этом не изменяйте ключи массива иначе строка не будут найдены системой.

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

Примечание. Orchard Core не является продуктом корпорации Майкрософт. Поэтому корпорация Майкрософт не предоставляет поддержку для этого компонента.

Что такое файл переносимых объектов?

Файлы переносимых объектов (PO) распространяются как текстовые файлы со строками, переведенными на заданный язык. Файлы PO обеспечивают определенные преимущества по сравнению с файлами RESX, например:

  • Файлы PO поддерживают преобразование во множественную форму, файлы RESX — нет.
  • Файлы PO не компилируются подобно файлам RESX. Поэтому потребность в специальных инструментах и действиях сборки отпадает.
  • Файлы PO хорошо работают со средствами редактирования, предназначенными для совместной работы по сети.

Пример

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

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

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

  • msgid_plural . непереведенная строка во множественной форме.
  • msgstr[0] . переведенная строка для случая 0.
  • msgstr[N] . переведенная строка для случая N.

Спецификацию файла PO см. здесь.

Указание ссылок на пакет

Добавьте ссылку на пакет NuGet OrchardCore.Localization.Core .

Файл CSPROJ теперь содержит строку следующего вида (номер версии может отличаться):

Добавьте необходимые службы в метод ConfigureServices файла Startup.cs:

Добавьте необходимое ПО промежуточного слоя в метод Configure файла Startup.cs:

Добавьте следующий код в нужное представление Razor. В этом примере используется About.cshtml.

Экземпляр IViewLocalizer внедряется и используется для перевода текста "Hello world!".

Создание файла PO

Создайте файл с именем <culture code>.po в корневой папке приложения. В этом примере файл имеет имя fr.po, так как используется французский язык:

Данный файл содержит как строку на перевод, так и строку, переведенную на французский язык. При необходимости переводы возвращаются к своим родительским языку и региональным параметрам. В этом примере файл fr.po используется, если запрошены язык и региональные параметры fr-FR или fr-CA .

Тестирование приложения

Запустите приложение и перейдите по URL-адресу /Home/About . Отображается текст Hello world! .

Перейдите по URL-адресу /Home/About?culture=fr-FR . Отображается текст Bonjour le monde! .

Преобразование во множественную форму

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

Пакет локализации Orchard предоставляет API для автоматического вызова этих различных форм множественного числа.

Создание файлов PO с множественными формами

Добавьте в указанный ранее файл fr.po следующее содержимое:

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

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

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

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

Создайте файл cs.po , как показано ниже, и обратите внимание, что для преобразования во множественную форму нужно три разных перевода:

Чтобы принять локализации на чешский язык, добавьте "cs" в список поддерживаемых языков и региональных параметров в методе ConfigureServices :

Измените файл Views/Home/About.cshtml, чтобы отобразить локализованные строки с учетом множественного числа для нескольких кратностей.

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

После переключения языка и региональных параметров вы увидите следующее:

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

Расширенные задачи

Учет контекста строк

Приложения часто содержат переводимые строки в нескольких местах. Одна и та же строка, находящаяся в разных местах приложения (представления Razor или файлы классов), может переводиться по-разному. Файл переносимого объекта (PO) поддерживает понятие контекста файла, которое можно использовать для классификации представляемых строк. В зависимости от контекста файла (или его отсутствия) строку можно перевести по-разному.

Службы локализации PO используют имя полного класса или представление, используемые при переводе строки. Это достигается путем установки значения для записи msgctxt .

Рассмотрим небольшое дополнение к предыдущему примеру fr.po. Представление Razor, расположенное в файле Views/Home/About.cshtml, можно определить в качестве контекста файла, задав зарезервированное значение записи msgctxt .

При такой настройке msgctxt перевод текста отображается при переходе по адресу /Home/About?culture=fr-FR . При переходе по адресу /Home/Contact?culture=fr-FR перевод не отображается.

Если с заданным контекстом файла не совпадает ни одна из конкретных записей, резервный механизм Orchard Core ищет соответствующий файл PO без контекста. Если предположить, что для Views/Home/Contact.cshtml никакой конкретный файловый контекст не задан, при переходе к /Home/Contact?culture=fr-FR загружается файл PO, как показано ниже.

Изменение расположения для файлов PO

Расположение по умолчанию для файлов PO можно изменить в ConfigureServices :

В этом примере файлы PO загружаются из папки Localization.

Реализация настраиваемой логики для поиска файлов локализации

Когда для поиска файлов PO требуется более сложная логика, можно реализовать интерфейс OrchardCore.Localization.PortableObject.ILocalizationFileLocationProvider и зарегистрировать его как службу. Это удобно, когда файлы PO могут храниться в различных расположениях или должны находиться в иерархии папок.

Использование языка с другими формами множественного числа по умолчанию

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

Можно использовать более универсальную перегрузку Plural(int count, string[] pluralForms, params object[] arguments) , которая принимает строковый массив переводов.

Авторы: Себастьен Рос (Sébastien Ros) и Скотт Эдди (Scott Addie)

Примечание. Orchard Core не является продуктом корпорации Майкрософт. Поэтому корпорация Майкрософт не предоставляет поддержку для этого компонента.

Что такое файл переносимых объектов?

Файлы переносимых объектов (PO) распространяются как текстовые файлы со строками, переведенными на заданный язык. Файлы PO дают определенные преимущества по сравнению с файлами RESX, например:

  • Файлы PO поддерживают преобразование во множественную форму, файлы RESX — нет.
  • Файлы PO не компилируются подобно файлам RESX. Поэтому потребность в специальных инструментах и действиях сборки отпадает.
  • Файлы PO хорошо работают со средствами редактирования, предназначенными для совместной работы по сети.

Пример

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

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

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

  • msgid_plural . непереведенная строка во множественной форме.
  • msgstr[0] . переведенная строка для случая 0.
  • msgstr[N] . переведенная строка для случая N.

Спецификацию файла PO см. здесь.

Указание ссылок на пакет

Добавьте ссылку на пакет NuGet OrchardCore.Localization.Core .

Файл CSPROJ теперь содержит строку следующего вида (номер версии может отличаться):

Добавьте необходимые службы в метод ConfigureServices файла Startup.cs:

Добавьте необходимое ПО промежуточного слоя в метод Configure файла Startup.cs:

Добавьте следующий код в нужное представление Razor. В этом примере используется About.cshtml.

Экземпляр IViewLocalizer внедряется и используется для перевода текста "Hello world!".

Создание файла PO

Создайте файл с именем <culture code>.po в корневой папке приложения. В этом примере файл имеет имя fr.po, так как используется французский язык:

Данный файл содержит как строку на перевод, так и строку, переведенную на французский язык. При необходимости переводы возвращаются к своим родительским языку и региональным параметрам. В этом примере файл fr.po используется, если запрошены язык и региональные параметры fr-FR или fr-CA .

Тестирование приложения

Запустите приложение и перейдите по URL-адресу /Home/About . Отображается текст Hello world! .

Перейдите по URL-адресу /Home/About?culture=fr-FR . Отображается текст Bonjour le monde! .

Преобразование во множественную форму

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

Пакет локализации Orchard предоставляет API для автоматического вызова этих различных форм множественного числа.

Создание файлов PO с множественными формами

Добавьте в указанный ранее файл fr.po следующее содержимое:

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

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

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

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

Создайте файл cs.po , как показано ниже, и обратите внимание, что для преобразования во множественную форму нужно три разных перевода:

Чтобы принять локализации на чешский язык, добавьте "cs" в список поддерживаемых языков и региональных параметров в методе ConfigureServices :

Измените файл Views/Home/About.cshtml, чтобы отобразить локализованные строки с учетом множественного числа для нескольких кратностей.

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

После переключения языка и региональных параметров вы увидите следующее:

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

Расширенные задачи

Учет контекста строк

Приложения часто содержат переводимые строки в нескольких местах. Одна и та же строка, находящаяся в разных местах приложения (представления Razor или файлы классов), может переводиться по-разному. Файл PO поддерживает понятие контекста файла, которое можно использовать для классификации представляемых строк. В зависимости от контекста файла (или его отсутствия) строку можно перевести по-разному.

Службы локализации PO используют имя полного класса или представление, используемые при переводе строки. Это достигается путем установки значения для записи msgctxt .

Рассмотрим небольшое дополнение к предыдущему примеру fr.po. Представление Razor, расположенное в файле Views/Home/About.cshtml, можно определить в качестве контекста файла, задав зарезервированное значение записи msgctxt .

При такой настройке msgctxt перевод текста отображается при переходе по адресу /Home/About?culture=fr-FR . При переходе по адресу /Home/Contact?culture=fr-FR перевод не отображается.

Если с заданным контекстом файла не совпадает ни одна из конкретных записей, резервный механизм Orchard Core ищет соответствующий файл PO без контекста. Если предположить, что для Views/Home/Contact.cshtml никакой конкретный файловый контекст не задан, при переходе к /Home/Contact?culture=fr-FR загружается файл PO, как показано ниже.

Изменение расположения для файлов PO

Расположение по умолчанию для файлов PO можно изменить в ConfigureServices :

В этом примере файлы PO загружаются из папки Localization.

Реализация настраиваемой логики для поиска файлов локализации

Когда для поиска файлов PO требуется более сложная логика, можно реализовать интерфейс OrchardCore.Localization.PortableObject.ILocalizationFileLocationProvider и зарегистрировать его как службу. Это удобно, когда файлы PO могут храниться в различных расположениях или должны находиться в иерархии папок.

Использование языка с другими формами множественного числа по умолчанию

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

Можно использовать более универсальную перегрузку Plural(int count, string[] pluralForms, params object[] arguments) , которая принимает строковый массив переводов.


Когда вы только начинаете создавать программное обеспечение для продукта, вы вряд ли задумываетесь о том, что однажды может понадобиться перевести его на другие языки. Но чем глобальнее ваш проект, тем вероятнее, что в какой-то момент придётся его локализовывать. В конце концов, по-английски в Интернете говорят всего 20-30% пользователей — остальные желают получать контент на родном языке, при этом требования к качеству у них очень высокие. Они предпочитают версии сайтов и приложений на языке страны, где родились или живут.

Итак, что надо знать, чтобы начать локализовать своё программное обеспечение, или просто понять, что вам это нужно? Читайте, чтобы узнать!

Что такое локализация программного обеспечения?

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

  • Направление письма (например, справа налево на арабском и иврите).
  • Форматы дат и времени (например, «23/01/2020» или «01.23.2020»).
  • Правила написания для валют (например, «50 евро» или «€50»).
  • Правила написания почтовых адресов, способы ввода данных, запятые в десятичных дробях и так далее.

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

Конечно, локализовать программное обеспечение прямо сейчас необязательно. Но подумайте о Facebook, который начинался как легкомысленное приложение для студентов из Гарварда, и со временем превратился в одну из крупнейших социальных сетей, локализованную более чем на 100 языков. Предвидел ли это Марк Цукерберг?

Спросите себя: «Может ли моё приложение быть полезно пользователям, говорящим на других языках кроме английского?». Если да, то локализация вашего программного обеспечения, поможет бизнесу расти кратными темпами, когда придёт время. А для того, чтобы сделать процесс локализации наименее болезненным, в первую очередь займитесь интернационализацией. О ней ниже.

Что такое интернационализация?

Если «локализация» означает адаптацию контента в программном обеспечении под пользователей из конкретных стран, то «интернационализация» подразумевает предварительную подготовку контента к локализации. Например, вы напишете в мобильном приложении строки с жёсткой кодировкой, а потом придётся перестраивать его с другими строками на каждом языке. Это пример очень плохой интернационализации.
(из Глоссария перевода.)

Для интернационализации важно, чтобы:

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

Полезно будет также обдумать следующее:

  • Как пользователь будет выбирать языковые настройки?
  • Какой есть резервный алгоритм на случай, если не окажется кода на конкретном языке?
  • Нужно ли менять архитектуру вашей базы данных?

«У вас» + число + «объект(ов) в корзине»

В этом случае части «У вас» и «объект(ов) в корзине» попадут в разные строки, создавая проблемы с их переводом на другие языки. На некоторых языках более естественно звучит формулировка «В вашей корзине . предметов», поэтому порядок строк нужно изменить — но это возможно, только если строки настроены определённым образом!

Соответственно, программист, который думает об интернационализации, напишет что-то вроде:

«У вас %d предмет(ов) в вашей корзине» %номер

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

Нужна ли специальная команда локализаторов?

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

В идеале, в команде локализаторов должно быть минимум три человека:

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

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

Как мне перевести строки?

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

Гадаете, на какие языки переводить? Начать стоит с 5-10 языков, на которых говорит большинство людей в мире и сети — например, с китайского, японского, испанского, немецкого, французского, португальского, итальянского, русского, корейского и арабского. Хотя иногда в зависимости от вашего продукта и аудитории есть смысл исключить часть европейских языков и добавить больше азиатских, таких как хинди, малайский, вьетнамский, индонезийский или тайский. Это особенно полезно при локализации видеоигр и интерактивного программного обеспечения, которые популярны на Востоке.

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

Как выглядит процесс локализации программного обеспечения?

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

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

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

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

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

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

Наталья Хайду

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

Читайте также: