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

Во время работы над QGIS-проектами в коллективе с иностранными коллегами у меня появилась задача отображать подписи на нескольких языках: русском, английском и тигринье. Какой из них использовать, зависит от того, кто работает над проектом. Ниже я предлагаю возможный подход к решению этой задачи. Идею подглядел в наборе данных Natural Earth.

Для примера я подготовил карту провинций Эритреи. Вы можете скачать архив, содержащий один шейп-файл и файл проекта QGIS (версия 3.10.0-A Coruña). В атрибутах у слоя есть три поля: name_en, name_ru и name_ti. Два символа после подчерка соответствуют коду обозначения названий языков (стандарт ISO 639-1).

Открываем через верхнее меню Проект → Свойства проекта → Переменные. Нажимаем на плюс и создаём новую переменную с названием lang_code и значением en, которое теперь доступно во всех редакторах выражений проекта QGIS.

Далее, переходим в Свойства слоя → Подписи. Там создаём обычную подпись типа Single labels и открываем Редактор выражений (значок в виде греческой буквы эпсилон). Нам нужно, чтобы название поля для подписи создавалось динамически на основе переменной проекта lang_code. Для этого пишем:

eval(concat('"name_', @lang_code, '"'))

Функция eval оценивает всё выражение внутри скобок, которое представляет собой строку. Функция concat объединяет несколько строк в одну. В случае когда мы указали переменную проекта lang_code равной en, получаем значение "name_en"Обратите внимание на двойные кавычки по краям — они нужны, чтобы QGIS интерпретировал получившуюся строку именно как название поля, а не просто набор символов.

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

Есть ещё один подход, который позволит локализовать много элементов проекта, а не только подписи на карте (формы, названия слоёв и групп слоёв, названия атрибутов и т. п.). Суть в том, чтобы использовать генератор файлов перевода (Translation File Generator) и специальную отдельную программу для локализации (например, Qt Linguist ). Подробнее о TS-файлах можно прочитать в статье QGIS speaks a lot of languages.

Похожие записи

Comments (2)

Александр Орловский

Прекрасная статья! Обязательно буду пользоваться описанной Вами возможностью. Спасибо лично Вам и всем разработчикам замечательной программы QGIS !!!

Спасибо. В следующем посте постараюсь раскрыть тему TS-файлов для локализации QGIS-проектов.

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.