Specify roles on menu item to override wrong texts heuristics on Mac.

Use a workaround to avoid Qt to set its own non-translated titles.
This commit is contained in:
Julien Wadel 2022-10-17 11:27:18 +02:00
parent 9ff0502b3c
commit bd1ce9cb02
18 changed files with 494 additions and 6 deletions

View file

@ -1679,6 +1679,37 @@ Klik her: <a href="%1">%1</a>
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Om %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Indstillinger</translation>
</message>
<message>
<source>Services</source>
<translation>Tjenester</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Skjul %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Skjul andre</translation>
</message>
<message>
<source>Show All</source>
<translation>Vis alle</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Afslut %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Klicken Sie hier: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Über %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Einstellungen</translation>
</message>
<message>
<source>Services</source>
<translation>Dienste</translation>
</message>
<message>
<source>Hide %1</source>
<translation>%1 ausblenden</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Andere Ausblenden</translation>
</message>
<message>
<source>Show All</source>
<translation>Alle Einblenden</translation>
</message>
<message>
<source>Quit %1</source>
<translation>%1 beenden</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Click here: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>About %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Preferences</translation>
</message>
<message>
<source>Services</source>
<translation>Services</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Hide %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Hide Others</translation>
</message>
<message>
<source>Show All</source>
<translation>Show All</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Quit %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Haga clic aquí: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Acerca De %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Preferencias</translation>
</message>
<message>
<source>Services</source>
<translation>Servicios</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Ocultar %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Ocultar Otros</translation>
</message>
<message>
<source>Show All</source>
<translation>Mostrar Todo</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Salir de %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>À propos de %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Préférences</translation>
</message>
<message>
<source>Services</source>
<translation>Services</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Masquer %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Masquer les autres</translation>
</message>
<message>
<source>Show All</source>
<translation>Tout afficher</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Quitter %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1669,6 +1669,37 @@ Kattintson ide: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>A %1 névjegye</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Beállítások</translation>
</message>
<message>
<source>Services</source>
<translation>Szolgáltatások</translation>
</message>
<message>
<source>Hide %1</source>
<translation>A %1 Elrejtése</translation>
</message>
<message>
<source>Hide Others</source>
<translation>A több Elrejtése</translation>
</message>
<message>
<source>Show All</source>
<translation>Mindet Mutat</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Kilépés %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Clicca: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Informazioni su %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Preferenze</translation>
</message>
<message>
<source>Services</source>
<translation>Servizi</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Nascondi %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Nascondi Altre</translation>
</message>
<message>
<source>Show All</source>
<translation>Mostra Tutte</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Esci da %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1669,6 +1669,37 @@
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>%1 </translation>
</message>
<message>
<source>Preferences...</source>
<translation></translation>
</message>
<message>
<source>Services</source>
<translation></translation>
</message>
<message>
<source>Hide %1</source>
<translation>%1 </translation>
</message>
<message>
<source>Hide Others</source>
<translation></translation>
</message>
<message>
<source>Show All</source>
<translation></translation>
</message>
<message>
<source>Quit %1</source>
<translation>%1 </translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1689,6 +1689,37 @@ Spustelėkite čia: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Preferences...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Services</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide Others</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show All</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Clique aqui: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Sobre o %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Preferências</translation>
</message>
<message>
<source>Services</source>
<translation>Serviços</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Ocultar o %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Ocultar Outros</translation>
</message>
<message>
<source>Show All</source>
<translation>Mostrar Tudo</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Encerrar %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1689,6 +1689,37 @@
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>О %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>настройки</translation>
</message>
<message>
<source>Services</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide %1</source>
<translation type="unfinished">Скрывать %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Скрыть другие</translation>
</message>
<message>
<source>Show All</source>
<translation>Показать все</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Выйти из %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1679,6 +1679,37 @@ Klicka här: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Om %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Inställningar</translation>
</message>
<message>
<source>Services</source>
<translation>Tjänster</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Göm %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Göm Övriga</translation>
</message>
<message>
<source>Show All</source>
<translation>Visa Alla</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Avsluta %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1669,6 +1669,37 @@ Buraya tıklayın: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>%1 Hakkında</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Tercihler</translation>
</message>
<message>
<source>Services</source>
<translation>Servisler</translation>
</message>
<message>
<source>Hide %1</source>
<translation>%1 uygulamas gizle</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Diğerlerini gizle</translation>
</message>
<message>
<source>Show All</source>
<translation>Tümünü göster</translation>
</message>
<message>
<source>Quit %1</source>
<translation>%1 Uygulamadan Çık</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1689,6 +1689,37 @@
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>Про %1</translation>
</message>
<message>
<source>Preferences...</source>
<translation>Налаштування</translation>
</message>
<message>
<source>Services</source>
<translation>Послуги</translation>
</message>
<message>
<source>Hide %1</source>
<translation>Приховати %1</translation>
</message>
<message>
<source>Hide Others</source>
<translation>Приховати інші</translation>
</message>
<message>
<source>Show All</source>
<translation>показати все</translation>
</message>
<message>
<source>Quit %1</source>
<translation>Вийти %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -1669,6 +1669,37 @@
</translation>
</message>
</context>
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
<source>About %1</source>
<translation>%1 </translation>
</message>
<message>
<source>Preferences...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Services</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide Others</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show All</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quit %1</source>
<translation>%1 退</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>

View file

@ -144,7 +144,10 @@ static inline bool autoStartEnabled () {
// -----------------------------------------------------------------------------
static inline bool installLocale (App &app, QTranslator &translator, const QLocale &locale) {
return translator.load(locale, Constants::LanguagePath) && app.installTranslator(&translator);
bool ok = translator.load(locale, Constants::LanguagePath) && app.installTranslator(&translator);
if(ok)
QLocale::setDefault(locale);
return ok;
}
static inline string getConfigPathIfExists (const QCommandLineParser &parser) {

View file

@ -41,4 +41,23 @@ private:
QSet<QString> mContexts;
};
// Workaround for bad Application Menu translation on Mac:
// Overwrite Qt source by our translations :
//static const char *application_menu_strings[] =
//{
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","About %1"),
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Preferences..."),
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Services"),
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Hide %1"),
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Hide Others"),
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Show All"),
// QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Quit %1")
//};
class MAC_APPLICATION_MENU : public QObject{
QString forcedTranslation(){
return tr("About %1") + tr("Preferences...") + tr("Services") + tr("Hide %1") + tr("Hide Others") + tr("Show All") + tr("Quit %1");
}
};
#endif // DEFAULT_TRANSLATOR_H_

View file

@ -1,5 +1,4 @@
import QtQuick 2.7
import QtQuick.Controls 2.3
import Qt.labs.platform 1.0
import Linphone 1.0
@ -14,17 +13,18 @@ MenuBar {
// ---------------------------------------------------------------------------
// Menu.
// ---------------------------------------------------------------------------
//
Menu {
id: menu
title: qsTr('settings')
MenuItem {
text: qsTr('settings')
role: MenuItem.ApplicationSpecificRole //PreferencesRole doesn't seems to work with Qt 5.15.2
role: MenuItem.PreferencesRole
onTriggered: App.smartShowWindow(App.getSettingsWindow())
shortcut: StandardKey.Preferences
}
MenuItem {
//: 'Check for updates' : Item menu for checking updates
@ -35,7 +35,7 @@ MenuBar {
MenuItem {
text: qsTr('about')
role: MenuItem.AboutRole
onTriggered: {
window.detachVirtualWindow()
window.attachVirtualWindow(Qt.resolvedUrl('Dialogs/About.qml'))
@ -45,9 +45,10 @@ MenuBar {
MenuItem {
text: qsTr('quit')
role: MenuItem.QuitRole
onTriggered: Qt.quit()
shortcut: StandardKey.Quit
}
}
}