Как отобразить правильный язык в Qt поддерживает несколько языков? - PullRequest
2 голосов
/ 03 июля 2019

Мне нужно добавить несколько языков в наши продукты на основе Qt. Я сделал несколько Google и получил несколько идей. Но я не смог найти один ответ: как файл '.ts' узнает, для какого языка он предназначен?

Например, в примере проекта: i18n.

Я удалил исходный файл «i18n_zh.ts» и использовал «lupdate» для создания нового файла «i18n_zh.ts». Затем я посмотрел на содержимое нового файла. У него есть эта строка:

TS version="2.1" language="zh_CN"

Затем я использовал инструмент «linguist», чтобы открыть новый файл «i18n_zh.ts», и обнаружил, что Qt знает, что это китайский перевод.

Откуда Qt узнал, что это китайский? Где таблица сопоставления? Подсказывает ли '_zh' в имени файла что-либо?

Некоторое содержимое в новом файле 'i18n_zh.ts':

?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>MainWindow</name>
<message>
    <location filename="../languagechooser.cpp" line="176"/>
    <location filename="../mainwindow.cpp" line="85"/>
    <source>English</source>
    <translation type="unfinished"></translation>
</message>

1 Ответ

0 голосов
/ 04 июля 2019

Фактически, lupdate анализирует файл имени, чтобы получить язык. Он использует метод, аналогичный методу QLocale.

Когда у вас есть локаль, вы можете использовать такие методы, как QLocale::nativeLanguageName, чтобы получить имя языка (в данном случае это имя языка на этом языке).

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

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

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