Перейти к содержанию

Раздел “Локализация”

Работа с языками в системе

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

Системные языки настраиваются при помощи таблицы Languages в схеме данных. Рассмотрим её структуру.

Имя колонки Тип данных Описание
ID Int16 Not Null Код языка в системе
Caption String(256) Not Null Название языка в системе. Именно оно будет выводится в настройках языка правого меню лёгкого и толстого клиентов
Code AsciiString(3) Not Null Строковый код языка согласно стандарту ISO 639. Рекомендуется указывать код из ISO 639-1 и лишь в случае его отсутствия для требуемой культуры использовать код из ISO 639-2
FallbackCode AsciiString(3) Null Строковый код языка системы, используемого в качестве резервного для данного языка, согласно стандарту ISO 639. Рекомендуется указывать код из ISO 639-1 и лишь в случае его отсутствия для требуемой культуры использовать код из ISO 639-2. Позволяет указать язык из которого будут браться переводы для строк, отсутствующих в библиотеке локализации для данного языка. Например, в качестве резервного для белорусского языка можно установить русский язык. Тогда если для какой-либо строки отсутствует перевод на белорусском, она будет браться из русского языка.

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

Important

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

Important

Резервные языки не работают для строк локализации в окне логина desktop-клиентов (TessaClient, TessaAdmin, TessaAppManager), поэтому необходимо эти строки локализовать для всех используемых в системе языков.

Note

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

Как правило, в базовую поставку TESSA входят два языка: английский и русский.

Для удаления языка необходимо выделить соответствующую строку и нажать на клавишу Delete.

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

Important

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

Библиотеки и строки

Раздел Локализация предназначен для управления (создания, удаления и редактирования) библиотеками и строками локализации, содержащими перевод требуемой строки на различные языки. Библиотеки содержат наборы логически сгруппированных строк, относящихся к одной предметной области.
Так, библиотека Common содержит строки общего назначения, Forums - строки, относящиеся к подсистеме форумов, и так далее.

Tip

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

У каждой библиотеки есть следующий набор свойств.

Название Описание
Имя Название библиотеки, по которому её можно идентифицировать, в том числе и программно
Приоритет Определяет приоритет (старшинство) использования данных этой библиотеки. Библиотеки с большим приоритетом переопределяют данные библиотек с меньшим приоритетом. Этим свойством можно пользоваться для замены стандартных строк из системных библиотек в библиотеке проекта без необходимости прямого изменения системных библиотек
Отсоединённые языки Задаёт список кодов языков согласно стандарту ISO 639-1, разделённых точкой с запятой (;), данные которых должны храниться вне файла .jlocalization основной библиотеки локализации в файлах .jculture. В виду того, что значения этих языков хранятся отдельно (отсоединены) от основной библиотеки, они и называются отсоединёнными

Tip

Библиотеки локализации хранятся в файле ИмяБиблиотеки.jlocalization, в то время как файлы отсоединённых языков (или культур) хранятся в файлах ИмяБиблиотеки.КодЯзыка.jculture. Формат файла .jculture максимально прост и является ассоциативным списком (или словарём), хранящимся в виде простого JSON объекта, в котором каждое поле является именем (алиасом) строки локализации, а значение хранит перевод этой строки на целевой язык.

При выделении библиотеки отображается список локализованных строк в этой библиотеке.

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

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

Виртуальная библиотека All libraries (Все библиотеки) позволяет увидеть все локализованные строки из всех библиотек, а также искать по всему набору строк.

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

Tip

Если в разных библиотеках есть строки с одинаковыми именами (алиасами), то при отображении система выберет то значение, которое находится в библиотеке с большим приоритетом. Этим можно воспользоваться для переопределения системных значений. Вместо редактирования системных библиотек можно сделать собственную библиотеку, в которой будут только интересующие вас строки. Также это удобно тем, что при обновлении до следующих версий, новые версии системных библиотек не будут затирать вашу библиотеку.

Управление библиотеками локализации

Рассмотрим основные операции, выполняемые с библиотеками.

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

  • Удалить библиотеку можно при помощи:

    • контекстного меню:
    • всплывающей кнопки корзины в строке с библиотекой:
  • Редактировать параметры библиотеки можно при помощи всплывающей кнопки карандаша в строке с библиотекой:

    После появится диалог редактирования параметров библиотеки:

    • имени (алиаса),
    • приоритета (при использовании строк локализации),
    • отсоединённых (хранящихся вне основного файла библиотеки) языков.
      Для сохранения изменений используется кнопка принять.

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

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

    Tip

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

    Important

    Добавить поддержку нового языка во все имеющиеся библиотеки локализации можно выполнив описанную операцию для виртуальной библиотеки Все библиотеки (All libraries).

    Tip

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

  • Сохранение всех изменений, сделанных в библиотеках можно выполнить:

    • нажатием на кнопку Сохранить всё:
    • при помощи комбинации клавиш Ctrl+S.

    Tip

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

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

    • кнопки Обновить:
    • клавиши F5;
    • в открывшемся диалоге нужно подтвердить отмену изменений:
  • Экспорт в файл используется для сохранения выбранной библиотеки во внешний файл .jlocalization. При этом все отсоединённые языки будут помещены в отдельных файлах .jculture. Данную операцию можно выполнить, выбрав требуемую библиотеку и нажав:

    • кнопку Экспорт в файл…:
    • клавиши Ctrl+E;
    • в открывшемся диалоге сохранения файла необходимо выбрать место, куда требуется разместить файл, и нажать на кнопку Сохранить.

    Tip

    Для экспорта всех библиотек необходимо выбрать библиотеку Все библиотеки (All libraries). В этом случае вместо диалога сохранения файла будет отображён диалог выбора директории, в которую требуется сохранить все библиотеки.
    Рекомендуется сохранять библиотеки в директории Configuration -> Localization.

    Tip

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

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

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

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

    Tip

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

    Tip

    Экспортировать данные библиотеки локализации .jlocalization в .xlsx файл можно также при помощи специальной команды tadmin.

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

    • кнопку Импорт из файла…:
    • комбинацию клавиш Ctrl+I;
    • в открывшемся стандартном диалоге выбора файла нужно выбрать одну или несколько библиотек локализации и нажать кнопку Открыть:
    • все выбранные библиотеки будут загружены. Далее необходимо сохранить сделанные изменения, чтобы они вступили в силу.
  • Импорт из Excel позволяет загрузить файл с переводами строк в систему. Для выполнения этой операции:

    • необходимо нажать на кнопку Импорт из Excel…:
    • в открывшемся стандартном диалоге выбора файла нужно выбрать один или несколько файлов с переводом для библиотек локализации и нажать на кнопку Открыть:
    • все выбранные библиотеки будут загружены. Далее необходимо сохранить сделанные изменения, чтобы они вступили в силу.
      Так, в загруженном файле Acl.xlsx переводчик перевёл первые две стоки на словенский язык.

      Проверим, что перевод появился в системе. Выберем строку локализации Acl_AclManager_ErrorDuringCalculationTemplate.
      Как можно видеть, перевод для словенского (Napaka med izračunom ACL za pravilo "{0}".) был успешно загружен из файла.

Управление строками локализации

Прежде чем рассматривать операции, выполняемые со строками локализации, опишем их основные свойства.

Название Описание
Название Имя или алиас строки, по которому она может быть найдена в системе
Комментарий Описание назначения строки, возможно с вариантами её использования.
Рекомендуется всегда заполнять это поле
Список переводов Каждая строка локализации предназначена для предоставления данных о её переводе на различные языки. Соответственно, основным содержимым строки локализации является список переводов этой строки на различные языки, состоящий из пар: код языка, перевод.

Далее приведено описание каждого компонента пары
Код языка Символьный код языка в соответствии со стандартом ISO 639-1. Иногда вместо него используется термин культура
Перевод Перевод строки на заданный язык

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

  • Поиск строки используется для проверки существования строки с целью её дальнейшего редактирования или установления факта её отсутствия. Выполняется при помощи строки фильтрации:

  • Создание новой строки локализации используется для добавления новой строки с целью её дальнейшего использования в системе. Для этого необходимо:

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

    Tip

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

  • Редактирование строки локализации используется для внесения в неё изменений. Для этого необходимо:

    • выбрать строку локализации и дважды щёлкнуть по ней левой клавишей мыши:
    • в открывшемся диалоге редактирования строки локализации можно изменить все её параметры: название, комментарий, список языков и переводов для них;
    • добавить перевод строки для нового языка можно нажав на кнопку Добавить и выбрав нужный язык:

      В списке переводов добавится новая строка для выбранного языка, которую необходимо заполнить.
    • удалить перевод строки можно нажав на кнопку с изображением “Х” в правом углу блока перевода:

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

    • нажав правую клавишу мыши и выбрав в контекстном меню пункт Удалить:
    • нажав кнопку клавиатуры Delete.
      Выбранная строка будет удалена.

    Tip

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

Управление локализацией при помощи команд tadmin

Выше было рассмотрено управление локализацией при помощи графического интерфейса программы TessaAdmin. Далее рассматривается набор команд tadmin, облегчающих:

  • перевод данных системы на новые языки;
  • поддержание перевода в актуальном состоянии.

Important

Все рассматриваемые далее команды работают с файлами .jocalization и .jculture.

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

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

Как можно видеть, работать с таким интерфейсом, крайне не удобно.

Important

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

Добавление локализации для нового языка

Добавление перевода данных системы на новый язык выполняется при помощи следующих команд tadmin:

  • CopyCulture - выполняет копирование строк локализации с заданного языка на целевой язык, тем самым обеспечивая базовые данные для работы пользователя;
  • ExportDiffCulture - готовит файл в формате .xlsx для предоставления переводчику и получения впоследствии перевода. Файл содержит название строки локализации, комментарий к ней, позволяющий переводчику лучше понять контекст перевода, строку на базовом языке, строку на целевом языке (как правило, является копией строки на базовом языке, реже, строкой машинного перевода);
  • ImportDiffCulture - выполняет перенос данных из файла .xlsx, обработанного переводчиком и содержащего необходимый перевод в соответствующую библиотеку локализации.

Создание нового языка при помощи команды CopyCulture

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

Наиболее простой вариант команды:

tadmin.exe CopyCulture "C:\workspace\tessa\Configuration\Localization" -from:en -to:sl -nologo

Вывод команды:

Copying localization from en to sl for: "C:\workspace\tessa\Configuration\Localization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Acl.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\AppManager.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\ApprovalHistory.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Cards.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\CardTypes.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Common.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Core.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Deski.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Format.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Forums.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\KrMessages.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\KrPermissions.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\KrProcess.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\KrStates.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\KrTiles.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\KrTypes.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\OnlyOffice.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Tags.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\TaskNotification.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\TypesEditor.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\UI_Cards.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\UI_Controls.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\UI_Misc.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\UI_Scheme.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\UI_Tasks.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\UI_Tiles.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Views_Charting.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\WfResolution.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\WorkflowEngine.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\WorkflowViewer.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Workplaces.jlocalization"

Команда выполняет добавление локализации для словенского языка как копии с английского языка для всех библиотек локализации. При этом новый язык добавляется в основную библиотеку локализации (не как отсоединённый).

Вот так это выглядит в репозитории:

Note

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

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

tadmin.exe CopyCulture "C:\workspace\tessa\Configuration\Localization" -from:en -to:sl -detached -nologo

Вывод команды аналогичен предыдущему.
Как уже упоминалось, новый язык добавляется в библиотеку локализации в качестве отсоединённого, т.е. добавляется не в основной файл .jlocalization, а в файл .jculture.
Вот так это выглядит в репозитории:

Как можно видеть, в этом случае данные размещены более компактно, чем при их хранении в файле .jlocalization.

Tip

Рекомендуется добавлять новые языки в систему в качестве отсоединённых.

Note

Данную операцию нельзя выполнить средствами TessaAdmin.

Третий вариант команды позволяет сохранить существующие переводы строк на целевой язык, если они есть:

tadmin.exe CopyCulture "C:\workspace\tessa\Configuration\Localization" -from:en -to:sl -detached -empty -nologo

Tip

Используйте этот вариант, если не уверены в наличии перевода, чтобы сохранить существующие данные.

Note

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

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

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

С системой уже можно работать, но это всё ещё не целевой язык.

Подготовка данных для первичного перевода при помощи команды ExportDiffCulture

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

tadmin.exe ExportDiffCulture "C:\workspace\tessa\Configuration\Localization" -base:en -target:sl "-o:C:\workspace\tessa\Configuration\Localization\translate" -nologo

Вывод команды:

Comparing localization between "C:\workspace\tessa\Configuration\Localization" and "" for sl language Exporing library "Acl" diff: "C:\workspace\tessa\Configuration\Localization\translate\Acl.xlsx" Exporing library "AppManager" diff: "C:\workspace\tessa\Configuration\Localization\translate\AppManager.xlsx" Exporing library "ApprovalHistory" diff: "C:\workspace\tessa\Configuration\Localization\translate\ApprovalHistory.xlsx" Exporing library "Cards" diff: "C:\workspace\tessa\Configuration\Localization\translate\Cards.xlsx" Exporing library "CardTypes" diff: "C:\workspace\tessa\Configuration\Localization\translate\CardTypes.xlsx" Exporing library "Common" diff: "C:\workspace\tessa\Configuration\Localization\translate\Common.xlsx" Exporing library "Core" diff: "C:\workspace\tessa\Configuration\Localization\translate\Core.xlsx" Exporing library "Deski" diff: "C:\workspace\tessa\Configuration\Localization\translate\Deski.xlsx" Exporing library "Format" diff: "C:\workspace\tessa\Configuration\Localization\translate\Format.xlsx" Exporing library "Forums" diff: "C:\workspace\tessa\Configuration\Localization\translate\Forums.xlsx" Exporing library "KrMessages" diff: "C:\workspace\tessa\Configuration\Localization\translate\KrMessages.xlsx" Exporing library "KrPermissions" diff: "C:\workspace\tessa\Configuration\Localization\translate\KrPermissions.xlsx" Exporing library "KrProcess" diff: "C:\workspace\tessa\Configuration\Localization\translate\KrProcess.xlsx" Exporing library "KrStates" diff: "C:\workspace\tessa\Configuration\Localization\translate\KrStates.xlsx" Exporing library "KrTiles" diff: "C:\workspace\tessa\Configuration\Localization\translate\KrTiles.xlsx" Exporing library "KrTypes" diff: "C:\workspace\tessa\Configuration\Localization\translate\KrTypes.xlsx" Exporing library "OnlyOffice" diff: "C:\workspace\tessa\Configuration\Localization\translate\OnlyOffice.xlsx" Exporing library "Tags" diff: "C:\workspace\tessa\Configuration\Localization\translate\Tags.xlsx" Exporing library "TaskNotification" diff: "C:\workspace\tessa\Configuration\Localization\translate\TaskNotification.xlsx" Exporing library "TypesEditor" diff: "C:\workspace\tessa\Configuration\Localization\translate\TypesEditor.xlsx" Exporing library "UI_Cards" diff: "C:\workspace\tessa\Configuration\Localization\translate\UI_Cards.xlsx" Exporing library "UI_Controls" diff: "C:\workspace\tessa\Configuration\Localization\translate\UI_Controls.xlsx" Exporing library "UI_Misc" diff: "C:\workspace\tessa\Configuration\Localization\translate\UI_Misc.xlsx" Exporing library "UI_Scheme" diff: "C:\workspace\tessa\Configuration\Localization\translate\UI_Scheme.xlsx" Exporing library "UI_Tasks" diff: "C:\workspace\tessa\Configuration\Localization\translate\UI_Tasks.xlsx" Exporing library "UI_Tiles" diff: "C:\workspace\tessa\Configuration\Localization\translate\UI_Tiles.xlsx" Exporing library "Views_Charting" diff: "C:\workspace\tessa\Configuration\Localization\translate\Views_Charting.xlsx" Exporing library "WfResolution" diff: "C:\workspace\tessa\Configuration\Localization\translate\WfResolution.xlsx" Exporing library "WorkflowEngine" diff: "C:\workspace\tessa\Configuration\Localization\translate\WorkflowEngine.xlsx" Exporing library "WorkflowViewer" diff: "C:\workspace\tessa\Configuration\Localization\translate\WorkflowViewer.xlsx" Exporing library "Workplaces" diff: "C:\workspace\tessa\Configuration\Localization\translate\Workplaces.xlsx"

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

Note

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

Импорт первичного перевода при помощи команды ImportDiffCulture

Рассматриваемая команда позволяет внести данные, полученные в .xlsx файле от переводчика, в библиотеку локализации.

Пусть переводчик выполнил перевод данных для представления Мои задания (My Tasks).

Импортировать эти данные в соответствующие библиотеки локализации можно командой ImportDiffCulture:

tadmin.exe ImportDiffCulture "C:\workspace\tessa\Configuration\Localization\translate" "-o:C:\workspace\tessa\Configuration\Localization" -target:sl -nologo

Вывод команды:

Combining localization between "C:\workspace\tessa\Configuration\Localization\translate" and "C:\workspace\tessa\Configuration\Localization" for sl language

Команда выполняет перенос данных из файла .xlsx в файл .jlocalization или в .jculture, если язык хранится в библиотеке как отсоединённый.

Вот так это выглядит в репозитории:

Note

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

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

После этого, в пользовательском интерфейсе для словенского появятся выполненный перевод.

Поддержание локализации для языка в актуальном состоянии

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

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

  • CopyCulture - выполняет копирование строк локализации с заданного языка на целевой язык, тем самым обеспечивая базовые данные для работы пользователя;
  • ExportDiffCulture - готовит файл в формате .xlsx для предоставления переводчику и получения впоследствии перевода. Файл содержит название строки локализации, комментарий к ней, позволяющий переводчику лучше понять контекст перевода, строку на базовом языке, строку на целевом языке (как правило, является копией строки на базовом языке, реже, строкой машинного перевода);
  • ImportDiffCulture - выполняет перенос данных из файла .xlsx, обработанного переводчиком, и содержащего необходимый перевод в соответствующую библиотеку локализации;
  • ValidateLocalization - выполняет проверку данных библиотек локализации на внутреннюю согласованность и выполняет сохранение согласованных данных.

Important

Все рассматриваемые операции нельзя выполнить средствами TessaAdmin.

Добавление перевода новых строк на целевой язык при помощи команды CopyCulture

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

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

Создадим базовый перевод при помощи команды CopyCulture:

tadmin.exe CopyCulture "C:\workspace\tessa\Configuration\Localization" -from:en -to:sl -empty -nologo

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

Вывод команды следующий:

Copying localization from en to sl for: "C:\workspace\tessa\Configuration\Localization" Library is processed: "C:\workspace\tessa\Configuration\Localization\Acl.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\AppManager.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\ApprovalHistory.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Cards.jlocalization" Library is processed: "C:\workspace\tessa\Configuration\Localization\CardTypes.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Common.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Core.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Deski.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Format.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Forums.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\KrMessages.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\KrPermissions.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\KrProcess.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\KrStates.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\KrTiles.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\KrTypes.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\OnlyOffice.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Tags.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\TaskNotification.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\TypesEditor.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\UI_Cards.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\UI_Controls.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\UI_Misc.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\UI_Scheme.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\UI_Tasks.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\UI_Tiles.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Views_Charting.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\WfResolution.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\WorkflowEngine.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\WorkflowViewer.jlocalization" Library is skipped due to no changes: "C:\workspace\tessa\Configuration\Localization\Workplaces.jlocalization"

Вот так это выглядит в репозитории:

Note

Указанную выше команду CopyCulture помимо флага -empty можно дополнить флагом -detached для перевода языка в состояние отсоединённый и сохранения его данных в файле .jculture.

Подготовка данных для перевода при помощи команды ExportDiffCulture

Рассмотрим как можно получить набор модифицированных данных для предоставления профессиональному переводчику.

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

Tip

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

Получим данные для перевода при помощи команды ExportDiffCulture:

tadmin.exe ExportDiffCulture "C:\workspace\tessa\Configuration\Localization" "C:\workspace\tessa\Configuration\old\Localization" -base:en -target:sl "-o:C:\workspace\tessa\Configuration\Localization\translate" -nologo

Important

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

Вывод команды:

Comparing localization between "C:\workspace\tessa\Configuration\Localization" and "C:\workspace\tessa\Configuration\old\Localization" for sl language Exporing library "Acl" diff: "C:\workspace\tessa\Configuration\Localization\translate\Acl.xlsx" Library "AppManager" is skipped due to no changes Library "ApprovalHistory" is skipped due to no changes Library "Cards" is skipped due to no changes Library "CardTypes" is skipped due to no changes Library "Common" is skipped due to no changes Library "Core" is skipped due to no changes Library "Deski" is skipped due to no changes Library "Format" is skipped due to no changes Library "Forums" is skipped due to no changes Library "KrMessages" is skipped due to no changes Library "KrPermissions" is skipped due to no changes Library "KrProcess" is skipped due to no changes Library "KrStates" is skipped due to no changes Library "KrTiles" is skipped due to no changes Library "KrTypes" is skipped due to no changes Library "OnlyOffice" is skipped due to no changes Library "Tags" is skipped due to no changes Library "TaskNotification" is skipped due to no changes Library "TypesEditor" is skipped due to no changes Library "UI_Cards" is skipped due to no changes Library "UI_Controls" is skipped due to no changes Library "UI_Misc" is skipped due to no changes Library "UI_Scheme" is skipped due to no changes Library "UI_Tasks" is skipped due to no changes Library "UI_Tiles" is skipped due to no changes Library "Views_Charting" is skipped due to no changes Library "WfResolution" is skipped due to no changes Library "WorkflowEngine" is skipped due to no changes Library "WorkflowViewer" is skipped due to no changes Library "Workplaces" is skipped due to no changes

Таким образом был подготовлен один файл .xlsx для библиотеки Acl, содержащий одну новую строку:

Импорт перевода при помощи команды ImportDiffCulture

Сделаем перевод строки на целевой язык:

Импортировать эти данные в соответствующие библиотеки локализации можно командой ImportDiffCulture:

tadmin.exe ImportDiffCulture "C:\workspace\tessa\Configuration\Localization\translate" "-o:C:\workspace\tessa\Configuration\Localization" -target:sl -nologo

Результат выполнения команды:

Combining localization between "C:\workspace\tessa\Configuration\Localization\translate" and "C:\workspace\tessa\Configuration\Localization" for sl language

Команда выполняет перенос данных из файла .xlsx в файл .jlocalization или в .jculture, если язык хранится в библиотеке как отсоединённый.

Вот так это выглядит в репозитории:

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

Поддержание библиотек в согласованном состоянии при помощи команды ValidateLocalization

С течением времени, данные библиотек, особенно состоящие из отсоединённых языков, могут стать рассогласованными. Например, строку локализации можно удалить из основного файла библиотеки .jlocalization, но по какой-то причине забыть удалить из файлов отсоединённых языков .jculture.

Привести данные библиотек в согласованное состояние можно при помощи команды ValidateLocalization.

Удалим строку String из библиотеки основного файла библиотеки Acl.jlocalization.

Таким образом был модифицирован только один файл .jlocalization, библиотека сейчас находится в несогласованном состоянии, поскольку данные для строки String остались в файле .jculture.

Приведём библиотеку к согласованному состоянию, выполнив команду ValidateLocalization:

tadmin.exe ValidateLocalization "C:\workspace\tessa\Configuration\Localization" -nologo

Вывод команды:

Validating localization in "C:\workspace\tessa\Configuration\Localization" Saving library "Acl" Saving library "AppManager" Saving library "ApprovalHistory" Saving library "Cards" Saving library "CardTypes" Saving library "Common" Saving library "Core" Saving library "Deski" Saving library "Format" Saving library "Forums" Saving library "KrMessages" Saving library "KrPermissions" Saving library "KrProcess" Saving library "KrStates" Saving library "KrTiles" Saving library "KrTypes" Saving library "OnlyOffice" Saving library "Tags" Saving library "TaskNotification" Saving library "TypesEditor" Saving library "UI_Cards" Saving library "UI_Controls" Saving library "UI_Misc" Saving library "UI_Scheme" Saving library "UI_Tasks" Saving library "UI_Tiles" Saving library "Views_Charting" Saving library "WfResolution" Saving library "WorkflowEngine" Saving library "WorkflowViewer" Saving library "Workplaces"

Таким образом команда удалила уже не существующую строку из файла .jculture и привела данные библиотеки в согласованное состояние.

Переопределение строк локализации в web-сервисе без изменения содержимого библиотек

Если для какой-то части локализации системы необходимо переопределить строки без изменения содержимого библиотек, это можно сделать непосредственно в файле конфигурации web-сервиса app.json. Локализация задаётся в секции Settings -> Localization, являющейся JSON объектом. Каждое его поле задаёт имя строки локализации с учётом языка и требуемое значение. Имя поля задаётся в формате lang:stringName, где lang - имя целевого языка согласно стандарту ISO 639, stringName - имя строки локализации. В качестве значения поля задаётся желаемое значение переопределяемой строки.

Note

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

Например, переименуем рабочее место пользователя с “Пользователь”, на “Моё место”. Для этого в секции (JSON объекте) Settings добавим секцию Localization следующего вида.

{ "Settings": { "Localization": { "ru:Workplaces_User": "Моё место", "en:Workplaces_User": "My place", } } }

Note

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

Использование локализации в настройке и разработке системы

Подробно описано в руководстве разработчика.

Back to top