diff --git a/.cmake/version_exe.rc.in b/.cmake/version_exe.rc.in
index 2f551d27..9dbe5048 100644
--- a/.cmake/version_exe.rc.in
+++ b/.cmake/version_exe.rc.in
@@ -31,4 +31,4 @@ BEGIN
END
END
-IDI_ICON1 ICON DISCARDABLE "${FLUENTUI_DIRECTORY}/example/favicon.ico"
+IDI_ICON1 ICON DISCARDABLE "${CMAKE_SOURCE_DIR}/example/favicon.ico"
diff --git a/.gitignore b/.gitignore
index 321394aa..628dcf16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,4 +40,6 @@ cmake-build-*
example/Version.h
action-cli
-dist
\ No newline at end of file
+dist
+
+*.qm
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b21f136c..ba59a9b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,8 +8,7 @@ if(MSVC)
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
endif()
-set(FLUENTUI_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
-list(APPEND CMAKE_MODULE_PATH ${FLUENTUI_DIRECTORY}/.cmake/)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/.cmake/)
include(GetGitRevisionDescription)
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index 1e85de7f..b4094001 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -6,9 +6,6 @@ project(example VERSION 1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
-#导入exmaple的QML位置,不然import example有时候会爆红
-set(QML_IMPORT_PATH ${CMAKE_BINARY_DIR}/example CACHE STRING "Qt Creator extra QML import paths" FORCE)
-
#判断FluentUI库类型
if(FLUENTUI_BUILD_STATIC_LIB)
add_definitions(-DFLUENTUI_BUILD_STATIC_LIB)
@@ -16,9 +13,9 @@ endif()
#设置可执行文件输出目录
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${FLUENTUI_DIRECTORY}/bin/debug>)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/debug)
else()
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${FLUENTUI_DIRECTORY}/bin/release>)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/release)
endif()
#导入Qt相关依赖包
@@ -33,10 +30,25 @@ else()
set(CMAKE_AUTOUIC ON)
endif()
+#国际化
+find_program(QT_LUPDATE NAMES lupdate)
+find_program(QT_LRELEASE NAMES lrelease)
+if (NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/example_en.qm)
+ execute_process(COMMAND ${QT_LUPDATE} ${CMAKE_CURRENT_LIST_DIR} -ts example_en.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
+ execute_process(COMMAND ${QT_LRELEASE} example_en.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
+endif ()
+if (NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/example_zh.qm)
+ execute_process(COMMAND ${QT_LUPDATE} ${CMAKE_CURRENT_LIST_DIR} -ts example_zh.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
+ execute_process(COMMAND ${QT_LRELEASE} example_zh.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
+endif ()
+
+file(GLOB QM_FILE_PATHS ${CMAKE_CURRENT_LIST_DIR}/ *.qm)
+file(COPY ${QM_FILE_PATHS} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/i18n)
+
##生成版本信息头文件
-set(HEADER_FILE_VERSION_PATH ${FLUENTUI_DIRECTORY}/example/Version.h)
+set(HEADER_FILE_VERSION_PATH ${CMAKE_SOURCE_DIR}/example/Version.h)
configure_file(
- ${FLUENTUI_DIRECTORY}/.cmake/Version.h.in
+ ${CMAKE_SOURCE_DIR}/.cmake/Version.h.in
${HEADER_FILE_VERSION_PATH}
)
@@ -73,20 +85,19 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" filename ${filepath})
list(APPEND resource_files ${filename})
endforeach(filepath)
-
endif()
#如果是Windows平台,则生成rc文件,还有inno setup脚本文件
set(EXAMPLE_VERSION_RC_PATH "")
if(WIN32)
- set(EXAMPLE_VERSION_RC_PATH ${CMAKE_BINARY_DIR}/version_${PROJECT_NAME}.rc)
+ set(EXAMPLE_VERSION_RC_PATH ${CMAKE_CURRENT_BINARY_DIR}/version_${PROJECT_NAME}.rc)
configure_file(
- ${FLUENTUI_DIRECTORY}/.cmake/version_exe.rc.in
+ ${CMAKE_SOURCE_DIR}/.cmake/version_exe.rc.in
${EXAMPLE_VERSION_RC_PATH}
)
configure_file(
- ${FLUENTUI_DIRECTORY}/.cmake/InstallerScript.iss.in
- ${FLUENTUI_DIRECTORY}/action-cli/InstallerScript.iss
+ ${CMAKE_SOURCE_DIR}/.cmake/InstallerScript.iss.in
+ ${CMAKE_SOURCE_DIR}/action-cli/InstallerScript.iss
)
endif()
@@ -120,6 +131,9 @@ if(WIN32)
)
endif()
+file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/source/)
+file(COPY ${CMAKE_SOURCE_DIR}/src/ DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/source/)
+
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
#如果是Qt6.2以上,则使用qt_add_qml_module添加资源文件
qt_add_qml_module(example
diff --git a/example/example.qrc b/example/example.qrc
index fb334397..c0cb851a 100644
--- a/example/example.qrc
+++ b/example/example.qrc
@@ -185,7 +185,6 @@
qml/viewmodel/TextBoxViewModel.qml
qml/page/T_Clip.qml
qml/page/T_3D.qml
- qml/global/Lang.qml
qml/page/T_Network.qml
qml/page/T_ShortcutPicker.qml
qml/chart/T_BarChart.qml
@@ -198,5 +197,6 @@
res/image/ic_crash.png
qml/window/CrashWindow.qml
qml/page/T_SplitLayout.qml
+ qml/window/FluentInitalizrWindow.qml
diff --git a/example/example_en.ts b/example/example_en.ts
new file mode 100644
index 00000000..98733847
--- /dev/null
+++ b/example/example_en.ts
@@ -0,0 +1,2701 @@
+
+
+
+
+ CodeExpander
+
+
+
+ Source
+
+
+
+
+
+ The Copy is Successful
+
+
+
+
+ CrashWindow
+
+
+
+ Friendly Reminder
+
+
+
+
+
+ We apologize for the inconvenience caused by an unexpected error
+
+
+
+
+
+ Report Logs
+
+
+
+
+
+ Restart Program
+
+
+
+
+ FluentInitalizrWindow
+
+
+
+ FluentUI Initalizr
+
+
+
+
+ Name
+
+
+
+
+ Create In
+
+
+
+
+ Browse
+
+
+
+
+ Cancel
+
+
+
+
+ Create
+
+
+
+
+ HotloadWindow
+
+
+
+ Hot Loader
+
+
+
+
+
+ Drag in a qml file
+
+
+
+
+ InitalizrHelper
+
+
+ The name cannot be empty
+
+
+
+
+ The creation path cannot be empty
+
+
+
+
+ The path does not exist
+
+
+
+
+ ItemsFooter
+
+
+
+ About
+
+
+
+
+
+ Settings
+
+
+
+
+ ItemsOriginal
+
+
+
+ Home
+
+
+
+
+
+ PaneItemExpander Disabled
+
+
+
+
+
+ Basic Input
+
+
+
+
+
+ Buttons
+
+
+
+
+
+ A control that responds to user input and raisesa Click event.
+
+
+
+
+
+ Text
+
+
+
+
+
+ Image
+
+
+
+
+
+ Slider
+
+
+
+
+
+ A control that lets the user select from a rangeof values by moving a Thumb control along atrack.
+
+
+
+
+
+ CheckBox
+
+
+
+
+
+ A control that a user can select or clear.
+
+
+
+
+
+ RadioButton
+
+
+
+
+
+ ToggleSwitch
+
+
+
+
+
+ PaneItem Disabled
+
+
+
+
+
+ Form
+
+
+
+
+
+ TextBox
+
+
+
+
+
+ TimePicker
+
+
+
+
+
+ DatePicker
+
+
+
+
+
+ CalendarPicker
+
+
+
+
+
+ ColorPicker
+
+
+
+
+
+ ShortcutPicker
+
+
+
+
+
+ Surface
+
+
+
+
+
+ InfoBar
+
+
+
+
+
+ An inline message to display app-wide statuschange information.
+
+
+
+
+
+ Progress
+
+
+
+
+
+ RatingControl
+
+
+
+
+
+ Badge
+
+
+
+
+
+ Rectangle
+
+
+
+
+
+ Clip
+
+
+
+
+
+ Carousel
+
+
+
+
+
+ Expander
+
+
+
+
+
+ Watermark
+
+
+
+
+
+ Layout
+
+
+
+
+
+ StaggeredLayout
+
+
+
+
+
+ SplitLayout
+
+
+
+
+
+ StatusLayout
+
+
+
+
+
+ Popus
+
+
+
+
+
+ Dialog
+
+
+
+
+
+ ComboBox
+
+
+
+
+
+ Tooltip
+
+
+
+
+
+ Menu
+
+
+
+
+
+ Navigation
+
+
+
+
+
+ Pivot
+
+
+
+
+
+ Presents information from different sources in a tabbed view.
+ Presents information from different sources in atabbed view.
+
+
+
+
+
+ BreadcrumbBar
+
+
+
+
+
+ TabView
+
+
+
+
+
+ A control that displays a collection of tabs thatcan be used to display several documents.
+
+
+
+
+
+ TreeView
+
+
+
+
+
+ TableView
+
+
+
+
+
+ The TableView control provides a flexible way to display a collection of data in rows and columns
+
+
+
+
+
+ Pagination
+
+
+
+
+
+ MultiWindow
+
+
+
+
+
+ FlipView
+
+
+
+
+
+ Presents a collection of items that the user canflip through, one item at a time.
+
+
+
+
+
+ Theming
+
+
+
+
+
+ Acrylic
+
+
+
+
+
+ Theme
+
+
+
+
+
+ Typography
+
+
+
+
+
+ Awesome
+
+
+
+
+
+ Chart
+
+
+
+
+
+ Bar Chart
+
+
+
+
+
+ Line Chart
+
+
+
+
+
+ Pie Chart
+
+
+
+
+
+ Polar Area Chart
+
+
+
+
+
+ Bubble Chart
+
+
+
+
+
+ Scatter Chart
+ Lang Scatter Chart
+
+
+
+
+
+ Radar Chart
+
+
+
+
+
+ Other
+
+
+
+
+
+ QRCode
+
+
+
+
+
+ Tour
+
+
+
+
+
+ Timeline
+
+
+
+
+
+ Captcha
+
+
+
+
+
+ Network
+
+
+
+
+
+ Remote Loader
+
+
+
+
+
+ Hot Loader
+
+
+
+
+
+ 3D
+
+
+
+
+
+ Test Crash
+
+
+
+
+ LoginWindow
+
+
+
+
+
+ Login
+
+
+
+
+
+ Please enter the account
+ Please enter the account number
+
+
+
+
+
+ Please enter your password
+
+
+
+
+
+ Please feel free to enter a password
+
+
+
+
+ MainWindow
+
+
+
+
+
+ Dark Mode
+
+
+
+
+
+
+
+ Quit
+
+
+
+
+
+ Are you sure you want to exit the program?
+
+
+
+
+
+ Minimize
+
+
+
+
+
+ Friendly Reminder
+
+
+
+
+
+ FluentUI is hidden from the tray, click on the tray to activate the window again
+
+
+
+
+
+
+
+ Cancel
+
+
+
+
+
+ Open in Separate Window
+
+
+
+
+
+ Click Time
+
+
+
+
+
+ Search
+
+
+
+
+
+ Finish
+
+
+
+
+
+ Next
+
+
+
+
+
+ Previous
+
+
+
+
+
+ Here you can switch to night mode.
+
+
+
+
+
+ Hide Easter eggs
+
+
+
+
+
+ Try a few more clicks!!
+
+
+
+
+
+ Upgrade Tips
+
+
+
+
+
+ FluentUI is currently up to date
+
+
+
+
+
+ -- The current app version
+
+
+
+
+
+
+Now go and download the new version?
+
+Updated content:
+
+
+
+
+
+
+ OK
+
+
+
+
+
+ The current version is already the latest
+
+
+
+
+
+ The network is abnormal
+
+
+
+
+ SingleInstanceWindow
+
+
+
+ SingleInstance
+
+
+
+
+
+ I'm a SingleInstance window, and if I exist, I'll destroy the previous window and create a new one
+
+
+
+
+ SingleTaskWindow
+
+
+
+ SingleTask
+
+
+
+
+
+ I'm a SingleTask mode window, and if I exist, I activate the window
+
+
+
+
+ StandardWindow
+
+
+
+ File
+
+
+
+
+
+ New...
+
+
+
+
+
+ Open...
+
+
+
+
+
+ Save
+
+
+
+
+
+ Save As...
+
+
+
+
+
+ Quit
+
+
+
+
+
+ Edit
+
+
+
+
+
+ Cut
+
+
+
+
+
+ Copy
+
+
+
+
+
+ Paste
+
+
+
+
+
+ Help
+
+
+
+
+
+ About
+
+
+
+
+
+ I'm a Standard mode window, and every time I create a new window
+
+
+
+
+ T_Acrylic
+
+
+
+ Acrylic
+
+
+
+
+ T_Awesome
+
+
+
+ Awesome
+
+
+
+
+
+ Please enter a keyword
+
+
+
+
+
+ Search
+
+
+
+
+
+ You Copied
+
+
+
+
+ T_Badge
+
+
+
+ Badge
+
+
+
+
+
+ It usually appears in the upper right corner of the notification icon or avatar to display the number of messages that need to be processed
+
+
+
+
+ T_BreadcrumbBar
+
+
+
+ BreadcurmbBar
+
+
+
+
+
+ Reset sample
+
+
+
+
+ T_Buttons
+
+
+
+ Buttons
+
+
+
+
+
+ Support the Tab key to switch focus, and the Space key to perform click events
+
+
+
+
+
+ Text Button
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disabled
+
+
+
+
+
+ Standard Button
+
+
+
+
+
+ Click StandardButton
+
+
+
+
+
+ Filled Button
+
+
+
+
+
+ Click FilledButton
+
+
+
+
+
+ Toggle Button
+
+
+
+
+
+ Progress Button
+
+
+
+
+
+ Loading Button
+
+
+
+
+
+ Loading
+
+
+
+
+
+ Click IconButton
+
+
+
+
+
+ IconOnly
+
+
+
+
+
+ Button.IconOnly
+
+
+
+
+
+ TextOnly
+
+
+
+
+
+ Button.TextOnly
+
+
+
+
+
+ TextBesideIcon
+
+
+
+
+
+ Button.TextBesideIcon
+
+
+
+
+
+ TextUnderIcon
+
+
+
+
+
+ Button.TextUnderIcon
+
+
+
+
+
+ DropDownButton
+
+
+
+
+
+ Menu_1
+
+
+
+
+
+ Menu_2
+
+
+
+
+
+ Menu_3
+
+
+
+
+
+ Menu_4
+
+
+
+
+
+ Radio Button_1
+
+
+
+
+
+ Radio Button_2
+
+
+
+
+
+ Radio Button_3
+
+
+
+
+ T_CalendarPicker
+
+
+
+ CalendarPicker
+
+
+
+
+ T_Captcha
+
+
+
+ Captcha
+
+
+
+
+
+ Refresh
+
+
+
+
+
+ Ignore Case
+
+
+
+
+
+ Please enter a verification code
+
+
+
+
+
+ The verification code is correct
+
+
+
+
+
+ Error validation, please re-enter
+
+
+
+
+ T_Carousel
+
+
+
+ Carousel
+
+
+
+
+
+ Carousel map, support infinite carousel, infinite swipe, and components implemented with ListView
+
+
+
+
+ T_CheckBox
+
+
+
+ CheckBox
+
+
+
+
+
+ A 2-state CheckBox
+
+
+
+
+
+ Right
+
+
+
+
+
+ Left
+
+
+
+
+
+
+
+ Disabled
+
+
+
+
+
+ A 3-state CheckBox
+
+
+
+
+
+ Three State
+
+
+
+
+ T_Clip
+
+
+
+ Clip
+
+
+
+
+
+ Use with images (this component will have no effect under software rendering)
+
+
+
+
+ T_ColorPicker
+
+
+
+ ColorPicker
+
+
+
+
+ T_ComboBox
+
+
+
+ ComboBox
+
+
+
+
+ T_DatePicker
+
+
+
+ TimePicker
+
+
+
+
+
+ showYear=true
+
+
+
+
+
+
+
+ Year
+
+
+
+
+
+
+
+ Month
+
+
+
+
+
+
+
+ Day
+
+
+
+
+
+
+
+ Cancel
+
+
+
+
+
+
+
+ OK
+
+
+
+
+
+ showYear=false
+
+
+
+
+ T_Dialog
+
+
+
+ Dialog
+
+
+
+
+
+ Show Double Button Dialog
+
+
+
+
+
+
+
+
+
+ Friendly Reminder
+
+
+
+
+
+
+
+ Are you sure you want to opt out?
+
+
+
+
+
+
+
+ Cancel
+
+
+
+
+
+
+
+
+
+ Click the Cancel Button
+
+
+
+
+
+
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+ Click the OK Button
+
+
+
+
+
+ Minimize
+
+
+
+
+
+ Click Minimize
+
+
+
+
+
+ Custom Content Dialog
+
+
+
+
+
+ Custom Content Dialog2
+
+
+
+
+
+ Data is loading, please wait...
+
+
+
+
+
+ Unload
+
+
+
+
+
+ Test the InfoBar level on top of the Popup
+
+
+
+
+
+ Line Chart
+
+
+
+
+ T_Expander
+
+
+
+ Expander
+
+
+
+
+
+ Open a radio box
+
+
+
+
+
+ Open a sliding text box
+
+
+
+
+
+ Permit me to observe: the late emperor was taken from us before he could finish his life`s work, the restoration of Han. Today, the empire is still divided in three, and our very survival is threatened. Yet still the officials at court and the soldiers throughout the realm remain loyal to you, your majesty. Because they remember the late emperor, all of them, and they wish to repay his kindness in service to you. This is the moment to extend your divine influence, to honour the memory of the late Emperor and strengthen the morale of your officers. It is not time to listen to bad advice, or close your ears to the suggestions of loyal men.
+The court and the administration are as one. Both must be judged by one standard. Those who are loyal and good must get what they deserve, but so must the evil-doers who break the law. This will demonstrate the justice of your rule. There cannot be one law for the court and another for the administration.
+Counselors and attendants like Guo Youzhi, Fei Yi, and Dong Yun are all reliable men, loyal of purpose and pure in motive. The late Emperor selected them for office so that they would serve you after his death.These are the men who should be consulted on all palace affairs. Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+The emperors of the Western Han chose their courtiers wisely, and their dynasty flourished. The emperors of the Eastern Han chose poorly, and they doomed the empire to ruin. Whenever the late Emperor discussed this problem with me, he lamented the failings of Emperors Huan and Ling. Advisors like Guo Youzhi, Fei Yi, Chen Zhen, Zhang Yi, and Jiang Wan – these are all men of great integrity and devotion. I encourage you to trust them, your majesty, if the house of Han is to rise again.
+I begin as a common man, farming in my fields in Nanyang, doing what I could to survive in an age of chaos. I never had any interest in making a name for myself as a noble. The late Emperor was not ashamed to visit my cottage and seek my advice. Grateful for his regard, I responded to his appeal and threw myself into his service. Now twenty-one years has passed, the late Emperor always appreciated my caution and, in his final days, entrusted me with his cause.
+Since that moment, I have been tormented day and night by the fear that I might let him down. That is why I crossed the Lu river at the height of summer, and entered the wastelands beyond. Now the south has been subdued, and our forces are fully armed.I should lead our soldiers to conquer the northern heartland and attempt to remove the hateful traitors, restore the house of Han, and return it to the former capital.This the way I mean to honor my debt to the late Emperor and fulfill my duty to you. Guo Youzhi, Fei Yi, and Dong Yun are the ones who should be making policy decisions and recommendations.
+My only desire is to be permitted to drive out the traitors and restore the Han. If I should let you down, punish my offense and report it to the spirit of the late Emperor. If those three advisors should fail in their duties, then they should be punished for their negligence.Your Majesty, consider your course of action carefully. Seek out good advice, and never forget the late Emperor. I depart now on a long expedition, and I will be forever grateful if you heed my advice. Blinded by my own tears, I know not what I write.
+
+
+
+
+ T_FlipView
+
+
+
+ FlipView
+
+
+
+
+
+ Horizontal FlipView
+
+
+
+
+
+ Vertical FlipView
+
+
+
+
+ T_Home
+
+
+
+ FluentUI GitHub
+
+
+
+
+
+ The latest FluentUI controls and styles for your applications.
+
+
+
+
+
+ FluentUI Initalizr
+
+
+
+
+
+ FluentUI Initializr is a FluentUI tool that helps you create and customize Fluent UI projects with various options.
+
+
+
+
+ T_Image
+
+
+
+ Image
+
+
+
+
+
+ Reload
+
+
+
+
+
+ The image failed to load, please reload
+
+
+
+
+ T_InfoBar
+
+
+
+ InfoBar
+
+
+
+
+
+ Info
+
+
+
+
+
+ This is an InfoBar in the Info Style
+
+
+
+
+
+ Warning
+
+
+
+
+
+ This is an InfoBar in the Warning Style
+
+
+
+
+
+ This is an InfoBar in the Error Style
+
+
+
+
+
+ This is an InfoBar in the Success Style
+
+
+
+
+
+ InfoBar that needs to be turned off manually
+
+
+
+
+
+ Loading...
+
+
+
+
+ T_Menu
+
+
+
+
+
+ Menu
+
+
+
+
+
+
+
+ File
+
+
+
+
+
+
+
+ New...
+
+
+
+
+
+
+
+ Open...
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
+
+
+ Quit
+
+
+
+
+
+ Search
+
+
+
+
+
+
+
+
+
+ Disable
+
+
+
+
+
+ Check
+
+
+
+
+
+
+
+ Save As...
+
+
+
+
+
+
+
+ Doc
+
+
+
+
+
+
+
+ PDF
+
+
+
+
+
+ Show Menu Popup
+
+
+
+
+
+ MenuBar
+
+
+
+
+
+ Edit
+
+
+
+
+
+ Cut
+
+
+
+
+
+ Copy
+
+
+
+
+
+ Paste
+
+
+
+
+
+ Help
+
+
+
+
+
+ About
+
+
+
+
+ T_MultiWindow
+
+
+
+ MultiWindow
+
+
+
+
+
+ <font color='red'>Standard</font> mode window,a new window is created every time
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Window
+
+
+
+
+
+ <font color='red'>SingleTask</font> mode window,If a window exists, this activates the window
+
+
+
+
+
+ <font color='red'>SingleInstance</font> mode window,If the window exists, destroy the window and create a new window
+
+
+
+
+
+ Create the window without carrying any parameters
+
+
+
+
+
+ Create a window with the parameter username: zhuzichu
+
+
+
+
+
+ Login Window Returned Password - >
+
+
+
+
+ T_Pagination
+
+
+
+ Pagination
+
+
+
+
+
+
+
+
+
+ <Previous
+
+
+
+
+
+
+
+
+
+ Next>
+
+
+
+
+ T_Pivot
+
+
+
+ Pivot
+
+
+
+
+
+ All
+
+
+
+
+
+ All emails go here.
+
+
+
+
+
+ Unread
+
+
+
+
+
+ Unread emails go here.
+
+
+
+
+
+ Flagged
+
+
+
+
+
+ Flagged emails go here.
+
+
+
+
+
+ Urgent
+
+
+
+
+
+ Urgent emails go here.
+
+
+
+
+ T_Progress
+
+
+
+ Progress
+
+
+
+
+ T_QRCode
+
+
+
+ QRCode
+
+
+
+
+ T_RadioButton
+
+
+
+ RadioButton
+
+
+
+
+
+ Right
+
+
+
+
+
+ Left
+
+
+
+
+
+
+
+ Disabled
+
+
+
+
+
+ Radio Button_1
+
+
+
+
+
+ Radio Button_2
+
+
+
+
+
+ Radio Button_3
+
+
+
+
+ T_RatingControl
+
+
+
+ RatingControl
+
+
+
+
+ T_Rectangle
+
+
+
+ Rectangle
+
+
+
+
+ T_Settings
+
+
+
+ Settings
+
+
+
+
+
+ Current Version
+
+
+
+
+
+ Check for Updates
+
+
+
+
+
+ Use System AppBar
+
+
+
+
+
+ Fits AppBar Windows
+
+
+
+
+
+ Friendly Reminder
+
+
+
+
+
+ This action requires a restart of the program to take effect, is it restarted?
+
+
+
+
+
+ Cancel
+
+
+
+
+
+ OK
+
+
+
+
+
+ Dark Mode
+
+
+
+
+
+ System
+
+
+
+
+
+ Light
+
+
+
+
+
+ Dark
+
+
+
+
+
+ Navigation View Display Mode
+
+
+
+
+
+ Open
+
+
+
+
+
+ Compact
+
+
+
+
+
+ Minimal
+
+
+
+
+
+ Auto
+
+
+
+
+
+ Language
+
+
+
+
+ T_ShortcutPicker
+
+
+
+ ShortcutPicker
+
+
+
+
+ T_Slider
+
+
+
+ Slider
+
+
+
+
+ T_SplitLayout
+
+
+
+ SplitLayout
+
+
+
+
+ T_StaggeredLayout
+
+
+
+ StaggeredLayout
+
+
+
+
+ T_StatusLayout
+
+
+
+ StatusLayout
+
+
+
+
+
+ Loading...
+
+
+
+
+
+ Empty
+
+
+
+
+
+ The page went wrong...
+
+
+
+
+
+ Reload
+
+
+
+
+ T_TabView
+
+
+
+ TabView
+
+
+
+
+
+ Document
+
+
+
+
+ T_TableView
+
+
+
+ TableView
+
+
+
+
+
+ Modify the column name
+
+
+
+
+
+ Cancel
+
+
+
+
+
+ OK
+
+
+
+
+
+ Search
+
+
+
+
+
+
+
+ Name
+
+
+
+
+
+ Delete
+
+
+
+
+
+ Edit
+
+
+
+
+
+ Select All
+
+
+
+
+
+ Age
+
+
+
+
+
+ Clear All
+
+
+
+
+
+ Avatar
+
+
+
+
+
+ Address
+
+
+
+
+
+ Nickname
+
+
+
+
+
+ Long String
+
+
+
+
+
+ Options
+
+
+
+
+
+ <Previous
+
+
+
+
+
+ Next>
+
+
+
+
+ T_Text
+
+
+
+ Text
+
+
+
+
+
+ This is a text that can be copied
+
+
+
+
+ T_TextBox
+
+
+
+ TextBox
+
+
+
+
+
+ Single-line Input Box
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disabled
+
+
+
+
+
+ Please enter your password
+
+
+
+
+
+ Multi-line Input Box
+
+
+
+
+
+ AutoSuggestBox
+
+
+
+
+ T_Theme
+
+
+
+ Theme
+
+
+
+
+
+ Theme colors
+
+
+
+
+
+ Customize the Theme Color
+
+
+
+
+
+ Dark Mode
+
+
+
+
+
+ Native Text
+
+
+
+
+
+ Open Animation
+
+
+
+
+ T_TimePicker
+
+
+
+ TimePicker
+
+
+
+
+
+ hourFormat=FluTimePickerType.H
+
+
+
+
+
+
+
+ AM
+
+
+
+
+
+
+
+ PM
+
+
+
+
+
+
+
+ Hour
+
+
+
+
+
+
+
+ Minute
+
+
+
+
+
+
+
+ Cancel
+
+
+
+
+
+
+
+ OK
+
+
+
+
+
+ hourFormat=FluTimePickerType.HH
+
+
+
+
+ T_Timeline
+
+
+
+ Timeline
+
+
+
+
+
+ Append
+
+
+
+
+
+ clear
+
+
+
+
+ T_ToggleSwitch
+
+
+
+ ToggleSwitch
+
+
+
+
+
+ Right
+
+
+
+
+
+ Left
+
+
+
+
+
+ Disabled
+
+
+
+
+ T_Tooltip
+
+
+
+ Tooltip
+
+
+
+
+
+ Hover over Tultip and it pops up
+
+
+
+
+
+ Text properties of FluIconButton support the Tooltip pop-up window by default
+
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+ Click IconButton
+
+
+
+
+
+ Add a Tooltip pop-up to a Button
+
+
+
+
+
+ Click Button
+
+
+
+
+ T_Tour
+
+
+
+ Finish
+
+
+
+
+
+ Next
+
+
+
+
+
+ Previous
+
+
+
+
+
+ Upload File
+
+
+
+
+
+ Put your files here.
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
+ Save your changes.
+
+
+
+
+
+ Other Actions
+
+
+
+
+
+ Click to see other actions.
+
+
+
+
+
+ Begin Tour
+
+
+
+
+
+
+
+ Upload
+
+
+
+
+
+ More
+
+
+
+
+ T_TreeView
+
+
+
+ TreeView
+
+
+
+
+
+ Total %1 data, %2 data currently displayed
+
+
+
+
+
+ A total of %1 data items are selected
+
+
+
+
+ T_Typography
+
+
+
+ Typography
+
+
+
+
+ T_Watermark
+
+
+
+ Watermark
+
+
+
+
diff --git a/example/example_zh.ts b/example/example_zh.ts
new file mode 100644
index 00000000..3f395ca8
--- /dev/null
+++ b/example/example_zh.ts
@@ -0,0 +1,2710 @@
+
+
+
+
+ CodeExpander
+
+
+
+ Source
+ 源码
+
+
+
+
+ The Copy is Successful
+ 复制成功
+
+
+
+ CrashWindow
+
+
+
+ Friendly Reminder
+ 友情提示
+
+
+
+
+ We apologize for the inconvenience caused by an unexpected error
+ 对于意外错误给您带来的不便,我们深表歉意
+
+
+
+
+ Report Logs
+ 上报日志
+
+
+
+
+ Restart Program
+ 重启程序
+
+
+
+ FluentInitalizrWindow
+
+
+
+ FluentUI Initalizr
+ FluentUI脚手架
+
+
+
+ Name
+ 名称
+
+
+
+ Create In
+ 创建路径
+
+
+
+ Browse
+ 浏览
+
+
+
+ Cancel
+ 取消
+
+
+
+ Create
+ 创建
+
+
+
+ HotloadWindow
+
+
+
+ Hot Loader
+ 热加载
+
+
+
+
+ Drag in a qml file
+ 拖入qml文件
+
+
+
+ InitalizrHelper
+
+
+ The name cannot be empty
+ 名称不能为空
+
+
+
+ The creation path cannot be empty
+ 创建路径不能为空
+
+
+
+ The path does not exist
+ 路径不存在
+
+
+
+ ItemsFooter
+
+
+
+ About
+ 关于
+
+
+
+
+ Settings
+ 设置
+
+
+
+ ItemsOriginal
+
+
+
+ Home
+ 首页
+
+
+
+
+ PaneItemExpander Disabled
+ PaneItemExpander 已禁用
+
+
+
+
+ Basic Input
+ 基本输入
+
+
+
+
+ Buttons
+ 按钮
+
+
+
+
+ A control that responds to user input and raisesa Click event.
+ 响应用户输入并引发 Click 事件的控件。
+
+
+
+
+ Text
+ 文本
+
+
+
+
+ Image
+ 图像
+
+
+
+
+ Slider
+ 滑块
+
+
+
+
+ A control that lets the user select from a rangeof values by moving a Thumb control along atrack.
+ 一个控件,允许用户通过沿轨道移动 Thumb 控件从一系列值中进行选择。
+
+
+
+
+ CheckBox
+ 复选框
+
+
+
+
+ A control that a user can select or clear.
+ 用户可以选择或清除的控件。
+
+
+
+
+ RadioButton
+ 单选按钮
+
+
+
+
+ ToggleSwitch
+ 切换开关
+
+
+
+
+ PaneItem Disabled
+ PaneItem 已禁用
+
+
+
+
+ Form
+ 表单
+
+
+
+
+ TextBox
+ 文本框
+
+
+
+
+ TimePicker
+ 时间选取器
+
+
+
+
+ DatePicker
+ 日期选取器
+
+
+
+
+ CalendarPicker
+ 日历选取器
+
+
+
+
+ ColorPicker
+ 颜色选择器
+
+
+
+
+ ShortcutPicker
+ 快捷键选择器
+
+
+
+
+ Surface
+ 表面
+
+
+
+
+ InfoBar
+ 信息栏
+
+
+
+
+ An inline message to display app-wide statuschange information.
+ 用于显示应用范围状态更改信息的内联消息。
+
+
+
+
+ Progress
+ 进度条
+
+
+
+
+ RatingControl
+ 评级控制
+
+
+
+
+ Badge
+ 徽章
+
+
+
+
+ Rectangle
+ 矩形
+
+
+
+
+ Clip
+ 裁剪
+
+
+
+
+ Carousel
+ 轮播图
+
+
+
+
+ Expander
+ 展开
+
+
+
+
+ Watermark
+ 水印
+
+
+
+
+ Layout
+ 布局
+
+
+
+
+ StaggeredLayout
+ 瀑布流布局
+
+
+
+
+ SplitLayout
+ 拆分布局
+
+
+
+
+ StatusLayout
+ 状态布局
+
+
+
+
+ Popus
+ 弹窗
+
+
+
+
+ Dialog
+ 弹窗
+
+
+
+
+ ComboBox
+ 组合框
+
+
+
+
+ Tooltip
+ 工具提示
+
+
+
+
+ Menu
+ 菜单
+
+
+
+
+ Navigation
+ 导航
+
+
+
+
+ Pivot
+ 轴转
+
+
+
+
+ Presents information from different sources in a tabbed view.
+ 在选项卡式视图中显示来自不同源的信息。
+
+
+
+
+ BreadcrumbBar
+ 面包屑
+
+
+
+
+ TabView
+ 选项卡
+
+
+
+
+ A control that displays a collection of tabs thatcan be used to display several documents.
+ 一个控件,用于显示可用于显示多个文档的选项卡集合。
+
+
+
+
+ TreeView
+ 树
+
+
+
+
+ TableView
+ 表格
+
+
+
+
+ The TableView control provides a flexible way to display a collection of data in rows and columns
+ TableView 控件提供了一种以行和列形式显示数据集合的灵活方法
+
+
+
+
+ Pagination
+ 分页
+
+
+
+
+ MultiWindow
+ 多窗口
+
+
+
+
+ FlipView
+ 翻转视图
+
+
+
+
+ Presents a collection of items that the user canflip through, one item at a time.
+ 显示用户可以翻阅的项集合,一次翻阅一个项。
+
+
+
+
+ Theming
+ 主题
+
+
+
+
+ Acrylic
+ 亚克力
+
+
+
+
+ Theme
+ 主题
+
+
+
+
+ Typography
+ 字体
+
+
+
+
+ Awesome
+ 图标
+
+
+
+
+ Chart
+ 表格
+
+
+
+
+ Bar Chart
+ 条形图
+
+
+
+
+ Line Chart
+ 线型图
+
+
+
+
+ Pie Chart
+ 饼图
+
+
+
+
+ Polar Area Chart
+ 极坐标区域图
+
+
+
+
+ Bubble Chart
+ 气泡图
+
+
+
+
+ Scatter Chart
+ 散点图
+
+
+
+
+ Radar Chart
+ 雷达图
+
+
+
+
+ Other
+ 其他
+
+
+
+
+ QRCode
+ 二维码
+
+
+
+
+ Tour
+ 游览
+
+
+
+
+ Timeline
+ 时间轴
+
+
+
+
+ Captcha
+ 验证码
+
+
+
+
+ Network
+ 网络
+
+
+
+
+ Remote Loader
+ 远程加载
+
+
+
+
+ Hot Loader
+ 热加载
+
+
+
+
+ 3D
+ 3D
+
+
+
+
+ Test Crash
+ 测试崩溃
+
+
+
+ LoginWindow
+
+
+
+
+
+ Login
+ 登录
+
+
+
+
+ Please enter the account
+ 请输入账号
+
+
+
+
+ Please enter your password
+ 请输入密码
+
+
+
+
+ Please feel free to enter a password
+ 请随意输入一个密码
+
+
+
+ MainWindow
+
+
+
+
+
+ Dark Mode
+ 夜间模式
+
+
+
+
+
+
+ Quit
+ 退出
+
+
+
+
+ Are you sure you want to exit the program?
+ 您确定要退出程序吗
+
+
+
+
+ Minimize
+ 最小化
+
+
+
+
+ Friendly Reminder
+ 友情提示
+
+
+
+
+ FluentUI is hidden from the tray, click on the tray to activate the window again
+ FluentUI 在托盘中处于隐藏状态,单击托盘以再次激活窗口
+
+
+
+
+
+
+ Cancel
+ 取消
+
+
+
+
+ Open in Separate Window
+ 单独窗口打开
+
+
+
+
+ Click Time
+ 点击次数
+
+
+
+
+ Search
+ 搜索
+
+
+
+
+ Finish
+ 完成
+
+
+
+
+ Next
+ 下一步
+
+
+
+
+ Previous
+ 上一步
+
+
+
+
+ Here you can switch to night mode.
+ 在这里,您可以切换到夜间模式。
+
+
+
+
+ Hide Easter eggs
+ 隐藏彩蛋
+
+
+
+
+ Try a few more clicks!!
+ 再试几下!!
+
+
+
+
+ Upgrade Tips
+ 升级提示
+
+
+
+
+ FluentUI is currently up to date
+ FluentUI 目前最新版本
+
+
+
+
+ -- The current app version
+ -- 当前应用版本
+
+
+
+
+
+Now go and download the new version?
+
+Updated content:
+
+
+现在去下载新版本?
+
+更新的内容:
+
+
+
+
+
+ OK
+ 确定
+
+
+
+
+ The current version is already the latest
+ 当前版本已经是最新版本
+
+
+
+
+ The network is abnormal
+ 网络异常
+
+
+
+ SingleInstanceWindow
+
+
+
+ SingleInstance
+
+
+
+
+
+ I'm a SingleInstance window, and if I exist, I'll destroy the previous window and create a new one
+ 我是一个SingleInstance模式的窗口,如果我存在,我会销毁之前的窗口,并创建一个新窗口
+
+
+
+ SingleTaskWindow
+
+
+
+ SingleTask
+
+
+
+
+
+ I'm a SingleTask mode window, and if I exist, I activate the window
+ 我是一个SingleTask模式的窗口,如果我存在,我就激活窗口
+
+
+
+ StandardWindow
+
+
+
+ File
+ 文件
+
+
+
+
+ New...
+ 新建...
+
+
+
+
+ Open...
+ 打开...
+
+
+
+
+ Save
+ 保存
+
+
+
+
+ Save As...
+ 另存为...
+
+
+
+
+ Quit
+ 退出
+
+
+
+
+ Edit
+ 编辑
+
+
+
+
+ Cut
+ 剪切
+
+
+
+
+ Copy
+ 复制
+
+
+
+
+ Paste
+ 粘贴
+
+
+
+
+ Help
+ 帮助
+
+
+
+
+ About
+ 关于
+
+
+
+
+ I'm a Standard mode window, and every time I create a new window
+ 我是一个Standard模式的窗口,每次我都会创建一个新的窗口
+
+
+
+ T_Acrylic
+
+
+
+ Acrylic
+ 亚克力
+
+
+
+ T_Awesome
+
+
+
+ Awesome
+ 图标
+
+
+
+
+ Please enter a keyword
+ 请输入关键字
+
+
+
+
+ Search
+ 搜索
+
+
+
+
+ You Copied
+ 您复制
+
+
+
+ T_Badge
+
+
+
+ Badge
+ 徽章
+
+
+
+
+ It usually appears in the upper right corner of the notification icon or avatar to display the number of messages that need to be processed
+ 一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数
+
+
+
+ T_BreadcrumbBar
+
+
+
+ BreadcurmbBar
+ 面包屑
+
+
+
+
+ Reset sample
+ 重置
+
+
+
+ T_Buttons
+
+
+
+ Buttons
+ 按钮
+
+
+
+
+ Support the Tab key to switch focus, and the Space key to perform click events
+ 支持Tab键切换焦点,空格键执行点击事件
+
+
+
+
+ Text Button
+ 文本按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disabled
+ 禁用
+
+
+
+
+ Standard Button
+ 标准按钮
+
+
+
+
+ Click StandardButton
+ 点击标准按钮
+
+
+
+
+ Filled Button
+ 填充按钮
+
+
+
+
+ Click FilledButton
+ 点击填充按钮
+
+
+
+
+ Toggle Button
+ 开关按钮
+
+
+
+
+ Progress Button
+ 进度按钮
+
+
+
+
+ Loading Button
+ 加载按钮
+
+
+
+
+ Loading
+ 正在加载
+
+
+
+
+ Click IconButton
+ 点击图标按钮
+
+
+
+
+ IconOnly
+
+
+
+
+
+ Button.IconOnly
+
+
+
+
+
+ TextOnly
+
+
+
+
+
+ Button.TextOnly
+
+
+
+
+
+ TextBesideIcon
+
+
+
+
+
+ Button.TextBesideIcon
+
+
+
+
+
+ TextUnderIcon
+
+
+
+
+
+ Button.TextUnderIcon
+
+
+
+
+
+ DropDownButton
+ 下拉按钮
+
+
+
+
+ Menu_1
+
+
+
+
+
+ Menu_2
+
+
+
+
+
+ Menu_3
+
+
+
+
+
+ Menu_4
+
+
+
+
+
+ Radio Button_1
+
+
+
+
+
+ Radio Button_2
+
+
+
+
+
+ Radio Button_3
+
+
+
+
+ T_CalendarPicker
+
+
+
+ CalendarPicker
+ 日历选取器
+
+
+
+ T_Captcha
+
+
+
+ Captcha
+ 验证码
+
+
+
+
+ Refresh
+ 刷新
+
+
+
+
+ Ignore Case
+ 忽略大小写
+
+
+
+
+ Please enter a verification code
+ 请输入验证码
+
+
+
+
+ The verification code is correct
+ 验证码错误
+
+
+
+
+ Error validation, please re-enter
+ 错误验证,请重新输入
+
+
+
+ T_Carousel
+
+
+
+ Carousel
+ 轮播图
+
+
+
+
+ Carousel map, support infinite carousel, infinite swipe, and components implemented with ListView
+ 轮播图,支持无限轮播,无限滑动,用ListView实现的组件
+
+
+
+ T_CheckBox
+
+
+
+ CheckBox
+ 复选框
+
+
+
+
+ A 2-state CheckBox
+
+
+
+
+
+ Right
+ 右
+
+
+
+
+ Left
+ 左
+
+
+
+
+
+
+ Disabled
+ 禁用
+
+
+
+
+ A 3-state CheckBox
+
+
+
+
+
+ Three State
+
+
+
+
+ T_Clip
+
+
+
+ Clip
+ 裁剪
+
+
+
+
+ Use with images (this component will have no effect under software rendering)
+ 配合图片使用(software渲染下该组件将没有效果)
+
+
+
+ T_ColorPicker
+
+
+
+ ColorPicker
+ 颜色选择器
+
+
+
+ T_ComboBox
+
+
+
+ ComboBox
+ 组合框
+
+
+
+ T_DatePicker
+
+
+
+ TimePicker
+ 时间选取器
+
+
+
+
+ showYear=true
+
+
+
+
+
+
+
+ Year
+ 年
+
+
+
+
+
+
+ Month
+ 月
+
+
+
+
+
+
+ Day
+ 日
+
+
+
+
+
+
+ Cancel
+ 取消
+
+
+
+
+
+
+ OK
+ 确定
+
+
+
+
+ showYear=false
+
+
+
+
+ T_Dialog
+
+
+
+ Dialog
+ 弹窗
+
+
+
+
+ Show Double Button Dialog
+ 显示双按钮对话框
+
+
+
+
+
+
+
+
+ Friendly Reminder
+ 友情提示
+
+
+
+
+
+
+ Are you sure you want to opt out?
+ 您确定要退出吗?
+
+
+
+
+
+
+ Cancel
+ 取消
+
+
+
+
+
+
+
+
+ Click the Cancel Button
+ 单击取消按钮
+
+
+
+
+
+
+
+
+
+
+ OK
+ 确定
+
+
+
+
+
+
+
+
+ Click the OK Button
+ 单击确定按钮
+
+
+
+
+ Minimize
+ 最小化
+
+
+
+
+ Click Minimize
+ 单击最小化
+
+
+
+
+ Custom Content Dialog
+ 自定义对话框内容
+
+
+
+
+ Custom Content Dialog2
+ 自定义对话框内容2
+
+
+
+
+ Data is loading, please wait...
+ 正在加载,请稍等...
+
+
+
+
+ Unload
+ 取消加载
+
+
+
+
+ Test the InfoBar level on top of the Popup
+ 测试InfoBar层级在Popup之上
+
+
+
+
+ Line Chart
+ 线型图
+
+
+
+ T_Expander
+
+
+
+ Expander
+ 展开
+
+
+
+
+ Open a radio box
+
+
+
+
+
+ Open a sliding text box
+
+
+
+
+
+ Permit me to observe: the late emperor was taken from us before he could finish his life`s work, the restoration of Han. Today, the empire is still divided in three, and our very survival is threatened. Yet still the officials at court and the soldiers throughout the realm remain loyal to you, your majesty. Because they remember the late emperor, all of them, and they wish to repay his kindness in service to you. This is the moment to extend your divine influence, to honour the memory of the late Emperor and strengthen the morale of your officers. It is not time to listen to bad advice, or close your ears to the suggestions of loyal men.
+The court and the administration are as one. Both must be judged by one standard. Those who are loyal and good must get what they deserve, but so must the evil-doers who break the law. This will demonstrate the justice of your rule. There cannot be one law for the court and another for the administration.
+Counselors and attendants like Guo Youzhi, Fei Yi, and Dong Yun are all reliable men, loyal of purpose and pure in motive. The late Emperor selected them for office so that they would serve you after his death.These are the men who should be consulted on all palace affairs. Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+The emperors of the Western Han chose their courtiers wisely, and their dynasty flourished. The emperors of the Eastern Han chose poorly, and they doomed the empire to ruin. Whenever the late Emperor discussed this problem with me, he lamented the failings of Emperors Huan and Ling. Advisors like Guo Youzhi, Fei Yi, Chen Zhen, Zhang Yi, and Jiang Wan – these are all men of great integrity and devotion. I encourage you to trust them, your majesty, if the house of Han is to rise again.
+I begin as a common man, farming in my fields in Nanyang, doing what I could to survive in an age of chaos. I never had any interest in making a name for myself as a noble. The late Emperor was not ashamed to visit my cottage and seek my advice. Grateful for his regard, I responded to his appeal and threw myself into his service. Now twenty-one years has passed, the late Emperor always appreciated my caution and, in his final days, entrusted me with his cause.
+Since that moment, I have been tormented day and night by the fear that I might let him down. That is why I crossed the Lu river at the height of summer, and entered the wastelands beyond. Now the south has been subdued, and our forces are fully armed.I should lead our soldiers to conquer the northern heartland and attempt to remove the hateful traitors, restore the house of Han, and return it to the former capital.This the way I mean to honor my debt to the late Emperor and fulfill my duty to you. Guo Youzhi, Fei Yi, and Dong Yun are the ones who should be making policy decisions and recommendations.
+My only desire is to be permitted to drive out the traitors and restore the Han. If I should let you down, punish my offense and report it to the spirit of the late Emperor. If those three advisors should fail in their duties, then they should be punished for their negligence.Your Majesty, consider your course of action carefully. Seek out good advice, and never forget the late Emperor. I depart now on a long expedition, and I will be forever grateful if you heed my advice. Blinded by my own tears, I know not what I write.
+ Permit me to observe: the late emperor was taken from us before he could finish his lifes work, the restoration of Han. Today, the empire is still divided in three, and our very survival is threatened. Yet still the officials at court and the soldiers throughout the realm remain loyal to you, your majesty. Because they remember the late emperor, all of them, and they wish to repay his kindness in service to you. This is the moment to extend your divine influence, to honour the memory of the late Emperor and strengthen the morale of your officers. It is not time to listen to bad advice, or close your ears to the suggestions of loyal men.
+The court and the administration are as one. Both must be judged by one standard. Those who are loyal and good must get what they deserve, but so must the evil-doers who break the law. This will demonstrate the justice of your rule. There cannot be one law for the court and another for the administration.
+Counselors and attendants like Guo Youzhi, Fei Yi, and Dong Yun are all reliable men, loyal of purpose and pure in motive. The late Emperor selected them for office so that they would serve you after his death.These are the men who should be consulted on all palace affairs. Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+The emperors of the Western Han chose their courtiers wisely, and their dynasty flourished. The emperors of the Eastern Han chose poorly, and they doomed the empire to ruin. Whenever the late Emperor discussed this problem with me, he lamented the failings of Emperors Huan and Ling. Advisors like Guo Youzhi, Fei Yi, Chen Zhen, Zhang Yi, and Jiang Wan – these are all men of great integrity and devotion. I encourage you to trust them, your majesty, if the house of Han is to rise again.
+I begin as a common man, farming in my fields in Nanyang, doing what I could to survive in an age of chaos. I never had any interest in making a name for myself as a noble. The late Emperor was not ashamed to visit my cottage and seek my advice. Grateful for his regard, I responded to his appeal and threw myself into his service. Now twenty-one years has passed, the late Emperor always appreciated my caution and, in his final days, entrusted me with his cause.
+Since that moment, I have been tormented day and night by the fear that I might let him down. That is why I crossed the Lu river at the height of summer, and entered the wastelands beyond. Now the south has been subdued, and our forces are fully armed.I should lead our soldiers to conquer the northern heartland and attempt to remove the hateful traitors, restore the house of Han, and return it to the former capital.This the way I mean to honor my debt to the late Emperor and fulfill my duty to you. Guo Youzhi, Fei Yi, and Dong Yun are the ones who should be making policy decisions and recommendations.
+My only desire is to be permitted to drive out the traitors and restore the Han. If I should let you down, punish my offense and report it to the spirit of the late Emperor. If those three advisors should fail in their duties, then they should be punished for their negligence.Your Majesty, consider your course of action carefully. Seek out good advice, and never forget the late Emperor. I depart now on a long expedition, and I will be forever grateful if you heed my advice. Blinded by my own tears, I know not what I write.
+ 先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。
+
+
+
+ T_FlipView
+
+
+
+ FlipView
+ 翻转视图
+
+
+
+
+ Horizontal FlipView
+ 水平方向的翻转视图
+
+
+
+
+ Vertical FlipView
+ 垂直方向的翻转视图
+
+
+
+ T_Home
+
+
+
+ FluentUI GitHub
+ FluentUI GitHub
+
+
+
+
+ The latest FluentUI controls and styles for your applications.
+ 最新的 FluentUI 控件和样式
+
+
+
+
+ FluentUI Initalizr
+ FluentUI脚手架
+
+
+
+
+ FluentUI Initializr is a FluentUI tool that helps you create and customize Fluent UI projects with various options.
+ FluentUI 脚手架是一个快速创建项目工具,可帮助您创建和自定义具有各种选项的 Fluent UI 项目
+
+
+
+ T_Image
+
+
+
+ Image
+ 图像
+
+
+
+
+ Reload
+ 重新加载
+
+
+
+
+ The image failed to load, please reload
+ 图片加载失败,请重新加载
+
+
+
+ T_InfoBar
+
+
+
+ InfoBar
+ 信息栏
+
+
+
+
+ Info
+
+
+
+
+
+ This is an InfoBar in the Info Style
+ 这是一个Info样式的信息栏
+
+
+
+
+ Warning
+
+
+
+
+
+ This is an InfoBar in the Warning Style
+ 这是一个Warning样式的信息栏
+
+
+
+
+ This is an InfoBar in the Error Style
+ 这是一个Error样式的信息栏
+
+
+
+
+ This is an InfoBar in the Success Style
+ 这是一个Success样式的信息栏
+
+
+
+
+ InfoBar that needs to be turned off manually
+ 需要手动关闭的信息栏
+
+
+
+
+ Loading...
+ 加载中...
+
+
+
+ T_Menu
+
+
+
+
+
+ Menu
+ 菜单
+
+
+
+
+
+
+ File
+ 文件
+
+
+
+
+
+
+ New...
+ 新建...
+
+
+
+
+
+
+ Open...
+ 打开...
+
+
+
+
+
+
+ Save
+ 保存
+
+
+
+
+
+
+ Quit
+ 退出
+
+
+
+
+ Search
+ 搜索
+
+
+
+
+
+
+
+
+ Disable
+ 不可操作
+
+
+
+
+ Check
+ Check
+
+
+
+
+
+
+ Save As...
+ 另存为...
+
+
+
+
+
+
+ Doc
+ DOC
+
+
+
+
+
+
+ PDF
+ PDF
+
+
+
+
+ Show Menu Popup
+
+
+
+
+
+ MenuBar
+
+
+
+
+
+ Edit
+ 编辑
+
+
+
+
+ Cut
+ 剪切
+
+
+
+
+ Copy
+ 复制
+
+
+
+
+ Paste
+ 粘贴
+
+
+
+
+ Help
+ 帮助
+
+
+
+
+ About
+ 关于
+
+
+
+ T_MultiWindow
+
+
+
+ MultiWindow
+ 多窗口
+
+
+
+
+ <font color='red'>Standard</font> mode window,a new window is created every time
+ <font color='red'>Standard</font> 模式窗口,每次都会创建新窗口
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Window
+ 创建窗口
+
+
+
+
+ <font color='red'>SingleTask</font> mode window,If a window exists, this activates the window
+ <font color='red'>SingleTask</font> 模式窗口,如果窗口存在,这激活该窗口
+
+
+
+
+ <font color='red'>SingleInstance</font> mode window,If the window exists, destroy the window and create a new window
+ <font color='red'>SingleInstance</font> 模式窗口,如果窗口存在,则销毁窗口,然后新建窗口
+
+
+
+
+ Create the window without carrying any parameters
+ 创建一个窗口,不携带任何参数
+
+
+
+
+ Create a window with the parameter username: zhuzichu
+ 创建一个窗口,并携带参数用户名:zhuzichu
+
+
+
+
+ Login Window Returned Password - >
+ 登录窗口返回过来的密码 - >
+
+
+
+ T_Pagination
+
+
+
+ Pagination
+ 分页
+
+
+
+
+
+
+
+
+ <Previous
+ <上一页
+
+
+
+
+
+
+
+
+ Next>
+ 下一页>
+
+
+
+ T_Pivot
+
+
+
+ Pivot
+ 轴转
+
+
+
+
+ All
+ 所有
+
+
+
+
+ All emails go here.
+ 所有电子邮件都在这里
+
+
+
+
+ Unread
+ 未读
+
+
+
+
+ Unread emails go here.
+ 未读电子邮件都在这里
+
+
+
+
+ Flagged
+ 标记
+
+
+
+
+ Flagged emails go here.
+ 标记电子邮件都在这里
+
+
+
+
+ Urgent
+ 紧急
+
+
+
+
+ Urgent emails go here.
+ 紧急电子邮件都在这里
+
+
+
+ T_Progress
+
+
+
+ Progress
+ 进度条
+
+
+
+ T_QRCode
+
+
+
+ QRCode
+ 二维码
+
+
+
+ T_RadioButton
+
+
+
+ RadioButton
+ 单选按钮
+
+
+
+
+ Right
+ 右
+
+
+
+
+ Left
+ 左
+
+
+
+
+
+
+ Disabled
+ 禁用
+
+
+
+
+ Radio Button_1
+
+
+
+
+
+ Radio Button_2
+
+
+
+
+
+ Radio Button_3
+
+
+
+
+ T_RatingControl
+
+
+
+ RatingControl
+ 评级控制
+
+
+
+ T_Rectangle
+
+
+
+ Rectangle
+ 矩形
+
+
+
+ T_Settings
+
+
+
+ Settings
+ 设置
+
+
+
+
+ Current Version
+ 当前版本
+
+
+
+
+ Check for Updates
+ 检查更新
+
+
+
+
+ Use System AppBar
+ 使用系统应用栏
+
+
+
+
+ Fits AppBar Windows
+ 沉浸式应用栏
+
+
+
+
+ Friendly Reminder
+ 友情提示
+
+
+
+
+ This action requires a restart of the program to take effect, is it restarted?
+ 此操作需要重启程序才能生效,是否重新启动?
+
+
+
+
+ Cancel
+ 取消
+
+
+
+
+ OK
+ 确定
+
+
+
+
+ Dark Mode
+ 夜间模式
+
+
+
+
+ System
+ 跟随系统
+
+
+
+
+ Light
+ 浅色
+
+
+
+
+ Dark
+ 深色
+
+
+
+
+ Navigation View Display Mode
+ 导航视图
+
+
+
+
+ Open
+ 开放
+
+
+
+
+ Compact
+ 紧凑
+
+
+
+
+ Minimal
+ 极简
+
+
+
+
+ Auto
+ 自动
+
+
+
+
+ Language
+ 语言
+
+
+
+ T_ShortcutPicker
+
+
+
+ ShortcutPicker
+ 快捷键选择器
+
+
+
+ T_Slider
+
+
+
+ Slider
+ 滑块
+
+
+
+ T_SplitLayout
+
+
+
+ SplitLayout
+ 拆分布局
+
+
+
+ T_StaggeredLayout
+
+
+
+ StaggeredLayout
+ 瀑布流布局
+
+
+
+ T_StatusLayout
+
+
+
+ StatusLayout
+ 状态布局
+
+
+
+
+ Loading...
+ 正在加载...
+
+
+
+
+ Empty
+ 空空如也
+
+
+
+
+ The page went wrong...
+ 页面出错了...
+
+
+
+
+ Reload
+ 重新加载
+
+
+
+ T_TabView
+
+
+
+ TabView
+ 选项卡
+
+
+
+
+ Document
+ 文档
+
+
+
+ T_TableView
+
+
+
+ TableView
+ 表格
+
+
+
+
+ Modify the column name
+ 修改列名
+
+
+
+
+ Cancel
+ 取消
+
+
+
+
+ OK
+ 确定
+
+
+
+
+ Search
+ 搜索
+
+
+
+
+
+
+ Name
+ 名称
+
+
+
+
+ Delete
+ 删除
+
+
+
+
+ Edit
+ 编辑
+
+
+
+
+ Select All
+ 全选
+
+
+
+
+ Age
+ 年龄
+
+
+
+
+ Clear All
+ 清除所有
+
+
+
+
+ Avatar
+ 头像
+
+
+
+
+ Address
+ 地址
+
+
+
+
+ Nickname
+ 昵称
+
+
+
+
+ Long String
+ 长字符串
+
+
+
+
+ Options
+ 操作
+
+
+
+
+ <Previous
+ <上一页
+
+
+
+
+ Next>
+ 下一页>
+
+
+
+ T_Text
+
+
+
+ Text
+ 文本
+
+
+
+
+ This is a text that can be copied
+ 这是一个可以复制的文本
+
+
+
+ T_TextBox
+
+
+
+ TextBox
+ 文本框
+
+
+
+
+ Single-line Input Box
+ 单行输入框
+
+
+
+
+
+
+
+
+
+
+
+
+ Disabled
+ 禁用
+
+
+
+
+ Please enter your password
+ 请输入您的密码
+
+
+
+
+ Multi-line Input Box
+ 多行输入框
+
+
+
+
+ AutoSuggestBox
+ 自动建议框
+
+
+
+ T_Theme
+
+
+
+ Theme
+ 主题
+
+
+
+
+ Theme colors
+ 主题颜色
+
+
+
+
+ Customize the Theme Color
+ 自定义主题颜色
+
+
+
+
+ Dark Mode
+ 夜间模式
+
+
+
+
+ Native Text
+ Native文本
+
+
+
+
+ Open Animation
+ 开启动画
+
+
+
+ T_TimePicker
+
+
+
+ TimePicker
+ 时间选取器
+
+
+
+
+ hourFormat=FluTimePickerType.H
+
+
+
+
+
+
+
+ AM
+ 上午
+
+
+
+
+
+
+ PM
+ 下午
+
+
+
+
+
+
+ Hour
+ 时
+
+
+
+
+
+
+ Minute
+ 分
+
+
+
+
+
+
+ Cancel
+ 取消
+
+
+
+
+
+
+ OK
+ 确定
+
+
+
+
+ hourFormat=FluTimePickerType.HH
+
+
+
+
+ T_Timeline
+
+
+
+ Timeline
+ 时间轴
+
+
+
+
+ Append
+ 追加
+
+
+
+
+ clear
+ 清空
+
+
+
+ T_ToggleSwitch
+
+
+
+ ToggleSwitch
+ 切换开关
+
+
+
+
+ Right
+ 右
+
+
+
+
+ Left
+ 左
+
+
+
+
+ Disabled
+ 禁用
+
+
+
+ T_Tooltip
+
+
+
+ Tooltip
+ 工具提示
+
+
+
+
+ Hover over Tultip and it pops up
+ 鼠标悬停不动,弹出Tooltip
+
+
+
+
+ Text properties of FluIconButton support the Tooltip pop-up window by default
+ FluIconButton的text属性自带Tooltip效果
+
+
+
+
+
+
+ Delete
+ 删除
+
+
+
+
+ Click IconButton
+ 点击图标按钮
+
+
+
+
+ Add a Tooltip pop-up to a Button
+ 给一个Button添加Tooltip效果
+
+
+
+
+ Click Button
+ 点击按钮
+
+
+
+ T_Tour
+
+
+
+ Finish
+ 完成
+
+
+
+
+ Next
+ 下一步
+
+
+
+
+ Previous
+ 上一步
+
+
+
+
+ Upload File
+ 上传文件
+
+
+
+
+ Put your files here.
+ 把你的文件放在这里
+
+
+
+
+
+
+
+
+ Save
+ 保存
+
+
+
+
+ Save your changes.
+ 保存更改
+
+
+
+
+ Other Actions
+ 其他操作
+
+
+
+
+ Click to see other actions.
+ 点击查看其他操作
+
+
+
+
+ Begin Tour
+ 开始游览
+
+
+
+
+
+
+ Upload
+ 上传
+
+
+
+
+ More
+ 更多
+
+
+
+ T_TreeView
+
+
+
+ TreeView
+ 树
+
+
+
+
+ Total %1 data, %2 data currently displayed
+ 共计%1条数据,当前显示的%2条数据
+
+
+
+
+ A total of %1 data items are selected
+ 共计选中%1条数据
+
+
+
+ T_Typography
+
+
+
+ Typography
+ 字体
+
+
+
+ T_Watermark
+
+
+
+ Watermark
+ 水印
+
+
+
diff --git a/example/qml-Qt6/App.qml b/example/qml-Qt6/App.qml
index 0abd8004..9dfd9891 100644
--- a/example/qml-Qt6/App.qml
+++ b/example/qml-Qt6/App.qml
@@ -21,6 +21,13 @@ Item {
}
}
+ Connections{
+ target: TranslateHelper
+ function onCurrentChanged(){
+ SettingsHelper.saveLanguage(TranslateHelper.current)
+ }
+ }
+
Component.onCompleted: {
FluNetwork.openLog = false
FluNetwork.setInterceptor(function(param){
@@ -37,6 +44,7 @@ Item {
"/login":"qrc:/example/qml/window/LoginWindow.qml",
"/hotload":"qrc:/example/qml/window/HotloadWindow.qml",
"/crash":"qrc:/example/qml/window/CrashWindow.qml",
+ "/fluentInitalizr":"qrc:/example/qml/window/FluentInitalizrWindow.qml",
"/singleTaskWindow":"qrc:/example/qml/window/SingleTaskWindow.qml",
"/standardWindow":"qrc:/example/qml/window/StandardWindow.qml",
"/singleInstanceWindow":"qrc:/example/qml/window/SingleInstanceWindow.qml",
diff --git a/example/qml-Qt6/component/CodeExpander.qml b/example/qml-Qt6/component/CodeExpander.qml
index 4b5cc035..52d0291d 100644
--- a/example/qml-Qt6/component/CodeExpander.qml
+++ b/example/qml-Qt6/component/CodeExpander.qml
@@ -8,7 +8,7 @@ FluExpander{
id:control
property string code: ""
- headerText: "Source"
+ headerText: qsTr("Source")
contentHeight:content.height
focus: false
@@ -34,7 +34,7 @@ FluExpander{
}
onClicked:{
FluTools.clipText(FluTools.html2PlantText(content.text))
- showSuccess("复制成功")
+ showSuccess(qsTr("The Copy is Successful"))
}
}
@@ -49,7 +49,6 @@ FluExpander{
}
function highlightQmlCode(code) {
- // 定义 QML 关键字列表
var qmlKeywords = [
"FluTextButton",
"FluAppBar",
diff --git a/example/qml-Qt6/global/ItemsFooter.qml b/example/qml-Qt6/global/ItemsFooter.qml
index 3e026606..85d466f8 100644
--- a/example/qml-Qt6/global/ItemsFooter.qml
+++ b/example/qml-Qt6/global/ItemsFooter.qml
@@ -13,7 +13,7 @@ FluObject{
FluPaneItemSeparator{}
FluPaneItem{
- title:Lang.about
+ title:qsTr("About")
icon:FluentIcons.Contact
onTapListener:function(){
FluApp.navigate("/about")
@@ -21,7 +21,7 @@ FluObject{
}
FluPaneItem{
- title:Lang.settings
+ title:qsTr("Settings")
menuDelegate: paneItemMenu
icon:FluentIcons.Settings
url:"qrc:/example/qml/page/T_Settings.qml"
diff --git a/example/qml-Qt6/global/ItemsOriginal.qml b/example/qml-Qt6/global/ItemsOriginal.qml
index 90aef8f7..13137a8b 100644
--- a/example/qml-Qt6/global/ItemsOriginal.qml
+++ b/example/qml-Qt6/global/ItemsOriginal.qml
@@ -17,14 +17,14 @@ FluObject{
FluPaneItem{
id:item_home
count: 9
- title:Lang.home
+ title: qsTr("Home")
menuDelegate: paneItemMenu
- infoBadge:FluBadge{
+ infoBadge: FluBadge{
count: item_home.count
}
- icon:FluentIcons.Home
- url:"qrc:/example/qml/page/T_Home.qml"
- onTap:{
+ icon: FluentIcons.Home
+ url: "qrc:/example/qml/page/T_Home.qml"
+ onTap: {
if(navigationView.getCurrentUrl()){
item_home.count = 0
}
@@ -33,376 +33,376 @@ FluObject{
}
FluPaneItemExpander{
- title:"PaneItemExpander Disabled"
+ title: qsTr("PaneItemExpander Disabled")
iconVisible: false
disabled: true
}
FluPaneItemExpander{
- id:item_expander_basic_input
- title:Lang.basic_input
- icon:FluentIcons.CheckboxComposite
+ id: item_expander_basic_input
+ title: qsTr("Basic Input")
+ icon: FluentIcons.CheckboxComposite
FluPaneItem{
- id:item_buttons
+ id: item_buttons
count: 99
- infoBadge:FluBadge{
+ infoBadge: FluBadge{
count: item_buttons.count
}
- title:"Buttons"
+ title: qsTr("Buttons")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Button.png",recentlyUpdated:true,desc:"A control that responds to user input and raisesa Click event."})
- url:"qrc:/example/qml/page/T_Buttons.qml"
- onTap:{
+ extra: ({image:"qrc:/example/res/image/control/Button.png",recentlyUpdated:true,desc:qsTr("A control that responds to user input and raisesa Click event.")})
+ url: "qrc:/example/qml/page/T_Buttons.qml"
+ onTap: {
item_buttons.count = 0
navigationView.push(url)
}
}
FluPaneItem{
- id:item_text
- title:"Text"
+ id: item_text
+ title: qsTr("Text")
menuDelegate: paneItemMenu
count: 5
- infoBadge:FluBadge{
+ infoBadge: FluBadge{
count: item_text.count
color: Qt.rgba(82/255,196/255,26/255,1)
}
- url:"qrc:/example/qml/page/T_Text.qml"
- onTap:{
+ url: "qrc:/example/qml/page/T_Text.qml"
+ onTap: {
item_text.count = 0
navigationView.push(url)
}
}
FluPaneItem{
- title:"Image"
+ title: qsTr("Image")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Image.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Image.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Slider"
+ title: qsTr("Slider")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Slider.png",recentlyUpdated:true,desc:"A control that lets the user select from a rangeof values by moving a Thumb control along atrack."})
- url:"qrc:/example/qml/page/T_Slider.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/Slider.png",recentlyUpdated:true,desc:qsTr("A control that lets the user select from a rangeof values by moving a Thumb control along atrack.")})
+ url: "qrc:/example/qml/page/T_Slider.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"CheckBox"
+ title: qsTr("CheckBox")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Checkbox.png",recentlyUpdated:true,desc:"A control that a user can select or clear."})
- url:"qrc:/example/qml/page/T_CheckBox.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/Checkbox.png",recentlyUpdated:true,desc:qsTr("A control that a user can select or clear.")})
+ url: "qrc:/example/qml/page/T_CheckBox.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"RadioButton"
+ title: qsTr("RadioButton")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_RadioButton.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_RadioButton.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"ToggleSwitch"
+ title: qsTr("ToggleSwitch")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_ToggleSwitch.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_ToggleSwitch.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"PaneItem Disabled"
+ title: qsTr("PaneItem Disabled")
disabled: true
icon: FluentIcons.Error
}
}
FluPaneItemExpander{
- title:Lang.form
- icon:FluentIcons.GridView
- FluPaneItem{
- title:"TextBox"
+ title: qsTr("Form")
+ icon: FluentIcons.GridView
+ FluPaneItem {
+ title: qsTr("TextBox")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_TextBox.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_TextBox.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TimePicker"
+ title: qsTr("TimePicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_TimePicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_TimePicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"DatePicker"
+ title: qsTr("DatePicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_DatePicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_DatePicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"CalendarPicker"
+ title: qsTr("CalendarPicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_CalendarPicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_CalendarPicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"ColorPicker"
+ title: qsTr("ColorPicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_ColorPicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_ColorPicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"ShortcutPicker"
+ title: qsTr("ShortcutPicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_ShortcutPicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_ShortcutPicker.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.surface
- icon:FluentIcons.SurfaceHub
+ title: qsTr("Surface")
+ icon: FluentIcons.SurfaceHub
FluPaneItem{
- title:"InfoBar"
+ title: qsTr("InfoBar")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/InfoBar.png",recentlyUpdated:true,desc:"An inline message to display app-wide statuschange information."})
- url:"qrc:/example/qml/page/T_InfoBar.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/InfoBar.png",recentlyUpdated:true,desc:qsTr("An inline message to display app-wide statuschange information.")})
+ url: "qrc:/example/qml/page/T_InfoBar.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Progress"
+ title: qsTr("Progress")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Progress.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Progress.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"RatingControl"
+ title: qsTr("RatingControl")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_RatingControl.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_RatingControl.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Badge"
+ title: qsTr("Badge")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Badge.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Badge.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Rectangle"
+ title: qsTr("Rectangle")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Rectangle.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Rectangle.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Clip"
+ title: qsTr("Clip")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Clip.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Clip.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Carousel"
+ title: qsTr("Carousel")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Carousel.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Carousel.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Expander"
+ title: qsTr("Expander")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Expander.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Expander.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Watermark"
+ title: qsTr("Watermark")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Watermark.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Watermark.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.layout
- icon:FluentIcons.DockLeft
- FluPaneItem{
- title:"StaggeredLayout"
+ title: qsTr("Layout")
+ icon: FluentIcons.DockLeft
+ FluPaneItem {
+ title: qsTr("StaggeredLayout")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_StaggeredLayout.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_StaggeredLayout.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"SplitLayout"
+ title: qsTr("SplitLayout")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_SplitLayout.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_SplitLayout.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"StatusLayout"
+ title: qsTr("StatusLayout")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_StatusLayout.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_StatusLayout.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.popus
- icon:FluentIcons.ButtonMenu
+ title: qsTr("Popus")
+ icon: FluentIcons.ButtonMenu
FluPaneItem{
- title:"Dialog"
+ title: qsTr("Dialog")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Dialog.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Dialog.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- id:item_combobox
- title:"ComboBox"
+ id: item_combobox
+ title: qsTr("ComboBox")
menuDelegate: paneItemMenu
count: 9
infoBadge:FluBadge{
count: item_combobox.count
color: Qt.rgba(250/255,173/255,20/255,1)
}
- url:"qrc:/example/qml/page/T_ComboBox.qml"
- onTap:{
+ url: "qrc:/example/qml/page/T_ComboBox.qml"
+ onTap: {
item_combobox.count = 0
navigationView.push("qrc:/example/qml/page/T_ComboBox.qml")
}
}
FluPaneItem{
- title:"Tooltip"
+ title: qsTr("Tooltip")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Tooltip.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Tooltip.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Menu"
+ title: qsTr("Menu")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Menu.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Menu.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.navigation
- icon:FluentIcons.AllApps
+ title: qsTr("Navigation")
+ icon: FluentIcons.AllApps
FluPaneItem{
- title:"Pivot"
+ title: qsTr("Pivot")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Pivot.png",order:3,recentlyAdded:true,desc:"Presents information from different sources in atabbed view."})
- url:"qrc:/example/qml/page/T_Pivot.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/Pivot.png",order:3,recentlyAdded:true,desc:qsTr("Presents information from different sources in a tabbed view.")})
+ url: "qrc:/example/qml/page/T_Pivot.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"BreadcrumbBar"
+ title: qsTr("BreadcrumbBar")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_BreadcrumbBar.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_BreadcrumbBar.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TabView"
+ title: qsTr("TabView")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/TabView.png",order:1,recentlyAdded:true,desc:"A control that displays a collection of tabs thatcan be used to display several documents."})
- url:"qrc:/example/qml/page/T_TabView.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/TabView.png",order:1,recentlyAdded:true,desc:qsTr("A control that displays a collection of tabs thatcan be used to display several documents.")})
+ url: "qrc:/example/qml/page/T_TabView.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TreeView"
+ title: qsTr("TreeView")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_TreeView.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_TreeView.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TableView"
+ title: qsTr("TableView")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/DataGrid.png",order:4,recentlyAdded:true,desc:"The TableView control provides a flexible way to display a collection of data in rows and columns"})
- url:"qrc:/example/qml/page/T_TableView.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/DataGrid.png",order:4,recentlyAdded:true,desc:qsTr("The TableView control provides a flexible way to display a collection of data in rows and columns")})
+ url: "qrc:/example/qml/page/T_TableView.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Pagination"
+ title: qsTr("Pagination")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Pagination.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Pagination.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"MultiWindow"
+ title: qsTr("MultiWindow")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_MultiWindow.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_MultiWindow.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"FlipView"
+ title: qsTr("FlipView")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/FlipView.png",order:2,recentlyAdded:true,desc:"Presents a collection of items that the user canflip through, one item at a time."})
- url:"qrc:/example/qml/page/T_FlipView.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/FlipView.png",order:2,recentlyAdded:true,desc:qsTr("Presents a collection of items that the user canflip through, one item at a time.")})
+ url: "qrc:/example/qml/page/T_FlipView.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.theming
+ title: qsTr("Theming")
icon:FluentIcons.Brightness
FluPaneItem{
- title:"Acrylic"
+ title: qsTr("Acrylic")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Acrylic.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Acrylic.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Theme"
+ title: qsTr("Theme")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Theme.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Theme.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Typography"
+ title: qsTr("Typography")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Typography.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Typography.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Awesome"
+ title: qsTr("Awesome")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Awesome.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Awesome.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title: Lang.chart
- icon:FluentIcons.AreaChart
+ title: qsTr("Chart")
+ icon: FluentIcons.AreaChart
FluPaneItem{
- title:Lang.bar_chart
+ title: qsTr("Bar Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_BarChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_BarChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.line_chart
+ title: qsTr("Line Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_LineChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_LineChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.pie_chart
+ title: qsTr("Pie Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_PieChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_PieChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.polar_area_chart
+ title: qsTr("Polar Area Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_PolarAreaChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_PolarAreaChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.bubble_chart
+ title: qsTr("Bubble Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_BubbleChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_BubbleChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.scatter_chart
+ title: qsTr("Scatter Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_ScatterChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_ScatterChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.radar_chart
+ title: qsTr("Radar Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_RadarChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_RadarChart.qml"
+ onTap: { navigationView.push(url) }
}
}
@@ -412,67 +412,67 @@ FluObject{
}
FluPaneItemExpander{
- title:Lang.other
- icon:FluentIcons.Shop
+ title: qsTr("Other")
+ icon: FluentIcons.Shop
FluPaneItem{
- title:"QRCode"
+ title: qsTr("QRCode")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_QRCode.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_QRCode.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Tour"
+ title: qsTr("Tour")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Tour.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Tour.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Timeline"
+ title: qsTr("Timeline")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Timeline.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Timeline.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Captcha"
+ title: qsTr("Captcha")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Captcha.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Captcha.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Network"
+ title: qsTr("Network")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Network.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Network.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- id:item_other
- title:"RemoteLoader"
+ id: item_other
+ title: qsTr("Remote Loader")
menuDelegate: paneItemMenu
count: 99
infoBadge:FluBadge{
count: item_other.count
color: Qt.rgba(82/255,196/255,26/255,1)
}
- url:"qrc:/example/qml/page/T_RemoteLoader.qml"
- onTap:{
+ url: "qrc:/example/qml/page/T_RemoteLoader.qml"
+ onTap: {
item_other.count = 0
navigationView.push("qrc:/example/qml/page/T_RemoteLoader.qml")
}
}
FluPaneItem{
- title:"HotLoader"
- onTapListener:function(){
+ title: qsTr("Hot Loader")
+ onTapListener: function(){
FluApp.navigate("/hotload")
}
}
FluPaneItem{
- title:"3D"
+ title: qsTr("3D")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_3D.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_3D.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Test Crash"
+ title: qsTr("Test Crash")
visible: FluTools.isWin()
onTapListener: function(){
AppInfo.testCrash()
diff --git a/example/qml-Qt6/global/Lang.qml b/example/qml-Qt6/global/Lang.qml
deleted file mode 100644
index d416ba92..00000000
--- a/example/qml-Qt6/global/Lang.qml
+++ /dev/null
@@ -1,104 +0,0 @@
-pragma Singleton
-
-import QtQuick
-
-QtObject {
-
- property string home
- property string basic_input
- property string form
- property string surface
- property string layout
- property string popus
- property string navigation
- property string theming
- property string media
- property string dark_mode
- property string sys_dark_mode
- property string search
- property string about
- property string settings
- property string locale
- property string navigation_view_display_mode
- property string other
- property string chart
- property string bar_chart
- property string line_chart
- property string pie_chart
- property string polar_area_chart
- property string bubble_chart
- property string scatter_chart
- property string radar_chart
-
- function zh(){
- home="首页"
- basic_input="基本输入"
- form="表单"
- surface="表面"
- layout="布局"
- popus="弹窗"
- navigation="导航"
- theming="主题"
- media="媒体"
- dark_mode="夜间模式"
- sys_dark_mode="跟随系统"
- search="查找"
- about="关于"
- settings="设置"
- locale="语言环境"
- navigation_view_display_mode="导航视图显示模式"
- other="其他"
- chart="表格"
- bar_chart="条形图"
- line_chart="折线图"
- pie_chart="饼图"
- polar_area_chart="极坐标区域图"
- bubble_chart="气泡图"
- scatter_chart="散点图"
- radar_chart="雷达图"
- }
-
- function en(){
- home="Home"
- basic_input="Basic Input"
- form="Form"
- surface="Surfaces"
- layout="Layout"
- popus="Popus"
- navigation="Navigation"
- theming="Theming"
- media="Media"
- dark_mode="Dark Mode"
- sys_dark_mode="Sync with system"
- search="Search"
- about="About"
- settings="Settings"
- locale="Locale"
- navigation_view_display_mode="NavigationView Display Mode"
- other="Other"
- chart="Chart"
- bar_chart="Bar Chart"
- line_chart="Line Chart"
- pie_chart="Pie Chart"
- polar_area_chart="Polar Area Chart"
- bubble_chart="Bubble Chart"
- scatter_chart="Scatter Chart"
- radar_chart="Radar Chart"
- }
-
- property string __locale
- property var __localeList: ["Zh","En"]
-
- on__LocaleChanged: {
- if(__locale === "Zh"){
- zh()
- }else{
- en()
- }
- }
-
- Component.onCompleted: {
- __locale = "En"
- }
-
-}
diff --git a/example/qml-Qt6/global/qmldir b/example/qml-Qt6/global/qmldir
index cc5287d7..eb6bfeaf 100644
--- a/example/qml-Qt6/global/qmldir
+++ b/example/qml-Qt6/global/qmldir
@@ -1,3 +1,2 @@
singleton ItemsOriginal 1.0 ItemsOriginal.qml
singleton ItemsFooter 1.0 ItemsFooter.qml
-singleton Lang 1.0 Lang.qml
diff --git a/example/qml-Qt6/page/T_Acrylic.qml b/example/qml-Qt6/page/T_Acrylic.qml
index 40a6de32..eb1e0801 100644
--- a/example/qml-Qt6/page/T_Acrylic.qml
+++ b/example/qml-Qt6/page/T_Acrylic.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Acrylic"
+ title: qsTr("Acrylic")
RowLayout{
spacing: 10
diff --git a/example/qml-Qt6/page/T_Awesome.qml b/example/qml-Qt6/page/T_Awesome.qml
index 0d0e9d31..6acab4f5 100644
--- a/example/qml-Qt6/page/T_Awesome.qml
+++ b/example/qml-Qt6/page/T_Awesome.qml
@@ -6,11 +6,11 @@ import FluentUI
FluContentPage {
- title:"Awesome"
+ title: qsTr("Awesome")
FluTextBox{
id:text_box
- placeholderText: "请输入关键字"
+ placeholderText: qsTr("Please enter a keyword")
anchors{
topMargin: 20
top:parent.top
@@ -18,7 +18,7 @@ FluContentPage {
}
FluFilledButton{
- text:"搜索"
+ text: qsTr("Search")
anchors{
left: text_box.right
verticalCenter: text_box.verticalCenter
@@ -53,7 +53,7 @@ FluContentPage {
onClicked: {
var text ="FluentIcons."+modelData.name;
FluTools.clipText(text)
- showSuccess("您复制了 "+text)
+ showSuccess(qsTr("You Copied ")+text)
}
}
FluText {
@@ -62,7 +62,7 @@ FluContentPage {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: item_icon.bottom
width:parent.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
text: modelData.name
horizontalAlignment: Text.AlignHCenter
}
diff --git a/example/qml-Qt6/page/T_Badge.qml b/example/qml-Qt6/page/T_Badge.qml
index 37b2e230..0385e23e 100644
--- a/example/qml-Qt6/page/T_Badge.qml
+++ b/example/qml-Qt6/page/T_Badge.qml
@@ -7,12 +7,12 @@ import "../component"
FluScrollablePage{
- title:"Badge"
+ title: qsTr("Badge")
FluArea{
Layout.fillWidth: true
Layout.topMargin: 20
- height: 106
+ height: 120
paddings: 10
Column{
@@ -20,11 +20,13 @@ FluScrollablePage{
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
+ right: parent.right
}
FluText{
- text:"一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数"
+ wrapMode: Text.WordWrap
+ width: parent.width
+ text: qsTr("It usually appears in the upper right corner of the notification icon or avatar to display the number of messages that need to be processed")
}
-
Row{
spacing: 20
Rectangle{
diff --git a/example/qml-Qt6/page/T_BreadcrumbBar.qml b/example/qml-Qt6/page/T_BreadcrumbBar.qml
index 28d21e24..51cc829d 100644
--- a/example/qml-Qt6/page/T_BreadcrumbBar.qml
+++ b/example/qml-Qt6/page/T_BreadcrumbBar.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"BreadcurmbBar"
+ title: qsTr("BreadcurmbBar")
Component.onCompleted: {
var items = []
@@ -48,7 +48,7 @@ FluScrollablePage{
spacing: 10
FluFilledButton{
- text:"Reset sample"
+ text: qsTr("Reset sample")
onClicked:{
var items = []
for(var i=0;i<10;i++){
@@ -66,7 +66,6 @@ FluScrollablePage{
Layout.fillWidth: true
onClickItem:
(model)=>{
- //不是点击最后一个item元素
if(model.index+1!==count()){
breadcrumb_2.remove(model.index+1,count()-model.index-1)
}
diff --git a/example/qml-Qt6/page/T_Buttons.qml b/example/qml-Qt6/page/T_Buttons.qml
index 634ea20e..7806e81c 100644
--- a/example/qml-Qt6/page/T_Buttons.qml
+++ b/example/qml-Qt6/page/T_Buttons.qml
@@ -8,11 +8,11 @@ import "../component"
FluScrollablePage{
- title:"Buttons"
+ title: qsTr("Buttons")
FluText{
Layout.topMargin: 20
- text:"支持Tab键切换焦点,空格键执行点击事件"
+ text: qsTr("Support the Tab key to switch focus, and the Space key to perform click events")
}
FluArea{
@@ -22,9 +22,8 @@ FluScrollablePage{
Layout.topMargin: 20
FluTextButton{
- disabled:text_button_switch.checked
- text:"Text Button"
- contentDescription: "文本按钮"
+ disabled: text_button_switch.checked
+ text: qsTr("Text Button")
onClicked: {
showInfo("点击Text Button")
}
@@ -34,12 +33,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:text_button_switch
+ id: text_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -60,10 +59,10 @@ FluScrollablePage{
Layout.topMargin: 20
FluButton{
- disabled:button_switch.checked
- text:"Standard Button"
+ disabled: button_switch.checked
+ text: qsTr("Standard Button")
onClicked: {
- showInfo("点击StandardButton")
+ showInfo(qsTr("Click StandardButton"))
}
anchors{
verticalCenter: parent.verticalCenter
@@ -71,12 +70,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:button_switch
+ id: button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -97,10 +96,10 @@ FluScrollablePage{
paddings: 10
FluFilledButton{
- disabled:filled_button_switch.checked
- text:"Filled Button"
+ disabled: filled_button_switch.checked
+ text: qsTr("Filled Button")
onClicked: {
- showWarning("点击FilledButton"+height)
+ showWarning(qsTr("Click FilledButton"))
}
anchors{
verticalCenter: parent.verticalCenter
@@ -108,12 +107,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:filled_button_switch
+ id: filled_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -135,19 +134,19 @@ FluScrollablePage{
FluToggleButton{
disabled:toggle_button_switch.checked
- text:"Toggle Button"
+ text: qsTr("Toggle Button")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
}
}
FluToggleSwitch{
- id:toggle_button_switch
+ id: toggle_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -162,7 +161,7 @@ FluScrollablePage{
}
Timer{
- id:timer_progress
+ id: timer_progress
interval: 200
onTriggered: {
btn_progress.progress = (btn_progress.progress + 0.1).toFixed(1)
@@ -181,9 +180,9 @@ FluScrollablePage{
paddings: 10
FluProgressButton{
- id:btn_progress
- disabled:progress_button_switch.checked
- text:"Progress Button"
+ id: btn_progress
+ disabled: progress_button_switch.checked
+ text: qsTr("Progress Button")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -194,12 +193,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:progress_button_switch
+ id: progress_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -220,9 +219,9 @@ FluScrollablePage{
paddings: 10
FluLoadingButton{
- id:btn_loading
- loading:loading_button_switch.checked
- text:"Loading Button"
+ id: btn_loading
+ loading: loading_button_switch.checked
+ text: qsTr("Loading Button")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -232,13 +231,13 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:loading_button_switch
+ id: loading_button_switch
checked: true
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Loading"
+ text: qsTr("Loading")
}
}
CodeExpander{
@@ -259,7 +258,7 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
Flow{
- id:layout_icon_button
+ id: layout_icon_button
spacing: 10
anchors{
verticalCenter: parent.verticalCenter
@@ -267,60 +266,60 @@ FluScrollablePage{
right: icon_button_switch.left
}
FluIconButton{
- disabled:icon_button_switch.checked
+ disabled: icon_button_switch.checked
iconDelegate: Image{ sourceSize: Qt.size(40,40) ; width: 20; height: 20; source: "qrc:/example/res/image/ic_home_github.png" }
onClicked:{
- showSuccess("点击IconButton")
+ showSuccess(qsTr("Click IconButton"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"IconOnly"
+ text: qsTr("IconOnly")
display: Button.IconOnly
onClicked:{
- showSuccess("Button.IconOnly")
+ showSuccess(qsTr("Button.IconOnly"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"TextOnly"
+ text: qsTr("TextOnly")
display: Button.TextOnly
onClicked:{
- showSuccess("Button.TextOnly")
+ showSuccess(qsTr("Button.TextOnly"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"TextBesideIcon"
+ text: qsTr("TextBesideIcon")
display: Button.TextBesideIcon
onClicked:{
- showSuccess("Button.TextBesideIcon")
+ showSuccess(qsTr("Button.TextBesideIcon"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"TextUnderIcon"
+ text: qsTr("TextUnderIcon")
display: Button.TextUnderIcon
onClicked:{
- showSuccess("Button.TextUnderIcon")
+ showSuccess(qsTr("Button.TextUnderIcon"))
}
}
}
FluToggleSwitch{
- id:icon_button_switch
+ id: icon_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -340,35 +339,35 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
FluDropDownButton{
- disabled:drop_down_button_switch.checked
- text:"DropDownButton"
+ disabled: drop_down_button_switch.checked
+ text: qsTr("DropDownButton")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
}
FluMenuItem{
- text:"Menu_1"
+ text: qsTr("Menu_1")
}
FluMenuItem{
- text:"Menu_2"
+ text: qsTr("Menu_2")
}
FluMenuItem{
- text:"Menu_3"
+ text: qsTr("Menu_3")
}
FluMenuItem{
- text:"Menu_4"
+ text: qsTr("Menu_4")
onClicked: {
}
}
}
FluToggleSwitch{
- id:drop_down_button_switch
+ id: drop_down_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -404,24 +403,24 @@ FluScrollablePage{
}
FluRadioButton{
disabled:radio_button_switch.checked
- text:"Radio Button_1"
+ text: qsTr("Radio Button_1")
}
FluRadioButton{
disabled:radio_button_switch.checked
- text:"Radio Button_2"
+ text: qsTr("Radio Button_2")
}
FluRadioButton{
disabled:radio_button_switch.checked
- text:"Radio Button_3"
+ text: qsTr("Radio Button_3")
}
}
FluToggleSwitch{
- id:radio_button_switch
+ id: radio_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml-Qt6/page/T_CalendarPicker.qml b/example/qml-Qt6/page/T_CalendarPicker.qml
index 379fce16..b2ff3fd8 100644
--- a/example/qml-Qt6/page/T_CalendarPicker.qml
+++ b/example/qml-Qt6/page/T_CalendarPicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"CalendarPicker"
+ title: qsTr("CalendarPicker")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_Captcha.qml b/example/qml-Qt6/page/T_Captcha.qml
index 4f18f9de..20f7275c 100644
--- a/example/qml-Qt6/page/T_Captcha.qml
+++ b/example/qml-Qt6/page/T_Captcha.qml
@@ -7,10 +7,10 @@ import "../component"
FluScrollablePage{
- title:"Captcha"
+ title: qsTr("Captcha")
FluCaptcha{
- id:captcha
+ id: captcha
Layout.topMargin: 20
ignoreCase:switch_case.checked
MouseArea{
@@ -23,7 +23,7 @@ FluScrollablePage{
}
FluButton{
- text:"Refresh"
+ text: qsTr("Refresh")
Layout.topMargin: 20
onClicked: {
captcha.refresh()
@@ -31,8 +31,8 @@ FluScrollablePage{
}
FluToggleSwitch{
- id:switch_case
- text:"Ignore Case"
+ id: switch_case
+ text: qsTr("Ignore Case")
checked: true
Layout.topMargin: 10
}
@@ -42,7 +42,7 @@ FluScrollablePage{
Layout.topMargin: 10
FluTextBox{
id:text_box
- placeholderText: "请输入验证码"
+ placeholderText: qsTr("Please enter a verification code")
Layout.preferredWidth: 240
}
FluButton{
@@ -50,9 +50,9 @@ FluScrollablePage{
onClicked: {
var success = captcha.verify(text_box.text)
if(success){
- showSuccess("验证码正确")
+ showSuccess(qsTr("The verification code is correct"))
}else{
- showError("错误验证,请重新输入")
+ showError(qsTr("Error validation, please re-enter"))
}
}
}
diff --git a/example/qml-Qt6/page/T_Carousel.qml b/example/qml-Qt6/page/T_Carousel.qml
index 1394bcee..401584f8 100644
--- a/example/qml-Qt6/page/T_Carousel.qml
+++ b/example/qml-Qt6/page/T_Carousel.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Carousel"
+ title: qsTr("Carousel")
ListModel{
id:data_model
@@ -34,7 +34,7 @@ FluScrollablePage{
left:parent.left
}
FluText{
- text:"轮播图,支持无限轮播,无限滑动,用ListView实现的组件"
+ text: qsTr("Carousel map, support infinite carousel, infinite swipe, and components implemented with ListView")
}
Item{
width: 400
diff --git a/example/qml-Qt6/page/T_CheckBox.qml b/example/qml-Qt6/page/T_CheckBox.qml
index e8d36f49..602270d4 100644
--- a/example/qml-Qt6/page/T_CheckBox.qml
+++ b/example/qml-Qt6/page/T_CheckBox.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"CheckBox"
+ title: qsTr("CheckBox")
FluArea{
Layout.fillWidth: true
@@ -16,7 +16,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluText{
- text:"A 2-state CheckBox"
+ text: qsTr("A 2-state CheckBox")
}
Row{
@@ -30,11 +30,11 @@ FluScrollablePage{
}
FluCheckBox{
disabled: check_box_switch_two.checked
- text:"Right"
+ text: qsTr("Right")
}
FluCheckBox{
disabled: check_box_switch_two.checked
- text:"Left"
+ text: qsTr("Left")
textRight: false
}
}
@@ -44,7 +44,7 @@ FluScrollablePage{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -62,7 +62,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluText{
- text:"A 3-state CheckBox"
+ text: qsTr("A 3-state CheckBox")
}
Row{
@@ -73,7 +73,7 @@ FluScrollablePage{
}
FluCheckBox{
property int count: 1
- text:"Three State"
+ text: qsTr("Three State")
disabled: check_box_switch_three.checked
clickListener: function(){
var flag = count%3
@@ -94,12 +94,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:check_box_switch_three
+ id: check_box_switch_three
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml-Qt6/page/T_Clip.qml b/example/qml-Qt6/page/T_Clip.qml
index 32bef827..37d5f31e 100644
--- a/example/qml-Qt6/page/T_Clip.qml
+++ b/example/qml-Qt6/page/T_Clip.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Clip"
+ title: qsTr("Clip")
FluArea{
Layout.fillWidth: true
@@ -22,8 +22,7 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"配合图片使用(software渲染下该组件将没有效果)"
- font: FluTextStyle.Subtitle
+ text: qsTr("Use with images (this component will have no effect under software rendering)")
Layout.topMargin: 20
}
RowLayout{
@@ -31,7 +30,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[25,0,25,25]
+ radius: [25,0,25,25]
Image {
asynchronous: true
anchors.fill: parent
@@ -42,7 +41,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[10,10,10,10]
+ radius: [10,10,10,10]
Image {
asynchronous: true
anchors.fill: parent
@@ -53,7 +52,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[25,25,25,25]
+ radius: [25,25,25,25]
Image {
asynchronous: true
anchors.fill: parent
@@ -64,7 +63,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[0,25,25,25]
+ radius: [0,25,25,25]
Image {
asynchronous: true
anchors.fill: parent
@@ -76,7 +75,7 @@ FluScrollablePage{
FluClip{
width: 1920/5
height: 1200/5
- radius:[8,8,8,8]
+ radius: [8,8,8,8]
Image {
asynchronous: true
source: "qrc:/example/res/image/banner_1.jpg"
diff --git a/example/qml-Qt6/page/T_ColorPicker.qml b/example/qml-Qt6/page/T_ColorPicker.qml
index f9307915..50a1390a 100644
--- a/example/qml-Qt6/page/T_ColorPicker.qml
+++ b/example/qml-Qt6/page/T_ColorPicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ColorPicker"
+ title: qsTr("ColorPicker")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_ComboBox.qml b/example/qml-Qt6/page/T_ComboBox.qml
index dd8c40b0..6c1783a9 100644
--- a/example/qml-Qt6/page/T_ComboBox.qml
+++ b/example/qml-Qt6/page/T_ComboBox.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ComboBox"
+ title: qsTr("ComboBox")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_DatePicker.qml b/example/qml-Qt6/page/T_DatePicker.qml
index 2d06e83f..8d5c4827 100644
--- a/example/qml-Qt6/page/T_DatePicker.qml
+++ b/example/qml-Qt6/page/T_DatePicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"TimePicker"
+ title: qsTr("TimePicker")
FluArea{
Layout.fillWidth: true
@@ -20,10 +20,15 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"showYear=true"
+ text: qsTr("showYear=true")
}
FluDatePicker{
current: new Date()
+ yearText: qsTr("Year")
+ monthText: qsTr("Month")
+ dayText: qsTr("Day")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleDateString())
}
@@ -49,10 +54,15 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"showYear=false"
+ text: qsTr("showYear=false")
}
FluDatePicker{
- showYear:false
+ showYear: false
+ yearText: qsTr("Year")
+ monthText: qsTr("Month")
+ dayText: qsTr("Day")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleDateString())
}
diff --git a/example/qml-Qt6/page/T_Dialog.qml b/example/qml-Qt6/page/T_Dialog.qml
index 17b554b7..a8ba2ed0 100644
--- a/example/qml-Qt6/page/T_Dialog.qml
+++ b/example/qml-Qt6/page/T_Dialog.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Dialog"
+ title: qsTr("Dialog")
FluArea{
Layout.fillWidth: true
@@ -16,7 +16,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluButton{
anchors.verticalCenter: parent.verticalCenter
- text:"Show Double Button Dialog"
+ text: qsTr("Show Double Button Dialog")
onClicked: {
double_btn_dialog.open()
}
@@ -27,16 +27,16 @@ FluScrollablePage{
Layout.topMargin: -1
code:'FluContentDialog{
id:dialog
- title:"友情提示"
- message:"确定要退出程序么?"
- negativeText:"取消"
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
+ negativeText: qsTr("Cancel")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
onNegativeClicked:{
- showSuccess("点击取消按钮")
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
+ positiveText: qsTr("OK")
onPositiveClicked:{
- showSuccess("点击确定按钮")
+ showSuccess(qsTr("Click the OK Button"))
}
}
dialog.open()'
@@ -44,16 +44,16 @@ FluScrollablePage{
FluContentDialog{
id:double_btn_dialog
- title:"友情提示"
- message:"确定要退出程序么?"
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText:"取消"
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ negativeText: qsTr("Cancel")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
+ positiveText: qsTr("OK")
onPositiveClicked:{
- showSuccess("点击确定按钮")
+ showSuccess(qsTr("Click the OK Button"))
}
}
@@ -74,43 +74,43 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluContentDialog{
- id:dialog
- title:"友情提示"
- message:"确定要退出程序么?"
- negativeText:"取消"
+ id: dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
+ negativeText: qsTr("Cancel")
buttonFlags: FluContentDialogType.NeutralButton | FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText:"取消"
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ negativeText: qsTr("Cancel")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
- neutralText:"最小化"
- onNeutralClicked:{
- showSuccess("点击最小化按钮")
+ neutralText: qsTr("Minimize")
+ onNeutralClicked: {
+ showSuccess(qsTr("Click Minimize"))
}
}
dialog.open()'
}
FluContentDialog{
- id:triple_btn_dialog
- title:"友情提示"
- message:"确定要退出程序么?"
+ id: triple_btn_dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
buttonFlags: FluContentDialogType.NeutralButton | FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText:"取消"
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ negativeText: qsTr("Cancel")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
- neutralText:"最小化"
- onNeutralClicked:{
- showSuccess("点击最小化按钮")
+ neutralText: qsTr("Minimize")
+ onNeutralClicked: {
+ showSuccess(qsTr("Click Minimize"))
}
}
@@ -122,7 +122,7 @@ FluScrollablePage{
FluButton{
anchors.top: parent.top
anchors.topMargin: 5
- text:"Custom Content Dialog"
+ text: qsTr("Custom Content Dialog")
onClicked: {
custom_btn_dialog.open()
}
@@ -130,7 +130,7 @@ FluScrollablePage{
FluButton{
anchors.top: parent.top
anchors.topMargin: 48
- text:"Custom Content Dialog2"
+ text: qsTr("Custom Content Dialog2")
onClicked: {
custom_btn_dialog2.open()
}
@@ -140,10 +140,10 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluContentDialog{
- id:dialog
- title:"友情提示"
- message:"数据正在加载中,请稍等..."
- negativeText:"取消加载"
+ id: dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Data is loading, please wait...")
+ negativeText: qsTr("Unload")
contentDelegate: Component{
Item{
width: parent.width
@@ -153,22 +153,22 @@ FluScrollablePage{
}
}
}
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText :qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
}
dialog.open()'
}
FluContentDialog{
- id:custom_btn_dialog
- title:"友情提示"
- message:"数据正在加载中,请稍等..."
- negativeText:"取消加载"
+ id: custom_btn_dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Data is loading, please wait...")
+ negativeText: qsTr("Unload")
contentDelegate: Component{
Item{
implicitWidth: parent.width
@@ -178,18 +178,18 @@ FluScrollablePage{
}
}
}
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClickListener:function(){
- showError("测试InfoBar层级在Popup之上")
+ positiveText: qsTr("OK")
+ onPositiveClickListener: function(){
+ showError(qsTr("Test the InfoBar level on top of the Popup"))
}
}
FluContentDialog{
id:custom_btn_dialog2
- title:"折线图"
+ title: qsTr("Line Chart")
contentDelegate: Component{
Item{
implicitWidth: parent.width
@@ -224,9 +224,9 @@ FluScrollablePage{
}
}
buttonFlags: FluContentDialogType.PositiveButton
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
}
}
diff --git a/example/qml-Qt6/page/T_Expander.qml b/example/qml-Qt6/page/T_Expander.qml
index 5e56272e..c2d7cb9d 100644
--- a/example/qml-Qt6/page/T_Expander.qml
+++ b/example/qml-Qt6/page/T_Expander.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Expander"
+ title: qsTr("Expander")
FluArea{
Layout.fillWidth: true
@@ -23,7 +23,7 @@ FluScrollablePage{
}
FluExpander{
- headerText:"打开一个单选框"
+ headerText: qsTr("Open a radio box")
Layout.topMargin: 20
Item{
anchors.fill: parent
@@ -50,7 +50,7 @@ FluScrollablePage{
FluExpander{
Layout.topMargin: 20
- headerText:"打开一个滑动文本框"
+ headerText: qsTr("Open a sliding text box")
Item{
anchors.fill: parent
Flickable{
@@ -64,9 +64,16 @@ FluScrollablePage{
FluText{
id:text_info
width: scrollview.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 14
- text:"先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。"
+ text: qsTr("Permit me to observe: the late emperor was taken from us before he could finish his life`s work, the restoration of Han. Today, the empire is still divided in three, and our very survival is threatened. Yet still the officials at court and the soldiers throughout the realm remain loyal to you, your majesty. Because they remember the late emperor, all of them, and they wish to repay his kindness in service to you. This is the moment to extend your divine influence, to honour the memory of the late Emperor and strengthen the morale of your officers. It is not time to listen to bad advice, or close your ears to the suggestions of loyal men.
+The court and the administration are as one. Both must be judged by one standard. Those who are loyal and good must get what they deserve, but so must the evil-doers who break the law. This will demonstrate the justice of your rule. There cannot be one law for the court and another for the administration.
+Counselors and attendants like Guo Youzhi, Fei Yi, and Dong Yun are all reliable men, loyal of purpose and pure in motive. The late Emperor selected them for office so that they would serve you after his death.These are the men who should be consulted on all palace affairs. Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+The emperors of the Western Han chose their courtiers wisely, and their dynasty flourished. The emperors of the Eastern Han chose poorly, and they doomed the empire to ruin. Whenever the late Emperor discussed this problem with me, he lamented the failings of Emperors Huan and Ling. Advisors like Guo Youzhi, Fei Yi, Chen Zhen, Zhang Yi, and Jiang Wan – these are all men of great integrity and devotion. I encourage you to trust them, your majesty, if the house of Han is to rise again.
+I begin as a common man, farming in my fields in Nanyang, doing what I could to survive in an age of chaos. I never had any interest in making a name for myself as a noble. The late Emperor was not ashamed to visit my cottage and seek my advice. Grateful for his regard, I responded to his appeal and threw myself into his service. Now twenty-one years has passed, the late Emperor always appreciated my caution and, in his final days, entrusted me with his cause.
+Since that moment, I have been tormented day and night by the fear that I might let him down. That is why I crossed the Lu river at the height of summer, and entered the wastelands beyond. Now the south has been subdued, and our forces are fully armed.I should lead our soldiers to conquer the northern heartland and attempt to remove the hateful traitors, restore the house of Han, and return it to the former capital.This the way I mean to honor my debt to the late Emperor and fulfill my duty to you. Guo Youzhi, Fei Yi, and Dong Yun are the ones who should be making policy decisions and recommendations.
+My only desire is to be permitted to drive out the traitors and restore the Han. If I should let you down, punish my offense and report it to the spirit of the late Emperor. If those three advisors should fail in their duties, then they should be punished for their negligence.Your Majesty, consider your course of action carefully. Seek out good advice, and never forget the late Emperor. I depart now on a long expedition, and I will be forever grateful if you heed my advice. Blinded by my own tears, I know not what I write.")
}
}
}
@@ -78,7 +85,7 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluExpander{
- headerText:"打开一个单选框"
+ headerText: qsTr("Open a radio box")
Item{
anchors.fill: parent
Flickable{
@@ -90,9 +97,9 @@ FluScrollablePage{
FluText{
id:text_info
width: scrollview.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 14
- text:"先帝创业未半而中道崩殂,今天下三分......""
+ text: qsTr("Permit me to observe: the late emperor was taken from us before he could finish his life`s work...")
}
}
}
diff --git a/example/qml-Qt6/page/T_FlipView.qml b/example/qml-Qt6/page/T_FlipView.qml
index 6dde692c..4d75df9e 100644
--- a/example/qml-Qt6/page/T_FlipView.qml
+++ b/example/qml-Qt6/page/T_FlipView.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"FlipView"
+ title: qsTr("FlipView")
FluArea{
Layout.fillWidth: true
@@ -17,7 +17,7 @@ FluScrollablePage{
ColumnLayout{
anchors.verticalCenter: parent.verticalCenter
FluText{
- text:"水平方向的FlipView"
+ text: qsTr("Horizontal FlipView")
}
FluFlipView{
Image{
@@ -69,7 +69,7 @@ FluScrollablePage{
ColumnLayout{
anchors.verticalCenter: parent.verticalCenter
FluText{
- text:"垂直方向的FlipView"
+ text: qsTr("Vertical FlipView")
}
FluFlipView{
vertical:true
diff --git a/example/qml-Qt6/page/T_Home.qml b/example/qml-Qt6/page/T_Home.qml
index ebe30515..23fa8339 100644
--- a/example/qml-Qt6/page/T_Home.qml
+++ b/example/qml-Qt6/page/T_Home.qml
@@ -11,12 +11,24 @@ FluScrollablePage{
animDisabled: true
ListModel{
- id:model_header
+ id: model_header
ListElement{
- icon:"qrc:/example/res/image/ic_home_github.png"
- title:"FluentUI GitHub"
- desc:"The latest FluentUI controls and styles for your applications."
- url:"https://github.com/zhuzichu520/FluentUI"
+ icon: "qrc:/example/res/image/ic_home_github.png"
+ title: qsTr("FluentUI GitHub")
+ desc: qsTr("The latest FluentUI controls and styles for your applications.")
+ url: "https://github.com/zhuzichu520/FluentUI"
+ clicked: function(model){
+ Qt.openUrlExternally(model.url)
+ }
+ }
+ ListElement{
+ icon: "qrc:/example/res/image/favicon.ico"
+ title: qsTr("FluentUI Initalizr")
+ desc: qsTr("FluentUI Initializr is a FluentUI tool that helps you create and customize Fluent UI projects with various options.")
+ url: "https://github.com/zhuzichu520/FluentUI"
+ clicked: function(model){
+ FluApp.navigate("/fluentInitalizr")
+ }
}
}
@@ -106,7 +118,7 @@ FluScrollablePage{
Layout.leftMargin: 20
color: FluColors.Grey120
font.pixelSize: 12
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
}
}
FluIcon{
@@ -129,7 +141,7 @@ FluScrollablePage{
else scrollbar_header.increase()
}
onClicked: {
- Qt.openUrlExternally(model.url)
+ model.clicked(model)
}
}
}
@@ -202,7 +214,7 @@ FluScrollablePage{
id:item_desc
text:desc
color:FluColors.Grey120
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
elide: Text.ElideRight
font: FluTextStyle.Caption
maximumLineCount: 2
diff --git a/example/qml-Qt6/page/T_Image.qml b/example/qml-Qt6/page/T_Image.qml
index 585f94e6..df412204 100644
--- a/example/qml-Qt6/page/T_Image.qml
+++ b/example/qml-Qt6/page/T_Image.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Image"
+ title: qsTr("Image")
FluArea{
Layout.fillWidth: true
@@ -24,9 +24,10 @@ FluScrollablePage{
width: 384
height: 240
source: "https://gitee.com/zhu-zichu/zhu-zichu/raw/74f075efe2f8d3c3bb7ba3c2259e403450e4050b/image/banner_4.jpg"
+ errorButtonText: qsTr("Reload")
onStatusChanged:{
if(status === Image.Error){
- showError("图片加载失败,请重新加载")
+ showError(qsTr("The image failed to load, please reload"))
}
}
clickErrorListener: function(){
diff --git a/example/qml-Qt6/page/T_InfoBar.qml b/example/qml-Qt6/page/T_InfoBar.qml
index ee9fced0..c5ad2991 100644
--- a/example/qml-Qt6/page/T_InfoBar.qml
+++ b/example/qml-Qt6/page/T_InfoBar.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"InfoBar"
+ title: qsTr("InfoBar")
FluArea{
Layout.fillWidth: true
@@ -21,39 +21,39 @@ FluScrollablePage{
left: parent.left
}
FluButton{
- text:"Info"
+ text: qsTr("Info")
onClicked: {
- showInfo("这是一个Info样式的InfoBar")
+ showInfo(qsTr("This is an InfoBar in the Info Style"))
}
}
FluButton{
- text:"Warning"
+ text: qsTr("Warning")
onClicked: {
- showWarning("这是一个Warning样式的InfoBar")
+ showWarning(qsTr("This is an InfoBar in the Warning Style"))
}
}
FluButton{
text:"Error"
onClicked: {
- showError("这是一个Error样式的InfoBar")
+ showError(qsTr("This is an InfoBar in the Error Style"))
}
}
FluButton{
text:"Success"
onClicked: {
- showSuccess("这是一个Success样式的InfoBar")
+ showSuccess(qsTr("This is an InfoBar in the Success Style"))
}
}
FluButton{
- text:"手动关闭的InfoBar"
+ text: qsTr("InfoBar that needs to be turned off manually")
onClicked: {
- showInfo("这是一个Info样式的InfoBar",0,"支持手动关闭")
+ showInfo("This is an InfoBar in the Info Style",0,"Manual shutdown is supported")
}
}
FluButton{
text:"Loading"
onClicked: {
- showLoading()
+ showLoading(qsTr("Loading..."))
}
}
}
@@ -61,12 +61,12 @@ FluScrollablePage{
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
- code:'showInfo("这是一个Info样式的InfoBar")
+ code:'showInfo(qsTr("This is an InfoBar in the Info Style"))
-showWarning("这是一个Warning样式的InfoBar")
+showWarning(qsTr("This is an InfoBar in the Warning Style"))
-showError("这是一个Error样式的InfoBar")
+showError(qsTr("This is an InfoBar in the Error Style"))
-showSuccess("这是一个Success样式的InfoBar这是一个Success样式的InfoBar")'
+showSuccess(qsTr("This is an InfoBar in the Success Style"))'
}
}
diff --git a/example/qml-Qt6/page/T_Menu.qml b/example/qml-Qt6/page/T_Menu.qml
index 932fdad5..5f6e51da 100644
--- a/example/qml-Qt6/page/T_Menu.qml
+++ b/example/qml-Qt6/page/T_Menu.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Menu"
+ title: qsTr("Menu")
FluMenu {
id:menu
@@ -34,13 +34,13 @@ FluScrollablePage{
text: qsTr("Disable")
enabled:false
onTriggered: {
- showError("Disable")
+ showError(qsTr("Disable"))
}
}
FluMenuSeparator { }
Action { text: qsTr("Check");checkable: true;checked: true}
FluMenu{
- title: "Save As..."
+ title: qsTr("Save As...")
Action { text: qsTr("Doc") }
Action { text: qsTr("PDF") }
}
@@ -53,7 +53,7 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
Column{
- id:layout_column
+ id: layout_column
spacing: 15
anchors{
verticalCenter: parent.verticalCenter
@@ -61,11 +61,11 @@ FluScrollablePage{
}
FluText{
- text:"Menu"
+ text: qsTr("Menu")
}
FluButton{
- text:"Show Menu Popup"
+ text: qsTr("Show Menu Popup")
Layout.topMargin: 20
onClicked:{
menu.popup()
@@ -112,7 +112,7 @@ menu.popup()
}
FluText{
- text:"MenuBar"
+ text: qsTr("MenuBar")
}
FluMenuBar {
@@ -129,7 +129,7 @@ menu.popup()
enabled:false
}
FluMenu{
- title: "Save As..."
+ title: qsTr("Save As...")
Action { text: qsTr("Doc") }
Action { text: qsTr("PDF") }
}
@@ -168,8 +168,4 @@ menu.popup()
menu.popup()
'
}
-
-
-
-
}
diff --git a/example/qml-Qt6/page/T_MultiWindow.qml b/example/qml-Qt6/page/T_MultiWindow.qml
index f7dad060..1f21a789 100644
--- a/example/qml-Qt6/page/T_MultiWindow.qml
+++ b/example/qml-Qt6/page/T_MultiWindow.qml
@@ -10,7 +10,7 @@ FluScrollablePage{
property string password: ""
property var loginPageRegister: registerForWindowResult("/login")
- title:"MultiWindow"
+ title: qsTr("MultiWindow")
Connections{
target: loginPageRegister
@@ -32,10 +32,10 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"Standard模式窗口,每次都会创建新窗口"
+ text: qsTr("Standard mode window,a new window is created every time")
}
FluButton{
- text:"点击创建窗口"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/standardWindow")
}
@@ -55,11 +55,11 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"SingleTask模式窗口,如果窗口存在,这激活该窗口"
+ text: qsTr("SingleTask mode window,If a window exists, this activates the window")
textFormat: Text.RichText
}
FluButton{
- text:"点击创建窗口"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/singleTaskWindow")
}
@@ -79,10 +79,10 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"SingleInstance模式窗口,如果窗口存在,则销毁窗口,然后新建窗口"
+ text: qsTr("SingleInstance mode window,If the window exists, destroy the window and create a new window")
}
FluButton{
- text:"点击创建窗口"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/singleInstanceWindow")
}
@@ -113,10 +113,10 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"页面跳转,不携带任何参数"
+ text: qsTr("Create the window without carrying any parameters")
}
FluButton{
- text:"点击跳转"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/about")
}
@@ -127,7 +127,7 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluButton{
- text:"点击跳转"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/about")
}
@@ -148,16 +148,16 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"页面跳转,并携带参数用户名:zhuzichu"
+ text: qsTr("Create a window with the parameter username: zhuzichu")
}
FluButton{
- text:"点击跳转到登录"
+ text: qsTr("Create Window")
onClicked: {
loginPageRegister.launch({username:"zhuzichu"})
}
}
FluText{
- text:"登录窗口返回过来的密码->"+password
+ text:qsTr("Login Window Returned Password - >")+password
}
}
}
@@ -175,7 +175,7 @@ Connections{
}
FluButton{
- text:"点击跳转"
+ text: qsTr("Create Window")
onClicked: {
loginPageRegister.launch({username:"zhuzichu"})
}
diff --git a/example/qml-Qt6/page/T_Network.qml b/example/qml-Qt6/page/T_Network.qml
index 793b033f..3c7049bb 100644
--- a/example/qml-Qt6/page/T_Network.qml
+++ b/example/qml-Qt6/page/T_Network.qml
@@ -552,7 +552,7 @@ FluContentPage{
FluText{
id:text_info
width: scrollview.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 14
}
}
diff --git a/example/qml-Qt6/page/T_Pagination.qml b/example/qml-Qt6/page/T_Pagination.qml
index 37d82119..d0bd3fe7 100644
--- a/example/qml-Qt6/page/T_Pagination.qml
+++ b/example/qml-Qt6/page/T_Pagination.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Pagination"
+ title: qsTr("Pagination")
FluArea{
Layout.fillWidth: true
@@ -21,16 +21,22 @@ FluScrollablePage{
pageCurrent: 1
pageButtonCount: 5
itemCount: 5000
+ previousText: qsTr("")
}
FluPagination{
pageCurrent: 2
itemCount: 5000
pageButtonCount: 7
+ previousText: qsTr("")
}
FluPagination{
pageCurrent: 3
itemCount: 5000
pageButtonCount: 9
+ previousText: qsTr("")
}
}
diff --git a/example/qml-Qt6/page/T_Pivot.qml b/example/qml-Qt6/page/T_Pivot.qml
index f1ae6055..b52a4928 100644
--- a/example/qml-Qt6/page/T_Pivot.qml
+++ b/example/qml-Qt6/page/T_Pivot.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Pivot"
+ title: qsTr("Pivot")
FluArea{
Layout.fillWidth: true
@@ -15,31 +15,34 @@ FluScrollablePage{
height: 400
paddings: 10
+
+
FluPivot{
anchors.fill: parent
currentIndex: 2
+
FluPivotItem{
- title:"All"
+ title: qsTr("All")
contentItem:FluText{
- text:"All emails go here."
+ text: qsTr("All emails go here.")
}
}
FluPivotItem{
- title:"Unread"
- contentItem:FluText{
- text:"Unread emails go here."
+ title: qsTr("Unread")
+ contentItem: FluText{
+ text: qsTr("Unread emails go here.")
}
}
FluPivotItem{
- title:"Flagged"
- contentItem:FluText{
- text:"Flagged emails go here."
+ title: qsTr("Flagged")
+ contentItem: FluText{
+ text: qsTr("Flagged emails go here.")
}
}
FluPivotItem{
- title:"Urgent"
- contentItem:FluText{
- text:"Urgent emails go here."
+ title: qsTr("Urgent")
+ contentItem: FluText{
+ text: qsTr("Urgent emails go here.")
}
}
}
@@ -50,27 +53,27 @@ FluScrollablePage{
code:'FluPivot{
anchors.fill: parent
FluPivotItem:{
- text:"All"
+ text: qsTr("All")
contentItem: FluText{
- text:"All emails go here."
+ text: qsTr("All emails go here.")
}
}
FluPivotItem:{
- text:"Unread"
+ text: qsTr("Unread")
contentItem: FluText{
- text:"Unread emails go here."
+ text: qsTr("Unread emails go here.")
}
}
FluPivotItem:{
- text:"Flagged"
+ text: qsTr("Flagged")
contentItem: FluText{
- text:"Flagged emails go here."
+ text: qsTr("Flagged emails go here.")
}
}
FluPivotItem:{
- text:"Urgent"
+ text: qsTr("Urgent")
contentItem: FluText{
- text:"Urgent emails go here."
+ text: qsTr("Urgent emails go here.")
}
}
}
diff --git a/example/qml-Qt6/page/T_Progress.qml b/example/qml-Qt6/page/T_Progress.qml
index 30c1aa9c..ecbfb488 100644
--- a/example/qml-Qt6/page/T_Progress.qml
+++ b/example/qml-Qt6/page/T_Progress.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Progress"
+ title: qsTr("Progress")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_QRCode.qml b/example/qml-Qt6/page/T_QRCode.qml
index d613155b..9ed3ced0 100644
--- a/example/qml-Qt6/page/T_QRCode.qml
+++ b/example/qml-Qt6/page/T_QRCode.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"QRCode"
+ title: qsTr("QRCode")
FluQRCode{
id:qrcode
diff --git a/example/qml-Qt6/page/T_RadioButton.qml b/example/qml-Qt6/page/T_RadioButton.qml
index f53ed8ed..eae17351 100644
--- a/example/qml-Qt6/page/T_RadioButton.qml
+++ b/example/qml-Qt6/page/T_RadioButton.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"RadioButton"
+ title: qsTr("RadioButton")
FluArea{
Layout.fillWidth: true
@@ -22,21 +22,21 @@ FluScrollablePage{
}
FluRadioButton{
disabled: radio_button_switch.checked
- text:"Right"
+ text: qsTr("Right")
}
FluRadioButton{
disabled: radio_button_switch.checked
- text:"Left"
+ text: qsTr("Left")
textRight: false
}
}
FluToggleSwitch{
- id:radio_button_switch
+ id: radio_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -61,24 +61,24 @@ FluScrollablePage{
}
FluRadioButton{
disabled: radio_button_switch2.checked
- text:"Radio Button_1"
+ text: qsTr("Radio Button_1")
}
FluRadioButton{
disabled: radio_button_switch2.checked
- text:"Radio Button_2"
+ text: qsTr("Radio Button_2")
}
FluRadioButton{
disabled: radio_button_switch2.checked
- text:"Radio Button_3"
+ text: qsTr("Radio Button_3")
}
}
FluToggleSwitch{
- id:radio_button_switch2
+ id: radio_button_switch2
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml-Qt6/page/T_RatingControl.qml b/example/qml-Qt6/page/T_RatingControl.qml
index cf102581..3a20e844 100644
--- a/example/qml-Qt6/page/T_RatingControl.qml
+++ b/example/qml-Qt6/page/T_RatingControl.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage {
- title: "RatingControl"
+ title: qsTr("RatingControl")
FluArea {
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_Rectangle.qml b/example/qml-Qt6/page/T_Rectangle.qml
index cec07bb6..9426e66f 100644
--- a/example/qml-Qt6/page/T_Rectangle.qml
+++ b/example/qml-Qt6/page/T_Rectangle.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Rectangle"
+ title: qsTr("Rectangle")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_Settings.qml b/example/qml-Qt6/page/T_Settings.qml
index c4444686..c9f9e8a9 100644
--- a/example/qml-Qt6/page/T_Settings.qml
+++ b/example/qml-Qt6/page/T_Settings.qml
@@ -9,7 +9,7 @@ import "../viewmodel"
FluScrollablePage{
- title:"Settings"
+ title: qsTr("Settings")
SettingsViewModel{
id:viewmodel_settings
@@ -40,13 +40,13 @@ FluScrollablePage{
spacing: 20
anchors.verticalCenter: parent.verticalCenter
FluText{
- text:"当前版本 v%1".arg(AppInfo.version)
+ text: "%1 v%2".arg(qsTr("Current Version")).arg(AppInfo.version)
font: FluTextStyle.Body
anchors.verticalCenter: parent.verticalCenter
}
FluLoadingButton{
- id:btn_checkupdate
- text:"检查更新"
+ id: btn_checkupdate
+ text: qsTr("Check for Updates")
anchors.verticalCenter: parent.verticalCenter
onClicked: {
loading = true
@@ -62,7 +62,7 @@ FluScrollablePage{
height: 50
paddings: 10
FluCheckBox{
- text:"Use System AppBar"
+ text: qsTr("Use System AppBar")
checked: FluApp.useSystemAppBar
anchors.verticalCenter: parent.verticalCenter
onClicked: {
@@ -78,7 +78,7 @@ FluScrollablePage{
height: 50
paddings: 10
FluCheckBox{
- text:"fitsAppBarWindows"
+ text:qsTr("Fits AppBar Windows")
checked: window.fitsAppBarWindows
anchors.verticalCenter: parent.verticalCenter
onClicked: {
@@ -88,13 +88,13 @@ FluScrollablePage{
}
FluContentDialog{
- id:dialog_restart
- title:"友情提示"
- message:"此操作需要重启才能生效,是否重新启动?"
+ id: dialog_restart
+ title: qsTr("Friendly Reminder")
+ message: qsTr("This action requires a restart of the program to take effect, is it restarted?")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText: "取消"
- positiveText:"确定"
- onPositiveClicked:{
+ negativeText: qsTr("Cancel")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
FluApp.exit(931)
}
}
@@ -112,13 +112,13 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:Lang.dark_mode
+ text: qsTr("Dark Mode")
font: FluTextStyle.BodyStrong
Layout.bottomMargin: 4
}
Repeater{
- model: [{title:"System",mode:FluThemeType.System},{title:"Light",mode:FluThemeType.Light},{title:"Dark",mode:FluThemeType.Dark}]
- delegate: FluRadioButton{
+ model: [{title:qsTr("System"),mode:FluThemeType.System},{title:qsTr("Light"),mode:FluThemeType.Light},{title:qsTr("Dark"),mode:FluThemeType.Dark}]
+ delegate: FluRadioButton{
checked : FluTheme.darkMode === modelData.mode
text:modelData.title
clickListener:function(){
@@ -142,12 +142,12 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:Lang.navigation_view_display_mode
+ text:qsTr("Navigation View Display Mode")
font: FluTextStyle.BodyStrong
Layout.bottomMargin: 4
}
Repeater{
- model: [{title:"Open",mode:FluNavigationViewType.Open},{title:"Compact",mode:FluNavigationViewType.Compact},{title:"Minimal",mode:FluNavigationViewType.Minimal},{title:"Auto",mode:FluNavigationViewType.Auto}]
+ model: [{title:qsTr("Open"),mode:FluNavigationViewType.Open},{title:qsTr("Compact"),mode:FluNavigationViewType.Compact},{title:qsTr("Minimal"),mode:FluNavigationViewType.Minimal},{title:qsTr("Auto"),mode:FluNavigationViewType.Auto}]
delegate: FluRadioButton{
checked : viewmodel_settings.displayMode===modelData.mode
text:modelData.title
@@ -159,6 +159,16 @@ FluScrollablePage{
}
}
+ ListModel{
+ id:model_language
+ ListElement{
+ name:"en"
+ }
+ ListElement{
+ name:"zh"
+ }
+ }
+
FluArea{
Layout.fillWidth: true
Layout.topMargin: 20
@@ -171,22 +181,21 @@ FluScrollablePage{
top: parent.top
left: parent.left
}
-
FluText{
- text:Lang.locale
+ text:qsTr("Language")
font: FluTextStyle.BodyStrong
Layout.bottomMargin: 4
}
-
Flow{
spacing: 5
Repeater{
- model: Lang.__localeList
+ model: TranslateHelper.languages
delegate: FluRadioButton{
- checked: Lang.__locale === modelData
+ checked: TranslateHelper.current === modelData
text:modelData
clickListener:function(){
- Lang.__locale = modelData
+ TranslateHelper.current = modelData
+ dialog_restart.open()
}
}
}
diff --git a/example/qml-Qt6/page/T_ShortcutPicker.qml b/example/qml-Qt6/page/T_ShortcutPicker.qml
index aaa7575d..b2f51448 100644
--- a/example/qml-Qt6/page/T_ShortcutPicker.qml
+++ b/example/qml-Qt6/page/T_ShortcutPicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ShortcutPicker"
+ title: qsTr("ShortcutPicker")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_Slider.qml b/example/qml-Qt6/page/T_Slider.qml
index 4df5bab9..2a46b2c7 100644
--- a/example/qml-Qt6/page/T_Slider.qml
+++ b/example/qml-Qt6/page/T_Slider.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Slider"
+ title: qsTr("Slider")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml-Qt6/page/T_SplitLayout.qml b/example/qml-Qt6/page/T_SplitLayout.qml
index 5fdd60cb..303d6181 100644
--- a/example/qml-Qt6/page/T_SplitLayout.qml
+++ b/example/qml-Qt6/page/T_SplitLayout.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage{
- title:"SplitLayout"
+ title: qsTr("SplitLayout")
RowLayout{
id:layout_dropdown
diff --git a/example/qml-Qt6/page/T_StaggeredLayout.qml b/example/qml-Qt6/page/T_StaggeredLayout.qml
index a719d726..4594f9c6 100644
--- a/example/qml-Qt6/page/T_StaggeredLayout.qml
+++ b/example/qml-Qt6/page/T_StaggeredLayout.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage{
- title:"StaggeredLayout"
+ title: qsTr("StaggeredLayout")
property var colors : [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
diff --git a/example/qml-Qt6/page/T_StatusLayout.qml b/example/qml-Qt6/page/T_StatusLayout.qml
index 1b400711..a2742461 100644
--- a/example/qml-Qt6/page/T_StatusLayout.qml
+++ b/example/qml-Qt6/page/T_StatusLayout.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"StatusLayout"
+ title: qsTr("StatusLayout")
FluArea{
id:layout_actions
@@ -61,8 +61,12 @@ FluScrollablePage{
FluStatusLayout{
id:status_view
anchors.fill: parent
+ loadingText: qsTr("Loading...")
+ emptyText: qsTr("Empty")
+ errorText: qsTr("The page went wrong...")
+ errorButtonText: qsTr("Reload")
onErrorClicked:{
- showError("点击重新加载")
+ showError("Click Reload")
}
Rectangle {
anchors.fill: parent
diff --git a/example/qml-Qt6/page/T_TabView.qml b/example/qml-Qt6/page/T_TabView.qml
index ead55372..76bed115 100644
--- a/example/qml-Qt6/page/T_TabView.qml
+++ b/example/qml-Qt6/page/T_TabView.qml
@@ -9,7 +9,7 @@ FluScrollablePage{
property var colors : [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
- title:"TabView"
+ title: qsTr("TabView")
Component{
id:com_page
@@ -20,7 +20,7 @@ FluScrollablePage{
}
function newTab(){
- tab_view.appendTab("qrc:/example/res/image/favicon.ico","Document "+tab_view.count(),com_page,colors[Math.floor(Math.random() * 8)])
+ tab_view.appendTab("qrc:/example/res/image/favicon.ico",qsTr("Document ")+tab_view.count(),com_page,colors[Math.floor(Math.random() * 8)])
}
Component.onCompleted: {
diff --git a/example/qml-Qt6/page/T_TableView.qml b/example/qml-Qt6/page/T_TableView.qml
index 9203a83d..271e2d85 100644
--- a/example/qml-Qt6/page/T_TableView.qml
+++ b/example/qml-Qt6/page/T_TableView.qml
@@ -8,7 +8,7 @@ import "../component"
FluContentPage{
id:root
- title:"TableView"
+ title: qsTr("TableView")
signal checkBoxChanged
property var dataSource : []
@@ -70,8 +70,8 @@ FluContentPage{
id:custom_update_dialog
property var text
property var onAccpetListener
- title:"修改列名"
- negativeText:"取消"
+ title: qsTr("Modify the column name")
+ negativeText: qsTr("Cancel")
contentDelegate: Component{
Item{
implicitWidth: parent.width
@@ -89,7 +89,7 @@ FluContentPage{
}
}
}
- positiveText:"确定"
+ positiveText: qsTr("OK")
onPositiveClicked:{
if(custom_update_dialog.onAccpetListener){
custom_update_dialog.onAccpetListener(custom_update_dialog.text)
@@ -131,7 +131,7 @@ FluContentPage{
}
FluButton{
- text:"搜索"
+ text: qsTr("Search")
anchors{
bottom: parent.bottom
right: parent.right
@@ -174,7 +174,7 @@ FluContentPage{
id:com_column_filter_name
Item{
FluText{
- text:"姓名"
+ text: qsTr("Name")
anchors.centerIn: parent
}
FluIconButton{
@@ -208,14 +208,14 @@ FluContentPage{
RowLayout{
anchors.centerIn: parent
FluButton{
- text:"删除"
+ text: qsTr("Delete")
onClicked: {
table_view.closeEditor()
table_view.removeRow(row)
}
}
FluFilledButton{
- text:"编辑"
+ text: qsTr("Edit")
onClicked: {
var obj = table_view.getRow(row)
obj.name = "12345"
@@ -234,7 +234,7 @@ FluContentPage{
RowLayout{
anchors.centerIn: parent
FluText{
- text:"全选"
+ text: qsTr("Select All")
Layout.alignment: Qt.AlignVCenter
}
FluCheckBox{
@@ -334,7 +334,7 @@ FluContentPage{
id:com_column_sort_age
Item{
FluText{
- text:"年龄"
+ text: qsTr("Age")
anchors.centerIn: parent
}
ColumnLayout{
@@ -409,14 +409,14 @@ FluContentPage{
}
FluButton{
- text:"清空"
+ text: qsTr("Clear All")
onClicked: {
table_view.dataSource = []
}
}
FluButton{
- text:"删除选中"
+ text:"Delete Selection"
onClicked: {
var data = []
var rows = []
@@ -440,7 +440,7 @@ FluContentPage{
}
FluButton{
- text:"添加一行数据"
+ text:"Add a row of Data"
onClicked: {
table_view.appendRow(genTestObject())
}
@@ -465,17 +465,17 @@ FluContentPage{
{
title: table_view.customItem(com_column_checbox,{checked:true}),
dataIndex: 'checkbox',
- width:80,
- minimumWidth:80,
- maximumWidth:80
+ width:100,
+ minimumWidth:100,
+ maximumWidth:100
},
{
- title: table_view.customItem(com_column_update_title,{title:'头像'}),
+ title: table_view.customItem(com_column_update_title,{title:qsTr("Avatar")}),
dataIndex: 'avatar',
width:100
},
{
- title: table_view.customItem(com_column_filter_name,{title:'姓名'}),
+ title: table_view.customItem(com_column_filter_name,{title:qsTr("Name")}),
dataIndex: 'name',
readOnly:true
},
@@ -488,28 +488,28 @@ FluContentPage{
maximumWidth:100
},
{
- title: '住址',
+ title: qsTr("Address"),
dataIndex: 'address',
width:200,
minimumWidth:100,
maximumWidth:250
},
{
- title: '别名',
+ title: qsTr("Nickname"),
dataIndex: 'nickname',
width:100,
minimumWidth:80,
maximumWidth:200
},
{
- title: '长字符串',
+ title: qsTr("Long String"),
dataIndex: 'longstring',
width:200,
minimumWidth:100,
maximumWidth:300
},
{
- title: '操作',
+ title: qsTr("Options"),
dataIndex: 'action',
width:160,
minimumWidth:160,
@@ -528,6 +528,8 @@ FluContentPage{
itemCount: 100000
pageButtonCount: 7
__itemPerPage: 1000
+ previousText: qsTr("")
onRequestPage:
(page,count)=> {
table_view.closeEditor()
diff --git a/example/qml-Qt6/page/T_Text.qml b/example/qml-Qt6/page/T_Text.qml
index a2306069..b88c59f0 100644
--- a/example/qml-Qt6/page/T_Text.qml
+++ b/example/qml-Qt6/page/T_Text.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Text"
+ title: qsTr("Text")
FluArea{
Layout.fillWidth: true
@@ -16,7 +16,7 @@ FluScrollablePage{
paddings: 10
FluCopyableText{
- text: "这是一个可以支持复制的Text"
+ text: qsTr("This is a text that can be copied")
anchors.verticalCenter: parent.verticalCenter
}
@@ -25,7 +25,7 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluCopyableText{
- text:"这是一个可以支持复制的Text"
+ text: qsTr("This is a text that can be copied")
}'
}
diff --git a/example/qml-Qt6/page/T_TextBox.qml b/example/qml-Qt6/page/T_TextBox.qml
index 37b85c01..ccee5d34 100644
--- a/example/qml-Qt6/page/T_TextBox.qml
+++ b/example/qml-Qt6/page/T_TextBox.qml
@@ -7,16 +7,13 @@ import "../component"
import "../viewmodel"
FluScrollablePage{
- title:"TextBox"
+
+ title: qsTr("TextBox")
TextBoxViewModel{
id:viewModel
}
- Component.onDestruction: {
- console.debug("T_TextBox页面销毁了")
- }
-
FluArea{
Layout.fillWidth: true
height: 68
@@ -24,10 +21,10 @@ FluScrollablePage{
Layout.topMargin: 20
FluTextBox{
- placeholderText: "单行输入框"
- disabled:text_box_switch.checked
+ placeholderText: qsTr("Single-line Input Box")
+ disabled: text_box_switch.checked
cleanEnabled: true
- text:viewModel.text1
+ text: viewModel.text1
onTextChanged: {
viewModel.text1 = text
}
@@ -38,19 +35,19 @@ FluScrollablePage{
}
FluToggleSwitch{
- id:text_box_switch
+ id: text_box_switch
anchors{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluTextBox{
- placeholderText:"单行输入框"
+ placeholderText: qsTr("Single-line Input Box")
}'
}
@@ -61,7 +58,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluPasswordBox{
- placeholderText: "请输入密码"
+ placeholderText: qsTr("Please enter your password")
disabled:password_box_switch.checked
anchors{
verticalCenter: parent.verticalCenter
@@ -74,14 +71,14 @@ FluScrollablePage{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluPasswordBox{
- placeholderText:"请输入密码"
+ placeholderText: qsTr("Please enter your password")
}'
}
@@ -93,13 +90,13 @@ FluScrollablePage{
Layout.topMargin: 20
FluMultilineTextBox{
- id:multiine_textbox
- placeholderText: "多行输入框"
+ id: multiine_textbox
+ placeholderText: qsTr("Multi-line Input Box")
text:viewModel.text2
onTextChanged: {
viewModel.text2 = text
}
- disabled:text_box_multi_switch.checked
+ disabled: text_box_multi_switch.checked
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -112,14 +109,14 @@ FluScrollablePage{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluMultilineTextBox{
- placeholderText:"多行输入框"
+ placeholderText: qsTr("Multi-line Input Box")
}'
}
@@ -129,9 +126,9 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
FluAutoSuggestBox{
- placeholderText: "AutoSuggestBox"
- items:generateRandomNames(100)
- disabled:text_box_suggest_switch.checked
+ placeholderText: qsTr("AutoSuggestBox")
+ items: generateRandomNames(100)
+ disabled: text_box_suggest_switch.checked
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -143,14 +140,14 @@ FluScrollablePage{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluAutoSuggestBox{
- placeholderText:"AutoSuggestBox"
+ placeholderText: qsTr("AutoSuggestBox")
}'
}
@@ -167,12 +164,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:spin_box_switch
+ id: spin_box_switch
anchors{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml-Qt6/page/T_Theme.qml b/example/qml-Qt6/page/T_Theme.qml
index 5846ea4f..78380bd8 100644
--- a/example/qml-Qt6/page/T_Theme.qml
+++ b/example/qml-Qt6/page/T_Theme.qml
@@ -8,8 +8,8 @@ import "../component"
FluScrollablePage{
property var colorData: [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
- id:root
- title:"Theme"
+ id: root
+ title: qsTr("Theme")
FluArea{
Layout.fillWidth: true
@@ -23,7 +23,7 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"主题颜色"
+ text: qsTr("Theme colors")
Layout.topMargin: 10
}
RowLayout{
@@ -58,7 +58,7 @@ FluScrollablePage{
Layout.topMargin: 10
spacing: 10
FluText{
- text:"自定义主题颜色"
+ text: qsTr("Customize the Theme Color")
anchors.verticalCenter: parent.verticalCenter
}
FluColorPicker{
@@ -84,7 +84,7 @@ FluScrollablePage{
}
}
FluText{
- text:"夜间模式"
+ text: qsTr("Dark Mode")
Layout.topMargin: 20
}
FluToggleSwitch{
@@ -99,7 +99,7 @@ FluScrollablePage{
}
}
FluText{
- text:"native文本渲染"
+ text: qsTr("Native Text")
Layout.topMargin: 20
}
FluToggleSwitch{
@@ -110,7 +110,7 @@ FluScrollablePage{
}
}
FluText{
- text:"开启动画效果"
+ text: qsTr("Open Animation")
Layout.topMargin: 20
}
FluToggleSwitch{
diff --git a/example/qml-Qt6/page/T_TimePicker.qml b/example/qml-Qt6/page/T_TimePicker.qml
index 7c79b481..a144d963 100644
--- a/example/qml-Qt6/page/T_TimePicker.qml
+++ b/example/qml-Qt6/page/T_TimePicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"TimePicker"
+ title: qsTr("TimePicker")
launchMode: FluPageType.SingleInstance
FluArea{
Layout.fillWidth: true
@@ -23,11 +23,17 @@ FluScrollablePage{
}
FluText{
- text:"hourFormat=FluTimePickerType.H"
+ text: qsTr("hourFormat=FluTimePickerType.H")
}
FluTimePicker{
current: new Date()
+ amText: qsTr("AM")
+ pmText: qsTr("PM")
+ hourText: qsTr("Hour")
+ minuteText: qsTr("Minute")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleTimeString(Qt.locale("de_DE")))
}
@@ -57,11 +63,17 @@ FluScrollablePage{
}
FluText{
- text:"hourFormat=FluTimePickerType.HH"
+ text: qsTr("hourFormat=FluTimePickerType.HH")
}
FluTimePicker{
hourFormat:FluTimePickerType.HH
+ amText: qsTr("AM")
+ pmText: qsTr("PM")
+ hourText: qsTr("Hour")
+ minuteText: qsTr("Minute")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleTimeString(Qt.locale("de_DE")))
}
diff --git a/example/qml-Qt6/page/T_Timeline.qml b/example/qml-Qt6/page/T_Timeline.qml
index 0f578561..1a127916 100644
--- a/example/qml-Qt6/page/T_Timeline.qml
+++ b/example/qml-Qt6/page/T_Timeline.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Timeline"
+ title: qsTr("Timeline")
Component{
id:com_dot
@@ -23,7 +23,7 @@ FluScrollablePage{
Component{
id:com_lable
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
font.bold: true
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: modelData.lable
@@ -41,7 +41,7 @@ FluScrollablePage{
Component{
id:com_text
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: modelData.text
font.bold: true
@@ -108,18 +108,18 @@ FluScrollablePage{
spacing: 20
Layout.topMargin: 20
FluTextBox{
- id:text_box
- text:"Technical testing 2015-09-01"
+ id: text_box
+ text: "Technical testing 2015-09-01"
Layout.preferredWidth: 240
}
FluFilledButton{
- text:"Append"
+ text: qsTr("Append")
onClicked: {
list_model.append({text:text_box.text})
}
}
FluFilledButton{
- text:"clear"
+ text: qsTr("clear")
onClicked: {
list_model.clear()
}
@@ -132,25 +132,25 @@ FluScrollablePage{
text:"mode:"
}
FluDropDownButton{
- id:btn_mode
+ id: btn_mode
Layout.preferredWidth: 100
- text:"Alternate"
+ text: "Alternate"
FluMenuItem{
- text:"Left"
+ text: "Left"
onClicked: {
btn_mode.text = text
time_line.mode = FluTimelineType.Left
}
}
FluMenuItem{
- text:"Right"
+ text: "Right"
onClicked: {
btn_mode.text = text
time_line.mode = FluTimelineType.Right
}
}
FluMenuItem{
- text:"Alternate"
+ text: "Alternate"
onClicked: {
btn_mode.text = text
time_line.mode = FluTimelineType.Alternate
@@ -160,12 +160,12 @@ FluScrollablePage{
}
FluTimeline{
- id:time_line
+ id: time_line
Layout.fillWidth: true
Layout.topMargin: 20
Layout.bottomMargin: 20
mode: FluTimelineType.Alternate
- model:list_model
+ model: list_model
}
}
diff --git a/example/qml-Qt6/page/T_ToggleSwitch.qml b/example/qml-Qt6/page/T_ToggleSwitch.qml
index 5eac656b..9220ff9f 100644
--- a/example/qml-Qt6/page/T_ToggleSwitch.qml
+++ b/example/qml-Qt6/page/T_ToggleSwitch.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ToggleSwitch"
+ title: qsTr("ToggleSwitch")
FluArea{
Layout.fillWidth: true
@@ -22,21 +22,21 @@ FluScrollablePage{
}
FluToggleSwitch{
disabled: toggle_switch.checked
- text:"Right"
+ text: qsTr("Right")
}
FluToggleSwitch{
disabled: toggle_switch.checked
- text:"Left"
+ text: qsTr("Left")
textRight: false
}
}
FluToggleSwitch{
- id:toggle_switch
+ id: toggle_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml-Qt6/page/T_Tooltip.qml b/example/qml-Qt6/page/T_Tooltip.qml
index 97315197..4d1b8ed8 100644
--- a/example/qml-Qt6/page/T_Tooltip.qml
+++ b/example/qml-Qt6/page/T_Tooltip.qml
@@ -7,11 +7,11 @@ import "../component"
FluScrollablePage{
- title:"Tooltip"
+ title: qsTr("Tooltip")
FluText{
Layout.topMargin: 20
- text:"鼠标悬停不动,弹出Tooltip"
+ text: qsTr("Hover over Tultip and it pops up")
}
FluArea{
@@ -27,14 +27,14 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"FluIconButton的text属性自带Tooltip效果"
+ text: qsTr("Text properties of FluIconButton support the Tooltip pop-up window by default")
}
FluIconButton{
iconSource:FluentIcons.ChromeCloseContrast
iconSize: 15
- text:"删除"
+ text: qsTr("Delete")
onClicked:{
- showSuccess("点击IconButton")
+ showSuccess(qsTr("Click IconButton"))
}
}
}
@@ -45,9 +45,9 @@ FluScrollablePage{
code:'FluIconButton{
iconSource:FluentIcons.ChromeCloseContrast
iconSize: 15
- text:"删除"
+ text: qsTr("Delete")
onClicked:{
- showSuccess("点击IconButton")
+ showSuccess(qsTr("Click IconButton"))
}
}
'
@@ -66,13 +66,13 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"给一个Button添加Tooltip效果"
+ text: qsTr("Add a Tooltip pop-up to a Button")
}
FluButton{
id:button_1
- text:"删除"
+ text: qsTr("Delete")
onClicked:{
- showSuccess("点击一个Button")
+ showSuccess(qsTr("Click Button"))
}
FluTooltip{
visible: button_1.hovered
@@ -86,15 +86,15 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluButton{
- id:button_1
- text:"删除"
+ id: button_1
+ text: qsTr("Delete")
FluTooltip{
visible: button_1.hovered
text:button_1.text
delay: 1000
}
onClicked:{
- showSuccess("点击一个Button")
+ showSuccess(qsTr("Click Button"))
}
}'
}
diff --git a/example/qml-Qt6/page/T_Tour.qml b/example/qml-Qt6/page/T_Tour.qml
index d0492733..157607e1 100644
--- a/example/qml-Qt6/page/T_Tour.qml
+++ b/example/qml-Qt6/page/T_Tour.qml
@@ -11,10 +11,13 @@ FluScrollablePage{
FluTour{
id:tour
+ finishText: qsTr("Finish")
+ nextText: qsTr("Next")
+ previousText: qsTr("Previous")
steps:[
- {title:"Upload File",description: "Put your files here.",target:()=>btn_upload},
- {title:"Save",description: "Save your changes.",target:()=>btn_save},
- {title:"Other Actions",description: "Click to see other actions.",target:()=>btn_more}
+ {title:qsTr("Upload File"),description: qsTr("Put your files here."),target:()=>btn_upload},
+ {title:qsTr("Save"),description: qsTr("Save your changes."),target:()=>btn_save},
+ {title:qsTr("Other Actions"),description: qsTr("Click to see other actions."),target:()=>btn_more}
]
}
@@ -29,7 +32,7 @@ FluScrollablePage{
top: parent.top
topMargin: 14
}
- text:"Begin Tour"
+ text: qsTr("Begin Tour")
onClicked: {
tour.open()
}
@@ -42,24 +45,24 @@ FluScrollablePage{
topMargin: 60
}
FluButton{
- id:btn_upload
- text:"Upload"
+ id: btn_upload
+ text: qsTr("Upload")
onClicked: {
- showInfo("Upload")
+ showInfo(qsTr("Upload"))
}
}
FluFilledButton{
- id:btn_save
- text:"Save"
+ id: btn_save
+ text: qsTr("Save")
onClicked: {
- showInfo("Save")
+ showInfo(qsTr("Save"))
}
}
FluIconButton{
- id:btn_more
+ id: btn_more
iconSource: FluentIcons.More
onClicked: {
- showInfo("More")
+ showInfo(qsTr("More"))
}
}
}
diff --git a/example/qml-Qt6/page/T_TreeView.qml b/example/qml-Qt6/page/T_TreeView.qml
index a094dbf5..02e09ac8 100644
--- a/example/qml-Qt6/page/T_TreeView.qml
+++ b/example/qml-Qt6/page/T_TreeView.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage {
- title:"TreeView"
+ title: qsTr("TreeView")
function treeData(){
const dig = (path = '0', level = 4) => {
@@ -29,7 +29,7 @@ FluContentPage {
}
Column{
- id:layout_column
+ id: layout_column
spacing: 12
width: 300
anchors{
@@ -42,21 +42,21 @@ FluContentPage {
}
FluText{
- text:"共计%1条数据,当前显示的%2条数据".arg(tree_view.count()).arg(tree_view.visibleCount())
+ text: qsTr("Total %1 data, %2 data currently displayed").arg(tree_view.count()).arg(tree_view.visibleCount())
}
FluText{
- text:"共计选中%1条数据".arg(tree_view.selectionModel().length)
+ text: qsTr("A total of %1 data items are selected").arg(tree_view.selectionModel().length)
}
RowLayout{
spacing: 10
FluText{
- text:"cellHeight:"
+ text: "cellHeight:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_cell_height
+ id: slider_cell_height
value: 30
from: 30
to:100
@@ -65,39 +65,39 @@ FluContentPage {
RowLayout{
spacing: 10
FluText{
- text:"depthPadding:"
+ text: "depthPadding:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_depth_padding
+ id: slider_depth_padding
value: 30
from: 30
to:100
}
}
FluToggleSwitch{
- id:switch_showline
+ id: switch_showline
text:"showLine"
checked: false
}
FluToggleSwitch{
- id:switch_draggable
+ id: switch_draggable
text:"draggable"
checked: false
}
FluToggleSwitch{
- id:switch_checkable
+ id: switch_checkable
text:"checkable"
checked: false
}
FluButton{
- text:"all expand"
+ text: "all expand"
onClicked: {
tree_view.allExpand()
}
}
FluButton{
- text:"all collapse"
+ text: "all collapse"
onClicked: {
tree_view.allCollapse()
}
diff --git a/example/qml-Qt6/page/T_Typography.qml b/example/qml-Qt6/page/T_Typography.qml
index 61f3cf43..7d3fd445 100644
--- a/example/qml-Qt6/page/T_Typography.qml
+++ b/example/qml-Qt6/page/T_Typography.qml
@@ -7,7 +7,7 @@ FluContentPage {
property real textScale: 1
- title: "Typography"
+ title: qsTr("Typography")
rightPadding: 10
FluArea{
diff --git a/example/qml-Qt6/page/T_Watermark.qml b/example/qml-Qt6/page/T_Watermark.qml
index d40b4503..a383b4a7 100644
--- a/example/qml-Qt6/page/T_Watermark.qml
+++ b/example/qml-Qt6/page/T_Watermark.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage{
- title:"Watermark"
+ title: qsTr("Watermark")
FluArea{
anchors.fill: parent
@@ -23,12 +23,12 @@ FluContentPage{
spacing: 10
Layout.topMargin: 14
FluText{
- text:"text:"
+ text: "text:"
Layout.alignment: Qt.AlignVCenter
}
FluTextBox{
- id:text_box
- text:"会磨刀的小猪"
+ id: text_box
+ text: "会磨刀的小猪"
Layout.preferredWidth: 240
}
}
@@ -36,11 +36,11 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"textSize:"
+ text: "textSize:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_text_size
+ id: slider_text_size
value: 20
from: 13
to:50
@@ -49,7 +49,7 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"gapX:"
+ text: "gapX:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
@@ -60,18 +60,18 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"gapY:"
+ text: "gapY:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_gap_y
+ id: slider_gap_y
value: 100
}
}
RowLayout{
spacing: 10
FluText{
- text:"offsetX:"
+ text: "offsetX:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
@@ -82,22 +82,22 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"offsetY:"
+ text: "offsetY:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_offset_y
+ id: slider_offset_y
value: 50
}
}
RowLayout{
spacing: 10
FluText{
- text:"rotate:"
+ text: "rotate:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_rotate
+ id: slider_rotate
value: 22
from: 0
to:360
@@ -106,18 +106,18 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"textColor:"
+ text: "textColor:"
Layout.alignment: Qt.AlignVCenter
}
FluColorPicker{
- id:color_picker
+ id: color_picker
current: Qt.rgba(0,0,0,0.1)
}
}
}
FluWatermark{
- id:water_mark
+ id: water_mark
anchors.fill: parent
text:text_box.text
textColor: color_picker.current
diff --git a/example/qml-Qt6/window/CrashWindow.qml b/example/qml-Qt6/window/CrashWindow.qml
index d9f7a431..6abf7396 100644
--- a/example/qml-Qt6/window/CrashWindow.qml
+++ b/example/qml-Qt6/window/CrashWindow.qml
@@ -8,7 +8,7 @@ import "../component"
FluWindow {
id:window
- title:"友情提示"
+ title: qsTr("Friendly Reminder")
width: 300
height: 400
fixSize: true
@@ -37,11 +37,15 @@ FluWindow {
FluText{
id:text_info
anchors{
- horizontalCenter: parent.horizontalCenter
top: parent.top
topMargin: 240
+ left: parent.left
+ right: parent.right
+ leftMargin: 10
+ rightMargin: 10
}
- text:"发生意外错误\n给您带来的不便,我们深表歉意"
+ wrapMode: Text.WordWrap
+ text: qsTr("We apologize for the inconvenience caused by an unexpected error")
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
@@ -53,7 +57,7 @@ FluWindow {
bottomMargin: 20
}
FluButton{
- text:"日志上报"
+ text: qsTr("Report Logs")
onClicked: {
FluTools.showFileInFolder(crashFilePath)
}
@@ -63,7 +67,7 @@ FluWindow {
height: 1
}
FluFilledButton{
- text:"重启程序"
+ text: qsTr("Restart Program")
onClicked: {
FluApp.exit(931)
}
diff --git a/example/qml-Qt6/window/FluentInitalizrWindow.qml b/example/qml-Qt6/window/FluentInitalizrWindow.qml
new file mode 100644
index 00000000..3dee14df
--- /dev/null
+++ b/example/qml-Qt6/window/FluentInitalizrWindow.qml
@@ -0,0 +1,115 @@
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import FluentUI
+import Qt.labs.platform
+import "../component"
+
+FluWindow {
+
+ id:window
+ title:"FluentUI Initalizr"
+ width: 600
+ height: 400
+ fixSize: true
+ modality: Qt.ApplicationModal
+ launchMode: FluWindowType.SingleTask
+ showStayTop: false
+
+ Connections{
+ target: InitalizrHelper
+ function onError(message){
+ showError(message)
+ }
+ function onSuccess(){
+ showSuccess("创建成功")
+ }
+ }
+
+ FluText{
+ id:text_title
+ text:"FluentUI脚手架"
+ font: FluTextStyle.Title
+ anchors{
+ left: parent.left
+ top: parent.top
+ leftMargin: 20
+ topMargin: 20
+ }
+ }
+
+ Column{
+ spacing: 14
+ anchors{
+ left: parent.left
+ top: text_title.bottom
+ leftMargin: 20
+ topMargin: 20
+ }
+ FluTextBox{
+ id:text_box_name
+ width: 180
+ placeholderText: "名称"
+ focus: true
+ }
+ Row{
+ spacing: 8
+ FluTextBox{
+ id:text_box_path
+ width: 300
+ placeholderText: "创建路径"
+ anchors.verticalCenter: parent.verticalCenter
+ Component.onCompleted: {
+ text = FluTools.toLocalPath(StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0])
+ }
+ }
+ FluButton{
+ text:"浏览"
+ anchors.verticalCenter: parent.verticalCenter
+ onClicked: {
+ folder_dialog.open()
+ }
+ }
+ }
+ }
+
+ FolderDialog{
+ id:folder_dialog
+ folder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
+ onAccepted: {
+ text_box_path.text = FluTools.toLocalPath(currentFolder)
+ }
+ }
+
+ Rectangle{
+ id:layout_actions
+ width: parent.width
+ height: 60
+ anchors.bottom: parent.bottom
+ color: FluTheme.backgroundColor
+ Row{
+ height: parent.height
+ spacing: 20
+ anchors{
+ right: parent.right
+ rightMargin: 20
+ }
+ FluButton{
+ text:"取消"
+ width: 120
+ anchors.verticalCenter: parent.verticalCenter
+ onClicked: {
+ window.close()
+ }
+ }
+ FluFilledButton{
+ text:"创建"
+ width: 120
+ anchors.verticalCenter: parent.verticalCenter
+ onClicked: {
+ InitalizrHelper.generate(text_box_name.text,text_box_path.text)
+ }
+ }
+ }
+ }
+}
diff --git a/example/qml-Qt6/window/HotloadWindow.qml b/example/qml-Qt6/window/HotloadWindow.qml
index 5b1a0f2d..acf75bd4 100644
--- a/example/qml-Qt6/window/HotloadWindow.qml
+++ b/example/qml-Qt6/window/HotloadWindow.qml
@@ -8,7 +8,7 @@ import "../component"
FluWindow {
id:window
- title:"热加载"
+ title: qsTr("Hot Loader")
width: 800
height: 600
minimumWidth: 520
@@ -32,7 +32,7 @@ FluWindow {
text:loader.itemLodaer().sourceComponent.errorString()
color:"red"
anchors.fill: parent
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 20
verticalAlignment: Qt.AlignVCenter
horizontalAlignment: Qt.AlignHCenter
@@ -40,7 +40,7 @@ FluWindow {
}
}
FluText{
- text:"拖入qml文件"
+ text: qsTr("Drag in a qml file")
font.pixelSize: 26
anchors.centerIn: parent
visible: !loader.itemLodaer().item && loader.statusMode === FluStatusLayoutType.Success
diff --git a/example/qml-Qt6/window/LoginWindow.qml b/example/qml-Qt6/window/LoginWindow.qml
index 7c3bd788..23f95972 100644
--- a/example/qml-Qt6/window/LoginWindow.qml
+++ b/example/qml-Qt6/window/LoginWindow.qml
@@ -6,8 +6,8 @@ import "../component"
FluWindow {
- id:window
- title:"登录"
+ id: window
+ title: qsTr("Login")
width: 400
height: 400
fixSize: true
@@ -26,38 +26,34 @@ FluWindow {
}
FluAutoSuggestBox{
- id:textbox_uesrname
+ id: textbox_uesrname
items:[{title:"Admin"},{title:"User"}]
- placeholderText: "请输入账号"
+ placeholderText: qsTr("Please enter the account")
Layout.preferredWidth: 260
Layout.alignment: Qt.AlignHCenter
}
FluTextBox{
- id:textbox_password
+ id: textbox_password
Layout.topMargin: 20
Layout.preferredWidth: 260
- placeholderText: "请输入密码"
+ placeholderText: qsTr("Please enter your password")
echoMode:TextInput.Password
Layout.alignment: Qt.AlignHCenter
}
FluFilledButton{
- text:"登录"
+ text: qsTr("Login")
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: 20
onClicked:{
if(textbox_password.text === ""){
- showError("请随便输入一个密码")
+ showError(qsTr("Please feel free to enter a password"))
return
}
onResult({password:textbox_password.text})
window.close()
}
}
-
}
-
-
-
}
diff --git a/example/qml-Qt6/window/MainWindow.qml b/example/qml-Qt6/window/MainWindow.qml
index 0b30f0c9..c7bc0f4a 100644
--- a/example/qml-Qt6/window/MainWindow.qml
+++ b/example/qml-Qt6/window/MainWindow.qml
@@ -21,7 +21,7 @@ FluWindow {
fitsAppBarWindows: true
appBar: FluAppBar {
height: 30
- darkText: Lang.dark_mode
+ darkText: qsTr("Dark Mode")
showDark: true
darkClickListener:(button)=>handleDarkChanged(button)
closeClickListener: ()=>{dialog_close.open()}
@@ -85,7 +85,7 @@ FluWindow {
}
Timer{
- id:timer_window_hide_delay
+ id: timer_window_hide_delay
interval: 150
onTriggered: {
window.hide()
@@ -93,29 +93,29 @@ FluWindow {
}
FluContentDialog{
- id:dialog_close
- title:"退出"
- message:"确定要退出程序吗?"
- negativeText:"最小化"
+ id: dialog_close
+ title: qsTr("Quit")
+ message: qsTr("Are you sure you want to exit the program?")
+ negativeText: qsTr("Minimize")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.NeutralButton | FluContentDialogType.PositiveButton
onNegativeClicked: {
- system_tray.showMessage("友情提示","FluentUI已隐藏至托盘,点击托盘可再次激活窗口");
+ system_tray.showMessage(qsTr("Friendly Reminder"),qsTr("FluentUI is hidden from the tray, click on the tray to activate the window again"));
timer_window_hide_delay.restart()
}
- positiveText:"退出"
- neutralText:"取消"
+ positiveText: qsTr("Quit")
+ neutralText: qsTr("Cancel")
onPositiveClicked:{
FluApp.exit(0)
}
}
Component{
- id:nav_item_right_menu
+ id: nav_item_right_menu
FluMenu{
- id:menu
+ id: menu
width: 130
FluMenuItem{
- text: "在独立窗口打开"
+ text: qsTr("Open in Separate Window")
visible: true
onClicked: {
FluApp.navigate("/pageWindow",{title:modelData.title,url:modelData.url})
@@ -212,7 +212,7 @@ FluWindow {
title:"FluentUI"
onLogoClicked:{
clickCount += 1
- showSuccess("点击%1次".arg(clickCount))
+ showSuccess("%1:%2".arg(qsTr("Click Time")).arg(clickCount))
if(clickCount === 5){
loader.reload()
flipable.flipped = true
@@ -222,7 +222,7 @@ FluWindow {
autoSuggestBox:FluAutoSuggestBox{
iconSource: FluentIcons.Search
items: ItemsOriginal.getSearchData()
- placeholderText: Lang.search
+ placeholderText: qsTr("Search")
onItemClicked:
(data)=>{
ItemsOriginal.startPageByItem(data)
@@ -312,13 +312,16 @@ FluWindow {
}
FluTour{
- id:tour
+ id: tour
+ finishText: qsTr("Finish")
+ nextText: qsTr("Next")
+ previousText: qsTr("Previous")
steps:{
var data = []
if(!window.useSystemAppBar){
- data.push({title:"夜间模式",description: "这里可以切换夜间模式.",target:()=>appBar.buttonDark})
+ data.push({title:qsTr("Dark Mode"),description: qsTr("Here you can switch to night mode."),target:()=>appBar.buttonDark})
}
- data.push({title:"隐藏彩蛋",description: "多点几下试试!!",target:()=>nav_view.imageLogo})
+ data.push({title:qsTr("Hide Easter eggs"),description: qsTr("Try a few more clicks!!"),target:()=>nav_view.imageLogo})
return data
}
}
@@ -328,7 +331,7 @@ FluWindow {
}
FluText{
- text:"fps %1".arg(fps_item.fps)
+ text: "fps %1".arg(fps_item.fps)
opacity: 0.3
anchors{
bottom: parent.bottom
@@ -341,12 +344,12 @@ FluWindow {
FluContentDialog{
property string newVerson
property string body
- id:dialog_update
- title:"升级提示"
- message:"FluentUI目前最新版本 "+ newVerson +" -- 当前应用版本 "+AppInfo.version+" \n现在是否去下载新版本?\n\n更新内容:\n"+body
+ id: dialog_update
+ title: qsTr("Upgrade Tips")
+ message:qsTr("FluentUI is currently up to date ")+ newVerson +qsTr(" -- The current app version") +AppInfo.version+qsTr(" \nNow go and download the new version?\n\nUpdated content: \n")+body
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText: "取消"
- positiveText:"确定"
+ negativeText: qsTr("Cancel")
+ positiveText: qsTr("OK")
onPositiveClicked:{
Qt.openUrlExternally("https://github.com/zhuzichu520/FluentUI/releases/latest")
}
@@ -373,14 +376,14 @@ FluWindow {
dialog_update.open()
}else{
if(!silent){
- showInfo("当前版本已经是最新版")
+ showInfo(qsTr("The current version is already the latest"))
}
}
}
onError:
(status,errorString)=>{
if(!silent){
- showError("网络异常!")
+ showError(qsTr("The network is abnormal"))
}
console.debug(status+";"+errorString)
}
diff --git a/example/qml-Qt6/window/SingleInstanceWindow.qml b/example/qml-Qt6/window/SingleInstanceWindow.qml
index d397ef99..5e7e47a9 100644
--- a/example/qml-Qt6/window/SingleInstanceWindow.qml
+++ b/example/qml-Qt6/window/SingleInstanceWindow.qml
@@ -2,13 +2,12 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import FluentUI
-
import "../component"
FluWindow {
- id:window
- title:"SingleInstance"
+ id: window
+ title: qsTr("SingleInstance")
width: 500
height: 600
fixSize: true
@@ -23,7 +22,7 @@ FluWindow {
}
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
anchors{
left: parent.left
right: parent.right
@@ -31,6 +30,6 @@ FluWindow {
rightMargin: 20
verticalCenter: parent.verticalCenter
}
- text:"我是一个SingleInstance模式的窗口,如果我存在,我会销毁之前的窗口,并创建一个新窗口"
+ text: qsTr("I'm a SingleInstance window, and if I exist, I'll destroy the previous window and create a new one")
}
}
diff --git a/example/qml-Qt6/window/SingleTaskWindow.qml b/example/qml-Qt6/window/SingleTaskWindow.qml
index d53d1371..a43cc042 100644
--- a/example/qml-Qt6/window/SingleTaskWindow.qml
+++ b/example/qml-Qt6/window/SingleTaskWindow.qml
@@ -6,8 +6,8 @@ import "../component"
FluWindow {
- id:window
- title:"SingleTask"
+ id: window
+ title: qsTr("SingleTask")
width: 500
height: 600
fixSize: true
@@ -15,7 +15,7 @@ FluWindow {
FluText{
anchors.centerIn: parent
- text:"我是一个SingleTask模式的窗口,如果我存在,我就激活窗口"
+ text: qsTr("I'm a SingleTask mode window, and if I exist, I activate the window")
}
}
diff --git a/example/qml-Qt6/window/StandardWindow.qml b/example/qml-Qt6/window/StandardWindow.qml
index 34ca7b1a..13e60a8a 100644
--- a/example/qml-Qt6/window/StandardWindow.qml
+++ b/example/qml-Qt6/window/StandardWindow.qml
@@ -37,7 +37,7 @@ FluWindow {
FluText{
anchors.centerIn: parent
- text:"我是一个Standard模式的窗口,每次我都会创建一个新的窗口"
+ text: qsTr("I'm a Standard mode window, and every time I create a new window")
}
}
diff --git a/example/qml/App.qml b/example/qml/App.qml
index a8739444..8b282184 100644
--- a/example/qml/App.qml
+++ b/example/qml/App.qml
@@ -21,6 +21,13 @@ Item {
}
}
+ Connections{
+ target: TranslateHelper
+ function onCurrentChanged(){
+ SettingsHelper.saveLanguage(TranslateHelper.current)
+ }
+ }
+
Component.onCompleted: {
FluNetwork.openLog = false
FluNetwork.setInterceptor(function(param){
@@ -37,6 +44,7 @@ Item {
"/login":"qrc:/example/qml/window/LoginWindow.qml",
"/hotload":"qrc:/example/qml/window/HotloadWindow.qml",
"/crash":"qrc:/example/qml/window/CrashWindow.qml",
+ "/fluentInitalizr":"qrc:/example/qml/window/FluentInitalizrWindow.qml",
"/singleTaskWindow":"qrc:/example/qml/window/SingleTaskWindow.qml",
"/standardWindow":"qrc:/example/qml/window/StandardWindow.qml",
"/singleInstanceWindow":"qrc:/example/qml/window/SingleInstanceWindow.qml",
diff --git a/example/qml/component/CodeExpander.qml b/example/qml/component/CodeExpander.qml
index 81fc1b45..24003a9f 100644
--- a/example/qml/component/CodeExpander.qml
+++ b/example/qml/component/CodeExpander.qml
@@ -8,7 +8,7 @@ FluExpander{
id:control
property string code: ""
- headerText: "Source"
+ headerText: qsTr("Source")
contentHeight:content.height
focus: false
@@ -34,7 +34,7 @@ FluExpander{
}
onClicked:{
FluTools.clipText(FluTools.html2PlantText(content.text))
- showSuccess("复制成功")
+ showSuccess(qsTr("The Copy is Successful"))
}
}
@@ -49,7 +49,6 @@ FluExpander{
}
function highlightQmlCode(code) {
- // 定义 QML 关键字列表
var qmlKeywords = [
"FluTextButton",
"FluAppBar",
diff --git a/example/qml/global/ItemsFooter.qml b/example/qml/global/ItemsFooter.qml
index 046e1be8..7b510e5f 100644
--- a/example/qml/global/ItemsFooter.qml
+++ b/example/qml/global/ItemsFooter.qml
@@ -13,7 +13,7 @@ FluObject{
FluPaneItemSeparator{}
FluPaneItem{
- title:Lang.about
+ title:qsTr("About")
icon:FluentIcons.Contact
onTapListener:function(){
FluApp.navigate("/about")
@@ -21,7 +21,7 @@ FluObject{
}
FluPaneItem{
- title:Lang.settings
+ title:qsTr("Settings")
menuDelegate: paneItemMenu
icon:FluentIcons.Settings
url:"qrc:/example/qml/page/T_Settings.qml"
diff --git a/example/qml/global/ItemsOriginal.qml b/example/qml/global/ItemsOriginal.qml
index 2dc61230..25f6fb2a 100644
--- a/example/qml/global/ItemsOriginal.qml
+++ b/example/qml/global/ItemsOriginal.qml
@@ -17,14 +17,14 @@ FluObject{
FluPaneItem{
id:item_home
count: 9
- title:Lang.home
+ title: qsTr("Home")
menuDelegate: paneItemMenu
- infoBadge:FluBadge{
+ infoBadge: FluBadge{
count: item_home.count
}
- icon:FluentIcons.Home
- url:"qrc:/example/qml/page/T_Home.qml"
- onTap:{
+ icon: FluentIcons.Home
+ url: "qrc:/example/qml/page/T_Home.qml"
+ onTap: {
if(navigationView.getCurrentUrl()){
item_home.count = 0
}
@@ -33,376 +33,376 @@ FluObject{
}
FluPaneItemExpander{
- title:"PaneItemExpander Disabled"
+ title: qsTr("PaneItemExpander Disabled")
iconVisible: false
disabled: true
}
FluPaneItemExpander{
- id:item_expander_basic_input
- title:Lang.basic_input
- icon:FluentIcons.CheckboxComposite
+ id: item_expander_basic_input
+ title: qsTr("Basic Input")
+ icon: FluentIcons.CheckboxComposite
FluPaneItem{
- id:item_buttons
+ id: item_buttons
count: 99
- infoBadge:FluBadge{
+ infoBadge: FluBadge{
count: item_buttons.count
}
- title:"Buttons"
+ title: qsTr("Buttons")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Button.png",recentlyUpdated:true,desc:"A control that responds to user input and raisesa Click event."})
- url:"qrc:/example/qml/page/T_Buttons.qml"
- onTap:{
+ extra: ({image:"qrc:/example/res/image/control/Button.png",recentlyUpdated:true,desc:qsTr("A control that responds to user input and raisesa Click event.")})
+ url: "qrc:/example/qml/page/T_Buttons.qml"
+ onTap: {
item_buttons.count = 0
navigationView.push(url)
}
}
FluPaneItem{
- id:item_text
- title:"Text"
+ id: item_text
+ title: qsTr("Text")
menuDelegate: paneItemMenu
count: 5
- infoBadge:FluBadge{
+ infoBadge: FluBadge{
count: item_text.count
color: Qt.rgba(82/255,196/255,26/255,1)
}
- url:"qrc:/example/qml/page/T_Text.qml"
- onTap:{
+ url: "qrc:/example/qml/page/T_Text.qml"
+ onTap: {
item_text.count = 0
navigationView.push(url)
}
}
FluPaneItem{
- title:"Image"
+ title: qsTr("Image")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Image.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Image.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Slider"
+ title: qsTr("Slider")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Slider.png",recentlyUpdated:true,desc:"A control that lets the user select from a rangeof values by moving a Thumb control along atrack."})
- url:"qrc:/example/qml/page/T_Slider.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/Slider.png",recentlyUpdated:true,desc:qsTr("A control that lets the user select from a rangeof values by moving a Thumb control along atrack.")})
+ url: "qrc:/example/qml/page/T_Slider.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"CheckBox"
+ title: qsTr("CheckBox")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Checkbox.png",recentlyUpdated:true,desc:"A control that a user can select or clear."})
- url:"qrc:/example/qml/page/T_CheckBox.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/Checkbox.png",recentlyUpdated:true,desc:qsTr("A control that a user can select or clear.")})
+ url: "qrc:/example/qml/page/T_CheckBox.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"RadioButton"
+ title: qsTr("RadioButton")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_RadioButton.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_RadioButton.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"ToggleSwitch"
+ title: qsTr("ToggleSwitch")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_ToggleSwitch.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_ToggleSwitch.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"PaneItem Disabled"
+ title: qsTr("PaneItem Disabled")
disabled: true
icon: FluentIcons.Error
}
}
FluPaneItemExpander{
- title:Lang.form
- icon:FluentIcons.GridView
- FluPaneItem{
- title:"TextBox"
+ title: qsTr("Form")
+ icon: FluentIcons.GridView
+ FluPaneItem {
+ title: qsTr("TextBox")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_TextBox.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_TextBox.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TimePicker"
+ title: qsTr("TimePicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_TimePicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_TimePicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"DatePicker"
+ title: qsTr("DatePicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_DatePicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_DatePicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"CalendarPicker"
+ title: qsTr("CalendarPicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_CalendarPicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_CalendarPicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"ColorPicker"
+ title: qsTr("ColorPicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_ColorPicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_ColorPicker.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"ShortcutPicker"
+ title: qsTr("ShortcutPicker")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_ShortcutPicker.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_ShortcutPicker.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.surface
- icon:FluentIcons.SurfaceHub
+ title: qsTr("Surface")
+ icon: FluentIcons.SurfaceHub
FluPaneItem{
- title:"InfoBar"
+ title: qsTr("InfoBar")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/InfoBar.png",recentlyUpdated:true,desc:"An inline message to display app-wide statuschange information."})
- url:"qrc:/example/qml/page/T_InfoBar.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/InfoBar.png",recentlyUpdated:true,desc:qsTr("An inline message to display app-wide statuschange information.")})
+ url: "qrc:/example/qml/page/T_InfoBar.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Progress"
+ title: qsTr("Progress")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Progress.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Progress.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"RatingControl"
+ title: qsTr("RatingControl")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_RatingControl.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_RatingControl.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Badge"
+ title: qsTr("Badge")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Badge.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Badge.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Rectangle"
+ title: qsTr("Rectangle")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Rectangle.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Rectangle.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Clip"
+ title: qsTr("Clip")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Clip.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Clip.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Carousel"
+ title: qsTr("Carousel")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Carousel.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Carousel.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Expander"
+ title: qsTr("Expander")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Expander.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Expander.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Watermark"
+ title: qsTr("Watermark")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Watermark.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Watermark.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.layout
- icon:FluentIcons.DockLeft
- FluPaneItem{
- title:"StaggeredLayout"
+ title: qsTr("Layout")
+ icon: FluentIcons.DockLeft
+ FluPaneItem {
+ title: qsTr("StaggeredLayout")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_StaggeredLayout.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_StaggeredLayout.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"SplitLayout"
+ title: qsTr("SplitLayout")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_SplitLayout.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_SplitLayout.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"StatusLayout"
+ title: qsTr("StatusLayout")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_StatusLayout.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_StatusLayout.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.popus
- icon:FluentIcons.ButtonMenu
+ title: qsTr("Popus")
+ icon: FluentIcons.ButtonMenu
FluPaneItem{
- title:"Dialog"
+ title: qsTr("Dialog")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Dialog.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Dialog.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- id:item_combobox
- title:"ComboBox"
+ id: item_combobox
+ title: qsTr("ComboBox")
menuDelegate: paneItemMenu
count: 9
infoBadge:FluBadge{
count: item_combobox.count
color: Qt.rgba(250/255,173/255,20/255,1)
}
- url:"qrc:/example/qml/page/T_ComboBox.qml"
- onTap:{
+ url: "qrc:/example/qml/page/T_ComboBox.qml"
+ onTap: {
item_combobox.count = 0
navigationView.push("qrc:/example/qml/page/T_ComboBox.qml")
}
}
FluPaneItem{
- title:"Tooltip"
+ title: qsTr("Tooltip")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Tooltip.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Tooltip.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Menu"
+ title: qsTr("Menu")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Menu.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Menu.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.navigation
- icon:FluentIcons.AllApps
+ title: qsTr("Navigation")
+ icon: FluentIcons.AllApps
FluPaneItem{
- title:"Pivot"
+ title: qsTr("Pivot")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/Pivot.png",order:3,recentlyAdded:true,desc:"Presents information from different sources in atabbed view."})
- url:"qrc:/example/qml/page/T_Pivot.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/Pivot.png",order:3,recentlyAdded:true,desc:qsTr("Presents information from different sources in a tabbed view.")})
+ url: "qrc:/example/qml/page/T_Pivot.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"BreadcrumbBar"
+ title: qsTr("BreadcrumbBar")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_BreadcrumbBar.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_BreadcrumbBar.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TabView"
+ title: qsTr("TabView")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/TabView.png",order:1,recentlyAdded:true,desc:"A control that displays a collection of tabs thatcan be used to display several documents."})
- url:"qrc:/example/qml/page/T_TabView.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/TabView.png",order:1,recentlyAdded:true,desc:qsTr("A control that displays a collection of tabs thatcan be used to display several documents.")})
+ url: "qrc:/example/qml/page/T_TabView.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TreeView"
+ title: qsTr("TreeView")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_TreeView.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_TreeView.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"TableView"
+ title: qsTr("TableView")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/DataGrid.png",order:4,recentlyAdded:true,desc:"The TableView control provides a flexible way to display a collection of data in rows and columns"})
- url:"qrc:/example/qml/page/T_TableView.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/DataGrid.png",order:4,recentlyAdded:true,desc:qsTr("The TableView control provides a flexible way to display a collection of data in rows and columns")})
+ url: "qrc:/example/qml/page/T_TableView.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Pagination"
+ title: qsTr("Pagination")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Pagination.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Pagination.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"MultiWindow"
+ title: qsTr("MultiWindow")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_MultiWindow.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_MultiWindow.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"FlipView"
+ title: qsTr("FlipView")
menuDelegate: paneItemMenu
- extra:({image:"qrc:/example/res/image/control/FlipView.png",order:2,recentlyAdded:true,desc:"Presents a collection of items that the user canflip through, one item at a time."})
- url:"qrc:/example/qml/page/T_FlipView.qml"
- onTap:{ navigationView.push(url) }
+ extra: ({image:"qrc:/example/res/image/control/FlipView.png",order:2,recentlyAdded:true,desc:qsTr("Presents a collection of items that the user canflip through, one item at a time.")})
+ url: "qrc:/example/qml/page/T_FlipView.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title:Lang.theming
+ title: qsTr("Theming")
icon:FluentIcons.Brightness
FluPaneItem{
- title:"Acrylic"
+ title: qsTr("Acrylic")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Acrylic.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Acrylic.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Theme"
+ title: qsTr("Theme")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Theme.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Theme.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Typography"
+ title: qsTr("Typography")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Typography.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Typography.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Awesome"
+ title: qsTr("Awesome")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Awesome.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Awesome.qml"
+ onTap: { navigationView.push(url) }
}
}
FluPaneItemExpander{
- title: Lang.chart
- icon:FluentIcons.AreaChart
+ title: qsTr("Chart")
+ icon: FluentIcons.AreaChart
FluPaneItem{
- title:Lang.bar_chart
+ title: qsTr("Bar Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_BarChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_BarChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.line_chart
+ title: qsTr("Line Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_LineChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_LineChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.pie_chart
+ title: qsTr("Pie Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_PieChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_PieChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.polar_area_chart
+ title: qsTr("Polar Area Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_PolarAreaChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_PolarAreaChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.bubble_chart
+ title: qsTr("Bubble Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_BubbleChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_BubbleChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.scatter_chart
+ title: qsTr("Scatter Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_ScatterChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_ScatterChart.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:Lang.radar_chart
+ title: qsTr("Radar Chart")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/chart/T_RadarChart.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/chart/T_RadarChart.qml"
+ onTap: { navigationView.push(url) }
}
}
@@ -412,67 +412,67 @@ FluObject{
}
FluPaneItemExpander{
- title:Lang.other
- icon:FluentIcons.Shop
+ title: qsTr("Other")
+ icon: FluentIcons.Shop
FluPaneItem{
- title:"QRCode"
+ title: qsTr("QRCode")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_QRCode.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_QRCode.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Tour"
+ title: qsTr("Tour")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Tour.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Tour.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Timeline"
+ title: qsTr("Timeline")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Timeline.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Timeline.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Captcha"
+ title: qsTr("Captcha")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Captcha.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Captcha.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Network"
+ title: qsTr("Network")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_Network.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_Network.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- id:item_other
- title:"RemoteLoader"
+ id: item_other
+ title: qsTr("Remote Loader")
menuDelegate: paneItemMenu
count: 99
infoBadge:FluBadge{
count: item_other.count
color: Qt.rgba(82/255,196/255,26/255,1)
}
- url:"qrc:/example/qml/page/T_RemoteLoader.qml"
- onTap:{
+ url: "qrc:/example/qml/page/T_RemoteLoader.qml"
+ onTap: {
item_other.count = 0
navigationView.push("qrc:/example/qml/page/T_RemoteLoader.qml")
}
}
FluPaneItem{
- title:"HotLoader"
- onTapListener:function(){
+ title: qsTr("Hot Loader")
+ onTapListener: function(){
FluApp.navigate("/hotload")
}
}
FluPaneItem{
- title:"3D"
+ title: qsTr("3D")
menuDelegate: paneItemMenu
- url:"qrc:/example/qml/page/T_3D.qml"
- onTap:{ navigationView.push(url) }
+ url: "qrc:/example/qml/page/T_3D.qml"
+ onTap: { navigationView.push(url) }
}
FluPaneItem{
- title:"Test Crash"
+ title: qsTr("Test Crash")
visible: FluTools.isWin()
onTapListener: function(){
AppInfo.testCrash()
diff --git a/example/qml/global/Lang.qml b/example/qml/global/Lang.qml
deleted file mode 100644
index 8db9cfc4..00000000
--- a/example/qml/global/Lang.qml
+++ /dev/null
@@ -1,104 +0,0 @@
-pragma Singleton
-
-import QtQuick 2.15
-
-QtObject {
-
- property string home
- property string basic_input
- property string form
- property string surface
- property string layout
- property string popus
- property string navigation
- property string theming
- property string media
- property string dark_mode
- property string sys_dark_mode
- property string search
- property string about
- property string settings
- property string locale
- property string navigation_view_display_mode
- property string other
- property string chart
- property string bar_chart
- property string line_chart
- property string pie_chart
- property string polar_area_chart
- property string bubble_chart
- property string scatter_chart
- property string radar_chart
-
- function zh(){
- home="首页"
- basic_input="基本输入"
- form="表单"
- surface="表面"
- layout="布局"
- popus="弹窗"
- navigation="导航"
- theming="主题"
- media="媒体"
- dark_mode="夜间模式"
- sys_dark_mode="跟随系统"
- search="查找"
- about="关于"
- settings="设置"
- locale="语言环境"
- navigation_view_display_mode="导航视图显示模式"
- other="其他"
- chart="表格"
- bar_chart="条形图"
- line_chart="折线图"
- pie_chart="饼图"
- polar_area_chart="极坐标区域图"
- bubble_chart="气泡图"
- scatter_chart="散点图"
- radar_chart="雷达图"
- }
-
- function en(){
- home="Home"
- basic_input="Basic Input"
- form="Form"
- surface="Surfaces"
- layout="Layout"
- popus="Popus"
- navigation="Navigation"
- theming="Theming"
- media="Media"
- dark_mode="Dark Mode"
- sys_dark_mode="Sync with system"
- search="Search"
- about="About"
- settings="Settings"
- locale="Locale"
- navigation_view_display_mode="NavigationView Display Mode"
- other="Other"
- chart="Chart"
- bar_chart="Bar Chart"
- line_chart="Line Chart"
- pie_chart="Pie Chart"
- polar_area_chart="Polar Area Chart"
- bubble_chart="Bubble Chart"
- scatter_chart="Scatter Chart"
- radar_chart="Radar Chart"
- }
-
- property string __locale
- property var __localeList: ["Zh","En"]
-
- on__LocaleChanged: {
- if(__locale === "Zh"){
- zh()
- }else{
- en()
- }
- }
-
- Component.onCompleted: {
- __locale = "En"
- }
-
-}
diff --git a/example/qml/global/qmldir b/example/qml/global/qmldir
index cc5287d7..eb6bfeaf 100644
--- a/example/qml/global/qmldir
+++ b/example/qml/global/qmldir
@@ -1,3 +1,2 @@
singleton ItemsOriginal 1.0 ItemsOriginal.qml
singleton ItemsFooter 1.0 ItemsFooter.qml
-singleton Lang 1.0 Lang.qml
diff --git a/example/qml/page/T_Acrylic.qml b/example/qml/page/T_Acrylic.qml
index 700d17e3..4e037f23 100644
--- a/example/qml/page/T_Acrylic.qml
+++ b/example/qml/page/T_Acrylic.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Acrylic"
+ title: qsTr("Acrylic")
RowLayout{
spacing: 10
diff --git a/example/qml/page/T_Awesome.qml b/example/qml/page/T_Awesome.qml
index 92ab874f..8d81181b 100644
--- a/example/qml/page/T_Awesome.qml
+++ b/example/qml/page/T_Awesome.qml
@@ -6,11 +6,11 @@ import FluentUI 1.0
FluContentPage {
- title:"Awesome"
+ title: qsTr("Awesome")
FluTextBox{
id:text_box
- placeholderText: "请输入关键字"
+ placeholderText: qsTr("Please enter a keyword")
anchors{
topMargin: 20
top:parent.top
@@ -18,7 +18,7 @@ FluContentPage {
}
FluFilledButton{
- text:"搜索"
+ text: qsTr("Search")
anchors{
left: text_box.right
verticalCenter: text_box.verticalCenter
@@ -53,7 +53,7 @@ FluContentPage {
onClicked: {
var text ="FluentIcons."+modelData.name;
FluTools.clipText(text)
- showSuccess("您复制了 "+text)
+ showSuccess(qsTr("You Copied ")+text)
}
}
FluText {
@@ -62,7 +62,7 @@ FluContentPage {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: item_icon.bottom
width:parent.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
text: modelData.name
horizontalAlignment: Text.AlignHCenter
}
diff --git a/example/qml/page/T_Badge.qml b/example/qml/page/T_Badge.qml
index 4ba4770e..3e205c25 100644
--- a/example/qml/page/T_Badge.qml
+++ b/example/qml/page/T_Badge.qml
@@ -7,12 +7,12 @@ import "../component"
FluScrollablePage{
- title:"Badge"
+ title: qsTr("Badge")
FluArea{
Layout.fillWidth: true
Layout.topMargin: 20
- height: 106
+ height: 120
paddings: 10
Column{
@@ -20,11 +20,13 @@ FluScrollablePage{
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
+ right: parent.right
}
FluText{
- text:"一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数"
+ wrapMode: Text.WordWrap
+ width: parent.width
+ text: qsTr("It usually appears in the upper right corner of the notification icon or avatar to display the number of messages that need to be processed")
}
-
Row{
spacing: 20
Rectangle{
diff --git a/example/qml/page/T_BreadcrumbBar.qml b/example/qml/page/T_BreadcrumbBar.qml
index 65ee1a19..947ea127 100644
--- a/example/qml/page/T_BreadcrumbBar.qml
+++ b/example/qml/page/T_BreadcrumbBar.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"BreadcurmbBar"
+ title: qsTr("BreadcurmbBar")
Component.onCompleted: {
var items = []
@@ -48,7 +48,7 @@ FluScrollablePage{
spacing: 10
FluFilledButton{
- text:"Reset sample"
+ text: qsTr("Reset sample")
onClicked:{
var items = []
for(var i=0;i<10;i++){
@@ -66,7 +66,6 @@ FluScrollablePage{
Layout.fillWidth: true
onClickItem:
(model)=>{
- //不是点击最后一个item元素
if(model.index+1!==count()){
breadcrumb_2.remove(model.index+1,count()-model.index-1)
}
diff --git a/example/qml/page/T_Buttons.qml b/example/qml/page/T_Buttons.qml
index ba6f6407..4c049ca3 100644
--- a/example/qml/page/T_Buttons.qml
+++ b/example/qml/page/T_Buttons.qml
@@ -7,11 +7,11 @@ import "../component"
FluScrollablePage{
- title:"Buttons"
+ title: qsTr("Buttons")
FluText{
Layout.topMargin: 20
- text:"支持Tab键切换焦点,空格键执行点击事件"
+ text: qsTr("Support the Tab key to switch focus, and the Space key to perform click events")
}
FluArea{
@@ -21,9 +21,8 @@ FluScrollablePage{
Layout.topMargin: 20
FluTextButton{
- disabled:text_button_switch.checked
- text:"Text Button"
- contentDescription: "文本按钮"
+ disabled: text_button_switch.checked
+ text: qsTr("Text Button")
onClicked: {
showInfo("点击Text Button")
}
@@ -33,12 +32,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:text_button_switch
+ id: text_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -59,10 +58,10 @@ FluScrollablePage{
Layout.topMargin: 20
FluButton{
- disabled:button_switch.checked
- text:"Standard Button"
+ disabled: button_switch.checked
+ text: qsTr("Standard Button")
onClicked: {
- showInfo("点击StandardButton")
+ showInfo(qsTr("Click StandardButton"))
}
anchors{
verticalCenter: parent.verticalCenter
@@ -70,12 +69,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:button_switch
+ id: button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -96,10 +95,10 @@ FluScrollablePage{
paddings: 10
FluFilledButton{
- disabled:filled_button_switch.checked
- text:"Filled Button"
+ disabled: filled_button_switch.checked
+ text: qsTr("Filled Button")
onClicked: {
- showWarning("点击FilledButton"+height)
+ showWarning(qsTr("Click FilledButton"))
}
anchors{
verticalCenter: parent.verticalCenter
@@ -107,12 +106,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:filled_button_switch
+ id: filled_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -134,19 +133,19 @@ FluScrollablePage{
FluToggleButton{
disabled:toggle_button_switch.checked
- text:"Toggle Button"
+ text: qsTr("Toggle Button")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
}
}
FluToggleSwitch{
- id:toggle_button_switch
+ id: toggle_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -161,7 +160,7 @@ FluScrollablePage{
}
Timer{
- id:timer_progress
+ id: timer_progress
interval: 200
onTriggered: {
btn_progress.progress = (btn_progress.progress + 0.1).toFixed(1)
@@ -180,9 +179,9 @@ FluScrollablePage{
paddings: 10
FluProgressButton{
- id:btn_progress
- disabled:progress_button_switch.checked
- text:"Progress Button"
+ id: btn_progress
+ disabled: progress_button_switch.checked
+ text: qsTr("Progress Button")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -193,12 +192,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:progress_button_switch
+ id: progress_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -219,9 +218,9 @@ FluScrollablePage{
paddings: 10
FluLoadingButton{
- id:btn_loading
- loading:loading_button_switch.checked
- text:"Loading Button"
+ id: btn_loading
+ loading: loading_button_switch.checked
+ text: qsTr("Loading Button")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -231,13 +230,13 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:loading_button_switch
+ id: loading_button_switch
checked: true
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Loading"
+ text: qsTr("Loading")
}
}
CodeExpander{
@@ -258,7 +257,7 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
Flow{
- id:layout_icon_button
+ id: layout_icon_button
spacing: 10
anchors{
verticalCenter: parent.verticalCenter
@@ -266,60 +265,60 @@ FluScrollablePage{
right: icon_button_switch.left
}
FluIconButton{
- disabled:icon_button_switch.checked
+ disabled: icon_button_switch.checked
iconDelegate: Image{ sourceSize: Qt.size(40,40) ; width: 20; height: 20; source: "qrc:/example/res/image/ic_home_github.png" }
onClicked:{
- showSuccess("点击IconButton")
+ showSuccess(qsTr("Click IconButton"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"IconOnly"
+ text: qsTr("IconOnly")
display: Button.IconOnly
onClicked:{
- showSuccess("Button.IconOnly")
+ showSuccess(qsTr("Button.IconOnly"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"TextOnly"
+ text: qsTr("TextOnly")
display: Button.TextOnly
onClicked:{
- showSuccess("Button.TextOnly")
+ showSuccess(qsTr("Button.TextOnly"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"TextBesideIcon"
+ text: qsTr("TextBesideIcon")
display: Button.TextBesideIcon
onClicked:{
- showSuccess("Button.TextBesideIcon")
+ showSuccess(qsTr("Button.TextBesideIcon"))
}
}
FluIconButton{
- iconSource:FluentIcons.ChromeCloseContrast
- disabled:icon_button_switch.checked
+ iconSource: FluentIcons.ChromeCloseContrast
+ disabled: icon_button_switch.checked
iconSize: 15
- text:"TextUnderIcon"
+ text: qsTr("TextUnderIcon")
display: Button.TextUnderIcon
onClicked:{
- showSuccess("Button.TextUnderIcon")
+ showSuccess(qsTr("Button.TextUnderIcon"))
}
}
}
FluToggleSwitch{
- id:icon_button_switch
+ id: icon_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -339,35 +338,35 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
FluDropDownButton{
- disabled:drop_down_button_switch.checked
- text:"DropDownButton"
+ disabled: drop_down_button_switch.checked
+ text: qsTr("DropDownButton")
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
}
FluMenuItem{
- text:"Menu_1"
+ text: qsTr("Menu_1")
}
FluMenuItem{
- text:"Menu_2"
+ text: qsTr("Menu_2")
}
FluMenuItem{
- text:"Menu_3"
+ text: qsTr("Menu_3")
}
FluMenuItem{
- text:"Menu_4"
+ text: qsTr("Menu_4")
onClicked: {
}
}
}
FluToggleSwitch{
- id:drop_down_button_switch
+ id: drop_down_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -403,24 +402,24 @@ FluScrollablePage{
}
FluRadioButton{
disabled:radio_button_switch.checked
- text:"Radio Button_1"
+ text: qsTr("Radio Button_1")
}
FluRadioButton{
disabled:radio_button_switch.checked
- text:"Radio Button_2"
+ text: qsTr("Radio Button_2")
}
FluRadioButton{
disabled:radio_button_switch.checked
- text:"Radio Button_3"
+ text: qsTr("Radio Button_3")
}
}
FluToggleSwitch{
- id:radio_button_switch
+ id: radio_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml/page/T_CalendarPicker.qml b/example/qml/page/T_CalendarPicker.qml
index 883db2f7..637ddc28 100644
--- a/example/qml/page/T_CalendarPicker.qml
+++ b/example/qml/page/T_CalendarPicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"CalendarPicker"
+ title: qsTr("CalendarPicker")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_Captcha.qml b/example/qml/page/T_Captcha.qml
index 31c3e9a2..2c520bc9 100644
--- a/example/qml/page/T_Captcha.qml
+++ b/example/qml/page/T_Captcha.qml
@@ -7,10 +7,10 @@ import "../component"
FluScrollablePage{
- title:"Captcha"
+ title: qsTr("Captcha")
FluCaptcha{
- id:captcha
+ id: captcha
Layout.topMargin: 20
ignoreCase:switch_case.checked
MouseArea{
@@ -23,7 +23,7 @@ FluScrollablePage{
}
FluButton{
- text:"Refresh"
+ text: qsTr("Refresh")
Layout.topMargin: 20
onClicked: {
captcha.refresh()
@@ -31,8 +31,8 @@ FluScrollablePage{
}
FluToggleSwitch{
- id:switch_case
- text:"Ignore Case"
+ id: switch_case
+ text: qsTr("Ignore Case")
checked: true
Layout.topMargin: 10
}
@@ -42,7 +42,7 @@ FluScrollablePage{
Layout.topMargin: 10
FluTextBox{
id:text_box
- placeholderText: "请输入验证码"
+ placeholderText: qsTr("Please enter a verification code")
Layout.preferredWidth: 240
}
FluButton{
@@ -50,9 +50,9 @@ FluScrollablePage{
onClicked: {
var success = captcha.verify(text_box.text)
if(success){
- showSuccess("验证码正确")
+ showSuccess(qsTr("The verification code is correct"))
}else{
- showError("错误验证,请重新输入")
+ showError(qsTr("Error validation, please re-enter"))
}
}
}
diff --git a/example/qml/page/T_Carousel.qml b/example/qml/page/T_Carousel.qml
index e3f7f3b7..f386085b 100644
--- a/example/qml/page/T_Carousel.qml
+++ b/example/qml/page/T_Carousel.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Carousel"
+ title: qsTr("Carousel")
ListModel{
id:data_model
@@ -34,7 +34,7 @@ FluScrollablePage{
left:parent.left
}
FluText{
- text:"轮播图,支持无限轮播,无限滑动,用ListView实现的组件"
+ text: qsTr("Carousel map, support infinite carousel, infinite swipe, and components implemented with ListView")
}
Item{
width: 400
diff --git a/example/qml/page/T_CheckBox.qml b/example/qml/page/T_CheckBox.qml
index cc35d4fa..3f6caf65 100644
--- a/example/qml/page/T_CheckBox.qml
+++ b/example/qml/page/T_CheckBox.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"CheckBox"
+ title: qsTr("CheckBox")
FluArea{
Layout.fillWidth: true
@@ -16,7 +16,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluText{
- text:"A 2-state CheckBox"
+ text: qsTr("A 2-state CheckBox")
}
Row{
@@ -30,11 +30,11 @@ FluScrollablePage{
}
FluCheckBox{
disabled: check_box_switch_two.checked
- text:"Right"
+ text: qsTr("Right")
}
FluCheckBox{
disabled: check_box_switch_two.checked
- text:"Left"
+ text: qsTr("Left")
textRight: false
}
}
@@ -44,7 +44,7 @@ FluScrollablePage{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -62,7 +62,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluText{
- text:"A 3-state CheckBox"
+ text: qsTr("A 3-state CheckBox")
}
Row{
@@ -73,7 +73,7 @@ FluScrollablePage{
}
FluCheckBox{
property int count: 1
- text:"Three State"
+ text: qsTr("Three State")
disabled: check_box_switch_three.checked
clickListener: function(){
var flag = count%3
@@ -94,12 +94,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:check_box_switch_three
+ id: check_box_switch_three
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml/page/T_Clip.qml b/example/qml/page/T_Clip.qml
index 166ae6ad..00f2d2e2 100644
--- a/example/qml/page/T_Clip.qml
+++ b/example/qml/page/T_Clip.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Clip"
+ title: qsTr("Clip")
FluArea{
Layout.fillWidth: true
@@ -22,8 +22,7 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"配合图片使用(software渲染下该组件将没有效果)"
- font: FluTextStyle.Subtitle
+ text: qsTr("Use with images (this component will have no effect under software rendering)")
Layout.topMargin: 20
}
RowLayout{
@@ -31,7 +30,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[25,0,25,25]
+ radius: [25,0,25,25]
Image {
asynchronous: true
anchors.fill: parent
@@ -42,7 +41,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[10,10,10,10]
+ radius: [10,10,10,10]
Image {
asynchronous: true
anchors.fill: parent
@@ -53,7 +52,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[25,25,25,25]
+ radius: [25,25,25,25]
Image {
asynchronous: true
anchors.fill: parent
@@ -64,7 +63,7 @@ FluScrollablePage{
FluClip{
width: 50
height: 50
- radius:[0,25,25,25]
+ radius: [0,25,25,25]
Image {
asynchronous: true
anchors.fill: parent
@@ -76,7 +75,7 @@ FluScrollablePage{
FluClip{
width: 1920/5
height: 1200/5
- radius:[8,8,8,8]
+ radius: [8,8,8,8]
Image {
asynchronous: true
source: "qrc:/example/res/image/banner_1.jpg"
diff --git a/example/qml/page/T_ColorPicker.qml b/example/qml/page/T_ColorPicker.qml
index 69bb9f50..8833a005 100644
--- a/example/qml/page/T_ColorPicker.qml
+++ b/example/qml/page/T_ColorPicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ColorPicker"
+ title: qsTr("ColorPicker")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_ComboBox.qml b/example/qml/page/T_ComboBox.qml
index 21bd835b..d546672b 100644
--- a/example/qml/page/T_ComboBox.qml
+++ b/example/qml/page/T_ComboBox.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ComboBox"
+ title: qsTr("ComboBox")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_DatePicker.qml b/example/qml/page/T_DatePicker.qml
index 5243e565..b193c9ca 100644
--- a/example/qml/page/T_DatePicker.qml
+++ b/example/qml/page/T_DatePicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"TimePicker"
+ title: qsTr("TimePicker")
FluArea{
Layout.fillWidth: true
@@ -20,10 +20,15 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"showYear=true"
+ text: qsTr("showYear=true")
}
FluDatePicker{
current: new Date()
+ yearText: qsTr("Year")
+ monthText: qsTr("Month")
+ dayText: qsTr("Day")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleDateString())
}
@@ -49,10 +54,15 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"showYear=false"
+ text: qsTr("showYear=false")
}
FluDatePicker{
- showYear:false
+ showYear: false
+ yearText: qsTr("Year")
+ monthText: qsTr("Month")
+ dayText: qsTr("Day")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleDateString())
}
diff --git a/example/qml/page/T_Dialog.qml b/example/qml/page/T_Dialog.qml
index 1e41c0fe..6df1221b 100644
--- a/example/qml/page/T_Dialog.qml
+++ b/example/qml/page/T_Dialog.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Dialog"
+ title: qsTr("Dialog")
FluArea{
Layout.fillWidth: true
@@ -16,7 +16,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluButton{
anchors.verticalCenter: parent.verticalCenter
- text:"Show Double Button Dialog"
+ text: qsTr("Show Double Button Dialog")
onClicked: {
double_btn_dialog.open()
}
@@ -27,16 +27,16 @@ FluScrollablePage{
Layout.topMargin: -1
code:'FluContentDialog{
id:dialog
- title:"友情提示"
- message:"确定要退出程序么?"
- negativeText:"取消"
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
+ negativeText: qsTr("Cancel")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
onNegativeClicked:{
- showSuccess("点击取消按钮")
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
+ positiveText: qsTr("OK")
onPositiveClicked:{
- showSuccess("点击确定按钮")
+ showSuccess(qsTr("Click the OK Button"))
}
}
dialog.open()'
@@ -44,16 +44,16 @@ FluScrollablePage{
FluContentDialog{
id:double_btn_dialog
- title:"友情提示"
- message:"确定要退出程序么?"
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText:"取消"
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ negativeText: qsTr("Cancel")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
+ positiveText: qsTr("OK")
onPositiveClicked:{
- showSuccess("点击确定按钮")
+ showSuccess(qsTr("Click the OK Button"))
}
}
@@ -74,43 +74,43 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluContentDialog{
- id:dialog
- title:"友情提示"
- message:"确定要退出程序么?"
- negativeText:"取消"
+ id: dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
+ negativeText: qsTr("Cancel")
buttonFlags: FluContentDialogType.NeutralButton | FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText:"取消"
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ negativeText: qsTr("Cancel")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
- neutralText:"最小化"
- onNeutralClicked:{
- showSuccess("点击最小化按钮")
+ neutralText: qsTr("Minimize")
+ onNeutralClicked: {
+ showSuccess(qsTr("Click Minimize"))
}
}
dialog.open()'
}
FluContentDialog{
- id:triple_btn_dialog
- title:"友情提示"
- message:"确定要退出程序么?"
+ id: triple_btn_dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Are you sure you want to opt out?")
buttonFlags: FluContentDialogType.NeutralButton | FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText:"取消"
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ negativeText: qsTr("Cancel")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
- neutralText:"最小化"
- onNeutralClicked:{
- showSuccess("点击最小化按钮")
+ neutralText: qsTr("Minimize")
+ onNeutralClicked: {
+ showSuccess(qsTr("Click Minimize"))
}
}
@@ -122,7 +122,7 @@ FluScrollablePage{
FluButton{
anchors.top: parent.top
anchors.topMargin: 5
- text:"Custom Content Dialog"
+ text: qsTr("Custom Content Dialog")
onClicked: {
custom_btn_dialog.open()
}
@@ -130,7 +130,7 @@ FluScrollablePage{
FluButton{
anchors.top: parent.top
anchors.topMargin: 48
- text:"Custom Content Dialog2"
+ text: qsTr("Custom Content Dialog2")
onClicked: {
custom_btn_dialog2.open()
}
@@ -140,10 +140,10 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluContentDialog{
- id:dialog
- title:"友情提示"
- message:"数据正在加载中,请稍等..."
- negativeText:"取消加载"
+ id: dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Data is loading, please wait...")
+ negativeText: qsTr("Unload")
contentDelegate: Component{
Item{
width: parent.width
@@ -153,22 +153,22 @@ FluScrollablePage{
}
}
}
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText :qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
}
dialog.open()'
}
FluContentDialog{
- id:custom_btn_dialog
- title:"友情提示"
- message:"数据正在加载中,请稍等..."
- negativeText:"取消加载"
+ id: custom_btn_dialog
+ title: qsTr("Friendly Reminder")
+ message: qsTr("Data is loading, please wait...")
+ negativeText: qsTr("Unload")
contentDelegate: Component{
Item{
implicitWidth: parent.width
@@ -178,18 +178,18 @@ FluScrollablePage{
}
}
}
- onNegativeClicked:{
- showSuccess("点击取消按钮")
+ onNegativeClicked: {
+ showSuccess(qsTr("Click the Cancel Button"))
}
- positiveText:"确定"
- onPositiveClickListener:function(){
- showError("测试InfoBar层级在Popup之上")
+ positiveText: qsTr("OK")
+ onPositiveClickListener: function(){
+ showError(qsTr("Test the InfoBar level on top of the Popup"))
}
}
FluContentDialog{
id:custom_btn_dialog2
- title:"折线图"
+ title: qsTr("Line Chart")
contentDelegate: Component{
Item{
implicitWidth: parent.width
@@ -224,9 +224,9 @@ FluScrollablePage{
}
}
buttonFlags: FluContentDialogType.PositiveButton
- positiveText:"确定"
- onPositiveClicked:{
- showSuccess("点击确定按钮")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
+ showSuccess(qsTr("Click the OK Button"))
}
}
}
diff --git a/example/qml/page/T_Expander.qml b/example/qml/page/T_Expander.qml
index 066fd48a..ebe727c2 100644
--- a/example/qml/page/T_Expander.qml
+++ b/example/qml/page/T_Expander.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Expander"
+ title: qsTr("Expander")
FluArea{
Layout.fillWidth: true
@@ -23,7 +23,7 @@ FluScrollablePage{
}
FluExpander{
- headerText:"打开一个单选框"
+ headerText: qsTr("Open a radio box")
Layout.topMargin: 20
Item{
anchors.fill: parent
@@ -50,7 +50,7 @@ FluScrollablePage{
FluExpander{
Layout.topMargin: 20
- headerText:"打开一个滑动文本框"
+ headerText: qsTr("Open a sliding text box")
Item{
anchors.fill: parent
Flickable{
@@ -64,9 +64,16 @@ FluScrollablePage{
FluText{
id:text_info
width: scrollview.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 14
- text:"先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。"
+ text: qsTr("Permit me to observe: the late emperor was taken from us before he could finish his life`s work, the restoration of Han. Today, the empire is still divided in three, and our very survival is threatened. Yet still the officials at court and the soldiers throughout the realm remain loyal to you, your majesty. Because they remember the late emperor, all of them, and they wish to repay his kindness in service to you. This is the moment to extend your divine influence, to honour the memory of the late Emperor and strengthen the morale of your officers. It is not time to listen to bad advice, or close your ears to the suggestions of loyal men.
+The court and the administration are as one. Both must be judged by one standard. Those who are loyal and good must get what they deserve, but so must the evil-doers who break the law. This will demonstrate the justice of your rule. There cannot be one law for the court and another for the administration.
+Counselors and attendants like Guo Youzhi, Fei Yi, and Dong Yun are all reliable men, loyal of purpose and pure in motive. The late Emperor selected them for office so that they would serve you after his death.These are the men who should be consulted on all palace affairs. Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+Xiang Chong has proved himself a fine general in battle, and the late Emperor believed in him. That is why the assembly has recommended him for overall command. It will keep the troops happy if he is consulted on all military matters.
+The emperors of the Western Han chose their courtiers wisely, and their dynasty flourished. The emperors of the Eastern Han chose poorly, and they doomed the empire to ruin. Whenever the late Emperor discussed this problem with me, he lamented the failings of Emperors Huan and Ling. Advisors like Guo Youzhi, Fei Yi, Chen Zhen, Zhang Yi, and Jiang Wan – these are all men of great integrity and devotion. I encourage you to trust them, your majesty, if the house of Han is to rise again.
+I begin as a common man, farming in my fields in Nanyang, doing what I could to survive in an age of chaos. I never had any interest in making a name for myself as a noble. The late Emperor was not ashamed to visit my cottage and seek my advice. Grateful for his regard, I responded to his appeal and threw myself into his service. Now twenty-one years has passed, the late Emperor always appreciated my caution and, in his final days, entrusted me with his cause.
+Since that moment, I have been tormented day and night by the fear that I might let him down. That is why I crossed the Lu river at the height of summer, and entered the wastelands beyond. Now the south has been subdued, and our forces are fully armed.I should lead our soldiers to conquer the northern heartland and attempt to remove the hateful traitors, restore the house of Han, and return it to the former capital.This the way I mean to honor my debt to the late Emperor and fulfill my duty to you. Guo Youzhi, Fei Yi, and Dong Yun are the ones who should be making policy decisions and recommendations.
+My only desire is to be permitted to drive out the traitors and restore the Han. If I should let you down, punish my offense and report it to the spirit of the late Emperor. If those three advisors should fail in their duties, then they should be punished for their negligence.Your Majesty, consider your course of action carefully. Seek out good advice, and never forget the late Emperor. I depart now on a long expedition, and I will be forever grateful if you heed my advice. Blinded by my own tears, I know not what I write.")
}
}
}
@@ -78,7 +85,7 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluExpander{
- headerText:"打开一个单选框"
+ headerText: qsTr("Open a radio box")
Item{
anchors.fill: parent
Flickable{
@@ -90,9 +97,9 @@ FluScrollablePage{
FluText{
id:text_info
width: scrollview.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 14
- text:"先帝创业未半而中道崩殂,今天下三分......""
+ text: qsTr("Permit me to observe: the late emperor was taken from us before he could finish his life`s work...")
}
}
}
diff --git a/example/qml/page/T_FlipView.qml b/example/qml/page/T_FlipView.qml
index 116d5904..26d35350 100644
--- a/example/qml/page/T_FlipView.qml
+++ b/example/qml/page/T_FlipView.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"FlipView"
+ title: qsTr("FlipView")
FluArea{
Layout.fillWidth: true
@@ -17,7 +17,7 @@ FluScrollablePage{
ColumnLayout{
anchors.verticalCenter: parent.verticalCenter
FluText{
- text:"水平方向的FlipView"
+ text: qsTr("Horizontal FlipView")
}
FluFlipView{
Image{
@@ -69,7 +69,7 @@ FluScrollablePage{
ColumnLayout{
anchors.verticalCenter: parent.verticalCenter
FluText{
- text:"垂直方向的FlipView"
+ text: qsTr("Vertical FlipView")
}
FluFlipView{
vertical:true
diff --git a/example/qml/page/T_Home.qml b/example/qml/page/T_Home.qml
index 809faeab..6c7ac4b7 100644
--- a/example/qml/page/T_Home.qml
+++ b/example/qml/page/T_Home.qml
@@ -11,12 +11,24 @@ FluScrollablePage{
animDisabled: true
ListModel{
- id:model_header
+ id: model_header
ListElement{
- icon:"qrc:/example/res/image/ic_home_github.png"
- title:"FluentUI GitHub"
- desc:"The latest FluentUI controls and styles for your applications."
- url:"https://github.com/zhuzichu520/FluentUI"
+ icon: "qrc:/example/res/image/ic_home_github.png"
+ title: qsTr("FluentUI GitHub")
+ desc: qsTr("The latest FluentUI controls and styles for your applications.")
+ url: "https://github.com/zhuzichu520/FluentUI"
+ clicked: function(model){
+ Qt.openUrlExternally(model.url)
+ }
+ }
+ ListElement{
+ icon: "qrc:/example/res/image/favicon.ico"
+ title: qsTr("FluentUI Initalizr")
+ desc: qsTr("FluentUI Initializr is a FluentUI tool that helps you create and customize Fluent UI projects with various options.")
+ url: "https://github.com/zhuzichu520/FluentUI"
+ clicked: function(model){
+ FluApp.navigate("/fluentInitalizr")
+ }
}
}
@@ -106,7 +118,7 @@ FluScrollablePage{
Layout.leftMargin: 20
color: FluColors.Grey120
font.pixelSize: 12
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
}
}
FluIcon{
@@ -129,7 +141,7 @@ FluScrollablePage{
else scrollbar_header.increase()
}
onClicked: {
- Qt.openUrlExternally(model.url)
+ model.clicked(model)
}
}
}
@@ -202,7 +214,7 @@ FluScrollablePage{
id:item_desc
text:desc
color:FluColors.Grey120
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
elide: Text.ElideRight
font: FluTextStyle.Caption
maximumLineCount: 2
@@ -275,3 +287,4 @@ FluScrollablePage{
}
}
+
diff --git a/example/qml/page/T_Image.qml b/example/qml/page/T_Image.qml
index 0ada284e..e66f77f8 100644
--- a/example/qml/page/T_Image.qml
+++ b/example/qml/page/T_Image.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Image"
+ title: qsTr("Image")
FluArea{
Layout.fillWidth: true
@@ -24,9 +24,10 @@ FluScrollablePage{
width: 384
height: 240
source: "https://gitee.com/zhu-zichu/zhu-zichu/raw/74f075efe2f8d3c3bb7ba3c2259e403450e4050b/image/banner_4.jpg"
+ errorButtonText: qsTr("Reload")
onStatusChanged:{
if(status === Image.Error){
- showError("图片加载失败,请重新加载")
+ showError(qsTr("The image failed to load, please reload"))
}
}
clickErrorListener: function(){
diff --git a/example/qml/page/T_InfoBar.qml b/example/qml/page/T_InfoBar.qml
index 6a3cce53..f91c1bd1 100644
--- a/example/qml/page/T_InfoBar.qml
+++ b/example/qml/page/T_InfoBar.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"InfoBar"
+ title: qsTr("InfoBar")
FluArea{
Layout.fillWidth: true
@@ -21,39 +21,39 @@ FluScrollablePage{
left: parent.left
}
FluButton{
- text:"Info"
+ text: qsTr("Info")
onClicked: {
- showInfo("这是一个Info样式的InfoBar")
+ showInfo(qsTr("This is an InfoBar in the Info Style"))
}
}
FluButton{
- text:"Warning"
+ text: qsTr("Warning")
onClicked: {
- showWarning("这是一个Warning样式的InfoBar")
+ showWarning(qsTr("This is an InfoBar in the Warning Style"))
}
}
FluButton{
text:"Error"
onClicked: {
- showError("这是一个Error样式的InfoBar")
+ showError(qsTr("This is an InfoBar in the Error Style"))
}
}
FluButton{
text:"Success"
onClicked: {
- showSuccess("这是一个Success样式的InfoBar")
+ showSuccess(qsTr("This is an InfoBar in the Success Style"))
}
}
FluButton{
- text:"手动关闭的InfoBar"
+ text: qsTr("InfoBar that needs to be turned off manually")
onClicked: {
- showInfo("这是一个Info样式的InfoBar",0,"支持手动关闭")
+ showInfo("This is an InfoBar in the Info Style",0,"Manual shutdown is supported")
}
}
FluButton{
text:"Loading"
onClicked: {
- showLoading()
+ showLoading(qsTr("Loading..."))
}
}
}
@@ -61,12 +61,12 @@ FluScrollablePage{
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
- code:'showInfo("这是一个Info样式的InfoBar")
+ code:'showInfo(qsTr("This is an InfoBar in the Info Style"))
-showWarning("这是一个Warning样式的InfoBar")
+showWarning(qsTr("This is an InfoBar in the Warning Style"))
-showError("这是一个Error样式的InfoBar")
+showError(qsTr("This is an InfoBar in the Error Style"))
-showSuccess("这是一个Success样式的InfoBar这是一个Success样式的InfoBar")'
+showSuccess(qsTr("This is an InfoBar in the Success Style"))'
}
}
diff --git a/example/qml/page/T_Menu.qml b/example/qml/page/T_Menu.qml
index dc0545ea..e98dfcfe 100644
--- a/example/qml/page/T_Menu.qml
+++ b/example/qml/page/T_Menu.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Menu"
+ title: qsTr("Menu")
FluMenu {
id:menu
@@ -34,13 +34,13 @@ FluScrollablePage{
text: qsTr("Disable")
enabled:false
onTriggered: {
- showError("Disable")
+ showError(qsTr("Disable"))
}
}
FluMenuSeparator { }
Action { text: qsTr("Check");checkable: true;checked: true}
FluMenu{
- title: "Save As..."
+ title: qsTr("Save As...")
Action { text: qsTr("Doc") }
Action { text: qsTr("PDF") }
}
@@ -53,7 +53,7 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
Column{
- id:layout_column
+ id: layout_column
spacing: 15
anchors{
verticalCenter: parent.verticalCenter
@@ -61,11 +61,11 @@ FluScrollablePage{
}
FluText{
- text:"Menu"
+ text: qsTr("Menu")
}
FluButton{
- text:"Show Menu Popup"
+ text: qsTr("Show Menu Popup")
Layout.topMargin: 20
onClicked:{
menu.popup()
@@ -112,7 +112,7 @@ menu.popup()
}
FluText{
- text:"MenuBar"
+ text: qsTr("MenuBar")
}
FluMenuBar {
@@ -129,7 +129,7 @@ menu.popup()
enabled:false
}
FluMenu{
- title: "Save As..."
+ title: qsTr("Save As...")
Action { text: qsTr("Doc") }
Action { text: qsTr("PDF") }
}
@@ -168,8 +168,4 @@ menu.popup()
menu.popup()
'
}
-
-
-
-
}
diff --git a/example/qml/page/T_MultiWindow.qml b/example/qml/page/T_MultiWindow.qml
index 4a16d532..cdde41c2 100644
--- a/example/qml/page/T_MultiWindow.qml
+++ b/example/qml/page/T_MultiWindow.qml
@@ -10,7 +10,7 @@ FluScrollablePage{
property string password: ""
property var loginPageRegister: registerForWindowResult("/login")
- title:"MultiWindow"
+ title: qsTr("MultiWindow")
Connections{
target: loginPageRegister
@@ -32,10 +32,10 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"Standard模式窗口,每次都会创建新窗口"
+ text: qsTr("Standard mode window,a new window is created every time")
}
FluButton{
- text:"点击创建窗口"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/standardWindow")
}
@@ -55,11 +55,11 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"SingleTask模式窗口,如果窗口存在,这激活该窗口"
+ text: qsTr("SingleTask mode window,If a window exists, this activates the window")
textFormat: Text.RichText
}
FluButton{
- text:"点击创建窗口"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/singleTaskWindow")
}
@@ -79,10 +79,10 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"SingleInstance模式窗口,如果窗口存在,则销毁窗口,然后新建窗口"
+ text: qsTr("SingleInstance mode window,If the window exists, destroy the window and create a new window")
}
FluButton{
- text:"点击创建窗口"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/singleInstanceWindow")
}
@@ -113,10 +113,10 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"页面跳转,不携带任何参数"
+ text: qsTr("Create the window without carrying any parameters")
}
FluButton{
- text:"点击跳转"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/about")
}
@@ -127,7 +127,7 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluButton{
- text:"点击跳转"
+ text: qsTr("Create Window")
onClicked: {
FluApp.navigate("/about")
}
@@ -148,16 +148,16 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"页面跳转,并携带参数用户名:zhuzichu"
+ text: qsTr("Create a window with the parameter username: zhuzichu")
}
FluButton{
- text:"点击跳转到登录"
+ text: qsTr("Create Window")
onClicked: {
loginPageRegister.launch({username:"zhuzichu"})
}
}
FluText{
- text:"登录窗口返回过来的密码->"+password
+ text:qsTr("Login Window Returned Password - >")+password
}
}
}
@@ -175,7 +175,7 @@ Connections{
}
FluButton{
- text:"点击跳转"
+ text: qsTr("Create Window")
onClicked: {
loginPageRegister.launch({username:"zhuzichu"})
}
diff --git a/example/qml/page/T_Network.qml b/example/qml/page/T_Network.qml
index 7742162e..ce39a37d 100644
--- a/example/qml/page/T_Network.qml
+++ b/example/qml/page/T_Network.qml
@@ -552,7 +552,7 @@ FluContentPage{
FluText{
id:text_info
width: scrollview.width
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 14
}
}
diff --git a/example/qml/page/T_Pagination.qml b/example/qml/page/T_Pagination.qml
index b029d0ba..52e2d9f2 100644
--- a/example/qml/page/T_Pagination.qml
+++ b/example/qml/page/T_Pagination.qml
@@ -7,7 +7,7 @@ import FluentUI 1.0
FluScrollablePage{
- title:"Pagination"
+ title: qsTr("Pagination")
FluArea{
Layout.fillWidth: true
@@ -21,16 +21,22 @@ FluScrollablePage{
pageCurrent: 1
pageButtonCount: 5
itemCount: 5000
+ previousText: qsTr("")
}
FluPagination{
pageCurrent: 2
itemCount: 5000
pageButtonCount: 7
+ previousText: qsTr("")
}
FluPagination{
pageCurrent: 3
itemCount: 5000
pageButtonCount: 9
+ previousText: qsTr("")
}
}
diff --git a/example/qml/page/T_Pivot.qml b/example/qml/page/T_Pivot.qml
index cbfeb8d7..c2c15c84 100644
--- a/example/qml/page/T_Pivot.qml
+++ b/example/qml/page/T_Pivot.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Pivot"
+ title: qsTr("Pivot")
FluArea{
Layout.fillWidth: true
@@ -22,27 +22,27 @@ FluScrollablePage{
currentIndex: 2
FluPivotItem{
- title:"All"
+ title: qsTr("All")
contentItem:FluText{
- text:"All emails go here."
+ text: qsTr("All emails go here.")
}
}
FluPivotItem{
- title:"Unread"
- contentItem:FluText{
- text:"Unread emails go here."
+ title: qsTr("Unread")
+ contentItem: FluText{
+ text: qsTr("Unread emails go here.")
}
}
FluPivotItem{
- title:"Flagged"
- contentItem:FluText{
- text:"Flagged emails go here."
+ title: qsTr("Flagged")
+ contentItem: FluText{
+ text: qsTr("Flagged emails go here.")
}
}
FluPivotItem{
- title:"Urgent"
- contentItem:FluText{
- text:"Urgent emails go here."
+ title: qsTr("Urgent")
+ contentItem: FluText{
+ text: qsTr("Urgent emails go here.")
}
}
}
@@ -53,27 +53,27 @@ FluScrollablePage{
code:'FluPivot{
anchors.fill: parent
FluPivotItem:{
- text:"All"
+ text: qsTr("All")
contentItem: FluText{
- text:"All emails go here."
+ text: qsTr("All emails go here.")
}
}
FluPivotItem:{
- text:"Unread"
+ text: qsTr("Unread")
contentItem: FluText{
- text:"Unread emails go here."
+ text: qsTr("Unread emails go here.")
}
}
FluPivotItem:{
- text:"Flagged"
+ text: qsTr("Flagged")
contentItem: FluText{
- text:"Flagged emails go here."
+ text: qsTr("Flagged emails go here.")
}
}
FluPivotItem:{
- text:"Urgent"
+ text: qsTr("Urgent")
contentItem: FluText{
- text:"Urgent emails go here."
+ text: qsTr("Urgent emails go here.")
}
}
}
diff --git a/example/qml/page/T_Progress.qml b/example/qml/page/T_Progress.qml
index 2aefe9cf..bf175b9b 100644
--- a/example/qml/page/T_Progress.qml
+++ b/example/qml/page/T_Progress.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Progress"
+ title: qsTr("Progress")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_QRCode.qml b/example/qml/page/T_QRCode.qml
index 00b38b22..1afff6af 100644
--- a/example/qml/page/T_QRCode.qml
+++ b/example/qml/page/T_QRCode.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"QRCode"
+ title: qsTr("QRCode")
FluQRCode{
id:qrcode
diff --git a/example/qml/page/T_RadioButton.qml b/example/qml/page/T_RadioButton.qml
index 4e30ce00..8af2a0fe 100644
--- a/example/qml/page/T_RadioButton.qml
+++ b/example/qml/page/T_RadioButton.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"RadioButton"
+ title: qsTr("RadioButton")
FluArea{
Layout.fillWidth: true
@@ -22,21 +22,21 @@ FluScrollablePage{
}
FluRadioButton{
disabled: radio_button_switch.checked
- text:"Right"
+ text: qsTr("Right")
}
FluRadioButton{
disabled: radio_button_switch.checked
- text:"Left"
+ text: qsTr("Left")
textRight: false
}
}
FluToggleSwitch{
- id:radio_button_switch
+ id: radio_button_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
@@ -61,24 +61,24 @@ FluScrollablePage{
}
FluRadioButton{
disabled: radio_button_switch2.checked
- text:"Radio Button_1"
+ text: qsTr("Radio Button_1")
}
FluRadioButton{
disabled: radio_button_switch2.checked
- text:"Radio Button_2"
+ text: qsTr("Radio Button_2")
}
FluRadioButton{
disabled: radio_button_switch2.checked
- text:"Radio Button_3"
+ text: qsTr("Radio Button_3")
}
}
FluToggleSwitch{
- id:radio_button_switch2
+ id: radio_button_switch2
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml/page/T_RatingControl.qml b/example/qml/page/T_RatingControl.qml
index 86d29e96..6ea00725 100644
--- a/example/qml/page/T_RatingControl.qml
+++ b/example/qml/page/T_RatingControl.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage {
- title: "RatingControl"
+ title: qsTr("RatingControl")
FluArea {
Layout.fillWidth: true
diff --git a/example/qml/page/T_Rectangle.qml b/example/qml/page/T_Rectangle.qml
index 8b6c9f7f..f9219c78 100644
--- a/example/qml/page/T_Rectangle.qml
+++ b/example/qml/page/T_Rectangle.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Rectangle"
+ title: qsTr("Rectangle")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_Settings.qml b/example/qml/page/T_Settings.qml
index ede7ca10..85e93fab 100644
--- a/example/qml/page/T_Settings.qml
+++ b/example/qml/page/T_Settings.qml
@@ -9,7 +9,7 @@ import "../global"
FluScrollablePage{
- title:"Settings"
+ title: qsTr("Settings")
SettingsViewModel{
id:viewmodel_settings
@@ -40,13 +40,13 @@ FluScrollablePage{
spacing: 20
anchors.verticalCenter: parent.verticalCenter
FluText{
- text:"当前版本 v%1".arg(AppInfo.version)
+ text: "%1 v%2".arg(qsTr("Current Version")).arg(AppInfo.version)
font: FluTextStyle.Body
anchors.verticalCenter: parent.verticalCenter
}
FluLoadingButton{
- id:btn_checkupdate
- text:"检查更新"
+ id: btn_checkupdate
+ text: qsTr("Check for Updates")
anchors.verticalCenter: parent.verticalCenter
onClicked: {
loading = true
@@ -62,7 +62,7 @@ FluScrollablePage{
height: 50
paddings: 10
FluCheckBox{
- text:"Use System AppBar"
+ text: qsTr("Use System AppBar")
checked: FluApp.useSystemAppBar
anchors.verticalCenter: parent.verticalCenter
onClicked: {
@@ -78,7 +78,7 @@ FluScrollablePage{
height: 50
paddings: 10
FluCheckBox{
- text:"fitsAppBarWindows"
+ text:qsTr("Fits AppBar Windows")
checked: window.fitsAppBarWindows
anchors.verticalCenter: parent.verticalCenter
onClicked: {
@@ -88,13 +88,13 @@ FluScrollablePage{
}
FluContentDialog{
- id:dialog_restart
- title:"友情提示"
- message:"此操作需要重启才能生效,是否重新启动?"
+ id: dialog_restart
+ title: qsTr("Friendly Reminder")
+ message: qsTr("This action requires a restart of the program to take effect, is it restarted?")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText: "取消"
- positiveText:"确定"
- onPositiveClicked:{
+ negativeText: qsTr("Cancel")
+ positiveText: qsTr("OK")
+ onPositiveClicked: {
FluApp.exit(931)
}
}
@@ -112,13 +112,13 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:Lang.dark_mode
+ text: qsTr("Dark Mode")
font: FluTextStyle.BodyStrong
Layout.bottomMargin: 4
}
Repeater{
- model: [{title:"System",mode:FluThemeType.System},{title:"Light",mode:FluThemeType.Light},{title:"Dark",mode:FluThemeType.Dark}]
- delegate: FluRadioButton{
+ model: [{title:qsTr("System"),mode:FluThemeType.System},{title:qsTr("Light"),mode:FluThemeType.Light},{title:qsTr("Dark"),mode:FluThemeType.Dark}]
+ delegate: FluRadioButton{
checked : FluTheme.darkMode === modelData.mode
text:modelData.title
clickListener:function(){
@@ -142,12 +142,12 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:Lang.navigation_view_display_mode
+ text:qsTr("Navigation View Display Mode")
font: FluTextStyle.BodyStrong
Layout.bottomMargin: 4
}
Repeater{
- model: [{title:"Open",mode:FluNavigationViewType.Open},{title:"Compact",mode:FluNavigationViewType.Compact},{title:"Minimal",mode:FluNavigationViewType.Minimal},{title:"Auto",mode:FluNavigationViewType.Auto}]
+ model: [{title:qsTr("Open"),mode:FluNavigationViewType.Open},{title:qsTr("Compact"),mode:FluNavigationViewType.Compact},{title:qsTr("Minimal"),mode:FluNavigationViewType.Minimal},{title:qsTr("Auto"),mode:FluNavigationViewType.Auto}]
delegate: FluRadioButton{
checked : viewmodel_settings.displayMode===modelData.mode
text:modelData.title
@@ -159,6 +159,16 @@ FluScrollablePage{
}
}
+ ListModel{
+ id:model_language
+ ListElement{
+ name:"en"
+ }
+ ListElement{
+ name:"zh"
+ }
+ }
+
FluArea{
Layout.fillWidth: true
Layout.topMargin: 20
@@ -171,22 +181,21 @@ FluScrollablePage{
top: parent.top
left: parent.left
}
-
FluText{
- text:Lang.locale
+ text:qsTr("Language")
font: FluTextStyle.BodyStrong
Layout.bottomMargin: 4
}
-
Flow{
spacing: 5
Repeater{
- model: Lang.__localeList
+ model: TranslateHelper.languages
delegate: FluRadioButton{
- checked: Lang.__locale === modelData
+ checked: TranslateHelper.current === modelData
text:modelData
clickListener:function(){
- Lang.__locale = modelData
+ TranslateHelper.current = modelData
+ dialog_restart.open()
}
}
}
diff --git a/example/qml/page/T_ShortcutPicker.qml b/example/qml/page/T_ShortcutPicker.qml
index cc073715..25b9dc46 100644
--- a/example/qml/page/T_ShortcutPicker.qml
+++ b/example/qml/page/T_ShortcutPicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ShortcutPicker"
+ title: qsTr("ShortcutPicker")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_Slider.qml b/example/qml/page/T_Slider.qml
index b4fc9ad3..61ca77cd 100644
--- a/example/qml/page/T_Slider.qml
+++ b/example/qml/page/T_Slider.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Slider"
+ title: qsTr("Slider")
FluArea{
Layout.fillWidth: true
diff --git a/example/qml/page/T_SplitLayout.qml b/example/qml/page/T_SplitLayout.qml
index 745ec51e..95434212 100644
--- a/example/qml/page/T_SplitLayout.qml
+++ b/example/qml/page/T_SplitLayout.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage{
- title:"SplitLayout"
+ title: qsTr("SplitLayout")
RowLayout{
id:layout_dropdown
diff --git a/example/qml/page/T_StaggeredLayout.qml b/example/qml/page/T_StaggeredLayout.qml
index dfc5139e..a9cdc86c 100644
--- a/example/qml/page/T_StaggeredLayout.qml
+++ b/example/qml/page/T_StaggeredLayout.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage{
- title:"StaggeredLayout"
+ title: qsTr("StaggeredLayout")
property var colors : [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
diff --git a/example/qml/page/T_StatusLayout.qml b/example/qml/page/T_StatusLayout.qml
index 05280d20..04895caf 100644
--- a/example/qml/page/T_StatusLayout.qml
+++ b/example/qml/page/T_StatusLayout.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"StatusLayout"
+ title: qsTr("StatusLayout")
FluArea{
id:layout_actions
@@ -61,8 +61,12 @@ FluScrollablePage{
FluStatusLayout{
id:status_view
anchors.fill: parent
+ loadingText: qsTr("Loading...")
+ emptyText: qsTr("Empty")
+ errorText: qsTr("The page went wrong...")
+ errorButtonText: qsTr("Reload")
onErrorClicked:{
- showError("点击重新加载")
+ showError("Click Reload")
}
Rectangle {
anchors.fill: parent
diff --git a/example/qml/page/T_TabView.qml b/example/qml/page/T_TabView.qml
index 2a7d1a82..c6271337 100644
--- a/example/qml/page/T_TabView.qml
+++ b/example/qml/page/T_TabView.qml
@@ -9,7 +9,7 @@ FluScrollablePage{
property var colors : [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
- title:"TabView"
+ title: qsTr("TabView")
Component{
id:com_page
@@ -20,7 +20,7 @@ FluScrollablePage{
}
function newTab(){
- tab_view.appendTab("qrc:/example/res/image/favicon.ico","Document "+tab_view.count(),com_page,colors[Math.floor(Math.random() * 8)])
+ tab_view.appendTab("qrc:/example/res/image/favicon.ico",qsTr("Document ")+tab_view.count(),com_page,colors[Math.floor(Math.random() * 8)])
}
Component.onCompleted: {
diff --git a/example/qml/page/T_TableView.qml b/example/qml/page/T_TableView.qml
index c21a94b6..e6b06a08 100644
--- a/example/qml/page/T_TableView.qml
+++ b/example/qml/page/T_TableView.qml
@@ -8,7 +8,7 @@ import "../component"
FluContentPage{
id:root
- title:"TableView"
+ title: qsTr("TableView")
signal checkBoxChanged
property var dataSource : []
@@ -70,8 +70,8 @@ FluContentPage{
id:custom_update_dialog
property var text
property var onAccpetListener
- title:"修改列名"
- negativeText:"取消"
+ title: qsTr("Modify the column name")
+ negativeText: qsTr("Cancel")
contentDelegate: Component{
Item{
implicitWidth: parent.width
@@ -89,7 +89,7 @@ FluContentPage{
}
}
}
- positiveText:"确定"
+ positiveText: qsTr("OK")
onPositiveClicked:{
if(custom_update_dialog.onAccpetListener){
custom_update_dialog.onAccpetListener(custom_update_dialog.text)
@@ -131,7 +131,7 @@ FluContentPage{
}
FluButton{
- text:"搜索"
+ text: qsTr("Search")
anchors{
bottom: parent.bottom
right: parent.right
@@ -174,7 +174,7 @@ FluContentPage{
id:com_column_filter_name
Item{
FluText{
- text:"姓名"
+ text: qsTr("Name")
anchors.centerIn: parent
}
FluIconButton{
@@ -208,14 +208,14 @@ FluContentPage{
RowLayout{
anchors.centerIn: parent
FluButton{
- text:"删除"
+ text: qsTr("Delete")
onClicked: {
table_view.closeEditor()
table_view.removeRow(row)
}
}
FluFilledButton{
- text:"编辑"
+ text: qsTr("Edit")
onClicked: {
var obj = table_view.getRow(row)
obj.name = "12345"
@@ -234,7 +234,7 @@ FluContentPage{
RowLayout{
anchors.centerIn: parent
FluText{
- text:"全选"
+ text: qsTr("Select All")
Layout.alignment: Qt.AlignVCenter
}
FluCheckBox{
@@ -334,7 +334,7 @@ FluContentPage{
id:com_column_sort_age
Item{
FluText{
- text:"年龄"
+ text: qsTr("Age")
anchors.centerIn: parent
}
ColumnLayout{
@@ -409,14 +409,14 @@ FluContentPage{
}
FluButton{
- text:"清空"
+ text: qsTr("Clear All")
onClicked: {
table_view.dataSource = []
}
}
FluButton{
- text:"删除选中"
+ text:"Delete Selection"
onClicked: {
var data = []
var rows = []
@@ -440,7 +440,7 @@ FluContentPage{
}
FluButton{
- text:"添加一行数据"
+ text:"Add a row of Data"
onClicked: {
table_view.appendRow(genTestObject())
}
@@ -465,17 +465,17 @@ FluContentPage{
{
title: table_view.customItem(com_column_checbox,{checked:true}),
dataIndex: 'checkbox',
- width:80,
- minimumWidth:80,
- maximumWidth:80
+ width:100,
+ minimumWidth:100,
+ maximumWidth:100
},
{
- title: table_view.customItem(com_column_update_title,{title:'头像'}),
+ title: table_view.customItem(com_column_update_title,{title:qsTr("Avatar")}),
dataIndex: 'avatar',
width:100
},
{
- title: table_view.customItem(com_column_filter_name,{title:'姓名'}),
+ title: table_view.customItem(com_column_filter_name,{title:qsTr("Name")}),
dataIndex: 'name',
readOnly:true
},
@@ -488,28 +488,28 @@ FluContentPage{
maximumWidth:100
},
{
- title: '住址',
+ title: qsTr("Address"),
dataIndex: 'address',
width:200,
minimumWidth:100,
maximumWidth:250
},
{
- title: '别名',
+ title: qsTr("Nickname"),
dataIndex: 'nickname',
width:100,
minimumWidth:80,
maximumWidth:200
},
{
- title: '长字符串',
+ title: qsTr("Long String"),
dataIndex: 'longstring',
width:200,
minimumWidth:100,
maximumWidth:300
},
{
- title: '操作',
+ title: qsTr("Options"),
dataIndex: 'action',
width:160,
minimumWidth:160,
@@ -528,6 +528,8 @@ FluContentPage{
itemCount: 100000
pageButtonCount: 7
__itemPerPage: 1000
+ previousText: qsTr("")
onRequestPage:
(page,count)=> {
table_view.closeEditor()
diff --git a/example/qml/page/T_Text.qml b/example/qml/page/T_Text.qml
index f3cd8bc3..70c705ff 100644
--- a/example/qml/page/T_Text.qml
+++ b/example/qml/page/T_Text.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Text"
+ title: qsTr("Text")
FluArea{
Layout.fillWidth: true
@@ -16,7 +16,7 @@ FluScrollablePage{
paddings: 10
FluCopyableText{
- text: "这是一个可以支持复制的Text"
+ text: qsTr("This is a text that can be copied")
anchors.verticalCenter: parent.verticalCenter
}
@@ -25,7 +25,7 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluCopyableText{
- text:"这是一个可以支持复制的Text"
+ text: qsTr("This is a text that can be copied")
}'
}
diff --git a/example/qml/page/T_TextBox.qml b/example/qml/page/T_TextBox.qml
index d2dab198..6517b0ad 100644
--- a/example/qml/page/T_TextBox.qml
+++ b/example/qml/page/T_TextBox.qml
@@ -7,16 +7,13 @@ import "../component"
import "../viewmodel"
FluScrollablePage{
- title:"TextBox"
+
+ title: qsTr("TextBox")
TextBoxViewModel{
id:viewModel
}
- Component.onDestruction: {
- console.debug("T_TextBox页面销毁了")
- }
-
FluArea{
Layout.fillWidth: true
height: 68
@@ -24,10 +21,10 @@ FluScrollablePage{
Layout.topMargin: 20
FluTextBox{
- placeholderText: "单行输入框"
- disabled:text_box_switch.checked
+ placeholderText: qsTr("Single-line Input Box")
+ disabled: text_box_switch.checked
cleanEnabled: true
- text:viewModel.text1
+ text: viewModel.text1
onTextChanged: {
viewModel.text1 = text
}
@@ -38,19 +35,19 @@ FluScrollablePage{
}
FluToggleSwitch{
- id:text_box_switch
+ id: text_box_switch
anchors{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluTextBox{
- placeholderText:"单行输入框"
+ placeholderText: qsTr("Single-line Input Box")
}'
}
@@ -61,7 +58,7 @@ FluScrollablePage{
Layout.topMargin: 20
FluPasswordBox{
- placeholderText: "请输入密码"
+ placeholderText: qsTr("Please enter your password")
disabled:password_box_switch.checked
anchors{
verticalCenter: parent.verticalCenter
@@ -74,14 +71,14 @@ FluScrollablePage{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluPasswordBox{
- placeholderText:"请输入密码"
+ placeholderText: qsTr("Please enter your password")
}'
}
@@ -93,13 +90,13 @@ FluScrollablePage{
Layout.topMargin: 20
FluMultilineTextBox{
- id:multiine_textbox
- placeholderText: "多行输入框"
+ id: multiine_textbox
+ placeholderText: qsTr("Multi-line Input Box")
text:viewModel.text2
onTextChanged: {
viewModel.text2 = text
}
- disabled:text_box_multi_switch.checked
+ disabled: text_box_multi_switch.checked
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -112,14 +109,14 @@ FluScrollablePage{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluMultilineTextBox{
- placeholderText:"多行输入框"
+ placeholderText: qsTr("Multi-line Input Box")
}'
}
@@ -129,9 +126,9 @@ FluScrollablePage{
paddings: 10
Layout.topMargin: 20
FluAutoSuggestBox{
- placeholderText: "AutoSuggestBox"
- items:generateRandomNames(100)
- disabled:text_box_suggest_switch.checked
+ placeholderText: qsTr("AutoSuggestBox")
+ items: generateRandomNames(100)
+ disabled: text_box_suggest_switch.checked
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
@@ -143,14 +140,14 @@ FluScrollablePage{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluAutoSuggestBox{
- placeholderText:"AutoSuggestBox"
+ placeholderText: qsTr("AutoSuggestBox")
}'
}
@@ -167,12 +164,12 @@ FluScrollablePage{
}
}
FluToggleSwitch{
- id:spin_box_switch
+ id: spin_box_switch
anchors{
verticalCenter: parent.verticalCenter
right: parent.right
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml/page/T_Theme.qml b/example/qml/page/T_Theme.qml
index 915b5d64..fa4f24f8 100644
--- a/example/qml/page/T_Theme.qml
+++ b/example/qml/page/T_Theme.qml
@@ -8,8 +8,8 @@ import "../component"
FluScrollablePage{
property var colorData: [FluColors.Yellow,FluColors.Orange,FluColors.Red,FluColors.Magenta,FluColors.Purple,FluColors.Blue,FluColors.Teal,FluColors.Green]
- id:root
- title:"Theme"
+ id: root
+ title: qsTr("Theme")
FluArea{
Layout.fillWidth: true
@@ -23,7 +23,7 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"主题颜色"
+ text: qsTr("Theme colors")
Layout.topMargin: 10
}
RowLayout{
@@ -58,7 +58,7 @@ FluScrollablePage{
Layout.topMargin: 10
spacing: 10
FluText{
- text:"自定义主题颜色"
+ text: qsTr("Customize the Theme Color")
anchors.verticalCenter: parent.verticalCenter
}
FluColorPicker{
@@ -84,7 +84,7 @@ FluScrollablePage{
}
}
FluText{
- text:"夜间模式"
+ text: qsTr("Dark Mode")
Layout.topMargin: 20
}
FluToggleSwitch{
@@ -99,7 +99,7 @@ FluScrollablePage{
}
}
FluText{
- text:"native文本渲染"
+ text: qsTr("Native Text")
Layout.topMargin: 20
}
FluToggleSwitch{
@@ -110,7 +110,7 @@ FluScrollablePage{
}
}
FluText{
- text:"开启动画效果"
+ text: qsTr("Open Animation")
Layout.topMargin: 20
}
FluToggleSwitch{
diff --git a/example/qml/page/T_TimePicker.qml b/example/qml/page/T_TimePicker.qml
index dde538ab..6b86b937 100644
--- a/example/qml/page/T_TimePicker.qml
+++ b/example/qml/page/T_TimePicker.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"TimePicker"
+ title: qsTr("TimePicker")
launchMode: FluPageType.SingleInstance
FluArea{
Layout.fillWidth: true
@@ -23,11 +23,17 @@ FluScrollablePage{
}
FluText{
- text:"hourFormat=FluTimePickerType.H"
+ text: qsTr("hourFormat=FluTimePickerType.H")
}
FluTimePicker{
current: new Date()
+ amText: qsTr("AM")
+ pmText: qsTr("PM")
+ hourText: qsTr("Hour")
+ minuteText: qsTr("Minute")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleTimeString(Qt.locale("de_DE")))
}
@@ -57,11 +63,17 @@ FluScrollablePage{
}
FluText{
- text:"hourFormat=FluTimePickerType.HH"
+ text: qsTr("hourFormat=FluTimePickerType.HH")
}
FluTimePicker{
hourFormat:FluTimePickerType.HH
+ amText: qsTr("AM")
+ pmText: qsTr("PM")
+ hourText: qsTr("Hour")
+ minuteText: qsTr("Minute")
+ cancelText: qsTr("Cancel")
+ okText: qsTr("OK")
onAccepted: {
showSuccess(current.toLocaleTimeString(Qt.locale("de_DE")))
}
diff --git a/example/qml/page/T_Timeline.qml b/example/qml/page/T_Timeline.qml
index 29ab41e8..1d60373a 100644
--- a/example/qml/page/T_Timeline.qml
+++ b/example/qml/page/T_Timeline.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"Timeline"
+ title: qsTr("Timeline")
Component{
id:com_dot
@@ -23,7 +23,7 @@ FluScrollablePage{
Component{
id:com_lable
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
font.bold: true
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: modelData.lable
@@ -41,7 +41,7 @@ FluScrollablePage{
Component{
id:com_text
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: modelData.text
font.bold: true
@@ -108,18 +108,18 @@ FluScrollablePage{
spacing: 20
Layout.topMargin: 20
FluTextBox{
- id:text_box
- text:"Technical testing 2015-09-01"
+ id: text_box
+ text: "Technical testing 2015-09-01"
Layout.preferredWidth: 240
}
FluFilledButton{
- text:"Append"
+ text: qsTr("Append")
onClicked: {
list_model.append({text:text_box.text})
}
}
FluFilledButton{
- text:"clear"
+ text: qsTr("clear")
onClicked: {
list_model.clear()
}
@@ -132,25 +132,25 @@ FluScrollablePage{
text:"mode:"
}
FluDropDownButton{
- id:btn_mode
+ id: btn_mode
Layout.preferredWidth: 100
- text:"Alternate"
+ text: "Alternate"
FluMenuItem{
- text:"Left"
+ text: "Left"
onClicked: {
btn_mode.text = text
time_line.mode = FluTimelineType.Left
}
}
FluMenuItem{
- text:"Right"
+ text: "Right"
onClicked: {
btn_mode.text = text
time_line.mode = FluTimelineType.Right
}
}
FluMenuItem{
- text:"Alternate"
+ text: "Alternate"
onClicked: {
btn_mode.text = text
time_line.mode = FluTimelineType.Alternate
@@ -160,12 +160,12 @@ FluScrollablePage{
}
FluTimeline{
- id:time_line
+ id: time_line
Layout.fillWidth: true
Layout.topMargin: 20
Layout.bottomMargin: 20
mode: FluTimelineType.Alternate
- model:list_model
+ model: list_model
}
}
diff --git a/example/qml/page/T_ToggleSwitch.qml b/example/qml/page/T_ToggleSwitch.qml
index 4daa69f8..464378a2 100644
--- a/example/qml/page/T_ToggleSwitch.qml
+++ b/example/qml/page/T_ToggleSwitch.qml
@@ -7,7 +7,7 @@ import "../component"
FluScrollablePage{
- title:"ToggleSwitch"
+ title: qsTr("ToggleSwitch")
FluArea{
Layout.fillWidth: true
@@ -22,21 +22,21 @@ FluScrollablePage{
}
FluToggleSwitch{
disabled: toggle_switch.checked
- text:"Right"
+ text: qsTr("Right")
}
FluToggleSwitch{
disabled: toggle_switch.checked
- text:"Left"
+ text: qsTr("Left")
textRight: false
}
}
FluToggleSwitch{
- id:toggle_switch
+ id: toggle_switch
anchors{
right: parent.right
verticalCenter: parent.verticalCenter
}
- text:"Disabled"
+ text: qsTr("Disabled")
}
}
CodeExpander{
diff --git a/example/qml/page/T_Tooltip.qml b/example/qml/page/T_Tooltip.qml
index ac64a5ee..e9799c8b 100644
--- a/example/qml/page/T_Tooltip.qml
+++ b/example/qml/page/T_Tooltip.qml
@@ -7,11 +7,11 @@ import "../component"
FluScrollablePage{
- title:"Tooltip"
+ title: qsTr("Tooltip")
FluText{
Layout.topMargin: 20
- text:"鼠标悬停不动,弹出Tooltip"
+ text: qsTr("Hover over Tultip and it pops up")
}
FluArea{
@@ -27,14 +27,14 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"FluIconButton的text属性自带Tooltip效果"
+ text: qsTr("Text properties of FluIconButton support the Tooltip pop-up window by default")
}
FluIconButton{
iconSource:FluentIcons.ChromeCloseContrast
iconSize: 15
- text:"删除"
+ text: qsTr("Delete")
onClicked:{
- showSuccess("点击IconButton")
+ showSuccess(qsTr("Click IconButton"))
}
}
}
@@ -45,9 +45,9 @@ FluScrollablePage{
code:'FluIconButton{
iconSource:FluentIcons.ChromeCloseContrast
iconSize: 15
- text:"删除"
+ text: qsTr("Delete")
onClicked:{
- showSuccess("点击IconButton")
+ showSuccess(qsTr("Click IconButton"))
}
}
'
@@ -66,13 +66,13 @@ FluScrollablePage{
left: parent.left
}
FluText{
- text:"给一个Button添加Tooltip效果"
+ text: qsTr("Add a Tooltip pop-up to a Button")
}
FluButton{
id:button_1
- text:"删除"
+ text: qsTr("Delete")
onClicked:{
- showSuccess("点击一个Button")
+ showSuccess(qsTr("Click Button"))
}
FluTooltip{
visible: button_1.hovered
@@ -86,15 +86,15 @@ FluScrollablePage{
Layout.fillWidth: true
Layout.topMargin: -1
code:'FluButton{
- id:button_1
- text:"删除"
+ id: button_1
+ text: qsTr("Delete")
FluTooltip{
visible: button_1.hovered
text:button_1.text
delay: 1000
}
onClicked:{
- showSuccess("点击一个Button")
+ showSuccess(qsTr("Click Button"))
}
}'
}
diff --git a/example/qml/page/T_Tour.qml b/example/qml/page/T_Tour.qml
index bf4c0460..87022fa7 100644
--- a/example/qml/page/T_Tour.qml
+++ b/example/qml/page/T_Tour.qml
@@ -11,10 +11,13 @@ FluScrollablePage{
FluTour{
id:tour
+ finishText: qsTr("Finish")
+ nextText: qsTr("Next")
+ previousText: qsTr("Previous")
steps:[
- {title:"Upload File",description: "Put your files here.",target:()=>btn_upload},
- {title:"Save",description: "Save your changes.",target:()=>btn_save},
- {title:"Other Actions",description: "Click to see other actions.",target:()=>btn_more}
+ {title:qsTr("Upload File"),description: qsTr("Put your files here."),target:()=>btn_upload},
+ {title:qsTr("Save"),description: qsTr("Save your changes."),target:()=>btn_save},
+ {title:qsTr("Other Actions"),description: qsTr("Click to see other actions."),target:()=>btn_more}
]
}
@@ -29,7 +32,7 @@ FluScrollablePage{
top: parent.top
topMargin: 14
}
- text:"Begin Tour"
+ text: qsTr("Begin Tour")
onClicked: {
tour.open()
}
@@ -42,24 +45,24 @@ FluScrollablePage{
topMargin: 60
}
FluButton{
- id:btn_upload
- text:"Upload"
+ id: btn_upload
+ text: qsTr("Upload")
onClicked: {
- showInfo("Upload")
+ showInfo(qsTr("Upload"))
}
}
FluFilledButton{
- id:btn_save
- text:"Save"
+ id: btn_save
+ text: qsTr("Save")
onClicked: {
- showInfo("Save")
+ showInfo(qsTr("Save"))
}
}
FluIconButton{
- id:btn_more
+ id: btn_more
iconSource: FluentIcons.More
onClicked: {
- showInfo("More")
+ showInfo(qsTr("More"))
}
}
}
diff --git a/example/qml/page/T_TreeView.qml b/example/qml/page/T_TreeView.qml
index 01a4db54..e22db3ce 100644
--- a/example/qml/page/T_TreeView.qml
+++ b/example/qml/page/T_TreeView.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage {
- title:"TreeView"
+ title: qsTr("TreeView")
function treeData(){
const dig = (path = '0', level = 4) => {
@@ -29,7 +29,7 @@ FluContentPage {
}
Column{
- id:layout_column
+ id: layout_column
spacing: 12
width: 300
anchors{
@@ -42,21 +42,21 @@ FluContentPage {
}
FluText{
- text:"共计%1条数据,当前显示的%2条数据".arg(tree_view.count()).arg(tree_view.visibleCount())
+ text: qsTr("Total %1 data, %2 data currently displayed").arg(tree_view.count()).arg(tree_view.visibleCount())
}
FluText{
- text:"共计选中%1条数据".arg(tree_view.selectionModel().length)
+ text: qsTr("A total of %1 data items are selected").arg(tree_view.selectionModel().length)
}
RowLayout{
spacing: 10
FluText{
- text:"cellHeight:"
+ text: "cellHeight:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_cell_height
+ id: slider_cell_height
value: 30
from: 30
to:100
@@ -65,39 +65,39 @@ FluContentPage {
RowLayout{
spacing: 10
FluText{
- text:"depthPadding:"
+ text: "depthPadding:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_depth_padding
+ id: slider_depth_padding
value: 30
from: 30
to:100
}
}
FluToggleSwitch{
- id:switch_showline
+ id: switch_showline
text:"showLine"
checked: false
}
FluToggleSwitch{
- id:switch_draggable
+ id: switch_draggable
text:"draggable"
checked: false
}
FluToggleSwitch{
- id:switch_checkable
+ id: switch_checkable
text:"checkable"
checked: false
}
FluButton{
- text:"all expand"
+ text: "all expand"
onClicked: {
tree_view.allExpand()
}
}
FluButton{
- text:"all collapse"
+ text: "all collapse"
onClicked: {
tree_view.allCollapse()
}
diff --git a/example/qml/page/T_Typography.qml b/example/qml/page/T_Typography.qml
index 854eab56..8ff9f270 100644
--- a/example/qml/page/T_Typography.qml
+++ b/example/qml/page/T_Typography.qml
@@ -7,7 +7,7 @@ FluContentPage {
property real textScale: 1
- title: "Typography"
+ title: qsTr("Typography")
rightPadding: 10
FluArea{
diff --git a/example/qml/page/T_Watermark.qml b/example/qml/page/T_Watermark.qml
index daea85eb..8c5b8a37 100644
--- a/example/qml/page/T_Watermark.qml
+++ b/example/qml/page/T_Watermark.qml
@@ -7,7 +7,7 @@ import "../component"
FluContentPage{
- title:"Watermark"
+ title: qsTr("Watermark")
FluArea{
anchors.fill: parent
@@ -23,12 +23,12 @@ FluContentPage{
spacing: 10
Layout.topMargin: 14
FluText{
- text:"text:"
+ text: "text:"
Layout.alignment: Qt.AlignVCenter
}
FluTextBox{
- id:text_box
- text:"会磨刀的小猪"
+ id: text_box
+ text: "会磨刀的小猪"
Layout.preferredWidth: 240
}
}
@@ -36,11 +36,11 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"textSize:"
+ text: "textSize:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_text_size
+ id: slider_text_size
value: 20
from: 13
to:50
@@ -49,7 +49,7 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"gapX:"
+ text: "gapX:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
@@ -60,18 +60,18 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"gapY:"
+ text: "gapY:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_gap_y
+ id: slider_gap_y
value: 100
}
}
RowLayout{
spacing: 10
FluText{
- text:"offsetX:"
+ text: "offsetX:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
@@ -82,22 +82,22 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"offsetY:"
+ text: "offsetY:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_offset_y
+ id: slider_offset_y
value: 50
}
}
RowLayout{
spacing: 10
FluText{
- text:"rotate:"
+ text: "rotate:"
Layout.alignment: Qt.AlignVCenter
}
FluSlider{
- id:slider_rotate
+ id: slider_rotate
value: 22
from: 0
to:360
@@ -106,18 +106,18 @@ FluContentPage{
RowLayout{
spacing: 10
FluText{
- text:"textColor:"
+ text: "textColor:"
Layout.alignment: Qt.AlignVCenter
}
FluColorPicker{
- id:color_picker
+ id: color_picker
current: Qt.rgba(0,0,0,0.1)
}
}
}
FluWatermark{
- id:water_mark
+ id: water_mark
anchors.fill: parent
text:text_box.text
textColor: color_picker.current
diff --git a/example/qml/window/CrashWindow.qml b/example/qml/window/CrashWindow.qml
index 87ee23c1..f012f0f3 100644
--- a/example/qml/window/CrashWindow.qml
+++ b/example/qml/window/CrashWindow.qml
@@ -8,7 +8,7 @@ import "../component"
FluWindow {
id:window
- title:"友情提示"
+ title: qsTr("Friendly Reminder")
width: 300
height: 400
fixSize: true
@@ -37,11 +37,15 @@ FluWindow {
FluText{
id:text_info
anchors{
- horizontalCenter: parent.horizontalCenter
top: parent.top
topMargin: 240
+ left: parent.left
+ right: parent.right
+ leftMargin: 10
+ rightMargin: 10
}
- text:"发生意外错误\n给您带来的不便,我们深表歉意"
+ wrapMode: Text.WordWrap
+ text: qsTr("We apologize for the inconvenience caused by an unexpected error")
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
@@ -53,7 +57,7 @@ FluWindow {
bottomMargin: 20
}
FluButton{
- text:"日志上报"
+ text: qsTr("Report Logs")
onClicked: {
FluTools.showFileInFolder(crashFilePath)
}
@@ -63,7 +67,7 @@ FluWindow {
height: 1
}
FluFilledButton{
- text:"重启程序"
+ text: qsTr("Restart Program")
onClicked: {
FluApp.exit(931)
}
diff --git a/example/qml/window/FluentInitalizrWindow.qml b/example/qml/window/FluentInitalizrWindow.qml
new file mode 100644
index 00000000..a3c5c527
--- /dev/null
+++ b/example/qml/window/FluentInitalizrWindow.qml
@@ -0,0 +1,115 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
+import FluentUI 1.0
+import Qt.labs.platform 1.1
+import "../component"
+
+FluWindow {
+
+ id:window
+ title:qsTr("FluentUI Initalizr")
+ width: 600
+ height: 400
+ fixSize: true
+ // modality: Qt.ApplicationModal
+ launchMode: FluWindowType.SingleTask
+ showStayTop: false
+
+ Connections{
+ target: InitalizrHelper
+ function onError(message){
+ showError(message)
+ }
+ function onSuccess(){
+ showSuccess("创建成功")
+ }
+ }
+
+ FluText{
+ id:text_title
+ text:qsTr("FluentUI Initalizr")
+ font: FluTextStyle.Title
+ anchors{
+ left: parent.left
+ top: parent.top
+ leftMargin: 20
+ topMargin: 20
+ }
+ }
+
+ Column{
+ spacing: 14
+ anchors{
+ left: parent.left
+ top: text_title.bottom
+ leftMargin: 20
+ topMargin: 20
+ }
+ FluTextBox{
+ id:text_box_name
+ width: 180
+ placeholderText: qsTr("Name")
+ focus: true
+ }
+ Row{
+ spacing: 8
+ FluTextBox{
+ id:text_box_path
+ width: 300
+ placeholderText: qsTr("Create In")
+ anchors.verticalCenter: parent.verticalCenter
+ Component.onCompleted: {
+ text = FluTools.toLocalPath(StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0])
+ }
+ }
+ FluButton{
+ text:qsTr("Browse")
+ anchors.verticalCenter: parent.verticalCenter
+ onClicked: {
+ folder_dialog.open()
+ }
+ }
+ }
+ }
+
+ FolderDialog{
+ id:folder_dialog
+ folder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
+ onAccepted: {
+ text_box_path.text = FluTools.toLocalPath(currentFolder)
+ }
+ }
+
+ Rectangle{
+ id:layout_actions
+ width: parent.width
+ height: 60
+ anchors.bottom: parent.bottom
+ color: FluTheme.backgroundColor
+ Row{
+ height: parent.height
+ spacing: 20
+ anchors{
+ right: parent.right
+ rightMargin: 20
+ }
+ FluButton{
+ text:qsTr("Cancel")
+ width: 120
+ anchors.verticalCenter: parent.verticalCenter
+ onClicked: {
+ window.close()
+ }
+ }
+ FluFilledButton{
+ text:qsTr("Create")
+ width: 120
+ anchors.verticalCenter: parent.verticalCenter
+ onClicked: {
+ InitalizrHelper.generate(text_box_name.text,text_box_path.text)
+ }
+ }
+ }
+ }
+}
diff --git a/example/qml/window/HotloadWindow.qml b/example/qml/window/HotloadWindow.qml
index 19ac9184..2031b0e1 100644
--- a/example/qml/window/HotloadWindow.qml
+++ b/example/qml/window/HotloadWindow.qml
@@ -8,7 +8,7 @@ import "../component"
FluWindow {
id:window
- title:"热加载"
+ title: qsTr("Hot Loader")
width: 800
height: 600
minimumWidth: 520
@@ -32,7 +32,7 @@ FluWindow {
text:loader.itemLodaer().sourceComponent.errorString()
color:"red"
anchors.fill: parent
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 20
verticalAlignment: Qt.AlignVCenter
horizontalAlignment: Qt.AlignHCenter
@@ -40,7 +40,7 @@ FluWindow {
}
}
FluText{
- text:"拖入qml文件"
+ text: qsTr("Drag in a qml file")
font.pixelSize: 26
anchors.centerIn: parent
visible: !loader.itemLodaer().item && loader.statusMode === FluStatusLayoutType.Success
diff --git a/example/qml/window/LoginWindow.qml b/example/qml/window/LoginWindow.qml
index 7e6446fa..abdcd51b 100644
--- a/example/qml/window/LoginWindow.qml
+++ b/example/qml/window/LoginWindow.qml
@@ -6,8 +6,8 @@ import "../component"
FluWindow {
- id:window
- title:"登录"
+ id: window
+ title: qsTr("Login")
width: 400
height: 400
fixSize: true
@@ -26,38 +26,34 @@ FluWindow {
}
FluAutoSuggestBox{
- id:textbox_uesrname
+ id: textbox_uesrname
items:[{title:"Admin"},{title:"User"}]
- placeholderText: "请输入账号"
+ placeholderText: qsTr("Please enter the account")
Layout.preferredWidth: 260
Layout.alignment: Qt.AlignHCenter
}
FluTextBox{
- id:textbox_password
+ id: textbox_password
Layout.topMargin: 20
Layout.preferredWidth: 260
- placeholderText: "请输入密码"
+ placeholderText: qsTr("Please enter your password")
echoMode:TextInput.Password
Layout.alignment: Qt.AlignHCenter
}
FluFilledButton{
- text:"登录"
+ text: qsTr("Login")
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: 20
onClicked:{
if(textbox_password.text === ""){
- showError("请随便输入一个密码")
+ showError(qsTr("Please feel free to enter a password"))
return
}
onResult({password:textbox_password.text})
window.close()
}
}
-
}
-
-
-
}
diff --git a/example/qml/window/MainWindow.qml b/example/qml/window/MainWindow.qml
index 350d5ed3..96c83c2f 100644
--- a/example/qml/window/MainWindow.qml
+++ b/example/qml/window/MainWindow.qml
@@ -21,7 +21,7 @@ FluWindow {
fitsAppBarWindows: true
appBar: FluAppBar {
height: 30
- darkText: Lang.dark_mode
+ darkText: qsTr("Dark Mode")
showDark: true
darkClickListener:(button)=>handleDarkChanged(button)
closeClickListener: ()=>{dialog_close.open()}
@@ -85,7 +85,7 @@ FluWindow {
}
Timer{
- id:timer_window_hide_delay
+ id: timer_window_hide_delay
interval: 150
onTriggered: {
window.hide()
@@ -93,29 +93,29 @@ FluWindow {
}
FluContentDialog{
- id:dialog_close
- title:"退出"
- message:"确定要退出程序吗?"
- negativeText:"最小化"
+ id: dialog_close
+ title: qsTr("Quit")
+ message: qsTr("Are you sure you want to exit the program?")
+ negativeText: qsTr("Minimize")
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.NeutralButton | FluContentDialogType.PositiveButton
onNegativeClicked: {
- system_tray.showMessage("友情提示","FluentUI已隐藏至托盘,点击托盘可再次激活窗口");
+ system_tray.showMessage(qsTr("Friendly Reminder"),qsTr("FluentUI is hidden from the tray, click on the tray to activate the window again"));
timer_window_hide_delay.restart()
}
- positiveText:"退出"
- neutralText:"取消"
+ positiveText: qsTr("Quit")
+ neutralText: qsTr("Cancel")
onPositiveClicked:{
FluApp.exit(0)
}
}
Component{
- id:nav_item_right_menu
+ id: nav_item_right_menu
FluMenu{
- id:menu
+ id: menu
width: 130
FluMenuItem{
- text: "在独立窗口打开"
+ text: qsTr("Open in Separate Window")
visible: true
onClicked: {
FluApp.navigate("/pageWindow",{title:modelData.title,url:modelData.url})
@@ -212,7 +212,7 @@ FluWindow {
title:"FluentUI"
onLogoClicked:{
clickCount += 1
- showSuccess("点击%1次".arg(clickCount))
+ showSuccess("%1:%2".arg(qsTr("Click Time")).arg(clickCount))
if(clickCount === 5){
loader.reload()
flipable.flipped = true
@@ -222,7 +222,7 @@ FluWindow {
autoSuggestBox:FluAutoSuggestBox{
iconSource: FluentIcons.Search
items: ItemsOriginal.getSearchData()
- placeholderText: Lang.search
+ placeholderText: qsTr("Search")
onItemClicked:
(data)=>{
ItemsOriginal.startPageByItem(data)
@@ -312,13 +312,16 @@ FluWindow {
}
FluTour{
- id:tour
+ id: tour
+ finishText: qsTr("Finish")
+ nextText: qsTr("Next")
+ previousText: qsTr("Previous")
steps:{
var data = []
if(!window.useSystemAppBar){
- data.push({title:"夜间模式",description: "这里可以切换夜间模式.",target:()=>appBar.buttonDark})
+ data.push({title:qsTr("Dark Mode"),description: qsTr("Here you can switch to night mode."),target:()=>appBar.buttonDark})
}
- data.push({title:"隐藏彩蛋",description: "多点几下试试!!",target:()=>nav_view.imageLogo})
+ data.push({title:qsTr("Hide Easter eggs"),description: qsTr("Try a few more clicks!!"),target:()=>nav_view.imageLogo})
return data
}
}
@@ -328,7 +331,7 @@ FluWindow {
}
FluText{
- text:"fps %1".arg(fps_item.fps)
+ text: "fps %1".arg(fps_item.fps)
opacity: 0.3
anchors{
bottom: parent.bottom
@@ -341,12 +344,12 @@ FluWindow {
FluContentDialog{
property string newVerson
property string body
- id:dialog_update
- title:"升级提示"
- message:"FluentUI目前最新版本 "+ newVerson +" -- 当前应用版本 "+AppInfo.version+" \n现在是否去下载新版本?\n\n更新内容:\n"+body
+ id: dialog_update
+ title: qsTr("Upgrade Tips")
+ message:qsTr("FluentUI is currently up to date ")+ newVerson +qsTr(" -- The current app version") +AppInfo.version+qsTr(" \nNow go and download the new version?\n\nUpdated content: \n")+body
buttonFlags: FluContentDialogType.NegativeButton | FluContentDialogType.PositiveButton
- negativeText: "取消"
- positiveText:"确定"
+ negativeText: qsTr("Cancel")
+ positiveText: qsTr("OK")
onPositiveClicked:{
Qt.openUrlExternally("https://github.com/zhuzichu520/FluentUI/releases/latest")
}
@@ -373,14 +376,14 @@ FluWindow {
dialog_update.open()
}else{
if(!silent){
- showInfo("当前版本已经是最新版")
+ showInfo(qsTr("The current version is already the latest"))
}
}
}
onError:
(status,errorString)=>{
if(!silent){
- showError("网络异常!")
+ showError(qsTr("The network is abnormal"))
}
console.debug(status+";"+errorString)
}
diff --git a/example/qml/window/SingleInstanceWindow.qml b/example/qml/window/SingleInstanceWindow.qml
index baa99c09..0c1b7865 100644
--- a/example/qml/window/SingleInstanceWindow.qml
+++ b/example/qml/window/SingleInstanceWindow.qml
@@ -6,8 +6,8 @@ import "../component"
FluWindow {
- id:window
- title:"SingleInstance"
+ id: window
+ title: qsTr("SingleInstance")
width: 500
height: 600
fixSize: true
@@ -22,7 +22,7 @@ FluWindow {
}
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
anchors{
left: parent.left
right: parent.right
@@ -30,6 +30,6 @@ FluWindow {
rightMargin: 20
verticalCenter: parent.verticalCenter
}
- text:"我是一个SingleInstance模式的窗口,如果我存在,我会销毁之前的窗口,并创建一个新窗口"
+ text: qsTr("I'm a SingleInstance window, and if I exist, I'll destroy the previous window and create a new one")
}
}
diff --git a/example/qml/window/SingleTaskWindow.qml b/example/qml/window/SingleTaskWindow.qml
index 3f03a5ff..4dd7936e 100644
--- a/example/qml/window/SingleTaskWindow.qml
+++ b/example/qml/window/SingleTaskWindow.qml
@@ -6,8 +6,8 @@ import "../component"
FluWindow {
- id:window
- title:"SingleTask"
+ id: window
+ title: qsTr("SingleTask")
width: 500
height: 600
fixSize: true
@@ -15,7 +15,7 @@ FluWindow {
FluText{
anchors.centerIn: parent
- text:"我是一个SingleTask模式的窗口,如果我存在,我就激活窗口"
+ text: qsTr("I'm a SingleTask mode window, and if I exist, I activate the window")
}
}
diff --git a/example/qml/window/StandardWindow.qml b/example/qml/window/StandardWindow.qml
index fc5b9ff1..c65d37f2 100644
--- a/example/qml/window/StandardWindow.qml
+++ b/example/qml/window/StandardWindow.qml
@@ -37,7 +37,7 @@ FluWindow {
FluText{
anchors.centerIn: parent
- text:"我是一个Standard模式的窗口,每次我都会创建一个新的窗口"
+ text: qsTr("I'm a Standard mode window, and every time I create a new window")
}
}
diff --git a/example/src/helper/InitalizrHelper.cpp b/example/src/helper/InitalizrHelper.cpp
new file mode 100644
index 00000000..a22cdb25
--- /dev/null
+++ b/example/src/helper/InitalizrHelper.cpp
@@ -0,0 +1,28 @@
+#include "InitalizrHelper.h"
+
+#include
+
+InitalizrHelper::InitalizrHelper(QObject *parent) : QObject(parent)
+{
+
+}
+
+InitalizrHelper::~InitalizrHelper() = default;
+
+
+void InitalizrHelper::generate(const QString& name,const QString& path){
+ if(name.isEmpty()){
+ error(tr("The name cannot be empty"));
+ return;
+ }
+ if(path.isEmpty()){
+ error(tr("The creation path cannot be empty"));
+ return;
+ }
+ QDir projectDir(path);
+ if(!projectDir.exists()){
+ error(tr("The path does not exist"));
+ return;
+ }
+ return success();
+}
diff --git a/example/src/helper/InitalizrHelper.h b/example/src/helper/InitalizrHelper.h
new file mode 100644
index 00000000..db19d83f
--- /dev/null
+++ b/example/src/helper/InitalizrHelper.h
@@ -0,0 +1,21 @@
+#ifndef INITALIZRHELPER_H
+#define INITALIZRHELPER_H
+
+#include
+#include
+#include "src/singleton.h"
+
+class InitalizrHelper : public QObject
+{
+ Q_OBJECT
+private:
+ explicit InitalizrHelper(QObject* parent = nullptr);
+public:
+ SINGLETON(InitalizrHelper)
+ ~InitalizrHelper() override;
+ Q_INVOKABLE void generate(const QString& name,const QString& path);
+ Q_SIGNAL void error(const QString& message);
+ Q_SIGNAL void success();
+};
+
+#endif // INITALIZRHELPER_H
diff --git a/example/src/helper/Log.cpp b/example/src/helper/Log.cpp
index c465cd2b..688db453 100644
--- a/example/src/helper/Log.cpp
+++ b/example/src/helper/Log.cpp
@@ -168,7 +168,7 @@ static inline void messageHandler(const QtMsgType type, const QMessageLogContext
}
}
-void Log::setup(const QString &app,int level)
+void Log::setup(char *argv[],const QString &app,int level)
{
Q_ASSERT(!app.isEmpty());
if (app.isEmpty()) {
@@ -179,6 +179,7 @@ void Log::setup(const QString &app,int level)
if (once) {
return;
}
+ QString applicationPath = QString::fromStdString(argv[0]);
once = true;
g_app = app;
const QString logFileName = QString("%1_%2.log").arg(g_app,QDateTime::currentDateTime().toString("yyyyMMdd"));
@@ -192,6 +193,7 @@ void Log::setup(const QString &app,int level)
qInfo()<<"===================================================";
qInfo()<<"[AppName]"<
+#include
+
+#include "SettingsHelper.h"
+
+TranslateHelper::TranslateHelper(QObject *parent) : QObject(parent)
+{
+ _languages<<"en";
+ _languages<<"zh";
+ _current = SettingsHelper::getInstance()->getLanguage();
+}
+
+TranslateHelper::~TranslateHelper() = default;
+
+void TranslateHelper::init(QQmlEngine* engine){
+ _engine = engine;
+ _translator = new QTranslator(this);
+ qApp->installTranslator(_translator);
+ QString translatorPath = QGuiApplication::applicationDirPath()+"/i18n";
+#ifdef Q_OS_MACX
+ translatorPath.append("/../Resources/");
+#endif
+ _translator->load(QString::fromStdString("%1/example_%2.qm").arg(translatorPath,_current));
+ _engine->retranslate();
+}
diff --git a/example/src/helper/TranslateHelper.h b/example/src/helper/TranslateHelper.h
new file mode 100644
index 00000000..93e1a4cc
--- /dev/null
+++ b/example/src/helper/TranslateHelper.h
@@ -0,0 +1,26 @@
+#ifndef TRANSLATEHELPER_H
+#define TRANSLATEHELPER_H
+
+#include
+#include
+#include
+#include "src/singleton.h"
+#include "src/stdafx.h"
+
+class TranslateHelper : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY_AUTO(QString,current)
+ Q_PROPERTY_READONLY_AUTO(QStringList,languages)
+private:
+ explicit TranslateHelper(QObject* parent = nullptr);
+public:
+ SINGLETON(TranslateHelper)
+ ~TranslateHelper() override;
+ void init(QQmlEngine* engine);
+private:
+ QQmlEngine* _engine = nullptr;
+ QTranslator* _translator = nullptr;
+};
+
+#endif // TRANSLATEHELPER_H
diff --git a/example/src/main.cpp b/example/src/main.cpp
index bbcb34cc..2a24e946 100644
--- a/example/src/main.cpp
+++ b/example/src/main.cpp
@@ -15,6 +15,8 @@
#include "src/component/FileWatcher.h"
#include "src/component/FpsItem.h"
#include "src/helper/SettingsHelper.h"
+#include "src/helper/InitalizrHelper.h"
+#include "src/helper/TranslateHelper.h"
#ifdef FLUENTUI_BUILD_STATIC_LIB
#if (QT_VERSION > QT_VERSION_CHECK(6, 2, 0))
@@ -50,7 +52,7 @@ int main(int argc, char *argv[])
QGuiApplication::setApplicationDisplayName("FluentUI Exmaple");
QGuiApplication::setApplicationVersion(APPLICATION_VERSION);
SettingsHelper::getInstance()->init(argv);
- Log::setup("example");
+ Log::setup(argv,"example");
#if (QT_VERSION >= QT_VERSION_CHECK(6, 5, 0))
QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
#endif
@@ -63,8 +65,11 @@ int main(int argc, char *argv[])
#endif
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
+ TranslateHelper::getInstance()->init(&engine);
engine.rootContext()->setContextProperty("AppInfo",AppInfo::getInstance());
engine.rootContext()->setContextProperty("SettingsHelper",SettingsHelper::getInstance());
+ engine.rootContext()->setContextProperty("InitalizrHelper",InitalizrHelper::getInstance());
+ engine.rootContext()->setContextProperty("TranslateHelper",TranslateHelper::getInstance());
#ifdef FLUENTUI_BUILD_STATIC_LIB
FluentUI::getInstance()->registerTypes(&engine);
#endif
diff --git a/.cmake/QmlPlugin.cmake b/src/.cmake/QmlPlugin.cmake
similarity index 85%
rename from .cmake/QmlPlugin.cmake
rename to src/.cmake/QmlPlugin.cmake
index 54cdbdfe..b7193718 100644
--- a/.cmake/QmlPlugin.cmake
+++ b/src/.cmake/QmlPlugin.cmake
@@ -1,7 +1,6 @@
include(CMakeParseArguments)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
-
function(FindQmlPluginDump)
get_target_property (QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
execute_process(
@@ -10,7 +9,6 @@ function(FindQmlPluginDump)
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endfunction()
-
function(FindQtInstallQml)
execute_process(
COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_QML
@@ -19,7 +17,6 @@ function(FindQtInstallQml)
)
set(QT_INSTALL_QML ${PROC_RESULT} PARENT_SCOPE)
endfunction()
-
function(add_qmlplugin TARGET)
set(options NO_AUTORCC NO_AUTOMOC)
set(oneValueArgs URI VERSION BINARY_DIR QMLDIR LIBTYPE)
@@ -30,13 +27,12 @@ function(add_qmlplugin TARGET)
return()
endif()
if(NOT QMLPLUGIN_BINARY_DIR)
- set(QMLPLUGIN_BINARY_DIR ${CMAKE_BINARY_DIR}/${QMLPLUGIN_URI})
+ set(QMLPLUGIN_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${QMLPLUGIN_URI})
endif()
add_library(${TARGET} ${QMLPLUGIN_LIBTYPE}
${QMLPLUGIN_SOURCES}
)
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
-
if(QMLPLUGIN_NO_AUTORCC)
set_target_properties(${TARGET} PROPERTIES AUTOMOC OFF)
else()
@@ -47,25 +43,24 @@ if(QMLPLUGIN_NO_AUTOMOC)
else()
set_target_properties(${TARGET} PROPERTIES AUTOMOC ON)
endif()
-
if (${QMLPLUGIN_LIBTYPE} MATCHES "SHARED")
FindQmlPluginDump()
FindQtInstallQml()
if(QMLPLUGIN_BINARY_DIR)
set(MAKE_QMLPLUGINDIR_COMMAND ${CMAKE_COMMAND} -E make_directory ${QMLPLUGIN_BINARY_DIR})
endif()
- set(COPY_QMLDIR_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/qmldir $/${QMLPLUGIN_URI}/qmldir)
- set(INSTALL_QMLDIR_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/qmldir ${QMLPLUGIN_BINARY_DIR}/qmldir)
- set(COPY_QMLTYPES_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/plugins.qmltypes $/${QMLPLUGIN_URI}/plugins.qmltypes)
- set(INSTALL_QMLTYPES_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/plugins.qmltypes ${QMLPLUGIN_BINARY_DIR}/plugins.qmltypes)
+ set(COPY_QMLDIR_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/qmldir $/${QMLPLUGIN_URI}/qmldir)
+ set(INSTALL_QMLDIR_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/qmldir ${QMLPLUGIN_BINARY_DIR}/qmldir)
+ set(COPY_QMLTYPES_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/plugins.qmltypes $/${QMLPLUGIN_URI}/plugins.qmltypes)
+ set(INSTALL_QMLTYPES_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Qt5/${QMLPLUGIN_QMLDIR}/plugins.qmltypes ${QMLPLUGIN_BINARY_DIR}/plugins.qmltypes)
set(COPY_LIBRARY_COMMAND ${CMAKE_COMMAND} -E copy $/$ $/${QMLPLUGIN_URI})
set(INSTALL_LIBRARY_COMMAND ${CMAKE_COMMAND} -E copy $/$ ${QMLPLUGIN_BINARY_DIR})
if(QMLPLUGIN_QMLDIR)
- set(COPY_QMLFILES_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/Qt5/${QMLPLUGIN_QMLDIR} $/${QMLPLUGIN_URI})
+ set(COPY_QMLFILES_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Qt5/${QMLPLUGIN_QMLDIR} $/${QMLPLUGIN_URI})
else()
- set(COPY_QMLFILES_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/${QMLPLUGIN_QMLFILES} $/${QMLPLUGIN_URI})
+ set(COPY_QMLFILES_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${QMLPLUGIN_QMLFILES} $/${QMLPLUGIN_URI})
endif()
- set(INSTALL_QMLFILES_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/Qt5/${QMLPLUGIN_QMLDIR} ${QMLPLUGIN_BINARY_DIR})
+ set(INSTALL_QMLFILES_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Qt5/${QMLPLUGIN_QMLDIR} ${QMLPLUGIN_BINARY_DIR})
if(QMLPLUGIN_BINARY_DIR)
add_custom_command(
TARGET ${TARGET}
@@ -82,7 +77,6 @@ else()
COMMENT "Copying qmldir to binary directory"
)
endif()
-
if(QMLPLUGIN_BINARY_DIR)
add_custom_command(
TARGET ${TARGET}
@@ -99,14 +93,12 @@ else()
COMMENT "Copying qmltypes to binary directory"
)
endif()
-
add_custom_command(
TARGET ${TARGET}
POST_BUILD
COMMAND ${COPY_LIBRARY_COMMAND}
COMMENT "Copying Lib to binary plugin directory"
)
-
if(QMLPLUGIN_QMLFILES)
add_custom_command(
TARGET ${TARGET}
@@ -115,16 +107,13 @@ if(QMLPLUGIN_QMLFILES)
COMMENT "Copying QML files to binary directory"
)
endif()
-
add_custom_command(
TARGET ${TARGET}
POST_BUILD
COMMAND ${GENERATE_QMLTYPES_COMMAND}
COMMENT "Generating plugin.qmltypes"
)
-
string(REPLACE "." "/" QMLPLUGIN_INSTALL_URI ${QMLPLUGIN_URI})
-
add_custom_command(
TARGET ${TARGET}
POST_BUILD
diff --git a/.cmake/version_dll.rc.in b/src/.cmake/version_dll.rc.in
similarity index 100%
rename from .cmake/version_dll.rc.in
rename to src/.cmake/version_dll.rc.in
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7a85bf03..0c0f9ff5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,8 @@ else()
project(fluentuiplugin VERSION 1.0)
endif()
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/)
+
#配置通用编译
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -81,9 +83,9 @@ endif()
#如果是Windows平台,则生成rc文件
set(FLUENTUI_VERSION_RC_PATH "")
if(WIN32)
- set(FLUENTUI_VERSION_RC_PATH ${CMAKE_BINARY_DIR}/version_${PROJECT_NAME}.rc)
+ set(FLUENTUI_VERSION_RC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/version_${PROJECT_NAME}.rc)
configure_file(
- ${FLUENTUI_DIRECTORY}/.cmake/version_dll.rc.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/version_dll.rc.in
${FLUENTUI_VERSION_RC_PATH}
)
endif()
@@ -91,7 +93,7 @@ endif()
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
#如果是Qt6.2版本以上,则使用qt_add_library,qt_add_qml_module函数添加资源文件
if(FLUENTUI_BUILD_STATIC_LIB)
- set(FLUENTUI_QML_PLUGIN_DIRECTORY ${CMAKE_BINARY_DIR}/FluentUI)
+ set(FLUENTUI_QML_PLUGIN_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/FluentUI)
endif()
qt_add_library(${PROJECT_NAME} ${LIB_TYPE})
qt_add_qml_module(${PROJECT_NAME}
diff --git a/src/FluTheme.cpp b/src/FluTheme.cpp
index e967dc90..6283d5c3 100644
--- a/src/FluTheme.cpp
+++ b/src/FluTheme.cpp
@@ -29,7 +29,7 @@ FluTheme::FluTheme(QObject *parent):QObject{parent}{
void FluTheme::refreshColors(){
auto isDark = dark();
primaryColor(isDark ? _accentColor->lighter() : _accentColor->dark());
- backgroundColor(isDark ? QColor(0,0,0,255) : QColor(1,1,1,255));
+ backgroundColor(isDark ? QColor(0,0,0,255) : QColor(255,255,255,255));
dividerColor(isDark ? QColor(80,80,80,255) : QColor(210,210,210,255));
windowBackgroundColor(isDark ? QColor(32,32,32,255) : QColor(237,237,237,255));
windowActiveBackgroundColor(isDark ? QColor(26,26,26,255) : QColor(243,243,243,255));
diff --git a/src/Qt5/imports/FluentUI/Controls/FluContentDialog.qml b/src/Qt5/imports/FluentUI/Controls/FluContentDialog.qml
index 1a49ddad..8ca8a3ba 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluContentDialog.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluContentDialog.qml
@@ -41,7 +41,7 @@ FluPopup {
FluText{
id:text_message
font: FluTextStyle.Body
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
text:message
width: parent.width
topPadding: 4
@@ -67,7 +67,7 @@ FluPopup {
topPadding: 20
leftPadding: 20
rightPadding: 20
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
}
FluLoader{
sourceComponent: com_message
diff --git a/src/Qt5/imports/FluentUI/Controls/FluDatePicker.qml b/src/Qt5/imports/FluentUI/Controls/FluDatePicker.qml
index eaa261f7..ecf94810 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluDatePicker.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluDatePicker.qml
@@ -10,6 +10,11 @@ Rectangle {
property color normalColor: FluTheme.dark ? Qt.rgba(61/255,61/255,61/255,1) : Qt.rgba(254/255,254/255,254/255,1)
property bool showYear: true
property var current
+ property string yearText: "年"
+ property string monthText: "月"
+ property string dayText: "日"
+ property string cancelText: "取消"
+ property string okText: "确定"
signal accepted()
id:control
color: {
@@ -26,9 +31,9 @@ Rectangle {
Component.onCompleted: {
if(current){
const now = current;
- var year = text_year.text === "年"? now.getFullYear() : Number(text_year.text);
- var month = text_month.text === "月"? now.getMonth() + 1 : Number(text_month.text);
- var day = text_day.text === "日" ? now.getDate() : Number(text_day.text);
+ var year = text_year.text === control.yearText? now.getFullYear() : Number(text_year.text);
+ var month = text_month.text === control.monthText? now.getMonth() + 1 : Number(text_month.text);
+ var day = text_day.text === control.dayText ? now.getDate() : Number(text_day.text);
text_year.text = year
text_month.text = month
text_day.text = day
@@ -75,7 +80,7 @@ Rectangle {
visible: showYear
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"年"
+ text:control.yearText
}
FluText{
id:text_month
@@ -87,7 +92,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"月"
+ text:control.monthText
}
FluText{
id:text_day
@@ -99,7 +104,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"日"
+ text:control.dayText
}
Menu{
id:popup
@@ -315,7 +320,7 @@ Rectangle {
right: divider.left
verticalCenter: parent.verticalCenter
}
- text: "取消"
+ text: control.cancelText
onClicked: {
popup.close()
}
@@ -328,7 +333,7 @@ Rectangle {
leftMargin: 10
verticalCenter: parent.verticalCenter
}
- text: "确定"
+ text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
@@ -356,9 +361,9 @@ Rectangle {
d.rowData[1] = text_month.text
d.rowData[2] = text_day.text
const now = new Date();
- var year = text_year.text === "年"? now.getFullYear() : Number(text_year.text);
- var month = text_month.text === "月"? now.getMonth() + 1 : Number(text_month.text);
- var day = text_day.text === "日" ? now.getDate() : Number(text_day.text);
+ var year = text_year.text === control.yearText? now.getFullYear() : Number(text_year.text);
+ var month = text_month.text === control.monthText? now.getMonth() + 1 : Number(text_month.text);
+ var day = text_day.text === control.dayText ? now.getDate() : Number(text_day.text);
list_view_1.currentIndex = list_view_1.model.indexOf(year)
text_year.text = year
list_view_2.model = generateMonthArray(1,12)
diff --git a/src/Qt5/imports/FluentUI/Controls/FluFilledButton.qml b/src/Qt5/imports/FluentUI/Controls/FluFilledButton.qml
index 2827fd60..2dd4f198 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluFilledButton.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluFilledButton.qml
@@ -38,17 +38,17 @@ Button {
radius:4
}
gradient: Gradient {
- GradientStop { position: 0.33; color: control.normalColor }
- GradientStop { position: 1.0; color: Qt.darker(control.normalColor,1.3) }
+ GradientStop { position: 0.33; color: control.enabled ? control.normalColor : Qt.rgba(0,0,0,0) }
+ GradientStop { position: 1.0; color: control.enabled ? Qt.darker(control.normalColor,1.3) : Qt.rgba(0,0,0,0) }
}
Rectangle{
radius: parent.radius
anchors{
fill: parent
- topMargin: 1
- leftMargin: 1
- rightMargin: 1
- bottomMargin: 2
+ topMargin: control.enabled ? 1 : 0
+ leftMargin: control.enabled ? 1 : 0
+ rightMargin: control.enabled ? 1 : 0
+ bottomMargin: control.enabled ? 2 : 0
}
color:{
if(!enabled){
diff --git a/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml b/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml
index 0e9d3006..355f99c4 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml
@@ -192,7 +192,7 @@ FluObject {
spacing: 5
FluText{
text:_super.text
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
width: Math.min(implicitWidth,mcontrol.maxWidth)
}
FluText{
diff --git a/src/Qt5/imports/FluentUI/Controls/FluMultilineTextBox.qml b/src/Qt5/imports/FluentUI/Controls/FluMultilineTextBox.qml
index c09d6193..7168f25b 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluMultilineTextBox.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluMultilineTextBox.qml
@@ -20,7 +20,7 @@ TextArea{
return normalColor
}
font:FluTextStyle.Body
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 8
leftPadding: padding+4
renderType: FluTheme.nativeText ? Text.NativeRendering : Text.QtRendering
diff --git a/src/Qt5/imports/FluentUI/Controls/FluTableView.qml b/src/Qt5/imports/FluentUI/Controls/FluTableView.qml
index 7ff4ffe3..0f5a94af 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluTableView.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluTableView.qml
@@ -141,7 +141,7 @@ Rectangle {
id:item_text
text: String(display)
elide: Text.ElideRight
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
anchors{
fill: parent
leftMargin: 11
diff --git a/src/Qt5/imports/FluentUI/Controls/FluTimePicker.qml b/src/Qt5/imports/FluentUI/Controls/FluTimePicker.qml
index 7319d96c..8ac4e2c6 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluTimePicker.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluTimePicker.qml
@@ -11,6 +11,12 @@ Rectangle {
property int hourFormat: FluTimePickerType.H
property int isH: hourFormat === FluTimePickerType.H
property var current
+ property string amText: "上午"
+ property string pmText: "下午"
+ property string hourText: "时"
+ property string minuteText: "分"
+ property string cancelText: "取消"
+ property string okText: "确定"
signal accepted()
id:control
color: {
@@ -32,17 +38,17 @@ Rectangle {
if(isH){
hour = now.getHours();
if(hour>12){
- ampm = "下午"
+ ampm = control.pmText
hour = hour-12
}else{
- ampm = "上午"
+ ampm = control.amText
}
}else{
hour = now.getHours();
}
- hour = text_hour.text === "时"? hour.toString().padStart(2, '0') : text_hour.text
- var minute = text_minute.text === "分"? now.getMinutes().toString().padStart(2, '0') : text_minute.text
- ampm = text_ampm.text === "AM/PM"?ampm:text_ampm.text
+ hour = text_hour.text === control.hourText ? hour.toString().padStart(2, '0') : text_hour.text
+ var minute = text_minute.text === control.minuteText ? now.getMinutes().toString().padStart(2, '0') : text_minute.text
+ ampm = text_ampm.text === "%1/%2".arg(control.amText).arg(control.pmText) ? ampm : text_ampm.text
text_hour.text = hour
text_minute.text = minute
if(isH){
@@ -60,7 +66,7 @@ Rectangle {
}
MouseArea{
- id:mouse_area
+ id: mouse_area
hoverEnabled: true
anchors.fill: parent
onClicked: {
@@ -68,22 +74,22 @@ Rectangle {
}
}
Rectangle{
- id:divider_1
+ id: divider_1
width: 1
x: isH ? parent.width/3 : parent.width/2
height: parent.height
color: dividerColor
}
Rectangle{
- id:divider_2
+ id: divider_2
width: 1
- x:parent.width*2/3
+ x: parent.width*2/3
height: parent.height
color: dividerColor
visible: isH
}
FluText{
- id:text_hour
+ id: text_hour
anchors{
left: parent.left
right: divider_1.left
@@ -92,10 +98,10 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"时"
+ text: control.hourText
}
FluText{
- id:text_minute
+ id: text_minute
anchors{
left: divider_1.right
right: isH ? divider_2.left : parent.right
@@ -104,7 +110,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"分"
+ text: control.minuteText
}
FluText{
id:text_ampm
@@ -117,7 +123,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"AM/PM"
+ text: "%1/%2".arg(control.amText).arg(control.pmText)
}
Menu{
id:popup
@@ -278,7 +284,7 @@ Rectangle {
id:list_view_3
width: 100
height: 76
- model: ["上午","下午"]
+ model: [control.amText,control.pmText]
clip: true
visible: isH
preferredHighlightBegin: 0
@@ -325,7 +331,7 @@ Rectangle {
right: divider.left
verticalCenter: parent.verticalCenter
}
- text: "取消"
+ text: control.cancelText
onClicked: {
popup.close()
}
@@ -338,7 +344,7 @@ Rectangle {
leftMargin: 10
verticalCenter: parent.verticalCenter
}
- text: "确定"
+ text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
@@ -349,9 +355,9 @@ Rectangle {
var hours24 = parseInt(hours);
if(control.hourFormat === FluTimePickerType.H){
if (hours === "12") {
- hours24 = (period === "上午") ? 0 : 12;
+ hours24 = (period === control.amText) ? 0 : 12;
} else {
- hours24 = (period === "上午") ? hours24 : hours24 + 12;
+ hours24 = (period === control.pmText) ? hours24 : hours24 + 12;
}
}
date.setHours(hours24);
@@ -376,17 +382,17 @@ Rectangle {
if(isH){
hour = now.getHours();
if(hour>12){
- ampm = "下午"
+ ampm = control.pmText
hour = hour-12
}else{
- ampm = "上午"
+ ampm = control.amText
}
}else{
hour = now.getHours();
}
- hour = text_hour.text === "时"? hour.toString().padStart(2, '0') : text_hour.text
- var minute = text_minute.text === "分"? now.getMinutes().toString().padStart(2, '0') : text_minute.text
- ampm = text_ampm.text === "AM/PM"?ampm:text_ampm.text
+ hour = text_hour.text === control.hourText ? hour.toString().padStart(2, '0') : text_hour.text
+ var minute = text_minute.text === control.minuteText ? now.getMinutes().toString().padStart(2, '0') : text_minute.text
+ ampm = text_ampm.text === "%1/%2".arg(control.amText).arg(control.pmText) ? ampm : text_ampm.text
list_view_1.currentIndex = list_view_1.model.indexOf(hour);
list_view_2.currentIndex = list_view_2.model.indexOf(minute);
list_view_3.currentIndex = list_view_3.model.indexOf(ampm);
@@ -421,4 +427,3 @@ Rectangle {
return arr;
}
}
-
diff --git a/src/Qt5/imports/FluentUI/Controls/FluTimeline.qml b/src/Qt5/imports/FluentUI/Controls/FluTimeline.qml
index a4a3b564..f4508aac 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluTimeline.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluTimeline.qml
@@ -95,7 +95,7 @@ Item{
Component{
id:com_lable
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: {
if(modelData.lable){
@@ -110,7 +110,7 @@ Item{
Component{
id:com_text
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: modelData.text
textFormat: Text.RichText
diff --git a/src/Qt5/imports/FluentUI/Controls/FluToggleButton.qml b/src/Qt5/imports/FluentUI/Controls/FluToggleButton.qml
index 4013eb2c..e77ba5bc 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluToggleButton.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluToggleButton.qml
@@ -39,6 +39,11 @@ Button {
enabled: !disabled
verticalPadding: 0
horizontalPadding:12
+ onCheckableChanged: {
+ if(checkable){
+ checkable = false
+ }
+ }
onClicked: clickListener()
background: Rectangle{
implicitWidth: 28
@@ -49,17 +54,17 @@ Button {
radius:4
}
gradient: Gradient {
- GradientStop { position: 0.33; color: control.normalColor }
- GradientStop { position: 1.0; color: Qt.darker(control.normalColor,1.3) }
+ GradientStop { position: 0.33; color: control.enabled ? control.normalColor : Qt.rgba(0,0,0,0) }
+ GradientStop { position: 1.0; color: control.enabled ? Qt.darker(control.normalColor,1.3) : Qt.rgba(0,0,0,0) }
}
Rectangle{
radius: parent.radius
anchors{
fill: parent
- topMargin: checked ? 1 : 0
- leftMargin: checked ? 1 : 0
- rightMargin: checked ? 1 : 0
- bottomMargin: checked ? 2 : 0
+ topMargin: checked && enabled ? 1 : 0
+ leftMargin: checked && enabled ? 1 : 0
+ rightMargin: checked && enabled ? 1 : 0
+ bottomMargin: checked && enabled ? 2 : 0
}
color:{
if(!enabled){
diff --git a/src/Qt5/imports/FluentUI/Controls/FluTour.qml b/src/Qt5/imports/FluentUI/Controls/FluTour.qml
index abfc5036..dd336479 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluTour.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluTour.qml
@@ -10,6 +10,9 @@ Popup{
property Component nextButton: com_next_button
property Component prevButton: com_prev_button
property int index : 0
+ property string finishText: "结束导览"
+ property string nextText: "下一步"
+ property string previousText: "上一步"
id:control
padding: 0
parent: Overlay.overlay
@@ -26,9 +29,9 @@ Popup{
canvas.requestPaint()
}
Component{
- id:com_next_button
+ id: com_next_button
FluFilledButton{
- text: isEnd ? "结束导览" :"下一步"
+ text: isEnd ? control.finishText : control.nextText
onClicked: {
if(isEnd){
control.close()
@@ -39,9 +42,9 @@ Popup{
}
}
Component{
- id:com_prev_button
+ id: com_prev_button
FluButton{
- text: "上一步"
+ text: control.previousText
onClicked: {
control.index = control.index - 1
}
@@ -51,8 +54,8 @@ Popup{
id:d
property var window: Window.window
property point pos: Qt.point(0,0)
- property var step : steps[index]
- property var target : step.target()
+ property var step: steps[index]
+ property var target: step.target()
}
Connections{
target: d.window
@@ -66,14 +69,14 @@ Popup{
}
}
Timer{
- id:timer_delay
+ id: timer_delay
interval: 200
onTriggered: {
canvas.requestPaint()
}
}
Canvas{
- id:canvas
+ id: canvas
anchors.fill: parent
onPaint: {
d.pos = d.target.mapToGlobal(0,0)
@@ -105,7 +108,7 @@ Popup{
}
}
FluArea{
- id:layout_panne
+ id: layout_panne
radius: 5
width: 500
height: 88 + text_desc.height
@@ -116,7 +119,7 @@ Popup{
return 0
}
x: Math.min(Math.max(0,d.pos.x+d.target.width/2-width/2),control.width-width)
- y:{
+ y: {
var ty=d.pos.y+d.target.height+control.targetMargins + 15
if((ty+height)>control.height)
return d.pos.y-height-control.targetMargins - 15
@@ -140,9 +143,9 @@ Popup{
}
}
FluText{
- id:text_desc
+ id: text_desc
font: FluTextStyle.Body
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
maximumLineCount: 4
elide: Text.ElideRight
text: d.step.description
@@ -156,22 +159,22 @@ Popup{
}
}
FluLoader{
- id:loader_next
+ id: loader_next
property bool isEnd: control.index === steps.length-1
sourceComponent: com_next_button
anchors{
- top:text_desc.bottom
+ top: text_desc.bottom
topMargin: 10
right: parent.right
rightMargin: 15
}
}
FluLoader{
- id:loader_prev
+ id: loader_prev
visible: control.index !== 0
sourceComponent: com_prev_button
anchors{
- right:loader_next.left
+ right: loader_next.left
top: loader_next.top
rightMargin: 14
}
@@ -187,7 +190,7 @@ Popup{
verticalPadding: 0
horizontalPadding: 0
iconSize: 12
- iconSource : FluentIcons.ChromeClose
+ iconSource: FluentIcons.ChromeClose
onClicked: {
control.close()
}
diff --git a/src/Qt5/imports/FluentUI/Controls/FluWindow.qml b/src/Qt5/imports/FluentUI/Controls/FluWindow.qml
index e904b893..51635539 100644
--- a/src/Qt5/imports/FluentUI/Controls/FluWindow.qml
+++ b/src/Qt5/imports/FluentUI/Controls/FluWindow.qml
@@ -7,7 +7,6 @@ import FluentUI 1.0
Window {
default property alias content: layout_content.data
property string windowIcon: FluApp.windowIcon
- property bool closeDestory: true
property int launchMode: FluWindowType.Standard
property var argument:({})
property var background : com_background
@@ -39,6 +38,7 @@ Window {
property bool autoMaximize: false
property bool autoVisible: true
property bool autoCenter: true
+ property bool autoDestory: true
property bool useSystemAppBar
property color resizeBorderColor: {
if(window.active){
@@ -48,7 +48,7 @@ Window {
}
property int resizeBorderWidth: 1
property var closeListener: function(event){
- if(closeDestory){
+ if(autoDestory){
destoryOnClose()
}else{
visible = false
diff --git a/src/Qt6/imports/FluentUI/Controls/FluContentDialog.qml b/src/Qt6/imports/FluentUI/Controls/FluContentDialog.qml
index 0ca3b277..b281ed7e 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluContentDialog.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluContentDialog.qml
@@ -41,7 +41,7 @@ FluPopup {
FluText{
id:text_message
font: FluTextStyle.Body
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
text:message
width: parent.width
topPadding: 4
@@ -67,7 +67,7 @@ FluPopup {
topPadding: 20
leftPadding: 20
rightPadding: 20
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
}
FluLoader{
sourceComponent: com_message
diff --git a/src/Qt6/imports/FluentUI/Controls/FluDatePicker.qml b/src/Qt6/imports/FluentUI/Controls/FluDatePicker.qml
index 5862fad1..3271dddf 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluDatePicker.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluDatePicker.qml
@@ -10,6 +10,11 @@ Rectangle {
property color normalColor: FluTheme.dark ? Qt.rgba(61/255,61/255,61/255,1) : Qt.rgba(254/255,254/255,254/255,1)
property bool showYear: true
property var current
+ property string yearText: "年"
+ property string monthText: "月"
+ property string dayText: "日"
+ property string cancelText: "取消"
+ property string okText: "确定"
signal accepted()
id:control
color: {
@@ -26,9 +31,9 @@ Rectangle {
Component.onCompleted: {
if(current){
const now = current;
- var year = text_year.text === "年"? now.getFullYear() : Number(text_year.text);
- var month = text_month.text === "月"? now.getMonth() + 1 : Number(text_month.text);
- var day = text_day.text === "日" ? now.getDate() : Number(text_day.text);
+ var year = text_year.text === control.yearText? now.getFullYear() : Number(text_year.text);
+ var month = text_month.text === control.monthText? now.getMonth() + 1 : Number(text_month.text);
+ var day = text_day.text === control.dayText ? now.getDate() : Number(text_day.text);
text_year.text = year
text_month.text = month
text_day.text = day
@@ -75,7 +80,7 @@ Rectangle {
visible: showYear
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"年"
+ text:control.yearText
}
FluText{
id:text_month
@@ -87,7 +92,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"月"
+ text:control.monthText
}
FluText{
id:text_day
@@ -99,7 +104,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"日"
+ text:control.dayText
}
Menu{
id:popup
@@ -315,7 +320,7 @@ Rectangle {
right: divider.left
verticalCenter: parent.verticalCenter
}
- text: "取消"
+ text: control.cancelText
onClicked: {
popup.close()
}
@@ -328,7 +333,7 @@ Rectangle {
leftMargin: 10
verticalCenter: parent.verticalCenter
}
- text: "确定"
+ text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
@@ -356,9 +361,9 @@ Rectangle {
d.rowData[1] = text_month.text
d.rowData[2] = text_day.text
const now = new Date();
- var year = text_year.text === "年"? now.getFullYear() : Number(text_year.text);
- var month = text_month.text === "月"? now.getMonth() + 1 : Number(text_month.text);
- var day = text_day.text === "日" ? now.getDate() : Number(text_day.text);
+ var year = text_year.text === control.yearText? now.getFullYear() : Number(text_year.text);
+ var month = text_month.text === control.monthText? now.getMonth() + 1 : Number(text_month.text);
+ var day = text_day.text === control.dayText ? now.getDate() : Number(text_day.text);
list_view_1.currentIndex = list_view_1.model.indexOf(year)
text_year.text = year
list_view_2.model = generateMonthArray(1,12)
diff --git a/src/Qt6/imports/FluentUI/Controls/FluFilledButton.qml b/src/Qt6/imports/FluentUI/Controls/FluFilledButton.qml
index d95b64cc..9827c289 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluFilledButton.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluFilledButton.qml
@@ -39,17 +39,17 @@ Button {
radius:4
}
gradient: Gradient {
- GradientStop { position: 0.33; color: control.normalColor }
- GradientStop { position: 1.0; color: Qt.darker(control.normalColor,1.3) }
+ GradientStop { position: 0.33; color: control.enabled ? control.normalColor : Qt.rgba(0,0,0,0) }
+ GradientStop { position: 1.0; color: control.enabled ? Qt.darker(control.normalColor,1.3) : Qt.rgba(0,0,0,0) }
}
Rectangle{
radius: parent.radius
anchors{
fill: parent
- topMargin: 1
- leftMargin: 1
- rightMargin: 1
- bottomMargin: 2
+ topMargin: control.enabled ? 1 : 0
+ leftMargin: control.enabled ? 1 : 0
+ rightMargin: control.enabled ? 1 : 0
+ bottomMargin: control.enabled ? 2 : 0
}
color:{
if(!enabled){
diff --git a/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml b/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml
index df02d788..c54f526a 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml
@@ -192,7 +192,7 @@ FluObject {
spacing: 5
FluText{
text:_super.text
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
width: Math.min(implicitWidth,mcontrol.maxWidth)
}
FluText{
diff --git a/src/Qt6/imports/FluentUI/Controls/FluMultilineTextBox.qml b/src/Qt6/imports/FluentUI/Controls/FluMultilineTextBox.qml
index 6d1c3649..d8562a4b 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluMultilineTextBox.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluMultilineTextBox.qml
@@ -21,7 +21,7 @@ TextArea{
return normalColor
}
font:FluTextStyle.Body
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
padding: 8
leftPadding: padding+4
renderType: FluTheme.nativeText ? Text.NativeRendering : Text.QtRendering
diff --git a/src/Qt6/imports/FluentUI/Controls/FluTableView.qml b/src/Qt6/imports/FluentUI/Controls/FluTableView.qml
index 1be0d668..2b3f8f5b 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluTableView.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluTableView.qml
@@ -142,7 +142,7 @@ Rectangle {
id:item_text
text: String(display)
elide: Text.ElideRight
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
anchors{
fill: parent
leftMargin: 11
diff --git a/src/Qt6/imports/FluentUI/Controls/FluTimePicker.qml b/src/Qt6/imports/FluentUI/Controls/FluTimePicker.qml
index 9dfd3ea9..f34b6dd6 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluTimePicker.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluTimePicker.qml
@@ -11,6 +11,12 @@ Rectangle {
property int hourFormat: FluTimePickerType.H
property int isH: hourFormat === FluTimePickerType.H
property var current
+ property string amText: "上午"
+ property string pmText: "下午"
+ property string hourText: "时"
+ property string minuteText: "分"
+ property string cancelText: "取消"
+ property string okText: "确定"
signal accepted()
id:control
color: {
@@ -32,17 +38,17 @@ Rectangle {
if(isH){
hour = now.getHours();
if(hour>12){
- ampm = "下午"
+ ampm = control.pmText
hour = hour-12
}else{
- ampm = "上午"
+ ampm = control.amText
}
}else{
hour = now.getHours();
}
- hour = text_hour.text === "时"? hour.toString().padStart(2, '0') : text_hour.text
- var minute = text_minute.text === "分"? now.getMinutes().toString().padStart(2, '0') : text_minute.text
- ampm = text_ampm.text === "AM/PM"?ampm:text_ampm.text
+ hour = text_hour.text === control.hourText ? hour.toString().padStart(2, '0') : text_hour.text
+ var minute = text_minute.text === control.minuteText ? now.getMinutes().toString().padStart(2, '0') : text_minute.text
+ ampm = text_ampm.text === "%1/%2".arg(control.amText).arg(control.pmText) ? ampm : text_ampm.text
text_hour.text = hour
text_minute.text = minute
if(isH){
@@ -60,7 +66,7 @@ Rectangle {
}
MouseArea{
- id:mouse_area
+ id: mouse_area
hoverEnabled: true
anchors.fill: parent
onClicked: {
@@ -68,22 +74,22 @@ Rectangle {
}
}
Rectangle{
- id:divider_1
+ id: divider_1
width: 1
x: isH ? parent.width/3 : parent.width/2
height: parent.height
color: dividerColor
}
Rectangle{
- id:divider_2
+ id: divider_2
width: 1
- x:parent.width*2/3
+ x: parent.width*2/3
height: parent.height
color: dividerColor
visible: isH
}
FluText{
- id:text_hour
+ id: text_hour
anchors{
left: parent.left
right: divider_1.left
@@ -92,10 +98,10 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"时"
+ text: control.hourText
}
FluText{
- id:text_minute
+ id: text_minute
anchors{
left: divider_1.right
right: isH ? divider_2.left : parent.right
@@ -104,7 +110,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"分"
+ text: control.minuteText
}
FluText{
id:text_ampm
@@ -117,7 +123,7 @@ Rectangle {
}
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
- text:"AM/PM"
+ text: "%1/%2".arg(control.amText).arg(control.pmText)
}
Menu{
id:popup
@@ -278,7 +284,7 @@ Rectangle {
id:list_view_3
width: 100
height: 76
- model: ["上午","下午"]
+ model: [control.amText,control.pmText]
clip: true
visible: isH
preferredHighlightBegin: 0
@@ -325,7 +331,7 @@ Rectangle {
right: divider.left
verticalCenter: parent.verticalCenter
}
- text: "取消"
+ text: control.cancelText
onClicked: {
popup.close()
}
@@ -338,7 +344,7 @@ Rectangle {
leftMargin: 10
verticalCenter: parent.verticalCenter
}
- text: "确定"
+ text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
@@ -349,9 +355,9 @@ Rectangle {
var hours24 = parseInt(hours);
if(control.hourFormat === FluTimePickerType.H){
if (hours === "12") {
- hours24 = (period === "上午") ? 0 : 12;
+ hours24 = (period === control.amText) ? 0 : 12;
} else {
- hours24 = (period === "上午") ? hours24 : hours24 + 12;
+ hours24 = (period === control.pmText) ? hours24 : hours24 + 12;
}
}
date.setHours(hours24);
@@ -376,17 +382,17 @@ Rectangle {
if(isH){
hour = now.getHours();
if(hour>12){
- ampm = "下午"
+ ampm = control.pmText
hour = hour-12
}else{
- ampm = "上午"
+ ampm = control.amText
}
}else{
hour = now.getHours();
}
- hour = text_hour.text === "时"? hour.toString().padStart(2, '0') : text_hour.text
- var minute = text_minute.text === "分"? now.getMinutes().toString().padStart(2, '0') : text_minute.text
- ampm = text_ampm.text === "AM/PM"?ampm:text_ampm.text
+ hour = text_hour.text === control.hourText ? hour.toString().padStart(2, '0') : text_hour.text
+ var minute = text_minute.text === control.minuteText ? now.getMinutes().toString().padStart(2, '0') : text_minute.text
+ ampm = text_ampm.text === "%1/%2".arg(control.amText).arg(control.pmText) ? ampm : text_ampm.text
list_view_1.currentIndex = list_view_1.model.indexOf(hour);
list_view_2.currentIndex = list_view_2.model.indexOf(minute);
list_view_3.currentIndex = list_view_3.model.indexOf(ampm);
diff --git a/src/Qt6/imports/FluentUI/Controls/FluTimeline.qml b/src/Qt6/imports/FluentUI/Controls/FluTimeline.qml
index 6a42bf9c..32253e04 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluTimeline.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluTimeline.qml
@@ -95,7 +95,7 @@ Item{
Component{
id:com_lable
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: {
if(modelData.lable){
@@ -110,7 +110,7 @@ Item{
Component{
id:com_text
FluText{
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
horizontalAlignment: isRight ? Qt.AlignRight : Qt.AlignLeft
text: modelData.text
textFormat: Text.RichText
diff --git a/src/Qt6/imports/FluentUI/Controls/FluToggleButton.qml b/src/Qt6/imports/FluentUI/Controls/FluToggleButton.qml
index 83b1ba05..19dc6560 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluToggleButton.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluToggleButton.qml
@@ -50,17 +50,17 @@ Button {
radius:4
}
gradient: Gradient {
- GradientStop { position: 0.33; color: control.normalColor }
- GradientStop { position: 1.0; color: Qt.darker(control.normalColor,1.3) }
+ GradientStop { position: 0.33; color: control.enabled ? control.normalColor : Qt.rgba(0,0,0,0) }
+ GradientStop { position: 1.0; color: control.enabled ? Qt.darker(control.normalColor,1.3) : Qt.rgba(0,0,0,0) }
}
Rectangle{
radius: parent.radius
anchors{
fill: parent
- topMargin: checked ? 1 : 0
- leftMargin: checked ? 1 : 0
- rightMargin: checked ? 1 : 0
- bottomMargin: checked ? 2 : 0
+ topMargin: checked && enabled ? 1 : 0
+ leftMargin: checked && enabled ? 1 : 0
+ rightMargin: checked && enabled ? 1 : 0
+ bottomMargin: checked && enabled ? 2 : 0
}
color:{
if(!enabled){
diff --git a/src/Qt6/imports/FluentUI/Controls/FluTour.qml b/src/Qt6/imports/FluentUI/Controls/FluTour.qml
index 4e44b871..d406beb5 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluTour.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluTour.qml
@@ -10,6 +10,9 @@ Popup{
property Component nextButton: com_next_button
property Component prevButton: com_prev_button
property int index : 0
+ property string finishText: "结束导览"
+ property string nextText: "下一步"
+ property string previousText: "上一步"
id:control
padding: 0
parent: Overlay.overlay
@@ -26,9 +29,9 @@ Popup{
canvas.requestPaint()
}
Component{
- id:com_next_button
+ id: com_next_button
FluFilledButton{
- text: isEnd ? "结束导览" :"下一步"
+ text: isEnd ? control.finishText : control.nextText
onClicked: {
if(isEnd){
control.close()
@@ -39,9 +42,9 @@ Popup{
}
}
Component{
- id:com_prev_button
+ id: com_prev_button
FluButton{
- text: "上一步"
+ text: control.previousText
onClicked: {
control.index = control.index - 1
}
@@ -51,8 +54,8 @@ Popup{
id:d
property var window: Window.window
property point pos: Qt.point(0,0)
- property var step : steps[index]
- property var target : step.target()
+ property var step: steps[index]
+ property var target: step.target()
}
Connections{
target: d.window
@@ -66,14 +69,14 @@ Popup{
}
}
Timer{
- id:timer_delay
+ id: timer_delay
interval: 200
onTriggered: {
canvas.requestPaint()
}
}
Canvas{
- id:canvas
+ id: canvas
anchors.fill: parent
onPaint: {
d.pos = d.target.mapToGlobal(0,0)
@@ -105,7 +108,7 @@ Popup{
}
}
FluArea{
- id:layout_panne
+ id: layout_panne
radius: 5
width: 500
height: 88 + text_desc.height
@@ -116,7 +119,7 @@ Popup{
return 0
}
x: Math.min(Math.max(0,d.pos.x+d.target.width/2-width/2),control.width-width)
- y:{
+ y: {
var ty=d.pos.y+d.target.height+control.targetMargins + 15
if((ty+height)>control.height)
return d.pos.y-height-control.targetMargins - 15
@@ -140,9 +143,9 @@ Popup{
}
}
FluText{
- id:text_desc
+ id: text_desc
font: FluTextStyle.Body
- wrapMode: Text.WrapAnywhere
+ wrapMode: Text.WordWrap
maximumLineCount: 4
elide: Text.ElideRight
text: d.step.description
@@ -156,22 +159,22 @@ Popup{
}
}
FluLoader{
- id:loader_next
+ id: loader_next
property bool isEnd: control.index === steps.length-1
sourceComponent: com_next_button
anchors{
- top:text_desc.bottom
+ top: text_desc.bottom
topMargin: 10
right: parent.right
rightMargin: 15
}
}
FluLoader{
- id:loader_prev
+ id: loader_prev
visible: control.index !== 0
sourceComponent: com_prev_button
anchors{
- right:loader_next.left
+ right: loader_next.left
top: loader_next.top
rightMargin: 14
}
@@ -187,7 +190,7 @@ Popup{
verticalPadding: 0
horizontalPadding: 0
iconSize: 12
- iconSource : FluentIcons.ChromeClose
+ iconSource: FluentIcons.ChromeClose
onClicked: {
control.close()
}
diff --git a/src/Qt6/imports/FluentUI/Controls/FluWindow.qml b/src/Qt6/imports/FluentUI/Controls/FluWindow.qml
index a00e83ab..e5fe38d4 100644
--- a/src/Qt6/imports/FluentUI/Controls/FluWindow.qml
+++ b/src/Qt6/imports/FluentUI/Controls/FluWindow.qml
@@ -6,7 +6,6 @@ import FluentUI
Window {
default property alias content: layout_content.data
property string windowIcon: FluApp.windowIcon
- property bool closeDestory: true
property int launchMode: FluWindowType.Standard
property var argument:({})
property var background : com_background
@@ -38,6 +37,7 @@ Window {
property bool autoMaximize: false
property bool autoVisible: true
property bool autoCenter: true
+ property bool autoDestory: true
property bool useSystemAppBar
property color resizeBorderColor: {
if(window.active){
@@ -47,7 +47,7 @@ Window {
}
property int resizeBorderWidth: 1
property var closeListener: function(event){
- if(closeDestory){
+ if(autoDestory){
destoryOnClose()
}else{
visible = false
diff --git a/src/version_fluentuiplugin.rc b/src/version_fluentuiplugin.rc
new file mode 100644
index 00000000..4febd6e5
--- /dev/null
+++ b/src/version_fluentuiplugin.rc
@@ -0,0 +1,32 @@
+1 VERSIONINFO
+ FILEVERSION 1,6,9,1176
+ PRODUCTVERSION 1,6,9,1176
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "080404b0"
+ BEGIN
+ VALUE "CompanyName", "ZhuZiChu"
+ VALUE "FileDescription", ""
+ VALUE "FileVersion", "1.6.9.1176"
+ VALUE "InternalName", "fluentuiplugin.dll"
+ VALUE "LegalCopyright", "Copyright (C) 2023 ZhuZiChu. All rights reserved."
+ VALUE "OriginalFilename", "fluentuiplugin.dll"
+ VALUE "ProductName", "fluentuiplugin"
+ VALUE "ProductVersion", "1.6.9.0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x804, 1200
+ END
+END