Qtranslate

Style Guide

We think a good translation should be:

1. Consistent

The same things need to have the same names everywhere. Not just within one app, but also on all platforms. Telegram features should have the same names on Android, iOS, Windows and macOS – unless they have to do with platform defaults. For system features, we should always use platform defaults (unless they are truly ugly or don’t fit).

2. Natural

You don’t have to always stick to the English original. Sometimes it makes more sense to simply describe what the app does in your own language.

But please don’t get carried away:

3. Default

It’s no longer 2001 and our users have seen many other apps. It will be much easier for them to use Telegram if familiar concepts have familiar names here. Whenever you’re looking for a word, focus on those that people are used to seeing in relevant context. What does Apple use in this case? What does Google use? What do Telegram’s main competitors in your region use?

4. Beautiful

Use good language that would make the app look as if it was built in your region. Respect your language’s grammar and style where possible. Avoid abbreviations. Try to find ways around gender problems instead of going for things like o(a), unless the workaround looks even more awkward. In most cases it’s possible to find a way of saying anything without hurting the language.

5. And it MUST FIT

This last one is never easy. Sometimes you need to look to the surrounding phrases and change them for the problematic phrase to fit and work.

Typography

What we’re looking for is not just linguistic, but also typographic and aesthetic correctness. The text is inseparable from design. Text is design and we need to make sure it works. So approach the text as a magazine editor would:

  1. Everything must fit into its allotted space. So always check in-app after editing. Words and phrases that are too long will be automatically cut (Like thi…) or contracted (Li…is) — we can’t allow this to happen. In other cases the text may flow over into the next line.
  2. The text should ideally be kept from spreading over two lines where the original only has one line.
  3. Same with double lines, try to avoid letting them spread into triple lines. Although this is a less strict requirement — it isn’t too bad if you let the double-line descriptions in Settings become triple lined.
  4. We need to avoid hanging words when there’s just one or two words left on a new line.
  5. We need to avoid gaps in the text, for example when the top right space is empty before the line break. A good way of avoiding this is to use shorter words, so that they wrap more easily. When short words are not an option, put your long ones at the beginning of the line, then add short words as padding.
  6. There will be times when making things fit will seem impossible. Our experience shows that it never is. Several determined people focusing on a word and the phrases around it will always find a solution after a few weeks, or even earlier. After all, it’s just words.

This takes some effort, but it really makes you feel proud when you’re done.

Applied Typography

On the whole, we’ve worked hard to make the English version as typographically sound as possible. So as a rule of thumb, if your phrase is the same length as the English one, it will fit well. If it is shorter — not too much of a problem, but beware of hanging words and gaps.

Note for iPhone Plus users: When checking strings in-app, try iOS Settings > Display & Brightness > View > ‘Zoomed’. Using this mode you can make sure that strings will fit the screens of the narrower models.

Последние мысли

В целом, каждый из этих плагинов отлично справляется с задачей создания многоязычного сайта WordPress *.

Ранее WPML, qTranslate X и Polylang были хорошими вариантами. Из-за отсутствия обновлений qTranslate X даже при рассмотрении нового qTranslate XT при создании многоязычного сайта WordPress нужно учитывать только два плагина: WPML и Polylang.

Приятно видеть, что сообщество qTranslate X работает над обновлением этого плагина, особенно для тех, кто его уже использует. Однако, если вы еще не начали переводить свой сайт WordPress, вероятно, лучше подождать, чтобы установить qTranslate XT, особенно если вы хотите воспользоваться последними обновлениями WordPress Editor.

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

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

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

Polylang Это хороший бесплатный вариант, если вам не нужны дополнительные функции и возможности или доступ к расширенной поддержке. Привлекательным аспектом Polylang является то, что вы можете перевести свой сайт бесплатно. Вы можете перейти на версию Pro, чтобы разблокировать дополнительные функции и при необходимости получать доступ к каналам поддержки. Однако при цене 99 евро (около 110 долларов) это самый дорогой метод по сравнению с многоязычным вариантом CMSML за 79 долларов для WPML.

Короче говоря, если у вас есть бюджет, WPML, вероятно, ваш лучший вариант. Он имеет несколько функций, а в стоимость входит доступ к службе поддержки. Но если вы ищете бесплатный многоязычный плагин, Polylang – хороший выбор. К сожалению, из-за неопределенного будущего невозможно рекомендовать qTranslate X или XT.

* Примечание: из-за дополнительных требований к пространству и потенциального веса каждый плагин добавляется на сайт с тысячами постов / страниц. Если вы хотите создать содержательный многоязычный сайт, сделайте немного больше исследований, прежде чем прыгать,

Installation

Since the -XT version is not officially available at WordPress.org the initial installation must be done manually. You require the permissions to access the folder of your WordPress installation. Contact your system administrator if needed.

  1. Download the last release from GitHub in zip or tar.gz format (usually zip for Windows users). Alternatively, for developers and those familiar with git, you can the new repo and work on the current branch.
  2. Uncompress the archive in your folder and rename it to .
  3. Deactivate plugin qTranslate-X, qTranslate, mqTranslate, qTranslate Plus, zTranslate or any other multilingual plugin, if you are running any.
  4. Activate qTranslate-XT through the ‘Plugins’ admin page in WordPress ().

If you didn’t already have qTranslate-X, proceed with the initial setup of qTranslate-XT:

  1. Open Settings > Languages configuration page and add/delete/disable any languages you need.
  2. Add the «qTranslate Language Chooser» widget or «Language Switcher» menu item to let your visitors switch the language.

Check the FAQ for further instructions.

Настройка qTranslate-X

Для настройки плагина qTranslate-X перейдём в Настройки » Языки.

Общие настройки

Язык по умолчанию — основной язык вашего сайта (до того, как он стал мультиязычным).

Режим URL-Модификации — изменение адреса сайта при выборе языка.

использование режима запроса — добавляет в конце адреса ?lang=enиспользование режима предварительно пути — добавляет в конце адреса /en/использование режима поддомена — добавляет в начале адреса en. (необходима настройка DNS на хостинге)скрыть URL языка для языка по умолчанию — скрыть URL.

Untranslated Content (Непереведенный Контент) — выбор способа отображения непереведённого контента.

скрыть контент, который не доступен для выбранного языка — скрыть страницы, для которых нет переводапоказывать префикс языка, когда содержимое недоступно для выбранного языка — если содержимое недоступно для данного языка, то непереведённые поля будут отображены на альтернативном языке с префиксом в скобкахshow content in an alternative language when translation is not available for the selected language — отображение содержимого на альтернативном языке, если перевод недоступен для выбранного языка.

Language Names — как отображать имена языков

show language names in «Camel Case» — отображать языки в стиле «Camel Case» (верблюжий регистр)

Определить язык браузера.

обнаруживает язык браузера и перенаправляет соответственно — автоопределение и перенаправление на язык, который используется в браузере у пользователя.

Моя настройка:

Дополнительные настройки

Рассмотрим лишь самые часто используемые.

Post Types — для каких типов записей будут доступны переводы.

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

Head inline CSS — данные CSS стили будут добавлены в head HTML-страницы.

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

Editor Mode — выбор типа редактора для перевода.

Use Language Switching Buttons (LSB) — страницы с переводимыми полями имеют кнопки для переключения между языкамиRaw режим редактора — перевод контента будет осуществляться при помощи шорткодов: полеfieldSingle Language Mode — этот режим редактирования необходим при возникновении проблем с первыми двумя типами редакторов

LSB Style — выбор стиля для кнопок переключения языков.

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

Языки

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

Настройки QTranslate

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

На средней панели находятся кнопки для определения направления перевода, а также кнопки «Очистить» и «Перевести».

Ниже этой панели, расположена область, в которой будет отображен перевод текста.

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

В данный момент существует поддержка таких сервисов для перевода:

  • Google Translate (translate.google.com).
  • Microsoft Translator (microsofttranslator.com).
  • Promt (www.translate.ru).
  • Babilon (www.babylon.com).
  • SDL (www.freetranslation.com).
  • Yandex (translate.yandex.ru).
  • yudao (www.youdao.com).

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

Программу QTranslate можно запускать со стартом операционной системы. Для этого в настройках, во вкладке «Основные», в разделе «Общие» следует активировать пункт «Запускать вместе с Windows».

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

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

Перевод текста в QTranslate

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

Для перевода текста, его нужно будет выделить, а затем нажать на клавиши клавиатуры «Ctrl» + «Ctrl» для просмотра перевода в главном окне программы. Вы можете переключать между системами онлайн перевода для просмотра различных вариантов перевода вставленного текста.

Для перевода, текст можно будет выделить, а затем просто перетащить его в главное окно программы QTranslate. В этом случае, можно вручную выбрать направление перевода, а потом нажать на кнопку «Перевести».

Выделенный текст с веб-страницы, или любой программы, которая поддерживает копирование, можно просто скопировать и вставить в окно онлайн переводчика QTranslate стандартным способом.

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

В обоих режимах после выделения текста, и последующего нажатия на клавиатуре на клавиши — правая «Ctrl» + «Q», откроется всплывающее окно, в котором будет выполнен перевод текста. На нижней панели всплывающего окна, вы можете переключиться на другого переводчика, чтобы посмотреть другой вариант перевода.

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

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

Перевод с помощью словаря

После нажатия на клавиши клавиатуры — правая клавиша «Win» + «Q» можно будет открыть окно «Словарь».

После открытия окна «Словарь», в поле «Поиск» вставляете слово, перевод которого вы хотите получить (это слово можно скопировать), а затем нажимаете на копку «Поиск» (лупа). После этого откроется результат поиска по всем доступным словарям, которые поддерживает программа.

Вам также может быть интересно:

  • Переводчик по фото онлайн — 5 способов
  • Screen Translator — экранный переводчик
  • Перевод голоса в текст — 7 способов

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

Для переключения нажимаете на иконку — логотип словаря. Также вы можете с помощью прокрутки просмотреть результаты по всем имеющимся словарям.

В данный момент поддерживаются такие словари:

  • Google Search;
  • WordReferense;
  • Babilon Dictionary;
  • Wikipedia;
  • ImTranslator;
  • Definr;
  • Reverso;
  • Urban Dictionary;
  • ABBYY Lingvo.

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

Public Functions

virtual
QString
virtual bool
QString
bool
bool
bool
virtual QString

Detailed Description

An object of this class contains a set of translations from a source language to a target language. QTranslator provides functions to look up translations in a translation file. Translation files are created using Qt Linguist.

The most common use of QTranslator is to: load a translation file, and install it using ().

Here’s an example function using the QTranslator:

int main(int argc, char *argv)
{
    QApplication app(argc, argv);

     translator;
    
    if (translator.load(QLocale(), QLatin1String("myapp"), QLatin1String("_"), QLatin1String(":/i18n")))
        QCoreApplication::installTranslator(&translator);

    QPushButton hello(QCoreApplication::translate("main", "Hello world!"));
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

Note that the translator must be created before the application’s widgets.

Most applications will never need to do anything else with this class. The other functions provided by this class are useful for applications that work on translator files.

Looking up Translations

It is possible to look up a translation using () (as () and () do). The () function takes up to three parameters:

  • The context — usually the class name for the () caller.
  • The source text — usually the argument to ().
  • The disambiguation — an optional string that helps disambiguate different uses of the same text in the same context.

For example, the «Cancel» in a dialog might have «Anuluj» when the program runs in Polish (in this case the source text would be «Cancel»). The context would (normally) be the dialog’s class name; there would normally be no comment, and the translated text would be «Anuluj».

But it’s not always so simple. The Spanish version of a printer dialog with settings for two-sided printing and binding would probably require both «Activado» and «Activada» as translations for «Enabled». In this case the source text would be «Enabled» in both cases, and the context would be the dialog’s class name, but the two items would have disambiguations such as «two-sided printing» for one and «binding» for the other. The disambiguation enables the translator to choose the appropriate gender for the Spanish version, and enables Qt to distinguish between translations.

Using Multiple Translations

Multiple translation files can be installed in an application. Translations are searched for in the reverse order in which they were installed, so the most recently installed translation file is searched for translations first and the earliest translation file is searched last. The search stops as soon as a translation containing a matching string is found.

This mechanism makes it possible for a specific translation to be «selected» or given priority over the others; simply uninstall the translator from the application by passing it to the () function and reinstall it with (). It will then be the first translation to be searched for matching strings.

See also (), (), (), (), I18N Example, Hello tr() Example, Arrow Pad Example, and Troll Print Example.

Frequently Asked Questions

Why is qTranslate-X not maintained anymore?

The previous qTranslate-Team was only one person. We tried to contact the author many times but we got no answer since 2016. Our goal is to build up a real team and make this plugin available again for the whole community. We can’t update the official plugin yet. It is still not clear either if we should go on with the qTranslate name, but for now we should focus on new releases. The -XT version can be seen for the least as a «bridge» project.

I’m still using qTranslate-X, can I test qTranslate-XT?

Yes and it’s very easy! Currently you can have both qTranslate-X and qTranslate-XT installed in the plugins folder for experimentations, but you should have at most one active at any time: BOTH -X AND -XT SHARE THE SAME OPTIONS! So if you change some options and switch between the plugins, the last changes will remain for the other. The plugin can actually re-adapt its configuration after a switch, in the general case you have nothing to do. If you have some incompatible options you should see some warnings. Note that even if you uninstall either -X or -XT, the options are not erased!

Disclaimer: be sure to backup your database regularly.

Is WooCommerce, ACF, … supported?

WooCommerce, ACF and other plugins are now supported as built-in modules. Developers able to test properly are much welcome! Please send PR for bug fixes.
See the complete list of available modules in our repo.

Is any plugin/themes supported?

Some major plugins are now supported with the built-in modules. Some plugins are also supported with built-in i18n configurations. For other plugins you need to provide custom integration through i18n configuration (json) and/or code (PHP/JS). A major refactoring is needed to make this easier.

I’m new to qTranslate, where can I find detailed instructions for startup?

Check our Wiki pages:

  • For the new installers, it may be useful to read Startup Guide.
  • It is important to read migration instructions, if you previously used other multilingual plugin.
  • Read Integration Guide when you need to make theme or other plugin custom fields to be multilingual.
  • For more detailed questions see our technical FAQ.

How to update qTranslate-XT with the last release?

Since the -XT version is not available at wordpress.org, we recommend you to install GitHub Updater. This is is an awesome tool to update plugins from a git repo (with many other features). It checks regularly the last release available in github (from the ) and compares it to your current version (defined in the header of ). If a new release is available an update link will appear as for a regular plugin from WordPress. The check is performed even if the plugin is deactivated.

Alternatively you can delete the current folder and repeat the installation from the last archive. Make sure to deactivate the previous version and then activate the new one, otherwise you will miss the execution of activation hooks and some options may become misconfigured.

Note for developers:

  • since GitHub Updater deploys the archive (tarball) your local git project will be removed if you installed it through . If you want to use a cloned version in production you should not update through GHU, use instead.
  • old releases may contain legacy headers that can become problematic. Be very cautious if you customize the updates for given branches!

Detailed Description

An object of this class contains a set of translations from a source language to a target language. QTranslator provides functions to look up translations in a translation file. Translation files are created using Qt Linguist.

The most common use of QTranslator is to: load a translation file, and install it using ().

Here’s an example function using the QTranslator:

int main(int argc, char *argv)
{
    QApplication app(argc, argv);

     translator;
    
    if (translator.load(QLocale(), QLatin1String("myapp"), QLatin1String("_"), QLatin1String(":/i18n")))
        QCoreApplication::installTranslator(&translator);

    QPushButton hello(QCoreApplication::translate("main", "Hello world!"));
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

Note that the translator must be created before the application’s widgets.

Most applications will never need to do anything else with this class. The other functions provided by this class are useful for applications that work on translator files.

Looking up Translations

It is possible to look up a translation using () (as () and () do). The () function takes up to three parameters:

  • The context — usually the class name for the () caller.
  • The source text — usually the argument to ().
  • The disambiguation — an optional string that helps disambiguate different uses of the same text in the same context.

For example, the «Cancel» in a dialog might have «Anuluj» when the program runs in Polish (in this case the source text would be «Cancel»). The context would (normally) be the dialog’s class name; there would normally be no comment, and the translated text would be «Anuluj».

But it’s not always so simple. The Spanish version of a printer dialog with settings for two-sided printing and binding would probably require both «Activado» and «Activada» as translations for «Enabled». In this case the source text would be «Enabled» in both cases, and the context would be the dialog’s class name, but the two items would have disambiguations such as «two-sided printing» for one and «binding» for the other. The disambiguation enables the translator to choose the appropriate gender for the Spanish version, and enables Qt to distinguish between translations.

Using Multiple Translations

Multiple translation files can be installed in an application. Translations are searched for in the reverse order in which they were installed, so the most recently installed translation file is searched for translations first and the earliest translation file is searched last. The search stops as soon as a translation containing a matching string is found.

Upgrade Notice

3.11.0

Major fix! Enable language switch for text widget with TinyMCE editor.
Warning: disable new block-based widget editor with WordPress 5.8. See #1058.

3.10.0

New feature! Javascript code bundled with Webpack and Babel. New paths updated on plugin reactivation or by saving your qTranslate-XT language settings.

3.9.0

New feature! Extend language code to 2-letter (ISO 639-1) or 3-letter (ISO 639-2 and ISO 639-3). Enforce lower case for new entries. Upper case only allowed for existing 2-letter codes as legacy support, but a migration will be required, see #884.

3.6.0

New feature! The built-in modules replace the legacy plugins for integration. You have to deactivate/reactivate qTranslate-XT to detect the active modules. See README.md in modules for more info.

3.5.3

Fix REST API: no redirect allowed. Your rewrite rules should be updated by saving the permalink structures from the admin page.

Member Function Documentation

QString QTranslator::filePath() const

Returns the path of the loaded translation file.

The file path is empty if no translation was loaded yet, the loading failed, or if the translation was not loaded from a file.

This function was introduced in Qt 5.15.

bool QTranslator::isEmpty() const

Returns if this translator is empty, otherwise returns . This function works with stripped and unstripped translation files.

Returns the target language as stored in the translation file.

This function was introduced in Qt 5.15.

Loads filename + suffix («.qm» if the suffix is not specified), which may be an absolute file name or relative to directory. Returns if the translation is successfully loaded; otherwise returns .

If directory is not specified, the current directory is used (i.e., as ).

The previous contents of this translator object are discarded.

If the file name does not exist, other file names are tried in the following order:

  1. File name without suffix appended.
  2. File name with text after a character in search_delimiters stripped («_.» is the default for search_delimiters if it is an empty string) and suffix.
  3. File name stripped without suffix appended.
  4. File name stripped further, etc.

For example, an application running in the fr_CA locale (French-speaking Canada) might call load(«foo.fr_ca», «/opt/foolib»). load() would then try to open the first existing readable file from this list:

Usually, it is better to use the QTranslator::load(const QLocale &, const QString &, const QString &, const QString &, const QString &) function instead, because it uses () and not simply the locale name, which refers to the formatting of dates and numbers and not necessarily the UI language.

Loads filename + prefix + + suffix («.qm» if the suffix is not specified), which may be an absolute file name or relative to directory. Returns if the translation is successfully loaded; otherwise returns .

The previous contents of this translator object are discarded.

If the file name does not exist, other file names are tried in the following order:

  1. File name without suffix appended.
  2. File name with ui language part after a «_» character stripped and suffix.
  3. File name with ui language part stripped without suffix appended.
  4. File name with ui language part stripped further, etc.

For example, an application running in the locale with the following — «es», «fr-CA», «de» might call load(QLocale(), «foo», «.», «/opt/foolib», «.qm»). load() would replace ‘-‘ (dash) with ‘_’ (underscore) in the ui language and then try to open the first existing readable file from this list:

  1. .

On operating systems where file system is case sensitive, QTranslator also tries to load a lower-cased version of the locale name.

This function was introduced in Qt 4.8.

bool QTranslator::load(const *data, int len, const QString &directory = QString())

This function overloads load().

Loads the QM file data data of length len into the translator.

The data is not copied. The caller must be able to guarantee that data will not be deleted or modified.

directory is only used to specify the base directory when loading the dependencies of a QM file. If the file does not have dependencies, this argument is ignored.

Вывод переключателя языков в qTranslate-X

Рассмотрим три способа для вывода переключателя языков в qTranslate-X.

  1. Вывод переключателя в код страницы.
  2. Вывод в меню сайта.
  3. Используя виджеты.

Вывод переключателя языков qTranslate-X в меню сайта

Для того чтобы вывести переключатель языков в меню, зайдём Внешний вид » Меню.

В блоке Переключатель языка выберем Языковое меню и добавим его.

Значение по умолчанию, выводит текст и флаг:

Например, чтобы вывести только флаги, установим значение:

Кастомизация переключателя языков

Следующие параметры можно вводить в поле URL пункта меню после #qtransLangSw? разделяя знаком амперсанд &.

type:

LM — дефолтное значение (выводит все языки)AL — выводит все доступные языки, кроме текущего

title:

language — слово «Language» переводится на текущий язык (по умолчанию)none — без заголовка в верхней части меню, отображается только флагcurrent — выводится название текущего языка

current:

shown — показать текущий язык в менюhidden — скрыть текущий язык в меню

names:

shown — показать названия языков в подпунктахhidden — скрыть названия языков в подпунктах

colon:

shown — отобразить двоеточие после названия заголовкаhidden — скрыть двоеточие после названия заголовка

flags:

none — скрывает отображение флаговall — флаг присутствует как в вкладке, так и в названии языкаitems — флаги присутствуют только в названии языка (во вкладке)

Изменить вывод названия текущего языка можно в Настройки » Языки » Язык по умолчанию.

Жмём Редактировать и в поле Название изменяем на нужное.

Вывод переключателя языков, используя виджеты

Заходим Внешний вид » Виджеты. Перетаскиваем на панель виджетов Выбор языка qTranslate:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector