diff --git a/3rdparty/qwindowkit b/3rdparty/qwindowkit index 153e1f4..ac1a62b 160000 --- a/3rdparty/qwindowkit +++ b/3rdparty/qwindowkit @@ -1 +1 @@ -Subproject commit 153e1f4f2fb711f5ec7072e0e49346fc76901cc3 +Subproject commit ac1a62b2a76e4d15e412b9579b80da2dafbc6d6a diff --git a/example/i18n/RibbonUIAPP_en_US.ts b/example/i18n/RibbonUIAPP_en_US.ts index 25d70b7..756d582 100644 --- a/example/i18n/RibbonUIAPP_en_US.ts +++ b/example/i18n/RibbonUIAPP_en_US.ts @@ -7,19 +7,19 @@ Message List View Example - + Add Message - + Clear Message - + @@ -28,292 +28,330 @@ Settings - + Theme - + Current Theme: - + - + Current Style: - + - + Style - + - + Modern - + - + Classic - + - + Text Render - + - + Current Text Render: - + - + TitleBar - + - + Show TitleBar Icon: - + - + Language - + - + Current Language: - + + + + + + Light + + + + + + Dark + + + + + + System + + + + + Native + + + + + Qt + + + + + Show + + + + + Hide + TabBar - + Basic - + - + Slider - + - + Switch Button - + - + CheckBox - + - + Button - + - + Push Button - + - - + + No Menu - + - - - + + + Menu - + - + Radio Button - + - + Input - + - + Line Edit - + - + Text Edit - + - + Combo Box - + - + Spin Box - + - + Progress - + - + ProgressBar - + - + ProgressRing - + - + Indicator - + - + BusyRing - + - + BusyBar - + - + PageIndicator - + - + Views - + - + MessageListView - + - + Open Message List View - + - + Others - + - + Text - + - + Open Menu - + - + Popup - + - + Open Popup - + - + Open Popup Dialog (Double Choices) - + - + Open Popup Dialog (Triple Choices) - + - + MessageBar - + - + Generate One Message - + - + Clear All Messages - + @@ -322,7 +360,7 @@ About - + @@ -331,165 +369,171 @@ RibbonUI APP - - - - - - Tab Bar - + - - A tab bar for window, let user choose the controllers. - + + Tab Bar + - - - Tab Bar Buttons - + + + A tab bar for window, let user choose the controllers. + - - Tool buttons at the top of tab bar. - + + Tab Bar Buttons + - - - Sliders - + + + Tool buttons at the top of tab bar. + - - Vertical/Horizental sliders with/without buttons. - + + Sliders + - - - Switch Buttons - + + + Vertical/Horizental sliders with/without buttons. + - - Switch buttons with/without background color or grabber text. - + + Switch Buttons + - - - CheckBoxs - + + + Switch buttons with/without background color or grabber text. + - - CheckBoxs with colorful background or with/without label text. - + + CheckBoxs + - - - Buttons - + + + CheckBoxs with colorful background or with/without label text. + - - Buttons with/without background or label text. - + + Buttons + - - - Push Buttons - + + + Buttons with/without background or label text. + - - Push buttons with/without sub menu. - + + Push Buttons + - - - Line Edits - + + + Push buttons with/without sub menu. + - - Line edits with/without icon. - + + Line Edits + - - - Bottom Bar - + + + Line edits with/without icon. + + + Bottom Bar + + + + A bottom bar for window. - + - - + + + About - + - + Tour - + - + Test Item 2 - + - + Test Item 3 - + - + + Home - + - + + File - + - + + Search - + - + + Account - + - + + Settings - + diff --git a/example/i18n/RibbonUIAPP_zh_CN.ts b/example/i18n/RibbonUIAPP_zh_CN.ts index f9e5c1d..3269722 100644 --- a/example/i18n/RibbonUIAPP_zh_CN.ts +++ b/example/i18n/RibbonUIAPP_zh_CN.ts @@ -44,115 +44,153 @@ - + Current Style: 当前风格: - + Style 风格 - + Modern 现代化 - + Classic 经典 - + Text Render 文本渲染器 - + Current Text Render: 当前文本渲染器: - + TitleBar 标题栏 - + Show TitleBar Icon: 显示标题栏图标: - + Language 语言 - + Current Language: 当前语言: + + + + Light + 亮色 + + + + + Dark + 暗色 + + + + + System + 跟随系统 + + + + Native + 原生 + + + + Qt + Qt + + + + Show + 显示 + + + + Hide + 隐藏 + TabBar - + Basic 基本 - + Slider 滑动条 - + Switch Button 开关 - + CheckBox 复选框 - + Button 按钮 - + Push Button 按压按钮 - - + + No Menu 无菜单 - - - + + + @@ -160,157 +198,157 @@ 菜单 - + Radio Button 单选按钮 - + Input 输入 - + Line Edit 行编辑 - + Text Edit 文本编辑 - + Combo Box 组合框 - + Spin Box 调整框 - + Progress 进度 - + ProgressBar 进度条 - + ProgressRing 进度环 - + Indicator 指示器 - + BusyRing 加载环 - + BusyBar 加载条 - + PageIndicator 页面指示器 - + Views 视图 - + MessageListView 消息列表视图 - + Open Message List View 打开消息列表视图 - + Others 其他 - + Text 文本 - + Open Menu 打开菜单 - + Popup 弹出窗口 - + Open Popup 打开弹出窗口 - + Open Popup Dialog (Double Choices) 打开弹出窗口(双选择) - + Open Popup Dialog (Triple Choices) 打开弹出窗口(三选择) - + MessageBar 信息栏 - + Generate One Message 生成一条信息 - + Clear All Messages 清除所有信息 @@ -334,160 +372,166 @@ RibbonUI 应用 - + Tab Bar 标签栏 - + A tab bar for window, let user choose the controllers. 一个让用户选择工具使用的标签栏。 - + Tab Bar Buttons 标签栏按钮 - + Tool buttons at the top of tab bar. 在标签栏顶端的工具按钮。 - + Sliders 滑动条 - + Vertical/Horizental sliders with/without buttons. 含/不含按钮的垂直/水平滑动条。 - + Switch Buttons 开关 - + Switch buttons with/without background color or grabber text. 有/没有背景颜色或者抓握指示器文本的开关。 - + CheckBoxs 复选框 - + CheckBoxs with colorful background or with/without label text. 具有多彩背景色彩或标签文本的复选框。 - + Buttons 按钮 - + Buttons with/without background or label text. 具有/不具有背景或标签文本的按钮。 - + Push Buttons 下压按钮 - + Push buttons with/without sub menu. 有/没有带菜单的下压按钮。 - + Line Edits 行编辑 - + Line edits with/without icon. 带/不带图标的行编辑器。 - + Bottom Bar 底层工具栏 - + A bottom bar for window. 窗口的底层工具栏。 - - + + + About 关于 - + Tour 导览 - + Test Item 2 测试项目 1 - + Test Item 3 测试项目 1 - + + Home 主页 - + + File 文件 - + + Search 搜索 - + + Account 账户 - + + Settings 设置 diff --git a/example/qml/Qt5/pages/SettingsMenuPage.qml b/example/qml/Qt5/pages/SettingsMenuPage.qml index 2783520..f0cd016 100644 --- a/example/qml/Qt5/pages/SettingsMenuPage.qml +++ b/example/qml/Qt5/pages/SettingsMenuPage.qml @@ -26,22 +26,15 @@ RibbonBackStagePage{ } RibbonComboBox{ id: theme_combo + textRole: "text" model: ListModel { - id: model_theme - ListElement { text: "Light" } - ListElement { text: "Dark" } - ListElement { text: "System" } + ListElement { text: qsTr("Light"); value: RibbonThemeType.Light } + ListElement { text: qsTr("Dark"); value: RibbonThemeType.Dark } + ListElement { text: qsTr("System"); value: RibbonThemeType.System } } iconSource: RibbonIcons.DarkTheme Component.onCompleted: update_state() - onActivated: { - if (currentText === "System") - RibbonTheme.themeMode = RibbonThemeType.System - else if (currentText === "Light") - RibbonTheme.themeMode = RibbonThemeType.Light - else - RibbonTheme.themeMode = RibbonThemeType.Dark - } + onActivated: RibbonTheme.themeMode = model.get(currentIndex).value Connections{ target: RibbonTheme function onThemeModeChanged(){ @@ -49,7 +42,7 @@ RibbonBackStagePage{ } } function update_state(){ - let str = (RibbonTheme.themeMode === RibbonThemeType.System ? "System" : RibbonTheme.themeMode === RibbonThemeType.Light ? "Light" : "Dark") + let str = (RibbonTheme.themeMode === RibbonThemeType.System ? qsTr("System") : RibbonTheme.themeMode === RibbonThemeType.Light ? qsTr("Light") : qsTr("Dark")) currentIndex = find(str) } } @@ -79,7 +72,7 @@ RibbonBackStagePage{ RibbonSwitchButton{ id: render_btn text: "Render" - grabberText: RibbonTheme.nativeText ? "Native" : "Qt" + grabberText: RibbonTheme.nativeText ? qsTr("Native") : qsTr("Qt") checked: true Layout.alignment: Qt.AlignHCenter onClicked: { @@ -99,7 +92,7 @@ RibbonBackStagePage{ } RibbonSwitchButton{ text: "Icon" - grabberText: RibbonTheme.nativeText ? "Show" : "Hide" + grabberText: RibbonTheme.nativeText ? qsTr("Show") : qsTr("Hide") checked: true Layout.alignment: Qt.AlignHCenter onClicked: { @@ -121,13 +114,11 @@ RibbonBackStagePage{ RibbonComboBox{ id: lang_combo model: ListModel { - id: model_lang } + textRole: "text" iconSource: RibbonIcons.LocalLanguage Component.onCompleted: update_state() - onActivated: { - RibbonLocalization.currentLanguage = currentText - } + onActivated: RibbonLocalization.currentLanguage = model.get(currentIndex).value Connections{ target: RibbonLocalization function onCurrentLanguageChanged(){ @@ -135,12 +126,15 @@ RibbonBackStagePage{ } } function update_state(){ - model_lang.clear() + model.clear() let langs = RibbonLocalization.languageList() for(let i = 0; i < langs.length; i++){ - model_lang.append({text:langs[i]}) + model.append({ + text:RibbonLocalization.languageTranslate(langs[i]), + value:langs[i] + }) } - currentIndex = find(RibbonLocalization.currentLanguage) + currentIndex = find(RibbonLocalization.languageTranslate(RibbonLocalization.currentLanguage)) } } } diff --git a/example/qml/Qt6/pages/SettingsMenuPage.qml b/example/qml/Qt6/pages/SettingsMenuPage.qml index ab273e2..d996398 100644 --- a/example/qml/Qt6/pages/SettingsMenuPage.qml +++ b/example/qml/Qt6/pages/SettingsMenuPage.qml @@ -26,22 +26,15 @@ RibbonBackStagePage{ } RibbonComboBox{ id: theme_combo + textRole: "text" model: ListModel { - id: model_theme - ListElement { text: "Light" } - ListElement { text: "Dark" } - ListElement { text: "System" } + ListElement { text: qsTr("Light"); value: RibbonThemeType.Light } + ListElement { text: qsTr("Dark"); value: RibbonThemeType.Dark } + ListElement { text: qsTr("System"); value: RibbonThemeType.System } } iconSource: RibbonIcons.DarkTheme Component.onCompleted: update_state() - onActivated: { - if (currentText === "System") - RibbonTheme.themeMode = RibbonThemeType.System - else if (currentText === "Light") - RibbonTheme.themeMode = RibbonThemeType.Light - else - RibbonTheme.themeMode = RibbonThemeType.Dark - } + onActivated: RibbonTheme.themeMode = model.get(currentIndex).value Connections{ target: RibbonTheme function onThemeModeChanged(){ @@ -49,7 +42,7 @@ RibbonBackStagePage{ } } function update_state(){ - let str = (RibbonTheme.themeMode === RibbonThemeType.System ? "System" : RibbonTheme.themeMode === RibbonThemeType.Light ? "Light" : "Dark") + let str = (RibbonTheme.themeMode === RibbonThemeType.System ? qsTr("System") : RibbonTheme.themeMode === RibbonThemeType.Light ? qsTr("Light") : qsTr("Dark")) currentIndex = find(str) } } @@ -79,7 +72,7 @@ RibbonBackStagePage{ RibbonSwitchButton{ id: render_btn text: "Render" - grabberText: RibbonTheme.nativeText ? "Native" : "Qt" + grabberText: RibbonTheme.nativeText ? qsTr("Native") : qsTr("Qt") checked: true Layout.alignment: Qt.AlignHCenter onClicked: { @@ -99,7 +92,7 @@ RibbonBackStagePage{ } RibbonSwitchButton{ text: "Icon" - grabberText: RibbonTheme.nativeText ? "Show" : "Hide" + grabberText: RibbonTheme.nativeText ? qsTr("Show") : qsTr("Hide") checked: true Layout.alignment: Qt.AlignHCenter onClicked: { @@ -121,13 +114,11 @@ RibbonBackStagePage{ RibbonComboBox{ id: lang_combo model: ListModel { - id: model_lang } + textRole: "text" iconSource: RibbonIcons.LocalLanguage Component.onCompleted: update_state() - onActivated: { - RibbonLocalization.currentLanguage = currentText - } + onActivated: RibbonLocalization.currentLanguage = model.get(currentIndex).value Connections{ target: RibbonLocalization function onCurrentLanguageChanged(){ @@ -135,12 +126,15 @@ RibbonBackStagePage{ } } function update_state(){ - model_lang.clear() + model.clear() let langs = RibbonLocalization.languageList() for(let i = 0; i < langs.length; i++){ - model_lang.append({text:langs[i]}) + model.append({ + text:RibbonLocalization.languageTranslate(langs[i]), + value:langs[i] + }) } - currentIndex = find(RibbonLocalization.currentLanguage) + currentIndex = find(RibbonLocalization.languageTranslate(RibbonLocalization.currentLanguage)) } } } diff --git a/lib_source/i18n/RibbonUI_en_US.ts b/lib_source/i18n/RibbonUI_en_US.ts index f39d297..16cd140 100644 --- a/lib_source/i18n/RibbonUI_en_US.ts +++ b/lib_source/i18n/RibbonUI_en_US.ts @@ -7,7 +7,7 @@ Title - + @@ -16,7 +16,7 @@ Name - + @@ -25,31 +25,31 @@ Back - + Close - + Minimize - + Restore - + Maximize - + @@ -58,13 +58,21 @@ Please input: - + Clear - + + + + + RibbonLocalization + + + Not Found + @@ -73,43 +81,43 @@ Link - + Close - + See More - + ActionA - + ActionB - + ActionA Clicked - + ActionB Clicked - + @@ -120,25 +128,25 @@ 's - + Clear All - + Show all messages - + Hide all messages - + @@ -147,13 +155,13 @@ Previous - + Next - + @@ -162,7 +170,7 @@ Loading - + @@ -171,13 +179,13 @@ Open - + Close - + @@ -186,25 +194,25 @@ Settings - + Show - + Hide - + RibbonTabBar: Error loading component: - + @@ -213,13 +221,13 @@ Open - + 's external - + @@ -228,25 +236,25 @@ Cut - + Copy - + Paste - + Select All - + @@ -255,13 +263,13 @@ Please input: - + Clear - + @@ -270,55 +278,55 @@ Close - + Minimize - + Restore - + Maximize - + Style - + Modern - + Classic - + Dark Mode - + Stay on Top - + @@ -327,25 +335,25 @@ Don't auto pop up - + Previous - + Finish - + Next - + @@ -354,31 +362,54 @@ Quit - + Minimize - + Cancel - + Do you want to close this window? - + Please note - + + + + + langList + + + zh_CN + Chinese (Simplified) + + + + zh_TW + Chinese (Traditional) + + + + en_US + English (USA) + + + + en_UK + English (UK) diff --git a/lib_source/i18n/RibbonUI_zh_CN.ts b/lib_source/i18n/RibbonUI_zh_CN.ts index 2b922b2..a1ee699 100644 --- a/lib_source/i18n/RibbonUI_zh_CN.ts +++ b/lib_source/i18n/RibbonUI_zh_CN.ts @@ -67,6 +67,14 @@ 清除 + + RibbonLocalization + + + Not Found + 未找到对应语言 + + RibbonMessageBar @@ -382,4 +390,27 @@ 请注意 + + langList + + + zh_CN + 简体中文 + + + + zh_TW + 繁体中文(台湾) + + + + en_US + 英文(美国) + + + + en_UK + 英文(英国) + + diff --git a/lib_source/include/ribbonlocalization.h b/lib_source/include/ribbonlocalization.h index 2e34d90..8f75374 100644 --- a/lib_source/include/ribbonlocalization.h +++ b/lib_source/include/ribbonlocalization.h @@ -21,6 +21,7 @@ public: Q_INVOKABLE bool removeLanguage(QString langName, QString path); Q_INVOKABLE void bindEngine(); Q_INVOKABLE QList languageList(); + Q_INVOKABLE QString languageTranslate(QString langStr); QString currentLanguage(); bool setCurrentLanguage(QString langName); // Use if you need to directly save/load language from config files @@ -34,10 +35,16 @@ private: #endif RibbonLocalization(); ~RibbonLocalization(); -private: +protected: ModuleTranslator moduleLangList; Translator transList; QString _currentLang; + const QMap langList = { + {"zh_CN", QT_TRANSLATE_NOOP("langList", "zh_CN")}, + {"zh_TW", QT_TRANSLATE_NOOP("langList", "zh_TW")}, + {"en_US", QT_TRANSLATE_NOOP("langList", "en_US")}, + {"en_UK", QT_TRANSLATE_NOOP("langList", "en_UK")}, + }; signals: void currentLanguageChanged(); }; diff --git a/lib_source/source/ribbonlocalization.cpp b/lib_source/source/ribbonlocalization.cpp index c294483..fa9e2bd 100644 --- a/lib_source/source/ribbonlocalization.cpp +++ b/lib_source/source/ribbonlocalization.cpp @@ -104,3 +104,11 @@ QList RibbonLocalization::languageList(){ } return list; } + +QString RibbonLocalization::languageTranslate(QString langStr){ + if(langList.contains(langStr)){ + return qApp->translate("langList", langList[langStr]); + } + else + return tr("Not Found"); +}