侠义书生 3 年之前
当前提交
6e4e75ce90
共有 100 个文件被更改,包括 17401 次插入0 次删除
  1. 33 0
      kylin-os-installer-1.0.9/Kylin-Installer.pro
  2. 54 0
      kylin-os-installer-1.0.9/README.md
  3. 63 0
      kylin-os-installer-1.0.9/config_file/pwquality.conf
  4. 10 0
      kylin-os-installer-1.0.9/data/delete-oem-user.service
  5. 94 0
      kylin-os-installer-1.0.9/data/delete-oem-user.sh
  6. 4 0
      kylin-os-installer-1.0.9/data/kylin-os-installer-dm
  7. 16 0
      kylin-os-installer-1.0.9/data/kylin-os-installer-live
  8. 19 0
      kylin-os-installer-1.0.9/data/kylin-os-installer-oem
  9. 19 0
      kylin-os-installer-1.0.9/data/kylin-os-installer-oem-automatic
  10. 32 0
      kylin-os-installer-1.0.9/data/oem-config.service
  11. 7 0
      kylin-os-installer-1.0.9/data/oem-config.target
  12. 10 0
      kylin-os-installer-1.0.9/data/oem-qc.service
  13. 23 0
      kylin-os-installer-1.0.9/data/oem-qc.sh
  14. 17 0
      kylin-os-installer-1.0.9/data/start-kylin-os-installer
  15. 6 0
      kylin-os-installer-1.0.9/debian/README.Debian
  16. 1527 0
      kylin-os-installer-1.0.9/debian/changelog
  17. 1 0
      kylin-os-installer-1.0.9/debian/compat
  18. 47 0
      kylin-os-installer-1.0.9/debian/control
  19. 43 0
      kylin-os-installer-1.0.9/debian/copyright
  20. 20 0
      kylin-os-installer-1.0.9/debian/kylin-os-installer.install
  21. 13 0
      kylin-os-installer-1.0.9/debian/kylin-os-installer.kylin-os-installer.service
  22. 29 0
      kylin-os-installer-1.0.9/debian/rules
  23. 1 0
      kylin-os-installer-1.0.9/debian/source/format
  24. 0 0
      kylin-os-installer-1.0.9/icons/128x128/apps/kylin-os-installer.svg
  25. 0 0
      kylin-os-installer-1.0.9/icons/16x16/apps/kylin-os-installer.svg
  26. 0 0
      kylin-os-installer-1.0.9/icons/22x22/apps/kylin-os-installer.svg
  27. 0 0
      kylin-os-installer-1.0.9/icons/24x24/apps/kylin-os-installer.svg
  28. 0 0
      kylin-os-installer-1.0.9/icons/256x256/apps/kylin-os-installer.svg
  29. 0 0
      kylin-os-installer-1.0.9/icons/32x32/apps/kylin-os-installer.svg
  30. 0 0
      kylin-os-installer-1.0.9/icons/48x48/apps/kylin-os-installer.svg
  31. 0 0
      kylin-os-installer-1.0.9/icons/512x512/apps/kylin-os-installer.svg
  32. 0 0
      kylin-os-installer-1.0.9/icons/64x64/apps/kylin-os-installer.svg
  33. 0 0
      kylin-os-installer-1.0.9/icons/96x96/apps/kylin-os-installer.svg
  34. 29 0
      kylin-os-installer-1.0.9/ky-installer.cfg
  35. 15 0
      kylin-os-installer-1.0.9/kylin-os-installer.desktop
  36. 二进制
      kylin-os-installer-1.0.9/language/en_US.qm
  37. 2382 0
      kylin-os-installer-1.0.9/language/en_US.ts
  38. 二进制
      kylin-os-installer-1.0.9/language/qt_zh_CN.qm
  39. 7967 0
      kylin-os-installer-1.0.9/language/qt_zh_CN.ts
  40. 二进制
      kylin-os-installer-1.0.9/language/zh_CN.qm
  41. 2274 0
      kylin-os-installer-1.0.9/language/zh_CN.ts
  42. 23 0
      kylin-os-installer-1.0.9/scripts/after/15setup-sourceslist
  43. 61 0
      kylin-os-installer-1.0.9/scripts/after/21setup-auditmode
  44. 64 0
      kylin-os-installer-1.0.9/scripts/after/95install-third-party-packages
  45. 13 0
      kylin-os-installer-1.0.9/scripts/after/96rsetup-sourceslist
  46. 79 0
      kylin-os-installer-1.0.9/scripts/autopart-efi.sh
  47. 74 0
      kylin-os-installer-1.0.9/scripts/autopart.sh
  48. 19 0
      kylin-os-installer-1.0.9/scripts/in_chroot/00setup-timezone
  49. 22 0
      kylin-os-installer-1.0.9/scripts/in_chroot/03setup-locale
  50. 29 0
      kylin-os-installer-1.0.9/scripts/in_chroot/06setup-hostname
  51. 23 0
      kylin-os-installer-1.0.9/scripts/in_chroot/15setup-sourceslist
  52. 65 0
      kylin-os-installer-1.0.9/scripts/in_chroot/18setup-bootloader
  53. 65 0
      kylin-os-installer-1.0.9/scripts/in_chroot/21setup-user
  54. 44 0
      kylin-os-installer-1.0.9/scripts/in_chroot/27generate-fstab
  55. 23 0
      kylin-os-installer-1.0.9/scripts/in_chroot/30update-initramfs
  56. 8 0
      kylin-os-installer-1.0.9/scripts/in_chroot/321hw-next-boot
  57. 13 0
      kylin-os-installer-1.0.9/scripts/in_chroot/32oem-test
  58. 15 0
      kylin-os-installer-1.0.9/scripts/in_chroot/95install-extra-packages
  59. 34 0
      kylin-os-installer-1.0.9/scripts/in_chroot/96-resetup-sourceslist
  60. 18 0
      kylin-os-installer-1.0.9/scripts/in_chroot/97rsync-license
  61. 30 0
      kylin-os-installer-1.0.9/scripts/in_chroot/99remove-packages
  62. 53 0
      kylin-os-installer-1.0.9/scripts/in_chroot/99setup-oem-service
  63. 513 0
      kylin-os-installer-1.0.9/scripts/in_chroot/genfstab
  64. 21 0
      kylin-os-installer-1.0.9/scripts/k.sh
  65. 15 0
      kylin-os-installer-1.0.9/scripts/oem-second
  66. 237 0
      kylin-os-installer-1.0.9/scripts/oem.sh
  67. 22 0
      kylin-os-installer-1.0.9/scripts/prepare/00umount
  68. 10 0
      kylin-os-installer-1.0.9/scripts/prepare/01set-dpms
  69. 88 0
      kylin-os-installer-1.0.9/scripts/prepare/10partition
  70. 88 0
      kylin-os-installer-1.0.9/scripts/prepare/10partition-efi
  71. 122 0
      kylin-os-installer-1.0.9/scripts/prepare/13mount-target
  72. 91 0
      kylin-os-installer-1.0.9/scripts/prepare/16copy-basic-filesystem
  73. 36 0
      kylin-os-installer-1.0.9/scripts/prepare/18setup-swapfile
  74. 21 0
      kylin-os-installer-1.0.9/scripts/prepare/20setup-chroot
  75. 3 0
      kylin-os-installer-1.0.9/scripts/umount.sh
  76. 322 0
      kylin-os-installer-1.0.9/scripts/utils
  77. 129 0
      kylin-os-installer-1.0.9/scripts/z.sh
  78. 92 0
      kylin-os-installer-1.0.9/src/Installer_main/Installer_main.pro
  79. 9 0
      kylin-os-installer-1.0.9/src/Installer_main/data/file/ksettings.conf
  80. 9 0
      kylin-os-installer-1.0.9/src/Installer_main/data/file/ksettingsoem1.conf
  81. 9 0
      kylin-os-installer-1.0.9/src/Installer_main/data/file/ksettingsoem2.conf
  82. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/bg.jpg
  83. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/bg0.jpg
  84. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/bg0@2x.jpg
  85. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/bg12-18.jpg
  86. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/bg@2x.jpg
  87. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/bg_message.jpg
  88. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/dot.png
  89. 3 0
      kylin-os-installer-1.0.9/src/Installer_main/data/png/dot.svg
  90. 3 0
      kylin-os-installer-1.0.9/src/Installer_main/data/png/greydot.svg
  91. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/greydot1.png
  92. 22 0
      kylin-os-installer-1.0.9/src/Installer_main/data/png/icon-anzhuangshibai.svg
  93. 3 0
      kylin-os-installer-1.0.9/src/Installer_main/data/png/pan-down-symbolic.svg
  94. 3 0
      kylin-os-installer-1.0.9/src/Installer_main/data/png/pan-up-symbolic.svg
  95. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/1.png
  96. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/1e.png
  97. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/2.png
  98. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/2e.png
  99. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/3.png
  100. 二进制
      kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/3e.png

+ 33 - 0
kylin-os-installer-1.0.9/Kylin-Installer.pro

@@ -0,0 +1,33 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    src/plugins/VirtualKeyboard \
+    src/plugins/Reflex \
+    src/plugins/PluginDll \
+    src/plugins/PluginService \
+    src/plugins/KChoiceLanguage \
+    src/plugins/KTimeZone \
+    src/plugins/PluginTask \
+    src/plugins/KyLicense \
+    src/plugins/KUserRegister \
+    src/plugins/KPartition \
+    src/Installer_main
+
+
+CONFIG += ordered \
+    qt \
+    qt
+
+
+TRANSLATIONS += \
+    $$PWD/language/zh_CN.ts \
+    $$PWD/language/en_US.ts
+
+#INCLUDEPATH += /home/xy/Downloads/workdir/git/2020-6new
+
+
+QT += widgets
+
+
+
+

+ 54 - 0
kylin-os-installer-1.0.9/README.md

@@ -0,0 +1,54 @@
+
+TODO: 
+选择安装方式时,默认高亮到快速安装 
+
+file: 
+/etc/network/interfaces 
+/etc/resolv.conf 
+/etc/udev/rules.d/70-persistent-net.rules 
+/etc/apt/sources.list 
+/etc/apt/preferences.d 
+/etc/papersize 
+/etc/apt/trusted.gpg 
+/etc/init.d/apparmor 
+/etc/default/locale 
+/etc/environment 
+/etc/locale.gen 
+/etc/X11/xorg.conf.failsafe 
+/etc/lightdm/lightdm.conf 
+/etc/debconf.conf 
+/etc/default/keyboard.pre-ubiquity 
+/etc/default/keyboard 
+/target/etc/initramfs-tools/modules 
+/etc/init.d/console-setup 
+/etc/console-setup/ckb 
+/etc/casper.conf 
+/etc/X11/xinit/xinput.d/all_ALL 
+/etc/X11/xinit/xinput.d/default 
+/etc/X11/xorg.conf 
+usr/sbin/update-initramfs 
+/boot/grub/locale 
+
+#systemsetting.ini 
+[config] 
+autologin=0;1自动登录,0密码登录 
+devpath=/dev/sda;全盘安装磁盘 
+hostname=tr-PC;hostname 
+language=zh_CN;语言 
+password=gf45dr;登录密码 
+timezone=Asia/Shanghai;时区 
+username=tr;用户名 
+automatic-installation = 1;1全盘安装,0自定义安装 
+factory-backup =0;1工厂备份,0否 
+enable-swapfile=false; 使用 swapfile,优先级低于引导参数 kyswapfile
+
+
+[custompartition] 
+bootloader=;引导路径 
+partitions=;被挂载的分区 
+
+[setting] 
+EnableSwap=false;交换分区 
+FileSystem="ext4;ext3;ext2;btrfs;jfs;xfs;fat16;fat32;efi;linux-swap;unused";创建分区页面的文件系统列表 
+FileSystemBoot="ext4;vfat";boot分区文件系统格式 
+PartitionMountedPoints=";/;/boot;/home;/tmp;/var;/srv;/opt;/usr/local";创建分区页面的挂载点 

+ 63 - 0
kylin-os-installer-1.0.9/config_file/pwquality.conf

@@ -0,0 +1,63 @@
+# Configuration for systemwide password quality limits
+# Defaults:
+#
+# Number of characters in the new password that must not be present in the
+# old password.
+# difok = 1
+#
+# Minimum acceptable size for the new password (plus one if
+# credits are not disabled which is the default). (See pam_cracklib manual.)
+# Cannot be set to lower value than 6.
+# minlen = 8
+#
+# The maximum credit for having digits in the new password. If less than 0
+# it is the minimum number of digits in the new password.
+# dcredit = 0
+#
+# The maximum credit for having uppercase characters in the new password.
+# If less than 0 it is the minimum number of uppercase characters in the new
+# password.
+# ucredit = 0
+#
+# The maximum credit for having lowercase characters in the new password.
+# If less than 0 it is the minimum number of lowercase characters in the new
+# password.
+# lcredit = 0
+#
+# The maximum credit for having other characters in the new password.
+# If less than 0 it is the minimum number of other characters in the new
+# password.
+# ocredit = 0
+#
+# The minimum number of required classes of characters for the new
+# password (digits, uppercase, lowercase, others).
+# minclass = 0
+#
+# The maximum number of allowed consecutive same characters in the new password.
+# The check is disabled if the value is 0.
+# maxrepeat = 0
+#
+# The maximum number of allowed consecutive characters of the same class in the
+# new password.
+# The check is disabled if the value is 0.
+# maxclassrepeat = 0
+#
+# Whether to check for the words from the passwd entry GECOS string of the user.
+# The check is enabled if the value is not 0.
+# gecoscheck = 0
+#
+# Whether to check for the words from the cracklib dictionary.
+# The check is enabled if the value is not 0.
+# dictcheck = 1
+#
+# Whether to check if it contains the user name in some form.
+# The check is enabled if the value is not 0.
+# usercheck = 1
+#
+# Whether the check is enforced by the PAM module and possibly other
+# applications.
+# The new password is rejected if it fails the check and the value is not 0.
+# enforcing = 1
+#
+# Path to the cracklib dictionaries. Default is to use the cracklib default.
+# dictpath =

+ 10 - 0
kylin-os-installer-1.0.9/data/delete-oem-user.service

@@ -0,0 +1,10 @@
+[Unit]
+Description=delete-oem-user
+After=lightdm.service
+
+[Service]
+Type=notify
+ExecStart=/usr/share/kylin-os-installer/data/delete-oem-user.sh
+
+[Install]
+WantedBy=multi-user.target

+ 94 - 0
kylin-os-installer-1.0.9/data/delete-oem-user.sh

@@ -0,0 +1,94 @@
+#!/bin/bash
+
+set -e
+
+remove_service() {
+    if [ -f /lib/systemd/system/delete-oem-user.service ]; then
+        rm -f /lib/systemd/system/delete-oem-user.service
+    fi
+}
+
+delete_oem_user() {
+    if getent passwd 'oem' >/dev/null; then
+        if [ -f /etc/sudoers.d/oem ]; then
+            rm -f /etc/sudoers.d/oem
+        fi
+        pkill -u 'oem' || true
+        userdel --force --remove 'oem' || true
+    fi
+}
+
+remove_user_dir() {
+    for user in $(ls /home); do
+        if ! getent passwd ${user} >/dev/null; then
+            rm -rf /home/${user}/.config || true
+        fi
+        rmdir /home/${user} || true
+    done
+}
+
+remove_packages()
+{
+    # remove package list
+    packages_list_remove=(
+        kylin-os-installer
+        casper
+        ukui-installer-wayland
+    )
+
+    for i in ${packages_list_remove[*]}; do
+        if dpkg -l | grep -q $i; then
+            apt purge -y $i || true
+        fi
+    done
+}
+
+copy_log() {
+    if [ -f /tmp/oem.log ]; then
+        mkdir -p /var/log/installer
+        cp /tmp/oem.log /var/log/installer
+    fi
+}
+
+restart_lightdm() {
+    systemctl restart lightdm
+}
+
+set_test_mode_lightdm() {
+    if grep -q 'test-mode=true' /usr/share/kylin-os-installer/ky-installer.cfg; then
+        restart_lightdm
+    fi
+}
+
+set_990_9a0_lightdm() {
+    if egrep -qi 'kirin.?9[09]0' /proc/cpuinfo; then
+        systemctl restart lightdm
+    fi
+}
+
+restart_kylin_support_kirin() {
+  if [[ -f /lib/systemd/system/kylin-support-kirin.service ]]; then
+    systemctl restart kylin-support-kirin
+  fi
+}
+
+# delete-oem-user.service 是拷贝的,需要单独移除
+remove_service >>/tmp/oem.log
+
+remove_packages >>/tmp/oem.log
+
+set_990_9a0_lightdm
+
+delete_oem_user >>/tmp/oem.log
+
+remove_user_dir >>/tmp/oem.log
+
+copy_log
+
+set_test_mode_lightdm
+
+restart_kylin_support_kirin
+#restart_lightdm
+
+
+

+ 4 - 0
kylin-os-installer-1.0.9/data/kylin-os-installer-dm

@@ -0,0 +1,4 @@
+/usr/bin/ukui-kwin_x11 &
+/usr/bin/ukui-settings-daemon &
+/usr/bin/sleep 5
+/usr/bin/kylin-os-installer

+ 16 - 0
kylin-os-installer-1.0.9/data/kylin-os-installer-live

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+if [[ -f /usr/share/glib-2.0/schemas/org.ukui.flash-disk.autoload.gschema.xml ]]; then
+    gsettings set org.ukui.flash-disk.autoload ifautoload false
+fi
+
+# 卸载可能由于自动挂载的目录
+sudo umount /media/*/* || true
+
+# 禁用 Win 键
+sudo xmodmap -e "keycode 133 =" || true
+sudo xmodmap -e "keycode 134 =" || true
+
+sudo /usr/lib/udisks2/udisks2-inhibit /usr/bin/kylin-os-installer

+ 19 - 0
kylin-os-installer-1.0.9/data/kylin-os-installer-oem

@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -e
+
+if [[ -f /usr/share/glib-2.0/schemas/org.ukui.flash-disk.autoload.gschema.xml ]]; then
+    gsettings set org.ukui.flash-disk.autoload ifautoload false
+fi
+
+# 卸载可能由于自动挂载的目录
+if grep -q media.oem /proc/mounts; then
+    echo 'qwe123' | sudo -S umount /media/oem/*
+fi
+
+# 990,9A0 wayland 需要此设置
+if egrep -qi 'kirin.?9[09]0' /proc/cpuinfo; then
+    xhost +SI:localuser:root
+fi
+
+sudo /usr/lib/udisks2/udisks2-inhibit /usr/bin/kylin-os-installer oem

+ 19 - 0
kylin-os-installer-1.0.9/data/kylin-os-installer-oem-automatic

@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -e
+
+if [[ -f /usr/share/glib-2.0/schemas/org.ukui.flash-disk.autoload.gschema.xml ]]; then
+    gsettings set org.ukui.flash-disk.autoload ifautoload false
+fi
+
+# 卸载可能由于自动挂载的目录
+if grep -q media.oem /proc/mounts; then
+    echo 'qwe123' | sudo -S umount /media/oem/*
+fi
+
+# 990,9A0 wayland 需要此设置
+if egrep -qi 'kirin.?9[09]0' /proc/cpuinfo; then
+    xhost +SI:localuser:root
+fi
+
+sudo /usr/lib/udisks2/udisks2-inhibit /usr/bin/kylin-os-installer oem automatic

+ 32 - 0
kylin-os-installer-1.0.9/data/oem-config.service

@@ -0,0 +1,32 @@
+[Unit]
+Description=End-user configuration after initial OEM installation
+ConditionFileIsExecutable=/usr/bin/kylin-os-installer-live oem
+ConditionPathExists=/dev/tty1
+
+# We never want to run the oem-config job in the live environment (as is the
+# case in some custom configurations) or in recovery mode.
+ConditionKernelCommandLine=!boot=casper
+ConditionKernelCommandLine=!single
+ConditionKernelCommandLine=!rescue
+ConditionKernelCommandLine=!emergency
+
+[Service]
+Type=oneshot
+StandardInput=tty
+StandardOutput=tty
+StandardError=tty
+TTYPath=/dev/tty1
+TTYReset=yes
+TTYVHangup=yes
+ExecStart=/bin/sh -ec '\
+    for x in $(cat /proc/cmdline); do				\
+	case $x in						\
+	    debug-oem-config) debug=--debug ;;			\
+	    ubiquity/frontend=*) export frontend="${x#*=}" ;;	\
+	    automatic-oem-config) automatic=--automatic ;;	\
+	esac;							\
+    done;							\
+    exec /usr/bin/kylin-os-installer-oem $debug $automatic'
+
+[Install]
+WantedBy=oem-config.target

+ 7 - 0
kylin-os-installer-1.0.9/data/oem-config.target

@@ -0,0 +1,7 @@
+[Unit]
+Description=OEM Configuration
+Requires=basic.target
+Conflicts=rescue.service rescue.target multi-user.target
+After=basic.target rescue.service rescue.target
+AllowIsolate=yes
+Wants=oem-config.service network-manager.service getty-static.service systemd-user-sessions.service

+ 10 - 0
kylin-os-installer-1.0.9/data/oem-qc.service

@@ -0,0 +1,10 @@
+[Unit]
+Description=oem-qc
+After=lightdm.service
+
+[Service]
+Type=notify
+ExecStart=/usr/share/kylin-os-installer/data/oem-qc.sh
+
+[Install]
+WantedBy=multi-user.target

+ 23 - 0
kylin-os-installer-1.0.9/data/oem-qc.sh

@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+run_qc_dir() {
+    name=$1
+    for i in ${name}/*; do
+        if [ -x "$i" ]; then
+            filename=$(basename $i)
+            echo "$(date +'%b %d %H:%M:%S') ${filename}"
+            . "$i"
+        else
+            msg "跳过 $i"
+        fi
+    done
+}
+
+if [[ -f /usr/share/oem-test ]]; then
+    run_qc_dir /usr/share/oem-test
+fi
+
+
+

+ 17 - 0
kylin-os-installer-1.0.9/data/start-kylin-os-installer

@@ -0,0 +1,17 @@
+#!/bin/bash
+
+set -e
+
+# 990 或 9a0 不使用此启动安装程序的方式
+if egrep -qi 'kirin.?9[09]0' /proc/cpuinfo; then
+    exit 0
+fi
+
+if ! grep -q live /proc/cmdline; then
+    rm -rf /etc/xdg/autostart
+    mkdir -p /etc/xdg/autostart
+    cp /usr/share/applications/kylin-os-installer.desktop /etc/xdg/autostart
+    rm -f /usr/bin/peony-qt-desktop || true
+fi
+
+

+ 6 - 0
kylin-os-installer-1.0.9/debian/README.Debian

@@ -0,0 +1,6 @@
+kylin-os-installer for Debian
+-------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Live session user <kylin@unknown>  Thu, 17 Sep 2020 09:29:31 +0800

+ 1527 - 0
kylin-os-installer-1.0.9/debian/changelog

@@ -0,0 +1,1527 @@
+kylin-os-installer (1.0.9) v101; urgency=medium
+
+  * 增加安装时备份还原
+
+ -- tangzhicheng <tangzhicheng@kylinos.cn>  Tue, 27 Jul 2021 20:16:20 +0800
+
+kylin-os-installer (1.0.8) v101; urgency=medium
+
+  * 开发OEM功能 (story: #43079)
+
+ -- tangzhicheng <tangzhicheng@kylinos.cn>  Tue, 20 Jul 2021 21:26:23 +0800
+
+kylin-os-installer (1.0.3) v101; urgency=medium
+
+  * fix bug (ZT: #58005)
+
+ -- tangzhicheng <tangzhicheng@kylinos.cn>  Wed, 30 Jun 2021 16:03:41 +0800
+
+kylin-os-installer (1.0.2) v101; urgency=medium
+
+  * fix bug (ZT: #62540)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 29 Jun 2021 14:38:56 +0800
+
+kylin-os-installer (1.0.1) v101; urgency=medium
+
+  * fix bug (ZT: #61164)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 24 Jun 2021 19:19:30 +0800
+
+kylin-os-installer (1.0.0) v101; urgency=medium
+
+  * fix bug (ZT: #51780,61242)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 22 Jun 2021 13:58:46 +0800
+
+kylin-os-installer (0.2.2) v101; urgency=medium
+
+  * fix bug (ZT: #60526,60845,60855,60886,61491,61599)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 16 Jun 2021 14:57:45 +0800
+
+kylin-os-installer (0.2.1) v101; urgency=medium
+
+  * fix bug (ZT: #43102,59260,59780,60435)
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 11 Jun 2021 09:51:49 +0800
+
+kylin-os-installer (0.2.0) v101; urgency=medium
+
+  * fix bug (ZT: #60870)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 10 Jun 2021 13:46:49 +0800
+
+kylin-os-installer (0.1.234) v101; urgency=medium
+
+  * 修改气泡样式导致气泡显示位置不正确问题
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 07 Jun 2021 14:19:19 +0800
+
+kylin-os-installer (0.1.233) v101; urgency=medium
+
+  * 解决因气泡样式修改导致进度条气泡显示问题
+  * 自定义安装添加 xfs 文件系统
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 04 Jun 2021 11:37:36 +0800
+
+kylin-os-installer (0.1.232) v101; urgency=medium
+
+  * complete task (ZT: #33291,33313,33315,33316,33317,33550)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 03 Jun 2021 16:41:09 +0800
+
+kylin-os-installer (0.1.231) v101; urgency=medium
+
+  * 开发全盘安装加密功能 (story: #6021)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 02 Jun 2021 19:56:45 +0800
+
+kylin-os-installer (0.1.219~rc11) v101; urgency=medium
+
+  * fix bug (ZT: #55261,56308)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 26 May 2021 11:40:13 +0800
+
+kylin-os-installer (0.1.219~rc10) v101; urgency=medium
+
+  * 修复自定义安装界面分区颜色显示问题
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 20 May 2021 09:18:48 +0800
+
+kylin-os-installer (0.1.219~rc9) v101; urgency=medium
+
+  * fix bug (ZT: #51780,54508,54733)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 18 May 2021 14:59:58 +0800
+
+kylin-os-installer (0.1.219~rc8) v101; urgency=medium
+
+  * /data 添加 t 权限(安全整改)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 18 May 2021 09:28:21 +0800
+
+kylin-os-installer (0.1.219~rc7) v101; urgency=medium
+
+  * sw64 支持
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 13 May 2021 14:42:50 +0800
+
+kylin-os-installer (0.1.219~rc6) v101; urgency=medium
+
+  * 修复 ENTER 失效问题 (ZT: #50742)
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 10 May 2021 10:57:05 +0800
+
+kylin-os-installer (0.1.219~rc5) v101; urgency=medium
+
+  * sw64 patch 移植
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 10 May 2021 10:34:17 +0800
+
+kylin-os-installer (0.1.219~rc4) v101; urgency=medium
+
+  * 修改退出安装图标 (ZT: #51870)
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 07 May 2021 19:06:15 +0800
+
+kylin-os-installer (0.1.219~rc3) v101; urgency=medium
+
+  * sw64 patch 移植
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 06 May 2021 17:09:52 +0800
+
+kylin-os-installer (0.1.219~rc2) v101; urgency=medium
+
+  * 修复直接安装进试用模式问题 (bug #37594)
+  * 修复在某些机型上直接安装无法重启问题 (bug #51559)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 28 Apr 2021 18:38:58 +0800
+
+kylin-os-installer (0.1.219~rc1) v101; urgency=medium
+
+  * 根据设计需求重新添加用户协议滚动条
+  * 修复 oobe 与登陆界面语言不一致 (bug #50695)
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 26 Apr 2021 14:31:46 +0800
+
+kylin-os-installer (0.1.218) v101; urgency=medium
+
+  * 修改部分提示
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 20 Apr 2021 19:32:55 +0800
+
+kylin-os-installer (0.1.217) v101; urgency=medium
+
+  *  修改 kylin-data 没写入配置文件问题
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 20 Apr 2021 16:59:48 +0800
+
+kylin-os-installer (0.1.216) v101; urgency=medium
+
+  * 修改用户密码复杂度检测提示信息
+  * 修改分区提示信息
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 20 Apr 2021 09:30:31 +0800
+
+kylin-os-installer (0.1.215) v101; urgency=medium
+
+  * rebuild
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 19 Apr 2021 18:48:05 +0800
+
+kylin-os-installer (0.1.214) v101; urgency=medium
+
+  * 修改一些自定义分区翻译
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 19 Apr 2021 16:27:04 +0800
+
+kylin-os-installer (0.1.213) v101; urgency=medium
+
+  * 修改了一些界面翻译
+  * 龙芯平台 /boot 分区不再提示使用 ext3
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 09 Apr 2021 16:17:55 +0800
+
+kylin-os-installer (0.1.212) v101; urgency=medium
+
+  * 修改分区方案,/data 修改为 /data/usershare
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 08 Apr 2021 16:08:05 +0800
+
+kylin-os-installer (0.1.211) v101; urgency=medium
+
+  * 解决 bug 45551, 46318
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 07 Apr 2021 14:36:51 +0800
+
+kylin-os-installer (0.1.210) v101; urgency=medium
+
+  * 解决 bug 44690, 45484, 45579, 45645, 45649
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 02 Apr 2021 15:16:31 +0800
+
+kylin-os-installer (0.1.209) v101; urgency=medium
+
+  * 990/9A0 oem 设置自动登陆后直接登入系统 (bug #43078)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 01 Apr 2021 14:46:48 +0800
+
+kylin-os-installer (0.1.208) v101; urgency=medium
+
+  * 解决 bug 44348, 44799, 44845, 44849
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 27 Mar 2021 10:35:55 +0800
+
+kylin-os-installer (0.1.207) v101; urgency=medium
+
+  * 修复代码错误
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 25 Mar 2021 15:23:41 +0800
+
+kylin-os-installer (0.1.206) v101; urgency=medium
+
+  * 990/9A0 自定义安装创建 swapfile
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 25 Mar 2021 09:58:03 +0800
+
+kylin-os-installer (0.1.205) v101; urgency=medium
+
+  * 代码更新
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 23 Mar 2021 14:11:41 +0800
+
+kylin-os-installer (0.1.204) v101; urgency=medium
+
+  * 解决 bug 43809,43822,43845
+  * 添加提示华为 990 系列根分区至少需要 25GiB
+  * 北京时区是被手动加载,不是标准文件有的问题 (bug #43219)
+  * 修改偶现添加分区界面不能操作问题
+  * 禅道任务 22640 左右按钮和键盘控制保持一致
+  * 地图问题和界面显示问题 (bug #41773,42208)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 23 Mar 2021 10:39:20 +0800
+
+kylin-os-installer (0.1.203) v101; urgency=medium
+
+  * 解决语言界面不能响应键盘问题
+  * 解决 slideshow 界面不响应键盘问题
+  * 解决安装完成和安装失败页面不响应键盘事件问题
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 12 Mar 2021 11:48:56 +0800
+
+kylin-os-installer (0.1.202) v101; urgency=medium
+
+  * 990 /boot, /boot/efi 只读挂载
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 12 Mar 2021 09:45:38 +0800
+
+kylin-os-installer (0.1.201) v101; urgency=medium
+
+  * 修改 archdetect 命令判断处理问题
+  * 华为 990 自动安装修改;华为 990 根分区大小修改为 25G;弹窗功能修改
+  * 修改华为启动项设置
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 11 Mar 2021 19:12:28 +0800
+
+kylin-os-installer (0.1.200) v101; urgency=medium
+
+  * 添加华为设置启动项顺序的脚本
+  * 过滤 ventoy 启动盘 (bug #38657)
+  * 修改快速安装左右键选择磁盘闪退问题
+  * 添加提示 fat16 和 fat32 文件系统使用问题 (bug #38612)
+  * 文件系统格式化和提示一不一致问题 (bug #41352)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 09 Mar 2021 17:01:19 +0800
+
+kylin-os-installer (0.1.199) v101; urgency=medium
+
+  * 修复 /cdrom/third-party/common 等目录不存在时安装失败问题
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 06 Mar 2021 16:04:57 +0800
+
+kylin-os-installer (0.1.198) v101; urgency=medium
+
+  * 安装第三方包时添加对 klvv 的判断
+  * 解决安装完成后 lightdm 重启两次的问题 (bug #41774)
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 06 Mar 2021 14:12:11 +0800
+
+kylin-os-installer (0.1.197) v101; urgency=medium
+
+  * 为统一 pguv, klvu 进行的代码修改
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 05 Mar 2021 17:49:23 +0800
+
+kylin-os-installer (0.1.196) v101; urgency=medium
+
+  * 修改版本号重新提交
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 05 Mar 2021 09:47:28 +0800
+
+kylin-os-installer (0.1.195) v101; urgency=medium
+
+  * 修复错误
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 05 Mar 2021 09:20:28 +0800
+
+kylin-os-installer (0.1.194) v101; urgency=medium
+
+  * 注释分区页面下一步按钮状态
+  * 没有选择磁盘直接下一步问题 (bug #41309)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 04 Mar 2021 16:52:03 +0800
+
+kylin-os-installer (0.1.193) v101; urgency=medium
+
+  * 为统一 pguv, klvu 进行的代码修改
+  * 修改 service (bug #41272)
+  * legacy 模式自定义安装无法引导 (bug #40446)
+  * 出厂备份参数修改,使用 --factorybackup
+  * 安装阶段不自动移除包
+  * 用户协议网址不正确问题;用户协议中存在不合适的空格问题
+  * 未选中磁盘直接下一步的问题
+  * 修改根分区不存在的提示
+  * 修改准备安装页面显示信息,以及翻译;强制对根分区进行格式化;自定义安装完成后,没有出现完成页面问题
+  * 华为机器过滤 sda, sdb, sdc 的问题
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 04 Mar 2021 14:45:35 +0800
+
+kylin-os-installer (0.1.192) v101; urgency=medium
+
+  * oem 安装第二阶段添加出错显示
+  * 修改龙芯机器中出现安装完成不能启动问题 (bug: #39407)
+  * 修改 hostname 提示 (bug: #40713)
+  * 支持 oem 模式的自动安装 (990/9A0)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 02 Mar 2021 19:31:29 +0800
+
+kylin-os-installer (0.1.191) v101; urgency=medium
+
+  * 修复 990 oem 模式失败问题
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 01 Mar 2021 11:16:45 +0800
+
+kylin-os-installer (0.1.190) v101; urgency=medium
+
+  * 修复 990 oem 模式失败问题
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 01 Mar 2021 09:56:59 +0800
+
+kylin-os-installer (0.1.189) v101; urgency=medium
+
+  * 990 分区加固代码注释,方便调试
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 26 Feb 2021 20:51:54 +0800
+
+kylin-os-installer (0.1.188) v101; urgency=medium
+
+  * 修复 oem 模式不能成功设置包含连续空格密码的问题
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 26 Feb 2021 17:26:14 +0800
+
+kylin-os-installer (0.1.187) v101; urgency=medium
+
+  * oem 第二阶段的脚本被注释问题;确认安装页面加载时间长问题
+  * oem 用户未成功删除问题 (bug: #37075)
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 26 Feb 2021 14:12:09 +0800
+
+kylin-os-installer (0.1.186) v101; urgency=medium
+
+  * 解决密码设置出错问题 (bug: #39160)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 25 Feb 2021 19:46:52 +0800
+
+kylin-os-installer (0.1.185) v101; urgency=medium
+
+  * 修复错误
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 25 Feb 2021 17:15:41 +0800
+
+kylin-os-installer (0.1.184) v101; urgency=medium
+
+  * 更换 slideshow 图片,优化 oem 界面,磁盘加载界面优化
+  * 修改根分区太小的问题,安装完成键盘事件 enter 问题
+  * 解决自定义分区界面闪退问题
+  * 解决用户名长度不能超过 32 位问题,解决 hostname 获取机器名出错的问题
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 25 Feb 2021 16:32:50 +0800
+
+kylin-os-installer (0.1.183) v101; urgency=medium
+
+  * 最小系统支持
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 24 Feb 2021 18:44:35 +0800
+
+kylin-os-installer (0.1.182) v101; urgency=medium
+
+  * 最小系统支持
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 24 Feb 2021 13:34:43 +0800
+
+kylin-os-installer (0.1.181) v101; urgency=medium
+
+  * 审核模式相关操作放置出厂备份后
+  * 修复安装源
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 23 Feb 2021 10:32:26 +0800
+
+kylin-os-installer (0.1.180) v101; urgency=medium
+
+  * 990, 9a0 安装成功,在 EFI 生成 INSTALL_SUCCESS
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 21 Feb 2021 15:16:41 +0800
+
+kylin-os-installer (0.1.179) v101; urgency=medium
+
+  * 代码错误修复
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 21 Feb 2021 14:08:57 +0800
+
+kylin-os-installer (0.1.178) v101; urgency=medium
+
+  * 990, 9a0 不使用 startx 启动安装程序
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 21 Feb 2021 10:36:18 +0800
+
+kylin-os-installer (0.1.177) v101; urgency=medium
+
+  * 支持 ple-mode 引导参数进入工厂模式,修复 oem 模式不能成功设置 test 用户问题
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 20 Feb 2021 10:52:56 +0800
+
+kylin-os-installer (0.1.176) v101; urgency=medium
+
+  * 调整出厂备份时机
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 19 Feb 2021 09:05:34 +0800
+
+kylin-os-installer (0.1.175) v101; urgency=medium
+
+  * 更新服务依赖关系
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 07 Feb 2021 15:39:30 +0800
+
+kylin-os-installer (0.1.174) v101; urgency=medium
+
+  * 去除南极洲时区;禁用准备安装界面右键;创建分区和修改分区不置顶
+  * 对时区地图中添加(0,0)判断
+  * boot 分区文件系统受限问题
+  * 修复扩展分区类型没显示问题
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 06 Feb 2021 16:44:54 +0800
+
+kylin-os-installer (0.1.173) v101; urgency=medium
+
+  * msdos 分区表分区失败问题解决
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 05 Feb 2021 17:36:06 +0800
+
+kylin-os-installer (0.1.172) v101; urgency=medium
+
+  * 创建 esp 时,拷贝 /boot/EFI 到 /boot/efi (bug: #32789)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 03 Feb 2021 20:47:06 +0800
+
+kylin-os-installer (0.1.171) v101; urgency=medium
+
+  * 鲁棒性增强
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 03 Feb 2021 20:32:12 +0800
+
+kylin-os-installer (0.1.170) v101; urgency=medium
+
+  * 直接安装延迟 5 秒启动程序 (bug: #31668)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 03 Feb 2021 16:11:09 +0800
+
+kylin-os-installer (0.1.169) v101; urgency=medium
+
+  * 解决设置密码连续空格出错问题 (bug: #32873)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 03 Feb 2021 13:50:36 +0800
+
+kylin-os-installer (0.1.168) v101; urgency=medium
+
+  * 删除链接,重新拷贝授权文件
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 03 Feb 2021 10:29:59 +0800
+
+kylin-os-installer (0.1.167) v101; urgency=medium
+
+  * 审核模式后移除 test 用户
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 03 Feb 2021 09:50:07 +0800
+
+kylin-os-installer (0.1.166) v101; urgency=medium
+
+  * 支持 Loongarch64 架构
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 02 Feb 2021 17:12:23 +0800
+
+kylin-os-installer (0.1.165) v101; urgency=medium
+
+  * 修复 (bug: #37175)
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 01 Feb 2021 15:22:25 +0800
+
+kylin-os-installer (0.1.164) v101; urgency=medium
+
+  * 修复代码错误
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 18:16:21 +0800
+
+kylin-os-installer (0.1.163) v101; urgency=medium
+
+  * 修复 oem 模式自动登陆相关问题
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 16:53:33 +0800
+
+kylin-os-installer (0.1.162) v101; urgency=medium
+
+  * oem 模式创建用户设置 uid 为 1000
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 16:28:52 +0800
+
+kylin-os-installer (0.1.161) v101; urgency=medium
+
+  * 990 /boot, /boot/efi 只读挂载
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 16:24:15 +0800
+
+kylin-os-installer (0.1.160) v101; urgency=medium
+
+  * 在审核模式安装 kylin-audit-mode
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 12:33:55 +0800
+
+kylin-os-installer (0.1.159) v101; urgency=medium
+
+  * 990 patch 集成,设置 user uid,添加 oem 日志
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 11:36:58 +0800
+
+kylin-os-installer (0.1.158) v101; urgency=medium
+
+  * /swapfile 改名为 /swap_file
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 30 Jan 2021 10:33:34 +0800
+
+kylin-os-installer (0.1.157) v101; urgency=medium
+
+  * 增加日志打印
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 29 Jan 2021 20:32:01 +0800
+
+kylin-os-installer (0.1.156) v101; urgency=medium
+
+  * 修改地图、键盘事件
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 29 Jan 2021 18:33:27 +0800
+
+kylin-os-installer (0.1.155) v101; urgency=medium
+
+  * 龙芯全盘安装时 /boot 使用 ext4 文件系统
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 28 Jan 2021 18:50:53 +0800
+
+kylin-os-installer (0.1.154) v101; urgency=medium
+
+  * 修改时区文件,右括号与地区添加空格分隔
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 28 Jan 2021 14:31:18 +0800
+
+kylin-os-installer (0.1.153) v101; urgency=medium
+
+  * 去掉 btrfs-progs 依赖 (为解决降级 efsprogs 问题)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 28 Jan 2021 11:51:12 +0800
+
+kylin-os-installer (0.1.152) v101; urgency=medium
+
+  * 合并 (修改双击空闲分区弹出修改分区问题、键盘问题、下拉框问题、更换slideshow图片、更换空闲分区颜色块、 用户注册去掉图标、龙芯boot ext3去掉、扩展分区更新num)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 28 Jan 2021 09:53:09 +0800
+
+kylin-os-installer (0.1.151) v101; urgency=medium
+
+  * 修复时区问题
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 27 Jan 2021 20:56:45 +0800
+
+kylin-os-installer (0.1.150) v101; urgency=medium
+
+  * 990 引导参数调整,自动登录修复
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 27 Jan 2021 17:49:54 +0800
+
+kylin-os-installer (0.1.149) v101; urgency=medium
+
+  * 修复 bug
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 27 Jan 2021 15:58:33 +0800
+
+kylin-os-installer (0.1.148) v101; urgency=medium
+
+  * 添加 oem 用户 sudo 免密,调整安装第三方包时机,审核模式添加 test 用户
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 27 Jan 2021 14:56:53 +0800
+
+kylin-os-installer (0.1.147) v101; urgency=medium
+
+  * /swapfile 不写入 /etc/fstab
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 27 Jan 2021 10:03:32 +0800
+
+kylin-os-installer (0.1.146) v101; urgency=medium
+
+  * 添加 swapfile 休眠支持
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 27 Jan 2021 09:14:55 +0800
+
+kylin-os-installer (0.1.145) v101; urgency=medium
+
+  * 脚本支持 Kirin 9A0,解决 (bug: #36134, #36200)
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 26 Jan 2021 16:14:38 +0800
+
+kylin-os-installer (0.1.144) v101; urgency=medium
+
+  * 集成自定义安装多个修改,主机名、swap、关机按钮修改
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 25 Jan 2021 14:48:32 +0800
+
+kylin-os-installer (0.1.143) v101; urgency=medium
+
+  * 修改出厂备份判断逻辑
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 22 Jan 2021 17:00:35 +0800
+
+kylin-os-installer (0.1.142) v101; urgency=medium
+
+  * 调整 oem 模式以支持 990
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 22 Jan 2021 15:46:08 +0800
+
+kylin-os-installer (0.1.141) v101; urgency=medium
+
+  * 解决自定义分区使用多个 swap 分区时安装失败问题
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 21 Jan 2021 20:54:19 +0800
+
+kylin-os-installer (0.1.140) v101; urgency=medium
+
+  * 屏蔽 Win 键 (bug: #33109)
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 21 Jan 2021 18:59:31 +0800
+
+kylin-os-installer (0.1.139) v101; urgency=medium
+
+  * 调整服务在匹配到引导参数 boot=casper 才运行,在 getty.target 之后运行,有概率进入试用
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 21 Jan 2021 15:54:33 +0800
+
+kylin-os-installer (0.1.138) v101; urgency=medium
+
+  * 优先使用启动参数 kyswapfile 配置使用 swapfile 文件
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 21 Jan 2021 09:33:04 +0800
+
+kylin-os-installer (0.1.137) v101; urgency=medium
+
+  * 修复密码设置错误问题
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 20 Jan 2021 15:55:35 +0800
+
+kylin-os-installer (0.1.136) v101; urgency=medium
+
+  * oem 设置自动登录
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 20 Jan 2021 14:31:24 +0800
+
+kylin-os-installer (0.1.135) v101; urgency=medium
+
+  * 修复自定义分区多个 /boot/efi 没有提示问题
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 20 Jan 2021 12:47:37 +0800
+
+kylin-os-installer (0.1.134) v101; urgency=medium
+
+  * oem 模式
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 20 Jan 2021 10:04:15 +0800
+
+kylin-os-installer (0.1.133) v101; urgency=medium
+
+  * oem 模式
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 19 Jan 2021 20:10:58 +0800
+
+kylin-os-installer (0.1.132) v101; urgency=medium
+
+  * oem 模式
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 19 Jan 2021 14:45:03 +0800
+
+kylin-os-installer (0.1.131) v101; urgency=medium
+
+  * 修复时区问题
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 18 Jan 2021 21:10:53 +0800
+
+kylin-os-installer (0.1.130) v101; urgency=medium
+
+  * 添加 oem 执行脚本,添加自动选择硬盘函数
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 18 Jan 2021 17:13:54 +0800
+
+kylin-os-installer (0.1.129) v101; urgency=medium
+
+  * 添加 oem 服务
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 18 Jan 2021 14:28:23 +0800
+
+kylin-os-installer (0.1.128) v101; urgency=medium
+
+  * 支持 swapfile 配置
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 16 Jan 2021 16:41:56 +0800
+
+kylin-os-installer (0.1.127) v101; urgency=medium
+
+  * 修改翻译和下拉框样式,调整日志输出
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 16 Jan 2021 15:24:22 +0800
+
+kylin-os-installer (0.1.126) v101; urgency=medium
+
+  * 设置 /data 目录 777 权限 (bug: #34018)
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 15 Jan 2021 11:49:18 +0800
+
+kylin-os-installer (0.1.125) v101; urgency=medium
+
+  * 修改自定义分区多个问题
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 14 Jan 2021 10:16:12 +0800
+
+kylin-os-installer (0.1.124) v101; urgency=medium
+
+  * 自定义安装新建备份还原目录 (bug: #31103)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 13 Jan 2021 20:30:49 +0800
+
+kylin-os-installer (0.1.123) v101; urgency=medium
+
+  * 增加 slideshow 展示图片
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 08 Jan 2021 16:16:07 +0800
+
+kylin-os-installer (0.1.122) v101; urgency=medium
+
+  * 更新 slideshow
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 08 Jan 2021 15:32:43 +0800
+
+kylin-os-installer (0.1.121) v101; urgency=medium
+
+  * 修复自动重启引入的错误
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 08 Jan 2021 14:24:41 +0800
+
+kylin-os-installer (0.1.120) v101; urgency=medium
+
+  * 添加安装完成自动重启接口
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 08 Jan 2021 11:01:56 +0800
+
+kylin-os-installer (0.1.119) v101; urgency=medium
+
+  * 添加安装完成自动重启接口
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 08 Jan 2021 10:38:19 +0800
+
+kylin-os-installer (0.1.118) v101; urgency=medium
+
+  * 启动安装程序时卸载 /media/kylin 挂载的设备
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 07 Jan 2021 20:43:28 +0800
+
+kylin-os-installer (0.1.117) v101; urgency=medium
+
+  * 移除多余的动态链接库
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 07 Jan 2021 14:13:59 +0800
+
+kylin-os-installer (0.1.116) v101; urgency=medium
+
+  * 调整全盘安装时 /, /backup 最小为 16GiB
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 07 Jan 2021 09:22:50 +0800
+
+kylin-os-installer (0.1.115) v101; urgency=medium
+
+  * 解决多个显示问题,用户名检测问题
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 04 Jan 2021 20:31:36 +0800
+
+kylin-os-installer (0.1.42hw72) v101; urgency=medium
+
+  * 修复 legacy 安装不能启动问题
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 03 Jan 2021 16:46:54 +0800
+
+kylin-os-installer (0.1.42hw71) v101; urgency=medium
+
+  * 支持龙芯安装
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 03 Jan 2021 14:24:43 +0800
+
+kylin-os-installer (0.1.42hw70) v101; urgency=medium
+
+  * 支持龙芯安装
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 02 Jan 2021 19:50:17 +0800
+
+kylin-os-installer (0.1.42hw69) v101; urgency=medium
+
+  * 新建备份还原目录 (bug: #31103)
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 02 Jan 2021 18:24:28 +0800
+
+kylin-os-installer (0.1.42hw68) v101; urgency=medium
+
+  * 支持龙芯安装
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 02 Jan 2021 10:42:09 +0800
+
+kylin-os-installer (0.1.42hw67) v101; urgency=medium
+
+  * 修复龙芯因权限问题无法启动
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Dec 2020 19:15:02 +0800
+
+kylin-os-installer (0.1.42hw66) v101; urgency=medium
+
+  * 支持龙芯安装
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Dec 2020 12:00:32 +0800
+
+kylin-os-installer (0.1.42hw65) v101; urgency=medium
+
+  * 支持龙芯安装
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Dec 2020 11:58:16 +0800
+
+kylin-os-installer (0.1.42hw64) v101; urgency=medium
+
+  * 支持龙芯安装
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Dec 2020 09:48:37 +0800
+
+kylin-os-installer (0.1.42hw63) v101; urgency=medium
+
+  * 修复安装过早结束问题
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 29 Dec 2020 20:53:07 +0800
+
+kylin-os-installer (0.1.42hw62) v101; urgency=medium
+
+  * 解决安装不能结束问题,新建备份还原目录
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 29 Dec 2020 20:33:54 +0800
+
+kylin-os-installer (0.1.42hw61) v101; urgency=medium
+
+  * 直接安装依赖 ukui-kwin-x11,解决界面不能结束问题
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 29 Dec 2020 10:54:29 +0800
+
+kylin-os-installer (0.1.42hw60) v101; urgency=medium
+
+  * 气泡延时关闭,更新 slideshow
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 28 Dec 2020 21:05:17 +0800
+
+kylin-os-installer (0.1.42hw59) v101; urgency=medium
+
+  * 更新界面,添加注释
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 28 Dec 2020 15:32:36 +0800
+
+kylin-os-installer (0.1.42hw58) v101; urgency=medium
+
+  * 界面更新
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Dec 2020 09:22:10 +0800
+
+kylin-os-installer (0.1.42hw56) v101; urgency=medium
+
+  * 自动安装
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 23 Dec 2020 15:53:11 +0800
+
+kylin-os-installer (0.1.42hw55) v101; urgency=medium
+
+  * 直接安装
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 22 Dec 2020 16:12:50 +0800
+
+kylin-os-installer (0.1.42hw54) v101; urgency=medium
+
+  * 添加服务
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 22 Dec 2020 14:54:22 +0800
+
+kylin-os-installer (0.1.42hw53) v101; urgency=medium
+
+  * 更新
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 22 Dec 2020 14:05:36 +0800
+
+kylin-os-installer (0.1.42hw52) v101; urgency=medium
+
+  * 修改用户组
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 13 Dec 2020 14:18:40 +0800
+
+kylin-os-installer (0.1.42hw51) v101; urgency=medium
+
+  * 修改用户组
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 12 Dec 2020 14:46:42 +0800
+
+kylin-os-installer (0.1.42hw50) v101; urgency=medium
+
+  * 修改用户组,修复 swap 错误
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 11 Dec 2020 14:55:57 +0800
+
+kylin-os-installer (0.1.42hw49) v101; urgency=medium
+
+  * 修改bug用户协议滚动条问题; 更换安装完成和安装出错页面图标
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 11 Dec 2020 11:30:31 +0800
+
+kylin-os-installer (0.1.42hw48) v101; urgency=medium
+
+  * ui 调整
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 10 Dec 2020 20:16:56 +0800
+
+kylin-os-installer (0.1.42hw47) v101; urgency=medium
+
+  * 990 定制,拷贝 grubaa64.efi 到 neokylin 目录下
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 09 Dec 2020 17:10:16 +0800
+
+kylin-os-installer (0.1.42hw46) v101; urgency=medium
+
+  * fstab 调整
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 09 Dec 2020 16:45:54 +0800
+
+kylin-os-installer (0.1.42hw45) v101; urgency=medium
+
+  * 更新 efi 判断
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 09 Dec 2020 14:16:25 +0800
+
+kylin-os-installer (0.1.42hw44) v101; urgency=medium
+
+  * 更新 ui 和脚本
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 09 Dec 2020 12:10:43 +0800
+
+kylin-os-installer (0.1.42hw43) v101; urgency=medium
+
+  * 直接安装调试
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 06 Dec 2020 10:40:16 +0800
+
+kylin-os-installer (0.1.42hw42) v101; urgency=medium
+
+  * 日志调整
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 05 Dec 2020 11:51:17 +0800
+
+kylin-os-installer (0.1.42hw41) v101; urgency=medium
+
+  * 修改日志输出,swap 分区大小
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 05 Dec 2020 11:23:13 +0800
+
+kylin-os-installer (0.1.42hw40) v101; urgency=medium
+
+  * 更新代码,翻译,kirin990 匹配
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 03 Dec 2020 15:37:07 +0800
+
+kylin-os-installer (0.1.42hw39) v101; urgency=medium
+
+  * hw990 bug 修复
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 30 Nov 2020 19:50:24 +0800
+
+kylin-os-installer (0.1.42hw38) v101; urgency=medium
+
+  * 修复 locale 错误
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 26 Nov 2020 11:36:27 +0800
+
+kylin-os-installer (0.1.42hw37) v101; urgency=medium
+
+  * 修改 10.1 源地址
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 26 Nov 2020 09:15:14 +0800
+
+kylin-os-installer (0.1.42hw36) v101; urgency=medium
+
+  * 修复英文安装后仍为中文 (bug: #26310)
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 16:09:59 +0800
+
+kylin-os-installer (0.1.42hw35) v101; urgency=medium
+
+  * 解决自定义分区回退导致安装失败问题
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 14:59:28 +0800
+
+kylin-os-installer (0.1.42hw34) v101; urgency=medium
+
+  * 自定义分区不判断 /boot 分区是否创建
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 14:33:27 +0800
+
+kylin-os-installer (0.1.42hw33) v101; urgency=medium
+
+  * 修改分区方案,略微增大 /backup 分区,/,/backup 最小 12 GiB
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 10:36:38 +0800
+
+kylin-os-installer (0.1.42hw32) v101; urgency=medium
+
+  * 修复脚本错误
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 10:16:17 +0800
+
+kylin-os-installer (0.1.42hw31) v101; urgency=medium
+
+  * 修改 /data, /backup 的 options
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 10:04:06 +0800
+
+kylin-os-installer (0.1.42hw30) v101; urgency=medium
+
+  * 除 / 以外默认不进行 fsck 检查
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 25 Nov 2020 09:42:13 +0800
+
+kylin-os-installer (0.1.42hw29) v101; urgency=medium
+
+  * 修复 .bootinfo 错误
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 24 Nov 2020 17:41:44 +0800
+
+kylin-os-installer (0.1.42hw28) v101; urgency=medium
+
+  * 挂载 /backup,修改自动登录写入值
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 24 Nov 2020 16:47:15 +0800
+
+kylin-os-installer (0.1.42hw27) v101; urgency=medium
+
+  * 禁用自动挂载
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 21 Nov 2020 11:51:21 +0800
+
+kylin-os-installer (0.1.42hw26) v101; urgency=medium
+
+  * 命令行参数使用 no-factory-backup 取消出厂备份
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 20 Nov 2020 17:38:54 +0800
+
+kylin-os-installer (0.1.42hw25) v101; urgency=medium
+
+  * 修复自定义安装修改现有分区文件系统不生效问题
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 20 Nov 2020 16:57:36 +0800
+
+kylin-os-installer (0.1.42hw24) v101; urgency=medium
+
+  * 修复脚本错误
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 20 Nov 2020 14:49:50 +0800
+
+kylin-os-installer (0.1.42hw23) v101; urgency=medium
+
+  * 设置自定义安装 swap 和 backup
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 20 Nov 2020 13:50:20 +0800
+
+kylin-os-installer (0.1.42hw22) v101; urgency=medium
+
+  * 自定义分区后使用脚本挂载,修复新建分区表闪退问题,修复不创建分区表不会格式化问题,swap 存在问题
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 19 Nov 2020 20:53:39 +0800
+
+kylin-os-installer (0.1.42hw19) v101; urgency=medium
+
+  * 创建出厂备份
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 16 Nov 2020 18:53:39 +0800
+
+kylin-os-installer (0.1.42hw18) v101; urgency=medium
+
+  * 修改 /target/run 挂载方式以显示 UUID
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 14 Nov 2020 10:28:41 +0800
+
+kylin-os-installer (0.1.42hw17) v101; urgency=medium
+
+  * 更新源码,读取脚本退出码以显示错误界面
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 11 Nov 2020 17:24:25 +0800
+
+kylin-os-installer (0.1.42hw16) v101; urgency=medium
+
+  * 更新界面,进度条显示修改、气泡提示、优化程序启动速度、翻译、错误和安装完成页面显示修改
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 11 Nov 2020 11:01:03 +0800
+
+kylin-os-installer (0.1.42hw15) v101; urgency=medium
+
+  * 安装完移除 casper
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 11 Nov 2020 09:16:16 +0800
+
+kylin-os-installer (0.1.42hw14) v101; urgency=medium
+
+  * 写入 backup uuid 到 /etc/.bootinfo
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 09 Nov 2020 14:47:00 +0800
+
+kylin-os-installer (0.1.42hw13) v101; urgency=medium
+
+  * 使用 hwclock -w 设置硬件时间
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 07 Nov 2020 17:51:49 +0800
+
+kylin-os-installer (0.1.42hw12) v101; urgency=medium
+
+  * 更新界面
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 07 Nov 2020 17:33:08 +0800
+
+kylin-os-installer (0.1.42hw11) v101; urgency=medium
+
+  * 覆盖 /etc/hosts
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 07 Nov 2020 14:55:10 +0800
+
+kylin-os-installer (0.1.42hw10) v101; urgency=medium
+
+  * 更新界面
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 06 Nov 2020 09:32:29 +0800
+
+kylin-os-installer (0.1.42hw9) v101; urgency=medium
+
+  * 为分区添加 label
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 05 Nov 2020 20:29:40 +0800
+
+kylin-os-installer (0.1.42hw8) v101; urgency=medium
+
+  * 执行 /cdrom/.kylin-post-actions 脚本
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 05 Nov 2020 18:46:10 +0800
+
+kylin-os-installer (0.1.42hw7) v101; urgency=medium
+
+  * 添加安装后需要移除的包列表处理,fstab 不显示 /cdrom
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 05 Nov 2020 17:21:50 +0800
+
+kylin-os-installer (0.1.42hw6) v101; urgency=medium
+
+  * 脚本添加 set -e
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 04 Nov 2020 17:00:47 +0800
+
+kylin-os-installer (0.1.42hw5) v101; urgency=medium
+
+  * 华为 990 使用 mkfs.fat -F16 格式化
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 04 Nov 2020 16:03:10 +0800
+
+kylin-os-installer (0.1.42hw4) v101; urgency=medium
+
+  * 修复路径错误
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 03 Nov 2020 17:16:15 +0800
+
+kylin-os-installer (0.1.42hw3) v101; urgency=medium
+
+  * 修复段错误
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 03 Nov 2020 16:46:50 +0800
+
+kylin-os-installer (0.1.42hw2) v101; urgency=medium
+
+  * 修复段错误
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 02 Nov 2020 11:12:12 +0800
+
+kylin-os-installer (0.1.42hw1) v101; urgency=medium
+
+  * 华为定制
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 02 Nov 2020 09:49:13 +0800
+
+kylin-os-installer (0.1.42) v101; urgency=medium
+
+  * 容错处理
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 30 Oct 2020 08:55:05 +0800
+
+kylin-os-installer (0.1.41) v101; urgency=medium
+
+  * 更新界面
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 29 Oct 2020 19:48:40 +0800
+
+kylin-os-installer (0.1.40) v101; urgency=medium
+
+  * 仅在没有 grub-efi 时安装 grub-efi
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 28 Oct 2020 16:33:10 +0800
+
+kylin-os-installer (0.1.39) v101; urgency=medium
+
+  * 修复 u 盘安装挂载 cdrom 失败问题
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 28 Oct 2020 10:19:31 +0800
+
+kylin-os-installer (0.1.38) v101; urgency=medium
+
+  * 修复没有安装第三方软件包问题
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 24 Oct 2020 17:28:56 +0800
+
+kylin-os-installer (0.1.37) v101; urgency=medium
+
+  * 安装 /cdrom/.kylin-post-packages 列表中的包时使用 unset DEBIAN_HAS_FRONTEND
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 24 Oct 2020 11:17:58 +0800
+
+kylin-os-installer (0.1.36) v101; urgency=medium
+
+  * 支持安装 /cdrom/third-party 和 /home/kylin/third-party 目录下的软件包
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 23 Oct 2020 16:38:44 +0800
+
+kylin-os-installer (0.1.35) v101; urgency=medium
+
+  * 自动安装 /cdrom/.kylin-post-packages 中列出的软件包
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 23 Oct 2020 16:35:31 +0800
+
+kylin-os-installer (0.1.34) v101; urgency=medium
+
+  * 重新设置软件源
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 13 Oct 2020 09:57:32 +0800
+
+kylin-os-installer (0.1.33) v101; urgency=medium
+
+  * 重新设置软件源
+
+ -- zhangze <zhangze@kylinos.cn>  Sat, 10 Oct 2020 17:38:41 +0800
+
+kylin-os-installer (0.1.32) v101; urgency=medium
+
+  * 修复错误
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 09 Oct 2020 17:17:48 +0800
+
+kylin-os-installer (0.1.31) v101; urgency=medium
+
+  * 使用 genfstab 生成 fstab
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 08 Oct 2020 17:10:14 +0800
+
+kylin-os-installer (0.1.30) v101; urgency=medium
+
+  * 修改 control 文件
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 08 Oct 2020 16:38:46 +0800
+
+kylin-os-installer (0.1.29) v101; urgency=medium
+
+  * 使用 shellcheck 检查脚本
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 08 Oct 2020 16:20:54 +0800
+
+kylin-os-installer (0.1.28) v101; urgency=medium
+
+  * 修改进度条等待时间
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 07 Oct 2020 12:34:45 +0800
+
+kylin-os-installer (0.1.27) v101; urgency=medium
+
+  * 修改 fstab
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 07 Oct 2020 09:41:13 +0800
+
+kylin-os-installer (0.1.26) v101; urgency=medium
+
+  * 修改 fstab
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 17:36:02 +0800
+
+kylin-os-installer (0.1.25) v101; urgency=medium
+
+  * 安装后移除软件包
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 17:32:47 +0800
+
+kylin-os-installer (0.1.24) v101; urgency=medium
+
+  * 修复
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 17:08:38 +0800
+
+kylin-os-installer (0.1.23) v101; urgency=medium
+
+  * 修复脚本错误
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 17:01:12 +0800
+
+kylin-os-installer (0.1.22) v101; urgency=medium
+
+  * 修复脚本中错误
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 16:50:45 +0800
+
+kylin-os-installer (0.1.21) v101; urgency=medium
+
+  * 更新源码
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 16:16:31 +0800
+
+kylin-os-installer (0.1.20) v101; urgency=medium
+
+  * 更新脚本,支持 legacy
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 16:15:03 +0800
+
+kylin-os-installer (0.1.19) v101; urgency=medium
+
+  * 更新界面
+
+ -- zhangze <zhangze@kylinos.cn>  Wed, 30 Sep 2020 16:11:14 +0800
+
+kylin-os-installer (0.1.18) v101; urgency=medium
+
+  * 修改包描述信息
+
+ -- zhangze <zhangze@kylinos.cn>  Tue, 29 Sep 2020 11:02:10 +0800
+
+kylin-os-installer (0.1.17) v101; urgency=medium
+
+  * 进度条设置
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 28 Sep 2020 17:48:19 +0800
+
+kylin-os-installer (0.1.16) v101; urgency=medium
+
+  * 修改错误
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 28 Sep 2020 09:20:40 +0800
+
+kylin-os-installer (0.1.15) v101; urgency=medium
+
+  * 更新 QT
+
+ -- zhangze <zhangze@kylinos.cn>  Mon, 28 Sep 2020 09:13:27 +0800
+
+kylin-os-installer (0.1.14) v101; urgency=medium
+
+  * 修复自动登录错误
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 27 Sep 2020 18:59:25 +0800
+
+kylin-os-installer (0.1.13) v101; urgency=medium
+
+  * 更新 QT
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 27 Sep 2020 17:35:48 +0800
+
+kylin-os-installer (0.1.12) v101; urgency=medium
+
+  * 添加自动登陆支持
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 27 Sep 2020 16:54:52 +0800
+
+kylin-os-installer (0.1.11) v101; urgency=medium
+
+  * 可执行文件修改为 kylin-os-installer
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 27 Sep 2020 16:05:34 +0800
+
+kylin-os-installer (0.1.10) v101; urgency=medium
+
+  * 修改 .desktop 文件
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 27 Sep 2020 14:31:58 +0800
+
+kylin-os-installer (0.1.9) v101; urgency=medium
+
+  * 添加 icons
+
+ -- zhangze <zhangze@kylinos.cn>  Sun, 27 Sep 2020 14:12:35 +0800
+
+kylin-os-installer (0.1.8) v101; urgency=medium
+
+  * 删除一些不需要的文件
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Sep 2020 15:34:27 +0800
+
+kylin-os-installer (0.1.7) v101; urgency=medium
+
+  * 更新 Qt 部分代码
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Sep 2020 14:33:06 +0800
+
+kylin-os-installer (0.1.6) v101; urgency=medium
+
+  * 修改自动安装分区方案
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Sep 2020 11:02:15 +0800
+
+kylin-os-installer (0.1.5) v101; urgency=medium
+
+  * 修改 /etc/fstab
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Sep 2020 10:20:46 +0800
+
+kylin-os-installer (0.1.4) v101; urgency=medium
+
+  * 修改自动安装分区方案
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Sep 2020 09:50:15 +0800
+
+kylin-os-installer (0.1.3) v101; urgency=medium
+
+  * 暂时移除 desktop
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 25 Sep 2020 09:17:43 +0800
+
+kylin-os-installer (0.1.2) v101; urgency=medium
+
+  * 修改脚本
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 18 Sep 2020 17:50:31 +0800
+
+kylin-os-installer (0.1.1) v101; urgency=medium
+
+  * 修改版本号
+
+ -- zhangze <zhangze@kylinos.cn>  Fri, 18 Sep 2020 10:45:18 +0800
+
+kylin-os-installer (0.1kylin-k8) v101; urgency=medium
+
+  * 修复一些路径或脚本错误
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 20:26:10 +0800
+
+kylin-os-installer (0.1kylin-k7) v101; urgency=medium
+
+  * 使用最新代码
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 19:53:24 +0800
+
+kylin-os-installer (0.1kylin-k6) v101; urgency=medium
+
+  * fix
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 14:42:25 +0800
+
+kylin-os-installer (0.1kylin-k5) v101; urgency=medium
+
+  * fix
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 14:25:54 +0800
+
+kylin-os-installer (0.1kylin-k4) v101; urgency=medium
+
+  * 指定脚本的安装目录
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 14:13:35 +0800
+
+kylin-os-installer (0.1kylin-k3) v101; urgency=medium
+
+  * 更改名字
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 11:03:33 +0800
+
+kylin-installer (0.1kylin-k2) v101; urgency=medium
+
+  * 添加安装脚本
+
+ -- zhangze <zhangze@kylinos.cn>  Thu, 17 Sep 2020 10:21:26 +0800
+
+kylin-installer (0.1kylin-k1) v101; urgency=medium
+
+  * init
+
+ -- Live session user <kylin@kylin>  Thu, 17 Sep 2020 09:44:25 +0800
+
+kylin-installer (0.1kylin-1) unstable; urgency=medium
+
+  * Initial release (Closes: #nnnn)  <nnnn is the bug number of your ITP>
+
+ -- Live session user <kylin@unknown>  Thu, 17 Sep 2020 09:29:31 +0800

+ 1 - 0
kylin-os-installer-1.0.9/debian/compat

@@ -0,0 +1 @@
+12

+ 47 - 0
kylin-os-installer-1.0.9/debian/control

@@ -0,0 +1,47 @@
+Source: kylin-os-installer
+Section: admin
+Priority: optional
+Maintainer: Kylin Developers <kylin@kylinos.cn>
+Build-Depends:
+         libyaml-cpp-dev,
+         debhelper,
+         libqt5svg5-dev,
+         libpwquality-dev,
+         libparted-dev,
+         libxtst-dev,
+         pkg-config,
+         qt5-default,
+         build-essential,
+         dh-systemd,
+         python3-pwquality
+Standards-Version: 4.4.1
+#Vcs-Browser: https://salsa.debian.org/debian/kylin-os-installer
+#Vcs-Git: https://salsa.debian.org/debian/kylin-os-installer.git
+
+Package: kylin-os-installer
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+         udev,
+         locales,
+         xvfb,
+         lsb-release,
+         ntfs-3g,
+         passwd,
+         os-prober,
+         adduser,
+         archdetect-deb,
+         xfsprogs,
+         exfat-utils,
+         e2fsprogs,
+         dosfstools,
+         xinit,
+         lvm2,
+         os-prober,
+         parted,
+         cryptsetup
+Recommends: btrfs-progs,
+            dmraid,
+            grub-pc | grub | grub-efi-amd64 | grub-efi-arm64,
+            lvm2
+Description: Kylin Live CD installer
+ Kylin live CD installer

+ 43 - 0
kylin-os-installer-1.0.9/debian/copyright

@@ -0,0 +1,43 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: kylin-os-installer
+Upstream-Contact: <preferred name and address to reach the upstream project>
+Source: <url://example.com>
+
+Files: *
+Copyright: <years> <put author's name and email here>
+           <years> <likewise for another author>
+License: <special license>
+ <Put the license of the package here indented by 1 space>
+ <This follows the format of Description: lines in control file>
+ .
+ <Including paragraphs>
+
+# If you want to use GPL v2 or later for the /debian/* files use
+# the following clauses, or change it to suit. Delete these two lines
+Files: debian/*
+Copyright: 2020 Live session user <kylin@unknown>
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
+# Please avoid picking licenses with terms that are more restrictive than the
+# packaged work, as it may make Debian's contributions unacceptable upstream.
+#
+# If you need, there are some extra license texts available in two places:
+#   /usr/share/debhelper/dh_make/licenses/
+#   /usr/share/common-licenses/

+ 20 - 0
kylin-os-installer-1.0.9/debian/kylin-os-installer.install

@@ -0,0 +1,20 @@
+src/Installer_main/kylin-os-installer /usr/bin
+data/kylin-os-installer-dm /usr/bin
+data/kylin-os-installer-live /usr/bin
+data/kylin-os-installer-oem /usr/bin
+data/kylin-os-installer-oem-automatic /usr/bin
+scripts /usr/share/kylin-os-installer
+language /usr/share/kylin-os-installer
+ky-installer.cfg /usr/share/kylin-os-installer
+data /usr/share/kylin-os-installer
+kylin-os-installer.desktop /usr/share/applications
+icons/16x16/apps/ /usr/share/icons/hicolor/16x16/
+icons/22x22/apps/ /usr/share/icons/hicolor/22x22/
+icons/24x24/apps/ /usr/share/icons/hicolor/24x24/
+icons/32x32/apps/ /usr/share/icons/hicolor/32x32/
+icons/48x48/apps/ /usr/share/icons/hicolor/48x48/
+icons/64x64/apps/ /usr/share/icons/hicolor/64x64/
+icons/96x96/apps/ /usr/share/icons/hicolor/96x96/
+icons/128x128/apps/ /usr/share/icons/hicolor/128x128/
+icons/256x256/apps/ /usr/share/icons/hicolor/256x256/
+icons/512x512/apps/ /usr/share/icons/hicolor/512x512/

+ 13 - 0
kylin-os-installer-1.0.9/debian/kylin-os-installer.kylin-os-installer.service

@@ -0,0 +1,13 @@
+[Unit]
+Description=Kylin live CD installer
+Before=plymouth-quit.service plymouth-quit-wait.service lightdm.service
+ConditionKernelCommandLine=boot=casper
+
+[Service]
+Type=oneshot
+Restart=on-failure
+RestartSec=0
+ExecStart=/usr/share/kylin-os-installer/data/start-kylin-os-installer
+
+[Install]
+WantedBy=graphical.target

+ 29 - 0
kylin-os-installer-1.0.9/debian/rules

@@ -0,0 +1,29 @@
+#!/usr/bin/make -f
+# See debhelper(7) (uncomment to enable)
+# output every command that modifies files on the build system.
+#export DH_VERBOSE = 1
+
+
+# see FEATURE AREAS in dpkg-buildflags(1)
+#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+# see ENVIRONMENT in dpkg-buildflags(1)
+# package maintainers to append CFLAGS
+#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
+# package maintainers to append LDFLAGS
+#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
+
+
+%:
+	dh $@
+#override_dh_shlibdeps:
+	#--dpkg-shlibdeps-params=--ignore-missing-info
+
+# dh_make generated override targets
+# This is example for Cmake (See https://bugs.debian.org/641051 )
+#override_dh_auto_configure:
+#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
+
+override_dh_installsystemd:
+	dh_installsystemd --name kylin-os-installer
+

+ 1 - 0
kylin-os-installer-1.0.9/debian/source/format

@@ -0,0 +1 @@
+3.0 (native)

文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/128x128/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/16x16/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/22x22/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/24x24/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/256x256/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/32x32/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/48x48/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/512x512/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/64x64/apps/kylin-os-installer.svg


文件差异内容过多而无法显示
+ 0 - 0
kylin-os-installer-1.0.9/icons/96x96/apps/kylin-os-installer.svg


+ 29 - 0
kylin-os-installer-1.0.9/ky-installer.cfg

@@ -0,0 +1,29 @@
+[Encrypty]
+encrypty=false
+encryptyPWD=@ByteArray(123)
+
+[config]
+autologin=0
+automatic-installation=0
+devpath=/dev/sda
+enable-swapfile=false
+factory-backup=1
+hostname=sa-QiTianM425-N000
+language=zh_CN
+password=@ByteArray(123qwe12)
+reboot=0
+timezone=Asia/Shanghai
+username=sa
+
+[custompartition]
+bootloader=/dev/sda ATA ST1000DM003-1SB1
+partitions="/boot/efi:/dev/sda1;/:/dev/sda7;linux-swap:/dev/sda5;"
+
+[setting]
+EnableSwap=false
+FileSystem="ext4;ext3;fat32;xfs;btrfs;kylin-data;efi;linux-swap;unused"
+FileSystemBoot="ext4;vfat"
+PartitionMountedPoints=";/;/boot;/backup;/tmp"
+
+[specialmodel]
+computer="mips64el/loongson-3;loongsonarch64/generic"

+ 15 - 0
kylin-os-installer-1.0.9/kylin-os-installer.desktop

@@ -0,0 +1,15 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=Application
+Version=1.0
+Name=Install Kylin
+Name[zh_CN]=安装 Kylin
+GenericName=Kylin OS Installer
+Exec=/usr/bin/kylin-os-installer-live
+Comment=Kylin — Installer for Kylin Live
+Keywords=kylin;system;install;debian;installer
+X-UKUI-AutoRestart=true
+Icon=kylin-os-installer
+Terminal=false
+Categories=Qt;System;
+StartupNotify=True

二进制
kylin-os-installer-1.0.9/language/en_US.qm


+ 2382 - 0
kylin-os-installer-1.0.9/language/en_US.ts

@@ -0,0 +1,2382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en_US" sourcelanguage="en_AS">
+<context>
+    <name>KInstaller::CreatePartitionFrame</name>
+    <message>
+        <source>Ext4 File system</source>
+        <translatorcomment>Ext4 File system</translatorcomment>
+        <translation type="vanished">Ext4 File system</translation>
+    </message>
+    <message>
+        <source>Ext3 File system</source>
+        <translatorcomment>Ext3 File system</translatorcomment>
+        <translation type="vanished">Ext3 File system</translation>
+    </message>
+    <message>
+        <source>Fat File system</source>
+        <translatorcomment>Ext3 File system</translatorcomment>
+        <translation type="vanished">Ext3 File system</translation>
+    </message>
+    <message>
+        <source>Vfat File system</source>
+        <translatorcomment>Vfat File system</translatorcomment>
+        <translation type="vanished">Vfat File system</translation>
+    </message>
+    <message>
+        <source>/</source>
+        <translatorcomment>/</translatorcomment>
+        <translation type="vanished">/</translation>
+    </message>
+    <message>
+        <source>/boot</source>
+        <translatorcomment>/boot</translatorcomment>
+        <translation type="vanished">/boot</translation>
+    </message>
+    <message>
+        <source>/home</source>
+        <translatorcomment>/home</translatorcomment>
+        <translation type="vanished">/home</translation>
+    </message>
+    <message>
+        <source>/var</source>
+        <translatorcomment>/var</translatorcomment>
+        <translation type="vanished">/var</translation>
+    </message>
+    <message>
+        <source>Swap</source>
+        <translatorcomment>Swap</translatorcomment>
+        <translation type="vanished">Swap</translation>
+    </message>
+    <message>
+        <source>/data</source>
+        <translatorcomment>/data</translatorcomment>
+        <translation type="vanished">/data</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="335"/>
+        <source>OK</source>
+        <translatorcomment>OK</translatorcomment>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>File system type:</source>
+        <translatorcomment>File system type:</translatorcomment>
+        <translation type="vanished">File system type:</translation>
+    </message>
+    <message>
+        <source>Create partition:</source>
+        <translatorcomment>Create partition:</translatorcomment>
+        <translation type="vanished">Create partition:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="337"/>
+        <source>Used to:</source>
+        <translation>Used to:</translation>
+    </message>
+    <message>
+        <source>Create partition</source>
+        <translatorcomment>Create partition</translatorcomment>
+        <translation type="vanished">Create partition</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="341"/>
+        <source>Mount point</source>
+        <translatorcomment>Mount point:</translatorcomment>
+        <translation>Mount point:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="343"/>
+        <source>Location for the new partition</source>
+        <translatorcomment>Location for the new partition:</translatorcomment>
+        <translation>Location for the new partition:</translation>
+    </message>
+    <message>
+        <source>end of this space</source>
+        <translatorcomment>end of this space</translatorcomment>
+        <translation type="vanished">end of this space</translation>
+    </message>
+    <message>
+        <source>unused</source>
+        <translation type="vanished">unused</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="338"/>
+        <source>Create Partition</source>
+        <translation>Create Partition</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="279"/>
+        <source>Mount point starts with &apos;/&apos;</source>
+        <translation>Mount point starts with &apos;/&apos;</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="344"/>
+        <source>End of this space</source>
+        <translation>End of this space</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="345"/>
+        <source>Beginning of this space</source>
+        <translatorcomment>Beginning of this space</translatorcomment>
+        <translation>Beginning of this space</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="347"/>
+        <source>Type for the new partition:</source>
+        <translatorcomment>Type for the new partition:</translatorcomment>
+        <translation>Type of new partition:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="403"/>
+        <source>Recommended efi partition size is between 256MiB and 2GiB.</source>
+        <translation>Recommended efi partition size is between 256MiB and 2GiB.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="415"/>
+        <source>Recommended boot partition size is between 500MiB and 2GiB.</source>
+        <translation>Recommended boot partition size is between 500MiB and 2GiB.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="435"/>
+        <source>close</source>
+        <translation>close</translation>
+    </message>
+    <message>
+        <source>Swap partition size is twice the size of the memory.</source>
+        <translation type="vanished">Swap partition size is twice the size of the memory.</translation>
+    </message>
+    <message>
+        <source>EFI partition size is between 256MiB and 2GiB.</source>
+        <translation type="vanished">EFI partition size is between 256MiB and 2GiB.</translation>
+    </message>
+    <message>
+        <source>Boot partition size is between 500MiB and 2GiB.</source>
+        <translation type="vanished">Boot partition size is between 500MiB and 2GiB.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="417"/>
+        <source>Root partition size is greater than 15GiB, 
+but Huawei machines require greater than 25GiB.</source>
+        <translation>Root partition size is greater than 15GiB, 
+but Huawei machines require greater than 25GiB.</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the root partition size is at least 15G.
+*Please make sure the root partition is /dev/sda2 on FT1500A.</source>
+        <translation type="vanished">The root partition size must be greater than 15G.
+the root partition must be /dev/sda2 on FT1500A.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="353"/>
+        <source>Size(MiB)</source>
+        <translation>Size(MiB)</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT1500A.</source>
+        <translation type="vanished">*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT1500A. {8G?} {2 ?} {1500A?}</translation>
+    </message>
+    <message>
+        <source>Size(MB)</source>
+        <translatorcomment>Size(MB)</translatorcomment>
+        <translation type="vanished">Size(MB)</translation>
+    </message>
+    <message>
+        <source>Type for the new partition</source>
+        <translatorcomment>Type for the new partition:</translatorcomment>
+        <translation type="vanished">Type for the new partition:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="348"/>
+        <source>Logical</source>
+        <translatorcomment>Logical</translatorcomment>
+        <translation>Logical</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="349"/>
+        <source>Primary</source>
+        <translatorcomment>Primary</translatorcomment>
+        <translation>Primary</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</source>
+        <translatorcomment>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</translatorcomment>
+        <translation type="vanished">*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</translation>
+    </message>
+    <message>
+        <source>Size(GB)</source>
+        <translatorcomment>Size(GB):</translatorcomment>
+        <translation type="vanished">Size(GB):</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::CustomPartitionFrame</name>
+    <message>
+        <source>Create</source>
+        <translation type="obsolete">Create</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="obsolete">Delete</translation>
+    </message>
+    <message>
+        <source>Modify</source>
+        <translation type="obsolete">Modify</translation>
+    </message>
+    <message>
+        <source>New partition table</source>
+        <translation type="obsolete">New partition table</translation>
+    </message>
+    <message>
+        <source>revert</source>
+        <translation type="obsolete">revert</translation>
+    </message>
+    <message>
+        <source>Device for boot loader installation:</source>
+        <translatorcomment>Device for boot loader installation:</translatorcomment>
+        <translation type="vanished">Device for boot loader installation:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/custompartitionframe.cpp" line="295"/>
+        <source>Device for boot loader path:</source>
+        <translation>Device for boot loader path:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/custompartitionframe.cpp" line="296"/>
+        <source>Revert</source>
+        <translatorcomment>Revert</translatorcomment>
+        <translation>Revert</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::CustomPartitiondelegate</name>
+    <message>
+        <source>#%1 partition on the device %2 is %3 ,which will be set to %4
+</source>
+        <translation type="vanished">#%1 partition on the device %2 is %3 ,which will be set to %4
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 ,which will be set to %3
+</source>
+        <translation type="vanished">#%1 partition on the device %2 ,which will be set to %3
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 ,which will be set to %4
+</source>
+        <translatorcomment>#%1 partition on the device %2 ,which will be set to %4</translatorcomment>
+        <translation type="vanished">#%1 partition on the device %2 ,which will be set to %4</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was created
+</source>
+        <translation type="vanished">#%1 partition on the device %2 was created.
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was Deleted
+</source>
+        <translation type="vanished">#%1 partition on the device %2 was Deleted.
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was Formated %3
+</source>
+        <translation type="vanished">#%1 partition on the device %2 was Formated %3.
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was mounted %3
+</source>
+        <translation type="vanished">#%1 partition on the device %2 was mounted %3.
+</translation>
+    </message>
+    <message>
+        <source>GPT New Partition Table was created
+</source>
+        <translation type="vanished">GPT New Partition Table was created.
+</translation>
+    </message>
+    <message>
+        <source>MsDos New Partition Table was created
+</source>
+        <translation type="vanished">MsDos New Partition Table was created.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="81"/>
+        <source>#%1 partition on the device %2 will be created.
+</source>
+        <translation>#%1 partition on the device %2 will be created.
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition will be mounted %2.
+</source>
+        <translation type="vanished">#%1 partition will be mounted %2.
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition will be formated %2.
+</source>
+        <translation type="vanished">#%1 partition will be formated %2.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="84"/>
+        <source>#%1 partition on the device %2 will be mounted %3.
+</source>
+        <translation>#%1 partition on the device %2 will be mounted %3.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="88"/>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="97"/>
+        <source>#%1 partition on the device %2 will be formated %3.
+</source>
+        <translation>#%1 partition on the device %2 will be formated %3.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="93"/>
+        <source>#%1 partition on the device %2 will be deleted.
+</source>
+        <translation>#%1 partition on the device %2 will be deleted.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="101"/>
+        <source>#%1 partition  on the device %2 will be mounted %3.
+</source>
+        <translation>#%1 partition  on the device %2 will be mounted %3.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="116"/>
+        <source>%1 GPT new partition table will be created.
+</source>
+        <translation>%1 GPT new partition table will be created.
+</translation>
+    </message>
+    <message>
+        <source>%1 GPT new partition table will be created .
+</source>
+        <translation type="vanished">%1 GPT new partition table will be created .
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="118"/>
+        <source>%1 MsDos new partition table will be created.
+</source>
+        <translation>%1 MsDos new partition table will be created.
+</translation>
+    </message>
+    <message>
+        <source>GPT new partition table was created.
+</source>
+        <translation type="obsolete">GPT new partition table was created.
+</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::FinishedFrame</name>
+    <message>
+        <source>系统安装完成。
+但系统重启后,您所做的任何改动和保存的文件都不会保留</source>
+        <translatorcomment>The system installation is complete.
+But after the system restarts, any changes you made and saved files will not be retained</translatorcomment>
+        <translation type="vanished">The system installation is complete.
+But after the system restarts, any changes you made and saved files will not be retained</translation>
+    </message>
+    <message>
+        <source>The system installation is complete.
+But after the system restarts, any changes you made and saved files will not be retained</source>
+        <translatorcomment>The system installation is complete.
+But after the system restarts, any changes you made and saved files will not be retained</translatorcomment>
+        <translation type="vanished">The system installation is complete.
+But after the system restarts, any changes you made and saved files will not be retained</translation>
+    </message>
+    <message>
+        <source>Install Finished</source>
+        <translatorcomment>Install Finished</translatorcomment>
+        <translation type="vanished">Install Finished</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/finishedInstall.cpp" line="79"/>
+        <source>Installation Finished</source>
+        <translation>Installation Completed</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/finishedInstall.cpp" line="80"/>
+        <source>Restart</source>
+        <translation>Restart</translation>
+    </message>
+    <message>
+        <source>restart</source>
+        <translatorcomment>restart</translatorcomment>
+        <translation type="vanished">restart</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::FullPartitionFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/quickpartitionframe.cpp" line="136"/>
+        <source>Please choose custom way to install, disk size less than 50G!</source>
+        <translation>Please choose custom way to install, disk size less than 50G!</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/quickpartitionframe.cpp" line="137"/>
+        <source>Full disk encryption</source>
+        <translation>Full disk encryption</translation>
+    </message>
+    <message>
+        <source>Disk encryption</source>
+        <translation type="vanished">Disk encryption</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallErrorFrame</name>
+    <message>
+        <source>The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.To install KylinOS, please click &quot;OK&quot; to restart the computer, and then reinstall</source>
+        <translatorcomment>The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.
+To install KylinOS, please click &quot;OK&quot; to restart the computer, and then reinstall</translatorcomment>
+        <translation type="vanished">The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.
+To install KylinOS, please click &quot;OK&quot; to restart the computer, and then reinstall</translation>
+    </message>
+    <message>
+        <source>The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.To install KylinOS, please click &quot;restart&quot; to restart the computer, and then reinstall</source>
+        <translatorcomment>The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.
+To install KylinOS, please click &quot;restart&quot; to restart the computer, and then reinstall</translatorcomment>
+        <translation type="vanished">The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.
+To install KylinOS, please click &quot;restart&quot; to restart the computer, and then reinstall</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installerrorframe.cpp" line="87"/>
+        <source>The computer restarted unexpectedly or encountered an error.
+please click &quot;restart&quot; to restart the computer, and then reinstall</source>
+        <translatorcomment>The computer restarted unexpectedly or encountered an error.
+please click &quot;restart&quot; to restart the computer, and then reinstall</translatorcomment>
+        <translation>The computer restarted unexpectedly or encountered an error.
+please click &quot;restart&quot; to restart the computer, and then reinstall</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installerrorframe.cpp" line="90"/>
+        <source>Installation Failed</source>
+        <translation>Installation Failed</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installerrorframe.cpp" line="91"/>
+        <source>Restart</source>
+        <translation>Restart</translation>
+    </message>
+    <message>
+        <source>Install Failed</source>
+        <translatorcomment>Install Failed</translatorcomment>
+        <translation type="vanished">Install Failed</translation>
+    </message>
+    <message>
+        <source>restart</source>
+        <translation type="vanished">restart</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallerMainWidget</name>
+    <message>
+        <source>Information</source>
+        <translatorcomment>Information</translatorcomment>
+        <translation type="vanished">Information</translation>
+    </message>
+    <message>
+        <source>Really to shutdown?</source>
+        <translatorcomment>Really to shutdown?</translatorcomment>
+        <translation type="vanished">Really to shutdown?</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="vanished">Close</translation>
+    </message>
+    <message>
+        <source>Installation will be exited, the computer will enter the trial or restart.</source>
+        <translation type="vanished">Installation will be exited, the computer will enter the trial or restart.</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="215"/>
+        <source>About to exit the installer, restart the computer.</source>
+        <translation>About to exit the installer, restart the computer.</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="217"/>
+        <source>About to exit the installer and return to the trial interface.</source>
+        <translation>About to exit the installer and return to the trial interface.</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="269"/>
+        <source>Installer is about to exit and the computer will be shut down.</source>
+        <translation>Installer is about to exit and the computer will be shut down.</translation>
+    </message>
+    <message>
+        <source>quit installer</source>
+        <translation type="vanished">quit installer</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="452"/>
+        <source>back</source>
+        <translation>back</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="429"/>
+        <source>quit</source>
+        <translation>quit</translation>
+    </message>
+    <message>
+        <source>exit</source>
+        <translation type="vanished">exit</translation>
+    </message>
+    <message>
+        <source>power off</source>
+        <translatorcomment>power off</translatorcomment>
+        <translation type="vanished">power off</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="406"/>
+        <source>keyboard</source>
+        <translation>keyboard</translation>
+    </message>
+    <message>
+        <source>keyborad</source>
+        <translation type="vanished">keyborad</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallingFrame</name>
+    <message>
+        <source>Installing</source>
+        <translation type="vanished">Installing</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installingframe.cpp" line="119"/>
+        <source>The system is being installed, please do not turn off the computer</source>
+        <translation>The system is being installed, please do not turn off the computer</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallingOEMConfigFrame</name>
+    <message>
+        <source>Optimizing system configuration</source>
+        <translation type="obsolete">Progressing system configuration</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installingoemconfigframe.cpp" line="66"/>
+        <source>Progressing system configuration</source>
+        <translation>Progressing system configuration</translation>
+    </message>
+    <message>
+        <source>Please wait patiently......</source>
+        <translation type="vanished">Please wait patiently......</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::LanguageFrame</name>
+    <message>
+        <source>Select system language</source>
+        <translatorcomment>Select system language</translatorcomment>
+        <translation type="vanished">Select system language</translation>
+    </message>
+    <message>
+        <source>Welcome to use Galaxy Kylin desktop operating system</source>
+        <translatorcomment>Welcome to use Galaxy Kylin desktop operating system</translatorcomment>
+        <translation type="vanished">Welcome to use Galaxy Kylin desktop operating system</translation>
+    </message>
+    <message>
+        <source>KYLIN OS V10.1.0.4</source>
+        <translatorcomment>KYLIN OS V10.1.0.4</translatorcomment>
+        <translation type="vanished">KYLIN OS V10.1.0.4</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>next</translatorcomment>
+        <translation type="vanished">next</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KChoiceLanguage/languageframe.cpp" line="222"/>
+        <source>Select Language</source>
+        <translation>Select Language</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KChoiceLanguage/languageframe.cpp" line="225"/>
+        <source>Next</source>
+        <translation>Next</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::LicenseFrame</name>
+    <message>
+        <source>Please read the license agreement</source>
+        <translatorcomment>Please read the license agreement</translatorcomment>
+        <translation type="vanished">Please read the license agreement</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KyLicense/licenseframe.cpp" line="156"/>
+        <source>Read License Agreement</source>
+        <translation>Read License Agreement</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KyLicense/licenseframe.cpp" line="157"/>
+        <source>I have read and agree to the terms of the agreement</source>
+        <translation>I have read and agree to the terms of the agreement</translation>
+    </message>
+    <message>
+        <source>Please pull down the slider to read the user agreement</source>
+        <translatorcomment>Please pull down the slider to read the user agreement</translatorcomment>
+        <translation type="vanished">Please pull down the slider to read the user agreement</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KyLicense/licenseframe.cpp" line="159"/>
+        <source>Next</source>
+        <translation>Next</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>next</translatorcomment>
+        <translation type="vanished">next</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::MainPartFrame</name>
+    <message>
+        <source>ss快速安装</source>
+        <translatorcomment>fast installation</translatorcomment>
+        <translation type="vanished">fast installation</translation>
+    </message>
+    <message>
+        <source>ss自定义安装</source>
+        <translatorcomment>custom installation</translatorcomment>
+        <translation type="vanished">custom installation</translation>
+    </message>
+    <message>
+        <source>w并存安装</source>
+        <translatorcomment>Multi system installation</translatorcomment>
+        <translation type="vanished">Multi system installation</translation>
+    </message>
+    <message>
+        <source>格式化硬盘,删除硬盘内所有的程序,文档,图片,音乐及其他文件</source>
+        <translatorcomment>Format the hard drive,
+This will delete all your programs, documents, photos, music, and any other files in all operating systems.</translatorcomment>
+        <translation type="vanished">Format the hard drive,
+This will delete all your programs, documents, photos, music, and any other files in all operating systems.</translation>
+    </message>
+    <message>
+        <source>快速安装</source>
+        <translatorcomment>Quick install</translatorcomment>
+        <translation type="vanished">Quick install</translation>
+    </message>
+    <message>
+        <source>SCSI1(0,0,0)(%1) 设备上的第1分区为EFI,将设为vfat
+SCSI1(0,0,0)(%1) 设备上的第2分区为boot,将设为ext4
+SCSI1(0,0,0)(%1) 设备上的第3分区为/,将设为ext4
+SCSI1(0,0,0)(%1) 设备上的第4分区为backup,将设为ext4
+SCSI1(0,0,0)(%1) 设备上的第5分区为data,将设为ext4
+SCSI1(0,0,0)(%1) 设备上的第6分区为swap,将设为swap
+</source>
+        <translatorcomment> EFI partition #1 of SCSI1 (0,0,0) (sda) as ext4
+ boot partition #2 of SCSI1 (0,0,0) (sda) as ext4
+ / partition #3 of SCSI1 (0,0,0) (sda) as ext4
+ backup partition #4 of SCSI1 (0,0,0) (sda) as ext4
+ data partition #5 of SCSI1 (0,0,0) (sda) as ext4
+ swap partition #6 of SCSI1 (0,0,0) (sda) as swap</translatorcomment>
+        <translation type="vanished"> EFI partition #1 of SCSI1 (0,0,0) (sda) as ext4
+        boot partition #2 of SCSI1 (0,0,0) (sda) as ext4
+        / partition #3 of SCSI1 (0,0,0) (sda) as ext4
+        backup partition #4 of SCSI1 (0,0,0) (sda) as ext4
+        data partition #5 of SCSI1 (0,0,0) (sda) as ext4
+        swap partition #6 of SCSI1 (0,0,0) (sda) as swap
+</translation>
+    </message>
+    <message>
+        <source>并存安装</source>
+        <translatorcomment>Coexist install</translatorcomment>
+        <translation type="vanished">Coexist install</translation>
+    </message>
+    <message>
+        <source>自定义安装</source>
+        <translatorcomment>Custom install</translatorcomment>
+        <translation type="vanished">Custom install</translation>
+    </message>
+    <message>
+        <source>Choose installation method</source>
+        <translatorcomment>Choose installation method</translatorcomment>
+        <translation type="vanished">Choose installation method</translation>
+    </message>
+    <message>
+        <source>Quick install</source>
+        <translatorcomment>Quick install</translatorcomment>
+        <translation type="vanished">Quick install</translation>
+    </message>
+    <message>
+        <source>Format the hard drive,This will delete all your programs, documents, photos, music, and any other files in all operating systems.</source>
+        <translatorcomment>Format the hard drive,
+This will delete all your programs, documents, photos, music, and any other files in all operating systems.</translatorcomment>
+        <translation type="vanished">Format the hard drive,
+This will delete all your programs, documents, photos, music, and any other files in all operating systems.</translation>
+    </message>
+    <message>
+        <source>SCSI1(0,0,0)(%1) 设备上第1分区为EFI,将设为vfat
+SCSI1(0,0,0)(%1) 设备上第2分区为boot,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第3分区为/,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第4分区为backup,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第5分区为data,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第6分区为swap,将设为swap
+</source>
+        <translation type="vanished">EFI partition #1 of SCSI1 (0,0,0) (sda) as ext4
+ boot partition #2 of SCSI1 (0,0,0) (sda) as ext4
+ / partition #3 of SCSI1 (0,0,0) (sda) as ext4
+ backup partition #4 of SCSI1 (0,0,0) (sda) as ext4
+ data partition #5 of SCSI1 (0,0,0) (sda) as ext4
+ swap partition #6 of SCSI1 (0,0,0) (sda) as swap</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="511"/>
+        <source>Custom install</source>
+        <translatorcomment>Custom install</translatorcomment>
+        <translation>Custom install</translation>
+    </message>
+    <message>
+        <source>Coexist install</source>
+        <translatorcomment>Coexist install</translatorcomment>
+        <translation type="vanished">Coexist install</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为EFI,将设为vfat
+%1设备上第2分区为boot,将设为ext4
+%1设备上第3分区为/,将设为ext4
+%1设备上第4分区为backup,将设为ext4
+%1设备上第5分区为data,将设为ext4
+%1设备上第6分区为swap,将设为swap
+</source>
+        <translation type="vanished">EFI partition #1 of sda as vfat
+boot partition #2 of sda as ext4
+/ partition #3 of sda as ext4
+backup partition #4 of sda as ext4
+data partition #5 of sda as ext4
+swap partition #6 of sda as swap
+</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为 EFI, 将设为 vfat;
+%1设备上第2分区为 boot, 将设为 ext4;
+%1设备上第3分区为 /,将设为 ext4;
+%1设备上第4分区为 backup, 将设为 ext4;
+%1设备上第5分区为 data, 将设为 ext4;
+%1设备上第6分区为 swap, 将设为 swap;
+</source>
+        <translation type="vanished">EFI partition #1 of %1 as vfat
+boot partition #2 of  %1 as ext4
+/ partition #3 of  %1 as ext4
+backup partition #4 of  %1 as ext4
+data partition #5 of  %1 as ext4
+swap partition #6 of  %1 as swap</translation>
+    </message>
+    <message>
+        <source>Disk must be greater than 50G or No disk selected.</source>
+        <translation type="vanished">Disk must be greater than 50G or No disk selected.</translation>
+    </message>
+    <message>
+        <source>Quick Install</source>
+        <translation type="vanished">Quick Install</translation>
+    </message>
+    <message>
+        <source>Formatted the whole disk.</source>
+        <translation type="vanished">Formatted the whole disk.</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为 EFI, 将设为 vfat;
+%1设备上第2分区为 boot, 将设为 ext4;
+%1设备上第3分区为 /, 将设为 ext4;
+%1设备上第4分区为 backup, 将设为 ext4;
+%1设备上第5分区为 data, 将设为 ext4;
+%1设备上第6分区为 swap, 将设为 swap;
+</source>
+        <translation type="vanished">EFI partition #1 of %1 as vfat
+boot partition #2 of  %1 as ext4
+/ partition #3 of  %1 as ext4
+backup partition #4 of  %1 as ext4
+data partition #5 of  %1 as ext4
+swap partition #6 of  %1 as swap</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为 boot, 将设为 ext4;
+%1设备上第2分区为 extend;
+%1设备上第5分区为 /, 将设为;ext4;
+%1设备上第6分区为 backup, 将设为;ext4;
+%1设备上第7分区为 data, 将设为;ext4;
+%1设备上第8分区为 swap, 将设为;swap;
+</source>
+        <translation type="vanished">boot partition #1 of %1 as vfat;
+extend partition #2 of  %1 ;
+/ partition #5 of  %1 as ext4;
+backup partition #6 of  %1 as ext4;
+data partition #7 of  %1 as ext4;
+swap partition #8 of  %1 as swap;</translation>
+    </message>
+    <message>
+        <source>Confirm custom installation</source>
+        <translatorcomment>Confirm custom installation</translatorcomment>
+        <translation type="vanished">Confirm custom installation</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="336"/>
+        <source>Coexist Install</source>
+        <translation>Coexist Install</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="364"/>
+        <source>Confirm Custom Installation</source>
+        <translation>Confirm Custom Installation</translation>
+    </message>
+    <message>
+        <source>Formatted the above partitions.</source>
+        <translation type="vanished">Formatted the above partitions.</translation>
+    </message>
+    <message>
+        <source>Confirm the above operations.</source>
+        <translation type="obsolete">Confirm the above operations.</translation>
+    </message>
+    <message>
+        <source>Bootloader method inconsistent with the disk partition table type.</source>
+        <translation type="vanished">Bootloader method inconsistent with the disk partition table type.</translation>
+    </message>
+    <message>
+        <source>BootLoader method inconsistent with the disk partition table type.</source>
+        <translation type="vanished">BootLoader method inconsistent with the disk partition table type.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="293"/>
+        <source>Disk must be greater than 50G or No disk selected</source>
+        <translation>Disk must be greater than 50G or No disk selected</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="315"/>
+        <source>Formatted the whole disk</source>
+        <translation>Formatted the whole disk</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="317"/>
+        <source>%1 设备上第1分区为 EFI, 将设为 vfat;
+%1 设备上第2分区为 boot, 将设为 ext4;
+%1 设备上第3分区为 /, 将设为 ext4;
+%1 设备上第4分区为 backup, 将设为 ext4;
+%1 设备上第5分区为 data, 将设为 ext4;
+%1 设备上第6分区为 swap, 将设为 swap;
+</source>
+        <translation>EFI partition #1 of %1 as vfat;
+boot partition #2 of  %1 as ext4;
+/ partition #3 of  %1 as ext4;
+backup partition #4 of  %1 as ext4;
+data partition #5 of  %1 as ext4;
+swap partition #6 of  %1 as swap;</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="324"/>
+        <source>%1 设备上第1分区为 boot, 将设为 ext4;
+%1 设备上第2分区为 extend;
+%1 设备上第5分区为 /, 将设为 ext4;
+%1 设备上第6分区为 backup, 将设为 ext4;
+%1 设备上第7分区为 data, 将设为 ext4;
+%1 设备上第8分区为 swap, 将设为 swap;
+</source>
+        <translation>boot partition #1 of %1 as vfat;
+extend partition #2 of  %1 ;
+/ partition #5 of  %1 as ext4;
+backup partition #6 of  %1 as ext4;
+data partition #7 of  %1 as ext4;
+swap partition #8 of  %1 as swap;</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="372"/>
+        <source>Confirm the above operations</source>
+        <translation>Confirm the above operations</translation>
+    </message>
+    <message>
+        <source>BootLoader method %1 inconsistent with the disk partition table type %2.</source>
+        <translation type="vanished">BootLoader method %1 inconsistent with the disk partition table type %2.</translation>
+    </message>
+    <message>
+        <source>BootLoader method %1 inconsistent with the disk partition table type %2, cannot have efi partition.</source>
+        <translation type="vanished">BootLoader method %1 inconsistent with the disk partition table type %2, cannot have efi partition.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="421"/>
+        <source>InvalidId
+</source>
+        <translation>InvalidId
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="424"/>
+        <source>Boot filesystem invalid
+</source>
+        <translation>Boot filesystem invalid
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="451"/>
+        <source>Root partition size is greater than 15GiB,
+but Huawei machines require greater than 25GiB.
+</source>
+        <translation>Root partition size is greater than 15GiB,
+but Huawei machines require greater than 25GiB.</translation>
+    </message>
+    <message>
+        <source>Boot partition number invalid
+</source>
+        <translation type="vanished">Boot partition number invalid
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="430"/>
+        <source>Boot partition too small
+</source>
+        <translation>Boot partition too small
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="427"/>
+        <source>Boot partition not in the first partition
+</source>
+        <translation>Boot partition not in the first partition
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="314"/>
+        <source>Confirm Full Installation</source>
+        <translation>Confirm Full Installation</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="392"/>
+        <source>BootLoader method %1 inconsistent with the disk partition table 
+type %2.</source>
+        <translation>BootLoader method %1 inconsistent with the disk partition table 
+type %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="395"/>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="400"/>
+        <source>BootLoader method %1 inconsistent with the disk partition table 
+type %2, cannot have efi partition.</source>
+        <translation>BootLoader method %1 inconsistent with the disk partition table 
+type %2, cannot have efi partition.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="433"/>
+        <source>No boot partition
+</source>
+        <translation>No boot partition
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="436"/>
+        <source>No Efi partition
+</source>
+        <translation>No Efi partition
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="439"/>
+        <source>Efi partition too small
+</source>
+        <translation>Efi partition too small
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="442"/>
+        <source>Only one EFI partition is allowed
+</source>
+        <translation>Only one EFI partition is allowed
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="445"/>
+        <source>Efi partition number invalid
+</source>
+        <translation>Efi partition number invalid
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="448"/>
+        <source>No root partition
+</source>
+        <translation>No root partition
+</translation>
+    </message>
+    <message>
+        <source>The root partition size is greater than 15G 
+except for Huawei 990 series which requires 25G 
+</source>
+        <translation type="vanished">The root partition size is greater than 15G 
+except for Huawei 990 series which requires 25G 
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="464"/>
+        <source>No backup partition
+</source>
+        <translation>No backup partition
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="473"/>
+        <source>This machine not support EFI partition
+</source>
+        <translation>This machine not support EFI partition
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="510"/>
+        <source>Full install</source>
+        <translation>Full install</translation>
+    </message>
+    <message>
+        <source>Full installation</source>
+        <translation type="vanished">Full installation</translation>
+    </message>
+    <message>
+        <source>Custom installation</source>
+        <translation type="vanished">Custom installation</translation>
+    </message>
+    <message>
+        <source>Root partition too small
+</source>
+        <translation type="vanished">Root partition too small
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="455"/>
+        <source>Partition too small
+</source>
+        <translation>Partition too small</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="458"/>
+        <source>BackUp partition too small
+</source>
+        <translation>BackUp partition too small
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="461"/>
+        <source>Repeated mountpoint
+</source>
+        <translation>Repeated mountpoint
+</translation>
+    </message>
+    <message>
+        <source>No data or backup partition
+</source>
+        <translation type="vanished">No data or backup partition
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="476"/>
+        <source>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition, other partition not proposed</source>
+        <translation>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition, other partition not proposed.</translation>
+    </message>
+    <message>
+        <source>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition ,please choose other filesystem</source>
+        <translation type="obsolete">The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition ,please choose other filesystem</translation>
+    </message>
+    <message>
+        <source>BootFileSystemInvalid
+</source>
+        <translation type="vanished">BootFileSystemInvalid
+</translation>
+    </message>
+    <message>
+        <source>BootPartitionNumberInvalid
+</source>
+        <translation type="vanished">BootPartitionNumberInvalid
+</translation>
+    </message>
+    <message>
+        <source>BootPartitionTooSmall
+</source>
+        <translation type="vanished">BootPartitionTooSmall
+</translation>
+    </message>
+    <message>
+        <source>EfiPartitionMissing
+</source>
+        <translation type="vanished">EfiPartitionMissing
+</translation>
+    </message>
+    <message>
+        <source>EfiPartitionTooSmall
+</source>
+        <translation type="vanished">EfiPartitionTooSmall
+</translation>
+    </message>
+    <message>
+        <source>Too many EFI partition
+</source>
+        <translation type="vanished">Too many EFI partition
+</translation>
+    </message>
+    <message>
+        <source>EfiPartitionNumberInvalid
+</source>
+        <translation type="vanished">EfiPartitionNumberInvalid
+</translation>
+    </message>
+    <message>
+        <source>RootPartitionMissing
+</source>
+        <translation type="vanished">RootPartitionMissing
+</translation>
+    </message>
+    <message>
+        <source>RootPartitionTooSmall
+</source>
+        <translation type="vanished">RootPartitionTooSmall
+</translation>
+    </message>
+    <message>
+        <source>Mips format Boot partition to Ext3
+</source>
+        <translation type="vanished">Mips format Boot partition to Ext3
+</translation>
+    </message>
+    <message>
+        <source>This Mips machine not support EFI partition
+</source>
+        <translation type="vanished">This Mips machine not support EFI partition
+</translation>
+    </message>
+    <message>
+        <source>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition, other partition not allowed</source>
+        <translation type="vanished">The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition, other partition not allowed</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="509"/>
+        <source>Choose Installation Method</source>
+        <translation>Choose Installation Method</translation>
+    </message>
+    <message>
+        <source>Custom Install</source>
+        <translation type="vanished">Custom Install</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="513"/>
+        <source>Next</source>
+        <translation>Next</translation>
+    </message>
+    <message>
+        <source>BootFsInvalid
+</source>
+        <translation type="vanished">BootFsInvalid
+</translation>
+    </message>
+    <message>
+        <source>BootPartNumberInvalid
+</source>
+        <translation type="vanished">BootPartNumberInvalid
+</translation>
+    </message>
+    <message>
+        <source>BootTooSmall
+</source>
+        <translation type="vanished">BootTooSmall
+</translation>
+    </message>
+    <message>
+        <source>EfiMissing
+</source>
+        <translation type="vanished">EfiMissing
+</translation>
+    </message>
+    <message>
+        <source>EfiTooSmall
+</source>
+        <translation type="vanished">EfiTooSmall
+</translation>
+    </message>
+    <message>
+        <source>EfiPartNumberInvalid
+</source>
+        <translation type="vanished">EfiPartNumberInvalid
+</translation>
+    </message>
+    <message>
+        <source>RootMissing
+</source>
+        <translation type="vanished">RootMissing
+</translation>
+    </message>
+    <message>
+        <source>RootTooSmall
+</source>
+        <translation type="vanished">RootTooSmall
+</translation>
+    </message>
+    <message>
+        <source>PartitionTooSmall
+</source>
+        <translation type="vanished">PartitionTooSmall
+</translation>
+    </message>
+    <message>
+        <source>BackUpPartitionTooSmall
+</source>
+        <translation type="vanished">BackUpPartitionTooSmall
+</translation>
+    </message>
+    <message>
+        <source>RepeatedMountPoint
+</source>
+        <translation type="vanished">RepeatedMountPoint
+</translation>
+    </message>
+    <message>
+        <source>NoDataOrBackupPartition
+</source>
+        <translation type="vanished">NoDataOrBackupPartition
+</translation>
+    </message>
+    <message>
+        <source>RootTooMany
+</source>
+        <translation type="vanished">RootTooMany
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 is %3 ,which will be set to %4</source>
+        <translatorcomment>#%1 partition on the device %2 is %3 ,which will be set to %4</translatorcomment>
+        <translation type="vanished">#%1 partition on the device %2 is %3 ,which will be set to %4</translation>
+    </message>
+    <message>
+        <source>The partition table of the following devices has changed:</source>
+        <translatorcomment>The partition table of the following devices has changed:</translatorcomment>
+        <translation type="vanished">The partition table of the following devices has changed:</translation>
+    </message>
+    <message>
+        <source>If you continue, the changes listed below will be written to disk. Alternatively, you can make other modifications manually.    
+Warning: Data on any partitions that have been deleted and will be formatted will be destroyed.
+</source>
+        <translatorcomment>If you continue, the changes listed below will be written to disk. Alternatively, you can make other modifications manually.    
+Warning: Data on any partitions that have been deleted and will be formatted will be destroyed.
+</translatorcomment>
+        <translation type="vanished">If you continue, the changes listed below will be written to disk. Alternatively, you can make other modifications manually.    
+Warning: Data on any partitions that have been deleted and will be formatted will be destroyed.
+</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>next</translatorcomment>
+        <translation type="vanished">next</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::MessageBox</name>
+    <message>
+        <source>Close</source>
+        <translation type="vanished">Close</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="vanished">Cancel</translation>
+    </message>
+    <message>
+        <source>OK</source>
+        <translation type="vanished">OK</translation>
+    </message>
+    <message>
+        <source>close</source>
+        <translation type="vanished">close</translation>
+    </message>
+    <message>
+        <source>the installer is about to exit and the computer will be shut down.</source>
+        <translation type="vanished">Exit installation progress, shut down the computer.</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::MiddleFrameManager</name>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/middleframemanager.cpp" line="49"/>
+        <source>next</source>
+        <translatorcomment>next</translatorcomment>
+        <translation>next</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::ModifyPartitionFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="45"/>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="187"/>
+        <source>unused</source>
+        <translation>unused</translation>
+    </message>
+    <message>
+        <source>format this partition</source>
+        <translation type="vanished">format this partition</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="173"/>
+        <source>Format partition.</source>
+        <translation>Format partition.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="174"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="176"/>
+        <source>Used to:</source>
+        <translation>Used to:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="177"/>
+        <source>Modify Partition</source>
+        <translation>Modify Partition</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="288"/>
+        <source>Mount point starts with &apos;/&apos;</source>
+        <translation>Mount point starts with &apos;/&apos;</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="342"/>
+        <source>close</source>
+        <translation>close</translation>
+    </message>
+    <message>
+        <source>Modify partition</source>
+        <translation type="vanished">Modify partition</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the root partition size is at least 15G.
+*Please make sure the root partition is /dev/sda2 on FT1500A.</source>
+        <translation type="vanished">The root partition size must be greater than 15G.
+ the root partition must be /dev/sda2 on FT1500A.</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</source>
+        <translation type="vanished">*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="182"/>
+        <source>Mount point</source>
+        <translation>Mount point</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::PartitionDelegate</name>
+    <message>
+        <source>#%1 partition on the device %2 is %3 ,which will be set to %4</source>
+        <translatorcomment>#%1 partition on the device %2 is %3 ,which will be set to %4</translatorcomment>
+        <translation type="vanished">#%1 partition on the device %2 is %3 ,which will be set to %4</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::PartitionFrame</name>
+    <message>
+        <source>Prompt message display in quick installation</source>
+        <translation type="vanished">Prompt message display in quick installation</translation>
+    </message>
+    <message>
+        <source>Quick installation will format the entire hard drive!Please back up important data, and then select the system installation location.</source>
+        <translation type="vanished">Quick installation will format the entire hard drive!
+Format the hard drive will delete all the programs, documents, photos, music and any other files on the hard drive.</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::PrepareInstallFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/prepareinstallframe.cpp" line="115"/>
+        <source>Check it and click [Start Installation]</source>
+        <translatorcomment>Check it and click [Start Installation]</translatorcomment>
+        <translation>Check it and click [Start Installation]</translation>
+    </message>
+    <message>
+        <source>Please back up the data and confirm the follow-up operation</source>
+        <translation type="vanished">Please back up the data and confirm the follow-up operation</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/prepareinstallframe.cpp" line="154"/>
+        <source>Start Installation</source>
+        <translation>Start Installation</translation>
+    </message>
+    <message>
+        <source>The following partitions will be operated:</source>
+        <translation type="vanished">The following partitions will be operated:</translation>
+    </message>
+    <message>
+        <source>The following partitions are going to be formatted:</source>
+        <translatorcomment>The following partitions are going to be formatted:</translatorcomment>
+        <translation type="vanished">The following partitions are going to be formatted:</translation>
+    </message>
+    <message>
+        <source>The above partition will be formatted!</source>
+        <translation type="vanished">The above partition will be formatted</translation>
+    </message>
+    <message>
+        <source>Quick installation will format the entire hard drive!</source>
+        <translatorcomment>Quick installation will format the entire hard drive!</translatorcomment>
+        <translation type="vanished">Quick installation will format the entire hard drive!</translation>
+    </message>
+    <message>
+        <source>start install</source>
+        <translatorcomment>start install</translatorcomment>
+        <translation type="vanished">start install</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::TableWidgetView</name>
+    <message>
+        <source>Format Disk</source>
+        <translatorcomment>Format Disk</translatorcomment>
+        <translation type="vanished">Format Disk</translation>
+    </message>
+    <message>
+        <source>Create Partition table</source>
+        <translatorcomment>Create Partition table</translatorcomment>
+        <translation type="vanished">Create Partition table</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="277"/>
+        <source>yes</source>
+        <translation>yes</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="277"/>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="309"/>
+        <source>no</source>
+        <translation>no</translation>
+    </message>
+    <message>
+        <source>change</source>
+        <translatorcomment>change</translatorcomment>
+        <translation type="vanished">change </translation>
+    </message>
+    <message>
+        <source>delete</source>
+        <translatorcomment>delete</translatorcomment>
+        <translation type="vanished">delete </translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="150"/>
+        <source>Create partition table</source>
+        <translation>Create partition table</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="279"/>
+        <source>delete </source>
+        <translation>delete </translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="283"/>
+        <source>change </source>
+        <translation>change </translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="303"/>
+        <source>freespace</source>
+        <translation>freespace</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="311"/>
+        <source>add </source>
+        <translation>add </translation>
+    </message>
+    <message>
+        <source>add</source>
+        <translatorcomment>add</translatorcomment>
+        <translation type="vanished">add </translation>
+    </message>
+    <message>
+        <source>device</source>
+        <translatorcomment>device</translatorcomment>
+        <translation type="vanished">device</translation>
+    </message>
+    <message>
+        <source>type</source>
+        <translatorcomment>type</translatorcomment>
+        <translation type="vanished">type</translation>
+    </message>
+    <message>
+        <source>system</source>
+        <translatorcomment>system</translatorcomment>
+        <translation type="vanished">system</translation>
+    </message>
+    <message>
+        <source>Mount point</source>
+        <translation type="obsolete">Mount point</translation>
+    </message>
+    <message>
+        <source>size</source>
+        <translatorcomment>size</translatorcomment>
+        <translation type="vanished">size</translation>
+    </message>
+    <message>
+        <source>Mounted</source>
+        <translatorcomment>Mounted</translatorcomment>
+        <translation type="vanished">Mounted</translation>
+    </message>
+    <message>
+        <source>used</source>
+        <translatorcomment>used</translatorcomment>
+        <translation type="vanished">used</translation>
+    </message>
+    <message>
+        <source>Installed system</source>
+        <translation type="obsolete">Installed system</translation>
+    </message>
+    <message>
+        <source>format</source>
+        <translatorcomment>format</translatorcomment>
+        <translation type="vanished">format</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::TimeZoneFrame</name>
+    <message>
+        <source>Select system timezone</source>
+        <translatorcomment>Select system timezone</translatorcomment>
+        <translation type="vanished">Select system timezone</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>next</translatorcomment>
+        <translation type="vanished">next</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KTimeZone/timezoneframe.cpp" line="117"/>
+        <source>Select Timezone</source>
+        <translation>Select Timezone</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KTimeZone/timezoneframe.cpp" line="118"/>
+        <source>Next</source>
+        <translation>Next</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::UserFrame</name>
+    <message>
+        <source>password is empty!</source>
+        <translatorcomment>password is empty!</translatorcomment>
+        <translation type="vanished">password is empty!</translation>
+    </message>
+    <message>
+        <source>Only letters,numbers,underscore and hyphen are allowed.</source>
+        <translation type="vanished">Only letters,numbers,underscore and hyphen are allowed.</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed.</source>
+        <translation type="vanished">Your username only letters,numbers,underscore and hyphen are allowed.</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.</source>
+        <translation type="vanished">Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 64 bits in length.</source>
+        <translation type="vanished">Your username only letters,numbers,underscore and hyphen are allowed, no more than 64 bits in length.</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.
+Start with a lowercase letter</source>
+        <translation type="vanished">Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.
+Start with a lowercase letter</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="342"/>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.
+but start with a lowercase letter</source>
+        <translation>Your username start with a lowercase letter ,
+only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="352"/>
+        <source>Your hostname only letters,numbers,underscore and hyphen are allowed, no more than 64 bits in length.</source>
+        <translation>Your hostname only letters,numbers,underscore and hyphen are allowed, no more than 64 bits in length.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="371"/>
+        <source>Two password entries are inconsistent!</source>
+        <translatorcomment>Two password entries are inconsistent!</translatorcomment>
+        <translation>Two password entries are inconsistent!</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="417"/>
+        <source>Create User</source>
+        <translation>Create User</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="423"/>
+        <source>Automatic login on boot</source>
+        <translation>Automatic login on boot</translation>
+    </message>
+    <message>
+        <source>computer name</source>
+        <translation type="vanished">computer name</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="419"/>
+        <source>hostname</source>
+        <translation>hostname</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="421"/>
+        <source>enter the password again</source>
+        <translation>enter the password again</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="422"/>
+        <source>Next</source>
+        <translation>Next</translation>
+    </message>
+    <message>
+        <source>No password required for login</source>
+        <translation type="vanished">No password required for login</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="427"/>
+        <source>Detecte fingerprint device.
+ Fingerprint entry can be done through [biometric management tool].</source>
+        <translation>Detecte fingerprint device.
+ Fingerprint entry can be done through [biometric management tool].</translation>
+    </message>
+    <message>
+        <source>No password required for login.</source>
+        <translation type="vanished">No password required for login.</translation>
+    </message>
+    <message>
+        <source>Create user</source>
+        <translatorcomment>Create user</translatorcomment>
+        <translation type="vanished">Create user</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="418"/>
+        <source>username</source>
+        <translatorcomment>username</translatorcomment>
+        <translation>username</translation>
+    </message>
+    <message>
+        <source>Computer name</source>
+        <translatorcomment>Computer name</translatorcomment>
+        <translation type="vanished">Computer name</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="420"/>
+        <source>new password</source>
+        <translatorcomment>new password</translatorcomment>
+        <translation>new password</translation>
+    </message>
+    <message>
+        <source>Enter the password again</source>
+        <translatorcomment>Enter the password again</translatorcomment>
+        <translation type="vanished">Enter the password again</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translation type="vanished">next</translation>
+    </message>
+    <message>
+        <source>auto login</source>
+        <translatorcomment>auto login</translatorcomment>
+        <translation type="vanished">auto login</translation>
+    </message>
+    <message>
+        <source>Password required for login</source>
+        <translatorcomment>Password required for login</translatorcomment>
+        <translation type="vanished">Password required for login</translation>
+    </message>
+    <message>
+        <source>Password length cannot be less than 6 characters
+Password must have two different characters</source>
+        <translation type="vanished">Password length cannot be less than 6 characters
+Password must have two different characters</translation>
+    </message>
+</context>
+<context>
+    <name>KServer::EncryptSetFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="71"/>
+        <source>password:</source>
+        <translation>password:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="72"/>
+        <source>confirm password:</source>
+        <translation>confirm password:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="106"/>
+        <source>Please keep your password properly.If you forget it,
+you will not be able to access the disk data.</source>
+        <translation>Please keep your password properly.If you forget it,
+you will not be able to access the disk data.</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="183"/>
+        <source>Cancel</source>
+        <translation>Cancel</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="184"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="257"/>
+        <source>close</source>
+        <translation>close</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="294"/>
+        <source>Two password entries are inconsistent!</source>
+        <translation>Two password entries are inconsistent!</translation>
+    </message>
+</context>
+<context>
+    <name>KServer::MessageBox</name>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/messagebox.cpp" line="130"/>
+        <source>Cancel</source>
+        <translation>Cancel</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/messagebox.cpp" line="131"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/messagebox.cpp" line="203"/>
+        <source>close</source>
+        <translation>close</translation>
+    </message>
+</context>
+<context>
+    <name>KeyboardWidget</name>
+    <message>
+        <location filename="../src/plugins/VirtualKeyboard/src/keyboardwidget.ui" line="29"/>
+        <source>KeyboardWidget</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LevelScrollDiskView</name>
+    <message>
+        <source>Please choose custom way to install!</source>
+        <translation type="vanished">Please choose custom way to install!</translation>
+    </message>
+</context>
+<context>
+    <name>PartitionFrame</name>
+    <message>
+        <source>Prompt message display in quick installation</source>
+        <translatorcomment>Prompt message display in quick installation</translatorcomment>
+        <translation type="vanished">Prompt message display in quick installation</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Create extended partition %1</source>
+        <translatorcomment>Create extended partition</translatorcomment>
+        <translation type="vanished">Create extended partition %1</translation>
+    </message>
+    <message>
+        <source>Create new partition %1,%2</source>
+        <translatorcomment>Create new partition</translatorcomment>
+        <translation type="vanished">Create new partition %1,%2</translation>
+    </message>
+    <message>
+        <source>Create new partition %1,%2,%3</source>
+        <translatorcomment>Create new partition</translatorcomment>
+        <translation type="vanished">Create new partition %1,%2,%3</translation>
+    </message>
+    <message>
+        <source>Delete partition %1</source>
+        <translatorcomment>Delete partition</translatorcomment>
+        <translation type="vanished">Delete partition %1</translation>
+    </message>
+    <message>
+        <source>Format %1 partition, %2</source>
+        <translatorcomment>Format partition</translatorcomment>
+        <translation type="vanished">Format partition</translation>
+    </message>
+    <message>
+        <source>Format partition %1,%2,%3</source>
+        <translatorcomment>Format partition</translatorcomment>
+        <translation type="vanished">Format partition %1,%2,%3</translation>
+    </message>
+    <message>
+        <source>%1 partition mountPoint %2</source>
+        <translatorcomment>partition mountPoint</translatorcomment>
+        <translation type="vanished">partition mountPoint</translation>
+    </message>
+    <message>
+        <source>New Partition Table %1 %2</source>
+        <translatorcomment>New Partition Table</translatorcomment>
+        <translation type="vanished">New Partition Table %1 %2</translation>
+    </message>
+    <message>
+        <source>Reset size %1 partition</source>
+        <translatorcomment>Reset size partition</translatorcomment>
+        <translation type="vanished">Reset size partition</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed.</source>
+        <translation type="vanished">Your username only letters,numbers,underscore and hyphen are allowed.</translation>
+    </message>
+    <message>
+        <source>Two password entries are inconsistent!</source>
+        <translation type="vanished">Two password entries are inconsistent!</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="451"/>
+        <source>good</source>
+        <translatorcomment>good</translatorcomment>
+        <translation>good</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="454"/>
+        <source>Is empty</source>
+        <translatorcomment>Is empty</translatorcomment>
+        <translation>Is empty</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="457"/>
+        <source>The first character is wrong</source>
+        <translatorcomment>The first character is wrong</translatorcomment>
+        <translation>The first character is wrong</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="460"/>
+        <source>Invalid character error</source>
+        <translatorcomment>Invalid character error</translatorcomment>
+        <translation>Invalid character error</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="463"/>
+        <source>Too long</source>
+        <translatorcomment>Too long</translatorcomment>
+        <translation>Too long</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="466"/>
+        <source>Too short</source>
+        <translatorcomment>Too short</translatorcomment>
+        <translation>Too short</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="469"/>
+        <source>No number error</source>
+        <translatorcomment>No number error</translatorcomment>
+        <translation>No number error</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="472"/>
+        <source>No lowercase letter errors</source>
+        <translatorcomment>No lowercase letter errors</translatorcomment>
+        <translation>No lowercase letter errors</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="475"/>
+        <source>No capital letter errors</source>
+        <translatorcomment>No capital letter errors</translatorcomment>
+        <translation>No capital letter errors</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="478"/>
+        <source>No special character error</source>
+        <translatorcomment>No special character error</translatorcomment>
+        <translation>No special character error</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="481"/>
+        <source>Too weak</source>
+        <translatorcomment>Too weak</translatorcomment>
+        <translation>Too weak</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="9"/>
+        <source>wd</source>
+        <translation>wd</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="11"/>
+        <source>seagate</source>
+        <translation>seagate</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="13"/>
+        <source>hitachi</source>
+        <translation>hitachi</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="15"/>
+        <source>samsung</source>
+        <translation>samsung</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="17"/>
+        <source>toshiba</source>
+        <translation>toshiba</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="19"/>
+        <source>fujitsu</source>
+        <translation>fujitsu</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="21"/>
+        <source>maxtor</source>
+        <translation>maxtor</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="23"/>
+        <source>IBM</source>
+        <translation>IBM</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="25"/>
+        <source>excelStor</source>
+        <translation>excelStor</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="27"/>
+        <source>lenovo</source>
+        <translation>lenovo</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="29"/>
+        <source>other</source>
+        <translation>other</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="31"/>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="299"/>
+        <source>Unknown</source>
+        <translation>Unknown</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="80"/>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="310"/>
+        <source>Freespace</source>
+        <translation>Freespace</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="290"/>
+        <source>kylin data partition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="297"/>
+        <source>Swap partition</source>
+        <translation>Swap partition</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/main.cpp" line="94"/>
+        <source>Show debug informations</source>
+        <translation>Show debug informations</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="191"/>
+        <source>Extended partition %1 has 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="193"/>
+        <source>Create new partition %1,%2
+</source>
+        <translation type="unfinished">Create new partition %1,%2
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="196"/>
+        <source>Create new partition %1,%2,%3
+</source>
+        <translation type="unfinished">Create new partition %1,%2,%3
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="201"/>
+        <source>Delete partition %1
+</source>
+        <translation type="unfinished">Delete partition %1
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="205"/>
+        <source>Format %1 partition, %2
+</source>
+        <translation type="unfinished">Format partition {1 ?} {2
+?}</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="208"/>
+        <source>Format partition %1,%2,%3
+</source>
+        <translation type="unfinished">Format partition %1,%2,%3
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="213"/>
+        <source>%1 partition mountPoint %2
+</source>
+        <translation type="unfinished">partition mountPoint {1 ?} {2
+?}</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="217"/>
+        <source>New Partition Table %1
+</source>
+        <translation type="unfinished">New Partition Table %1
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="220"/>
+        <source>Reset size %1 partition
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="21"/>
+        <source>KCommand::m_cmdInstance is not init.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="58"/>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="90"/>
+        <source>WorkingPath is not found. 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="82"/>
+        <source>Shell file is empty, does not continue. 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>device</source>
+        <translation>device</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>type</source>
+        <translation>type</translation>
+    </message>
+    <message>
+        <source>Mounted</source>
+        <translation type="vanished">Mounted</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>size</source>
+        <translation>size</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>mounted</source>
+        <translation>mounted</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="148"/>
+        <source>used</source>
+        <translation>used</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="148"/>
+        <source>system</source>
+        <translation>system</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="148"/>
+        <source>format</source>
+        <translation>format</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="69"/>
+        <source>Memory allocation error when setting</source>
+        <translation>Memory allocation error when setting</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="73"/>
+        <source>Memory allocation error</source>
+        <translation>Memory allocation error</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="75"/>
+        <source>The password is the same as the old one</source>
+        <translation>The password is the same as the old one</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="77"/>
+        <source>The password is a palindrome</source>
+        <translation>The password is a palindrome</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="79"/>
+        <source>The password differs with case changes only</source>
+        <translation>The password differs with case changes only</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="81"/>
+        <source>The password is too similar to the old one</source>
+        <translation>The password is too similar to the old one</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="83"/>
+        <source>The password contains the user name in some form</source>
+        <translation>The password contains the user name in some form</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="85"/>
+        <source>The password contains words from the real name of the user in some form</source>
+        <translation>The password contains words from the real name of the user in some form</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="87"/>
+        <source>The password contains forbidden words in some form</source>
+        <translation>The password contains forbidden words in some form</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld digits</source>
+        <translation type="vanished">The password contains less than %ld digits</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="92"/>
+        <source>The password contains too few digits</source>
+        <translation>The password contains too few digits</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld uppercase letters</source>
+        <translation type="vanished">The password contains less than %ld uppercase letters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="97"/>
+        <source>The password contains too few uppercase letters</source>
+        <translation>The password contains too few uppercase letters</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld lowercase letters</source>
+        <translation type="vanished">The password contains less than %ld lowercase letters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="102"/>
+        <source>The password contains too few lowercase letters</source>
+        <translation>The password contains too few lowercase letters</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld non-alphanumeric characters</source>
+        <translation type="vanished">The password contains less than %ld non-alphanumeric characters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="107"/>
+        <source>The password contains too few non-alphanumeric characters</source>
+        <translation>The password contains too few non-alphanumeric characters</translation>
+    </message>
+    <message>
+        <source>The password is shorter than %ld characters</source>
+        <translation type="vanished">The password is shorter than %ld characters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="112"/>
+        <source>The password is too short</source>
+        <translation>The password is too short</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="114"/>
+        <source>The password is just rotated old one</source>
+        <translation>The password is just rotated old one</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld character classes</source>
+        <translation type="vanished">The password contains less than %ld character classes</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="119"/>
+        <source>The password does not contain enough character classes</source>
+        <translation>The password does not contain enough character classes</translation>
+    </message>
+    <message>
+        <source>The password contains more than %ld same characters consecutively</source>
+        <translation type="vanished">The password contains more than %ld same characters consecutively</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="124"/>
+        <source>The password contains too many same characters consecutively</source>
+        <translation>The password contains too many same characters consecutively</translation>
+    </message>
+    <message>
+        <source>The password contains more than %ld characters of the same class consecutively</source>
+        <translation type="vanished">The password contains more than %ld characters of the same class consecutively</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="129"/>
+        <source>The password contains too many characters of the same class consecutively</source>
+        <translation>The password contains too many characters of the same class consecutively</translation>
+    </message>
+    <message>
+        <source>The password contains monotonic sequence longer than %ld characters</source>
+        <translation type="vanished">The password contains monotonic sequence longer than %ld characters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="90"/>
+        <source>The password contains less than %1 digits</source>
+        <translation>The password contains less than %1 digits</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="95"/>
+        <source>The password contains less than %1 uppercase letters</source>
+        <translation>The password contains less than %1 uppercase letters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="100"/>
+        <source>The password contains less than %1 lowercase letters</source>
+        <translation>The password contains less than %1 lowercase letters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="105"/>
+        <source>The password contains less than %1 non-alphanumeric characters</source>
+        <translation>The password contains less than %1 non-alphanumeric characters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="110"/>
+        <source>The password is shorter than %1 characters</source>
+        <translation>The password is shorter than %1 characters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="117"/>
+        <source>The password contains less than %1 character classes</source>
+        <translation>The password contains less than %1 character classes</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="122"/>
+        <source>The password contains more than %1 same characters consecutively</source>
+        <translation>The password contains more than %1 same characters consecutively</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="127"/>
+        <source>The password contains more than %1 characters of the same class consecutively</source>
+        <translation>The password contains more than %1 characters of the same class consecutively</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="132"/>
+        <source>The password contains monotonic sequence longer than %1 characters</source>
+        <translation>The password contains monotonic sequence longer than %1 characters</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="134"/>
+        <source>The password contains too long of a monotonic character sequence</source>
+        <translation>The password contains too long of a monotonic character sequence</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="136"/>
+        <source>No password supplied</source>
+        <translation>No password supplied</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="138"/>
+        <source>Cannot obtain random numbers from the RNG device</source>
+        <translation>Cannot obtain random numbers from the RNG device</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="140"/>
+        <source>Password generation failed - required entropy too low for settings</source>
+        <translation>Password generation failed - required entropy too low for settings</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="143"/>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="145"/>
+        <source>The password fails the dictionary check</source>
+        <translation>The password fails the dictionary check</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="149"/>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="151"/>
+        <source>Unknown setting</source>
+        <translation>Unknown setting</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="155"/>
+        <source>Bad integer value of setting</source>
+        <translation>Bad integer value of setting</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="157"/>
+        <source>Bad integer value</source>
+        <translation>Bad integer value</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="161"/>
+        <source>Setting %s is not of integer type</source>
+        <translation>Setting %s is not of integer type</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="163"/>
+        <source>Setting is not of integer type</source>
+        <translation>Setting is not of integer type</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="167"/>
+        <source>Setting %s is not of string type</source>
+        <translation>Setting %s is not of string type</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="169"/>
+        <source>Setting is not of string type</source>
+        <translation>Setting is not of string type</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="171"/>
+        <source>Opening the configuration file failed</source>
+        <translation>Opening the configuration file failed</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="173"/>
+        <source>The configuration file is malformed</source>
+        <translation>The configuration file is malformed</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="175"/>
+        <source>Fatal failure</source>
+        <translation>Fatal failure</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="177"/>
+        <source>Unknown error</source>
+        <translation>Unknown error</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="358"/>
+        <source>unused</source>
+        <translation>unused</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="360"/>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="189"/>
+        <source>kylin-data</source>
+        <translation>kylin-data</translation>
+    </message>
+</context>
+</TS>

二进制
kylin-os-installer-1.0.9/language/qt_zh_CN.qm


+ 7967 - 0
kylin-os-installer-1.0.9/language/qt_zh_CN.ts

@@ -0,0 +1,7967 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh">
+<context>
+    <name>MAC_APPLICATION_MENU</name>
+    <message>
+        <location filename="../src/gui/kernel/qapplication.cpp" line="+2316"/>
+        <source>Services</source>
+        <translation>服务</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Hide %1</source>
+        <translation>隐藏%1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Hide Others</source>
+        <translation>隐藏其他</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Show All</source>
+        <translation>全部显示</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Preferences...</source>
+        <translation>偏好设置…</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Quit %1</source>
+        <translation>退出 %1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>About %1</source>
+        <translation>关于 %1</translation>
+    </message>
+</context>
+<context>
+    <name>AudioOutput</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
+        <source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
+        <translation>&lt;html&gt;音频回放设备 &lt;b&gt;%1&lt;/b&gt; 没有工作。&lt;br/&gt;回滚到 &lt;b&gt;%2&lt;/b&gt;。&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
+        <translation>&lt;html&gt;切换到音频回放设备 &lt;b&gt;%1&lt;/b&gt;,&lt;br/&gt;它刚刚变为可用并且具有更高的优先级。&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Revert back to device &apos;%1&apos;</source>
+        <translation>恢复到设备“%1”</translation>
+    </message>
+</context>
+<context>
+    <name>CloseButton</name>
+    <message>
+        <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
+        <source>Close Tab</source>
+        <translation>关闭标签页</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+55"/>
+        <source>Notifications</source>
+        <translation>通知</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Music</source>
+        <translation>音乐</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Video</source>
+        <translation>视频</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Communication</source>
+        <translation>通讯</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Games</source>
+        <translation>游戏</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Accessibility</source>
+        <translation>无障碍环境</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::Gstreamer::Backend</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+171"/>
+        <source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
+          Some video features have been disabled.</source>
+        <translation>警告:看起来,您没有安装 gstreamer0.10-plugins-good 包。
+    一些视频特性已经被关闭。</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Warning: You do not seem to have the base GStreamer plugins installed.
+          All audio and video support has been disabled</source>
+        <translation>警告:看起来,您没有安装基础的 GStreamer 插件。
+    所有的音频和视频支持都已经被关闭。</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::Gstreamer::MediaObject</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
+        <source>Cannot start playback. 
+
+Check your Gstreamer installation and make sure you 
+have libgstreamer-plugins-base installed.</source>
+        <translation>不能开始回放。
+
+请检查您的 Gstreamer 安装并且确认您
+已经安装 libgstreamer-plugins-base。</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
+        <translation>缺少一个需要的解码器。您需要安装如下解码器来播放这个内容:%0</translation>
+    </message>
+    <message>
+        <location line="+676"/>
+        <location line="+8"/>
+        <location line="+15"/>
+        <location line="+9"/>
+        <location line="+6"/>
+        <location line="+19"/>
+        <location line="+335"/>
+        <location line="+24"/>
+        <source>Could not open media source.</source>
+        <translation>不能打开媒体源。</translation>
+    </message>
+    <message>
+        <location line="-403"/>
+        <source>Invalid source type.</source>
+        <translation>无效的源类型。</translation>
+    </message>
+    <message>
+        <location line="+377"/>
+        <source>Could not locate media source.</source>
+        <translation>不能定位媒体源。</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Could not open audio device. The device is already in use.</source>
+        <translation>不能打开音频设备。这个设备正在被使用。</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Could not decode media source.</source>
+        <translation>不能解码媒体源。</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::VolumeSlider</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
+        <location line="+18"/>
+        <source>Volume: %1%</source>
+        <translation>音量:%1%</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <location line="+18"/>
+        <location line="+54"/>
+        <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source>
+        <translation>请使用这个滑块调节音量。最左为%0,最右为%1%</translation>
+    </message>
+</context>
+<context>
+    <name>Q3Accel</name>
+    <message>
+        <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
+        <source>%1, %2 not defined</source>
+        <translation>%1,%2未定义</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Ambiguous %1 not handled</source>
+        <translation>不明确的%1没有被处理</translation>
+    </message>
+</context>
+<context>
+    <name>Q3DataTable</name>
+    <message>
+        <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
+        <source>True</source>
+        <translation>真</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>False</source>
+        <translation>假</translation>
+    </message>
+    <message>
+        <location line="+505"/>
+        <source>Insert</source>
+        <translation>插入</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Update</source>
+        <translation>更新</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+</context>
+<context>
+    <name>Q3FileDialog</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
+        <source>Copy or Move a File</source>
+        <translation>复制或者移动一个文件</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Read: %1</source>
+        <translation>读取:%1</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+30"/>
+        <source>Write: %1</source>
+        <translation>写入:%1</translation>
+    </message>
+    <message>
+        <location line="-22"/>
+        <location line="+1575"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location line="-157"/>
+        <location line="+49"/>
+        <location line="+2153"/>
+        <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
+        <source>All Files (*)</source>
+        <translation>所有文件 (*)</translation>
+    </message>
+    <message>
+        <location line="-2089"/>
+        <source>Name</source>
+        <translation>名称</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Size</source>
+        <translation>大小</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Type</source>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Date</source>
+        <translation>日期</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Attributes</source>
+        <translation>属性</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <location line="+2031"/>
+        <source>&amp;OK</source>
+        <translation>确定(&amp;O)</translation>
+    </message>
+    <message>
+        <location line="-1991"/>
+        <source>Look &amp;in:</source>
+        <translation>查找范围(&amp;I):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <location line="+1981"/>
+        <location line="+16"/>
+        <source>File &amp;name:</source>
+        <translation>文件名称(&amp;N):</translation>
+    </message>
+    <message>
+        <location line="-1996"/>
+        <source>File &amp;type:</source>
+        <translation>文件类型(&amp;T):</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Back</source>
+        <translation>后退</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>One directory up</source>
+        <translation>向上一级</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Create New Folder</source>
+        <translation>创建新文件夹</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>List View</source>
+        <translation>列表视图</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Detail View</source>
+        <translation>详细视图</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Preview File Info</source>
+        <translation>预览文件信息</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Preview File Contents</source>
+        <translation>预览文件内容</translation>
+    </message>
+    <message>
+        <location line="+88"/>
+        <source>Read-write</source>
+        <translation>读写</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Read-only</source>
+        <translation>只读</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write-only</source>
+        <translation>只写</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Inaccessible</source>
+        <translation>不可访问的</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Symlink to File</source>
+        <translation>文件的系统链接</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Symlink to Directory</source>
+        <translation>目录的系统链接</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Symlink to Special</source>
+        <translation>特殊的系统链接</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>File</source>
+        <translation>文件</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dir</source>
+        <translation>目录</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Special</source>
+        <translation>特殊</translation>
+    </message>
+    <message>
+        <location line="+704"/>
+        <location line="+2100"/>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location line="-1990"/>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+84"/>
+        <source>Save As</source>
+        <translation>另存为</translation>
+    </message>
+    <message>
+        <location line="+642"/>
+        <location line="+5"/>
+        <location line="+355"/>
+        <source>&amp;Open</source>
+        <translation>打开(&amp;O)</translation>
+    </message>
+    <message>
+        <location line="-357"/>
+        <location line="+341"/>
+        <source>&amp;Save</source>
+        <translation>保存(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="-334"/>
+        <source>&amp;Rename</source>
+        <translation>重命名(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Delete</source>
+        <translation>删除(&amp;D)</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>R&amp;eload</source>
+        <translation>重新载入(&amp;E)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Sort by &amp;Name</source>
+        <translation>按名称排列(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Sort by &amp;Size</source>
+        <translation>按大小排列(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Sort by &amp;Date</source>
+        <translation>按日期排列(&amp;D)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Unsorted</source>
+        <translation>未排列的(&amp;U)</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Sort</source>
+        <translation>排列</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Show &amp;hidden files</source>
+        <translation>显示隐藏文件(&amp;H)</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>the file</source>
+        <translation>文件</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>the directory</source>
+        <translation>目录</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>the symlink</source>
+        <translation>系统链接</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Delete %1</source>
+        <translation>删除%1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;qt&gt;Are you sure you wish to delete %1 &quot;%2&quot;?&lt;/qt&gt;</source>
+        <translation>&lt;qt&gt;你确认你想删除%1,“%2”?&lt;/qt&gt;</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Yes</source>
+        <translation>是(&amp;Y)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;No</source>
+        <translation>否(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>New Folder 1</source>
+        <translation>新建文件夹1</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>New Folder</source>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>New Folder %1</source>
+        <translation>新建文件夹%1</translation>
+    </message>
+    <message>
+        <location line="+98"/>
+        <source>Find Directory</source>
+        <translation>查找目录</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <location line="+108"/>
+        <source>Directories</source>
+        <translation>目录</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Directory:</source>
+        <translation>目录:</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <location line="+1110"/>
+        <source>Error</source>
+        <translation>错误</translation>
+    </message>
+    <message>
+        <location line="-1109"/>
+        <source>%1
+File not found.
+Check path and filename.</source>
+        <translation>文件%1
+未找到。
+请检查路径和文件名。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-289"/>
+        <source>All Files (*.*)</source>
+        <translation>所有文件 (*.*)</translation>
+    </message>
+    <message>
+        <location line="+375"/>
+        <source>Open </source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location line="+155"/>
+        <source>Select a Directory</source>
+        <translation>选择一个目录</translation>
+    </message>
+</context>
+<context>
+    <name>Q3LocalFs</name>
+    <message>
+        <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
+        <location line="+10"/>
+        <source>Could not read directory
+%1</source>
+        <translation>不能读取目录
+%1</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Could not create directory
+%1</source>
+        <translation>不能创建目录
+%1</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <source>Could not remove file or directory
+%1</source>
+        <translation>不能移除文件或者目录
+%1</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Could not rename
+%1
+to
+%2</source>
+        <translation>不能把
+%1
+重命名为
+%2</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Could not open
+%1</source>
+        <translation>不能打开
+%1</translation>
+    </message>
+    <message>
+        <location line="+68"/>
+        <source>Could not write
+%1</source>
+        <translation>不能写入
+%1</translation>
+    </message>
+</context>
+<context>
+    <name>Q3MainWindow</name>
+    <message>
+        <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
+        <source>Line up</source>
+        <translation>排列</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Customize...</source>
+        <translation>自定义...</translation>
+    </message>
+</context>
+<context>
+    <name>Q3NetworkProtocol</name>
+    <message>
+        <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
+        <source>Operation stopped by the user</source>
+        <translation>操作被用户停止</translation>
+    </message>
+</context>
+<context>
+    <name>Q3ProgressDialog</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
+        <location line="+61"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>Q3TabDialog</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
+        <location line="+814"/>
+        <source>OK</source>
+        <translation>确认</translation>
+    </message>
+    <message>
+        <location line="-356"/>
+        <source>Apply</source>
+        <translation>应用</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Help</source>
+        <translation>帮助</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Defaults</source>
+        <translation>默认</translation>
+    </message>
+    <message>
+        <location line="+50"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>Q3TextEdit</name>
+    <message>
+        <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
+        <source>&amp;Undo</source>
+        <translation>撤消(&amp;U)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Redo</source>
+        <translation>恢复(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Cu&amp;t</source>
+        <translation>剪切(&amp;T)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Copy</source>
+        <translation>复制(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Paste</source>
+        <translation>粘贴(&amp;P)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Clear</source>
+        <translation>清空</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+2"/>
+        <source>Select All</source>
+        <translation>选择全部</translation>
+    </message>
+</context>
+<context>
+    <name>Q3TitleBar</name>
+    <message>
+        <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
+        <source>System</source>
+        <translation>系统</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Restore up</source>
+        <translation>向上恢复</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Minimize</source>
+        <translation>最小化</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Restore down</source>
+        <translation>向下恢复</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Maximize</source>
+        <translation>最大化</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Contains commands to manipulate the window</source>
+        <translation>包含操作窗口的命令。</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Puts a minimized back to normal</source>
+        <translation>把一个最小化窗口恢复为普通状态</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Moves the window out of the way</source>
+        <translation>把窗口移到外面</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Puts a maximized window back to normal</source>
+        <translation>把一个最大化窗口恢复为普通状态</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Makes the window full screen</source>
+        <translation>窗口全屏化</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Closes the window</source>
+        <translation>关闭窗口</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Displays the name of the window and contains controls to manipulate it</source>
+        <translation>显示窗口名称并且包含维护它的控件</translation>
+    </message>
+</context>
+<context>
+    <name>Q3ToolBar</name>
+    <message>
+        <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
+        <source>More...</source>
+        <translation>更多...</translation>
+    </message>
+</context>
+<context>
+    <name>Q3UrlOperator</name>
+    <message>
+        <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
+        <location line="+260"/>
+        <location line="+4"/>
+        <source>The protocol `%1&apos; is not supported</source>
+        <translation>协议“%1”不被支持</translation>
+    </message>
+    <message>
+        <location line="-260"/>
+        <source>The protocol `%1&apos; does not support listing directories</source>
+        <translation>协议“%1”不支持列出目录</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The protocol `%1&apos; does not support creating new directories</source>
+        <translation>协议“%1”不支持创建新目录</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The protocol `%1&apos; does not support removing files or directories</source>
+        <translation>协议“%1”不支持移除文件或者目录</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The protocol `%1&apos; does not support renaming files or directories</source>
+        <translation>协议“%1”不支持重命名文件或者目录</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The protocol `%1&apos; does not support getting files</source>
+        <translation>协议“%1”不支持获取文件</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The protocol `%1&apos; does not support putting files</source>
+        <translation>协议“%1”不支持上传文件</translation>
+    </message>
+    <message>
+        <location line="+243"/>
+        <location line="+4"/>
+        <source>The protocol `%1&apos; does not support copying or moving files or directories</source>
+        <translation>协议“%1”不支持复制或者移动文件或者目录</translation>
+    </message>
+    <message>
+        <location line="+237"/>
+        <location line="+1"/>
+        <source>(unknown)</source>
+        <translation>(未知的)</translation>
+    </message>
+</context>
+<context>
+    <name>Q3Wizard</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
+        <source>&amp;Cancel</source>
+        <translation>取消(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt; &amp;Back</source>
+        <translation>&lt; 上一步(&amp;B)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Next &gt;</source>
+        <translation>下一步(&amp;N) &gt;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Finish</source>
+        <translation>完成(&amp;F)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Help</source>
+        <translation>帮助(&amp;H)</translation>
+    </message>
+</context>
+<context>
+    <name>QAbstractSocket</name>
+    <message>
+        <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+        <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
+        <location line="+26"/>
+        <source>Host not found</source>
+        <translation>主机未找到</translation>
+    </message>
+    <message>
+        <location line="+50"/>
+        <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+3"/>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+4"/>
+        <source>Connection refused</source>
+        <translation>连接被拒绝</translation>
+    </message>
+    <message>
+        <location line="+141"/>
+        <source>Connection timed out</source>
+        <translation>连接超时</translation>
+    </message>
+    <message>
+        <location line="-547"/>
+        <location line="+787"/>
+        <location line="+208"/>
+        <source>Operation on socket is not supported</source>
+        <translation>Socket操作不被支持</translation>
+    </message>
+    <message>
+        <location line="+137"/>
+        <source>Socket operation timed out</source>
+        <translation>套接字操作超时</translation>
+    </message>
+    <message>
+        <location line="+380"/>
+        <source>Socket is not connected</source>
+        <translation>套接字没有被连接</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
+        <source>Network unreachable</source>
+        <translation>网络不能访问</translation>
+    </message>
+</context>
+<context>
+    <name>QAbstractSpinBox</name>
+    <message>
+        <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
+        <source>&amp;Step up</source>
+        <translation>增加(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Step &amp;down</source>
+        <translation>减少(&amp;D)</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>&amp;Select All</source>
+        <translation>选择全部(&amp;S)</translation>
+    </message>
+</context>
+<context>
+    <name>QApplication</name>
+    <message>
+        <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
+        <source>Activate</source>
+        <translation>激活</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
+        <source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
+        <translation>执行“%1”需要Qt %2,只找到了Qt %3。</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Incompatible Qt Library Error</source>
+        <translation>不兼容的Qt错误</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+2"/>
+        <source>Activates the program&apos;s main window</source>
+        <translation>激活这个程序的主窗口</translation>
+    </message>
+</context>
+<context>
+    <name>QAxSelect</name>
+    <message>
+        <location filename="../src/activeqt/container/qaxselect.ui"/>
+        <source>Select ActiveX Control</source>
+        <translation>选择ActiveX控件</translation>
+    </message>
+    <message>
+        <location/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Cancel</source>
+        <translation>取消(&amp;C)</translation>
+    </message>
+    <message>
+        <location/>
+        <source>COM &amp;Object:</source>
+        <translation>COM对象(&amp;O):</translation>
+    </message>
+</context>
+<context>
+    <name>QCheckBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
+        <source>Uncheck</source>
+        <translation>取消选中</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Check</source>
+        <translation>选中</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Toggle</source>
+        <translation>切换</translation>
+    </message>
+</context>
+<context>
+    <name>QColorDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
+        <source>Hu&amp;e:</source>
+        <translation>色调(&amp;E):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Sat:</source>
+        <translation>饱和度(&amp;S):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Val:</source>
+        <translation>亮度(&amp;V):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Red:</source>
+        <translation>红色(&amp;R):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Green:</source>
+        <translation>绿色(&amp;G):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Bl&amp;ue:</source>
+        <translation>蓝色(&amp;U):</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A&amp;lpha channel:</source>
+        <translation>Alpha通道(&amp;A):</translation>
+    </message>
+    <message>
+        <location line="+101"/>
+        <source>Select Color</source>
+        <translation>选择颜色</translation>
+    </message>
+    <message>
+        <location line="+137"/>
+        <source>&amp;Basic colors</source>
+        <translation>基本颜色(&amp;B)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Custom colors</source>
+        <translation>自定义颜色(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Add to Custom Colors</source>
+        <translation>添加到自定义颜色(&amp;A)</translation>
+    </message>
+    <message>
+        <source>Select color</source>
+        <translation type="obsolete">选择颜色</translation>
+    </message>
+</context>
+<context>
+    <name>QComboBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+        <location line="+65"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
+        <source>False</source>
+        <translation>假</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>True</source>
+        <translation>真</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+0"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>QCoreApplication</name>
+    <message>
+        <source>%1: permission denied</source>
+        <comment>QSystemSemaphore</comment>
+        <translation type="obsolete">%1:权限被拒绝</translation>
+    </message>
+    <message>
+        <source>%1: already exists</source>
+        <comment>QSystemSemaphore</comment>
+        <translation type="obsolete">%1:已经存在</translation>
+    </message>
+    <message>
+        <source>%1: doesn&apos;t exists</source>
+        <comment>QSystemSemaphore</comment>
+        <translation type="obsolete">%1:不存在</translation>
+    </message>
+    <message>
+        <source>%1: out of resources</source>
+        <comment>QSystemSemaphore</comment>
+        <translation type="obsolete">%1:资源耗尽了</translation>
+    </message>
+    <message>
+        <source>%1: unknown error %2</source>
+        <comment>QSystemSemaphore</comment>
+        <translation type="obsolete">%1:未知错误 %2</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
+        <source>%1: key is empty</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1:键是空的</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>%1: unable to make key</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1:不能制造键</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>%1: ftok failed</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1:ftok 失败</translation>
+    </message>
+</context>
+<context>
+    <name>QDB2Driver</name>
+    <message>
+        <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
+        <source>Unable to connect</source>
+        <translation>不能连接</translation>
+    </message>
+    <message>
+        <location line="+303"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unable to set autocommit</source>
+        <translation>不能设置自动提交</translation>
+    </message>
+</context>
+<context>
+    <name>QDB2Result</name>
+    <message>
+        <location line="-1043"/>
+        <location line="+243"/>
+        <source>Unable to execute statement</source>
+        <translation>不能执行语句</translation>
+    </message>
+    <message>
+        <location line="-206"/>
+        <source>Unable to prepare statement</source>
+        <translation>不能准备语句</translation>
+    </message>
+    <message>
+        <location line="+196"/>
+        <source>Unable to bind variable</source>
+        <translation>不能帮定变量</translation>
+    </message>
+    <message>
+        <location line="+92"/>
+        <source>Unable to fetch record %1</source>
+        <translation>不能获取记录%1</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to fetch next</source>
+        <translation>不能获取下一个</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Unable to fetch first</source>
+        <translation>不能获取第一个</translation>
+    </message>
+</context>
+<context>
+    <name>QDateTimeEdit</name>
+    <message>
+        <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
+        <source>AM</source>
+        <translation>AM</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>am</source>
+        <translation>am</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>PM</source>
+        <translation>PM</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>pm</source>
+        <translation>pm</translation>
+    </message>
+</context>
+<context>
+    <name>QDial</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
+        <source>QDial</source>
+        <translation>QDial</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>SpeedoMeter</source>
+        <translation>SpeedoMeter</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>SliderHandle</source>
+        <translation>SliderHandle</translation>
+    </message>
+</context>
+<context>
+    <name>QDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
+        <source>What&apos;s This?</source>
+        <translation>这是什么?</translation>
+    </message>
+    <message>
+        <location line="-115"/>
+        <source>Done</source>
+        <translation>完成</translation>
+    </message>
+</context>
+<context>
+    <name>QDialogButtonBox</name>
+    <message>
+        <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
+        <location line="+464"/>
+        <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+3"/>
+        <source>Save</source>
+        <translation>保存</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Save</source>
+        <translation>保存(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Cancel</source>
+        <translation>取消(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Close</source>
+        <translation>关闭(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Apply</source>
+        <translation>应用</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Reset</source>
+        <translation>重置</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Help</source>
+        <translation>帮助</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Don&apos;t Save</source>
+        <translation>不保存</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Discard</source>
+        <translation>抛弃</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Yes</source>
+        <translation>是(&amp;Y)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Yes to &amp;All</source>
+        <translation>全部是(&amp;A)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;No</source>
+        <translation>否(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>N&amp;o to All</source>
+        <translation>全部否(&amp;O)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Save All</source>
+        <translation>保存全部</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Abort</source>
+        <translation>放弃</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Retry</source>
+        <translation>重试</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Ignore</source>
+        <translation>忽略</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Restore Defaults</source>
+        <translation>恢复默认</translation>
+    </message>
+    <message>
+        <location line="-29"/>
+        <source>Close without Saving</source>
+        <translation>不保存关闭</translation>
+    </message>
+    <message>
+        <location line="-27"/>
+        <source>&amp;OK</source>
+        <translation>确定(&amp;O)</translation>
+    </message>
+</context>
+<context>
+    <name>QDirModel</name>
+    <message>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
+        <source>Name</source>
+        <translation>名称</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Size</source>
+        <translation>大小</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Kind</source>
+        <comment>Match OS X Finder</comment>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Type</source>
+        <comment>All other platforms</comment>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Date Modified</source>
+        <translation>日期被修改</translation>
+    </message>
+</context>
+<context>
+    <name>QDockWidget</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Dock</source>
+        <translation>锚接</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Float</source>
+        <translation>浮动</translation>
+    </message>
+</context>
+<context>
+    <name>QDoubleSpinBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-537"/>
+        <source>More</source>
+        <translation>更多</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Less</source>
+        <translation>更少</translation>
+    </message>
+</context>
+<context>
+    <name>QErrorMessage</name>
+    <message>
+        <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
+        <source>Debug Message:</source>
+        <translation>调试消息:</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Warning:</source>
+        <translation>警告:</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Fatal Error:</source>
+        <translation>致命错误:</translation>
+    </message>
+    <message>
+        <location line="+193"/>
+        <source>&amp;Show this message again</source>
+        <translation>再次显示这个消息(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;OK</source>
+        <translation>确定(&amp;O)</translation>
+    </message>
+</context>
+<context>
+    <name>QFile</name>
+    <message>
+        <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+        <location line="+141"/>
+        <source>Destination file exists</source>
+        <translation>目标文件已存在</translation>
+    </message>
+    <message>
+        <location line="-108"/>
+        <source>Cannot remove source file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+120"/>
+        <source>Cannot open %1 for input</source>
+        <translation>无法输入 %1 </translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Cannot open for output</source>
+        <translation>无法输出</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Failure to write block</source>
+        <translation>写块失败</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Cannot create %1 for output</source>
+        <translation>无法创建 %1 </translation>
+    </message>
+</context>
+<context>
+    <name>QFileDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+        <location line="+444"/>
+        <source>All Files (*)</source>
+        <translation>所有文件 (*)</translation>
+    </message>
+    <message>
+        <location line="+222"/>
+        <source>Directories</source>
+        <translation>目录</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <location line="+50"/>
+        <location line="+1471"/>
+        <location line="+75"/>
+        <source>&amp;Open</source>
+        <translation>打开(&amp;O)</translation>
+    </message>
+    <message>
+        <location line="-1596"/>
+        <location line="+50"/>
+        <source>&amp;Save</source>
+        <translation>保存(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="-730"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location line="+1515"/>
+        <source>%1 already exists.
+Do you want to replace it?</source>
+        <translation>%1已经存在。
+你想要替换它么?</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>%1
+File not found.
+Please verify the correct file name was given.</source>
+        <translation>文件%1
+没有找到。
+请核实已给定正确文件名。</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
+        <source>My Computer</source>
+        <translation>我的计算机</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
+        <source>&amp;Rename</source>
+        <translation>重命名(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Delete</source>
+        <translation>删除(&amp;D)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Show &amp;hidden files</source>
+        <translation>显示隐藏文件(&amp;H)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Back</source>
+        <translation>后退</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Parent Directory</source>
+        <translation>父目录</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>List View</source>
+        <translation>列表视图</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Detail View</source>
+        <translation>详细视图</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Files of type:</source>
+        <translation>文件类型:</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
+        <location line="+648"/>
+        <source>Directory:</source>
+        <translation>目录:</translation>
+    </message>
+    <message>
+        <location line="+794"/>
+        <location line="+862"/>
+        <source>%1
+Directory not found.
+Please verify the correct directory name was given.</source>
+        <translation>目录%1
+没有找到。
+请核实已给定正确目录名。</translation>
+    </message>
+    <message>
+        <location line="-218"/>
+        <source>&apos;%1&apos; is write protected.
+Do you want to delete it anyway?</source>
+        <translation>“%1“是写保护的。
+你还是想删除它么?</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Are sure you want to delete &apos;%1&apos;?</source>
+        <translation>你确认你想删除“%1“?</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Could not delete directory.</source>
+        <translation>不能删除目录。</translation>
+    </message>
+    <message>
+        <location line="+407"/>
+        <source>Recent Places</source>
+        <translation>最近的地方</translation>
+    </message>
+    <message>
+        <location line="-2550"/>
+        <source>Save As</source>
+        <translation>另存为</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
+        <source>Drive</source>
+        <translation>驱动器</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location line="+1"/>
+        <source>File</source>
+        <translation>文件</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Unknown</source>
+        <translation>未知的</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-4"/>
+        <source>Find Directory</source>
+        <translation>查找目录</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Show </source>
+        <translation>显示 </translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Forward</source>
+        <translation>前进</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
+        <source>New Folder</source>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <location line="-1963"/>
+        <source>&amp;New Folder</source>
+        <translation>新建文件夹(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+656"/>
+        <location line="+38"/>
+        <source>&amp;Choose</source>
+        <translation>选择(&amp;C)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
+        <source>Remove</source>
+        <translation>移除</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+        <location line="+652"/>
+        <source>File &amp;name:</source>
+        <translation>文件名称(&amp;N):</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Look in:</source>
+        <translation>查看:</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+        <source>Create New Folder</source>
+        <translation>创建新文件夹</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
+        <source>All Files (*.*)</source>
+        <translation>所有文件 (*.*)</translation>
+    </message>
+</context>
+<context>
+    <name>QFileSystemModel</name>
+    <message>
+        <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
+        <source>%1 TB</source>
+        <translation>%1 TB</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 GB</source>
+        <translation>%1 GB</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 MB</source>
+        <translation>%1 MB</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1 KB</source>
+        <translation>%1千字节</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>%1 bytes</source>
+        <translation>%1字节</translation>
+    </message>
+    <message>
+        <location line="+77"/>
+        <source>Invalid filename</source>
+        <translation>无效文件名</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;b&gt;The name &quot;%1&quot; can not be used.&lt;/b&gt;&lt;p&gt;Try using another name, with fewer characters or no punctuations marks.</source>
+        <translation>&lt;b&gt;名称“%1“不能被使用。&lt;/b&gt;&lt;p&gt;请使用另外一个包含更少字符或者不含有标点符号的名称。</translation>
+    </message>
+    <message>
+        <location line="+63"/>
+        <source>Name</source>
+        <translation>名称</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size</source>
+        <translation>大小</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Kind</source>
+        <comment>Match OS X Finder</comment>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Type</source>
+        <comment>All other platforms</comment>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Date Modified</source>
+        <translation>日期被修改</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
+        <source>My Computer</source>
+        <translation>我的计算机</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Computer</source>
+        <translation>计算机</translation>
+    </message>
+</context>
+<context>
+    <name>QFontDatabase</name>
+    <message>
+        <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
+        <location line="+1176"/>
+        <source>Normal</source>
+        <translation>普通</translation>
+    </message>
+    <message>
+        <location line="-1173"/>
+        <location line="+12"/>
+        <location line="+1149"/>
+        <source>Bold</source>
+        <translation>粗体</translation>
+    </message>
+    <message>
+        <location line="-1158"/>
+        <location line="+1160"/>
+        <source>Demi Bold</source>
+        <translation>半粗体</translation>
+    </message>
+    <message>
+        <location line="-1157"/>
+        <location line="+18"/>
+        <location line="+1135"/>
+        <source>Black</source>
+        <translation>黑体</translation>
+    </message>
+    <message>
+        <location line="-1145"/>
+        <source>Demi</source>
+        <translation>半体</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+1145"/>
+        <source>Light</source>
+        <translation>轻体</translation>
+    </message>
+    <message>
+        <location line="-1004"/>
+        <location line="+1007"/>
+        <source>Italic</source>
+        <translation>意大利体</translation>
+    </message>
+    <message>
+        <location line="-1004"/>
+        <location line="+1006"/>
+        <source>Oblique</source>
+        <translation>斜体</translation>
+    </message>
+    <message>
+        <location line="+705"/>
+        <source>Any</source>
+        <translation>任意</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Latin</source>
+        <translation>拉丁文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Greek</source>
+        <translation>希腊文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Cyrillic</source>
+        <translation>西里尔文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Armenian</source>
+        <translation>亚美尼亚文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Hebrew</source>
+        <translation>希伯来文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Arabic</source>
+        <translation>阿拉伯文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Syriac</source>
+        <translation>叙利亚文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Thaana</source>
+        <translation>马尔代夫文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Devanagari</source>
+        <translation>梵文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Bengali</source>
+        <translation>孟加拉文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Gurmukhi</source>
+        <translation>旁遮普文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Gujarati</source>
+        <translation>古吉拉特文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Oriya</source>
+        <translation>奥里雅文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Tamil</source>
+        <translation>泰米尔文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Telugu</source>
+        <translation>泰卢固文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Kannada</source>
+        <translation>埃纳德文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Malayalam</source>
+        <translation>马拉亚拉姆文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Sinhala</source>
+        <translation>僧伽罗文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Thai</source>
+        <translation>泰国文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lao</source>
+        <translation>老挝文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Tibetan</source>
+        <translation>藏文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Myanmar</source>
+        <translation>缅甸文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Georgian</source>
+        <translation>格鲁吉亚文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Khmer</source>
+        <translation>谷美尔文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Simplified Chinese</source>
+        <translation>简体中文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Traditional Chinese</source>
+        <translation>繁体中文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Japanese</source>
+        <translation>日文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Korean</source>
+        <translation>韩文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Vietnamese</source>
+        <translation>越南文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Symbol</source>
+        <translation>符号</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Ogham</source>
+        <translation>欧甘文</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Runic</source>
+        <translation>古北欧文</translation>
+    </message>
+</context>
+<context>
+    <name>QFontDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
+        <source>&amp;Font</source>
+        <translation>字体(&amp;F)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Font st&amp;yle</source>
+        <translation>字体风格(&amp;Y)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Size</source>
+        <translation>大小(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Effects</source>
+        <translation>效果</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Stri&amp;keout</source>
+        <translation>删除线(&amp;K)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Underline</source>
+        <translation>下划线(&amp;U)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Sample</source>
+        <translation>实例</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Wr&amp;iting System</source>
+        <translation>书写系统(&amp;I)</translation>
+    </message>
+    <message>
+        <location line="-604"/>
+        <location line="+247"/>
+        <source>Select Font</source>
+        <translation>选择字体</translation>
+    </message>
+</context>
+<context>
+    <name>QFtp</name>
+    <message>
+        <location filename="../src/network/access/qftp.cpp" line="+826"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
+        <source>Not connected</source>
+        <translation>没有连接</translation>
+    </message>
+    <message>
+        <location line="+65"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+65"/>
+        <source>Host %1 not found</source>
+        <translation>主机%1没有找到</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+4"/>
+        <source>Connection refused to host %1</source>
+        <translation>连接被主机 %1 拒绝</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Connection timed out to host %1</source>
+        <translation>主机%1连接超时</translation>
+    </message>
+    <message>
+        <location line="+104"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+102"/>
+        <location line="+1451"/>
+        <source>Connected to host %1</source>
+        <translation>连接到主机%1了</translation>
+    </message>
+    <message>
+        <location line="+219"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-1290"/>
+        <source>Connection refused for data connection</source>
+        <translation>因为数据连接而被拒绝连接</translation>
+    </message>
+    <message>
+        <location line="+178"/>
+        <location line="+29"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+195"/>
+        <location line="+728"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+    <message>
+        <location line="+889"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
+        <source>Connecting to host failed:
+%1</source>
+        <translation>连接主机失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Login failed:
+%1</source>
+        <translation>登录失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Listing directory failed:
+%1</source>
+        <translation>列出目录失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Changing directory failed:
+%1</source>
+        <translation>改变目录失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Downloading file failed:
+%1</source>
+        <translation>下载文件失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Uploading file failed:
+%1</source>
+        <translation>上传文件失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Removing file failed:
+%1</source>
+        <translation>移除文件失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Creating directory failed:
+%1</source>
+        <translation>创建目录失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+        <source>Removing directory failed:
+%1</source>
+        <translation>移除目录失败:
+%1</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+25"/>
+        <location line="+250"/>
+        <source>Connection closed</source>
+        <translation>连接关闭了</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-11"/>
+        <source>Host %1 found</source>
+        <translation>主机%1找到了</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Connection to %1 closed</source>
+        <translation>到%1的连接关闭了</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Host found</source>
+        <translation>主机找到了</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Connected to host</source>
+        <translation>连接到主机了</translation>
+    </message>
+</context>
+<context>
+    <name>QGuiApplication</name>
+    <message>
+        <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
+        <source>QT_LAYOUT_DIRECTION</source>
+        <comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
+        <translation>LTR</translation>
+    </message>
+</context>
+<context>
+    <name>QHostInfo</name>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+</context>
+<context>
+    <name>QHostInfoAgent</name>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
+        <location line="+9"/>
+        <location line="+64"/>
+        <location line="+31"/>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
+        <location line="+9"/>
+        <location line="+40"/>
+        <location line="+27"/>
+        <source>Host not found</source>
+        <translation>主机未找到</translation>
+    </message>
+    <message>
+        <location line="-44"/>
+        <location line="+39"/>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-34"/>
+        <location line="+29"/>
+        <source>Unknown address type</source>
+        <translation>未知的地址类型</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-19"/>
+        <location line="+27"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+</context>
+<context>
+    <name>QHttp</name>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+1574"/>
+        <location line="+820"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
+        <location line="+567"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+    <message>
+        <location line="-568"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
+        <source>Request aborted</source>
+        <translation>请求被放弃了</translation>
+    </message>
+    <message>
+        <location line="+579"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
+        <source>No server set to connect to</source>
+        <translation>没有设置要连接的服务器</translation>
+    </message>
+    <message>
+        <location line="+164"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+56"/>
+        <source>Wrong content length</source>
+        <translation>错误的内容长度</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+4"/>
+        <source>Server closed connection unexpectedly</source>
+        <translation>服务器异常地关闭了连接</translation>
+    </message>
+    <message>
+        <location line="+179"/>
+        <source>Unknown authentication method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+183"/>
+        <source>Error writing response to device</source>
+        <translation>向设备中进行写回复时发生错误</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
+        <source>Connection refused</source>
+        <translation>连接被拒绝</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="-304"/>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+        <source>Host %1 not found</source>
+        <translation>主机%1没有找到</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
+        <location line="+19"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+        <source>HTTP request failed</source>
+        <translation>HTTP请求失败</translation>
+    </message>
+    <message>
+        <location line="+73"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+69"/>
+        <source>Invalid HTTP response header</source>
+        <translation>无效的HTTP响应头</translation>
+    </message>
+    <message>
+        <location line="+125"/>
+        <location line="+48"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
+        <location line="+47"/>
+        <source>Invalid HTTP chunked body</source>
+        <translation>无效的HTTP臃肿体</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+294"/>
+        <source>Host %1 found</source>
+        <translation>主机%1找到了</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Connected to host %1</source>
+        <translation>连接到%1主机了</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Connection to %1 closed</source>
+        <translation>到%1的连接关闭了</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Host found</source>
+        <translation>主机找到了</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Connected to host</source>
+        <translation>连接到主机了</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-22"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+        <source>Connection closed</source>
+        <translation>连接关闭了</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="-135"/>
+        <source>Proxy authentication required</source>
+        <translation>代理需要认证</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Authentication required</source>
+        <translation>需要认证</translation>
+    </message>
+    <message>
+        <location line="-138"/>
+        <source>Connection refused (or timed out)</source>
+        <translation>连接被拒绝(或者超时)</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+6"/>
+        <source>Proxy requires authentication</source>
+        <translation>代理需要验证</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Host requires authentication</source>
+        <translation>主机需要验证</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Data corrupted</source>
+        <translation>数据错误</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unknown protocol specified</source>
+        <translation>所指定的协议是未知的</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>SSL handshake failed</source>
+        <translation>SSL 握手失败</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="-2263"/>
+        <source>HTTPS connection requested but SSL support not compiled in</source>
+        <translation>HTTPS 连接需要 SSL,但它没有被编译进来</translation>
+    </message>
+</context>
+<context>
+    <name>QHttpSocketEngine</name>
+    <message>
+        <location filename="../src/network/socket/qhttpsocketengine.cpp" line="-89"/>
+        <source>Did not receive HTTP response from proxy</source>
+        <translation>未收到代理的HTTP响应</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Error parsing authentication request from proxy</source>
+        <translation>解析代理的认证请求出错</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Authentication required</source>
+        <translation>需要认证</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Proxy denied connection</source>
+        <translation>代理拒绝连接</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Error communicating with HTTP proxy</source>
+        <translation>和HTTP代理通讯时发生错误</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Proxy server not found</source>
+        <translation>未找到代理服务器</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Proxy connection refused</source>
+        <translation>代理连接被拒绝</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Proxy server connection timed out</source>
+        <translation>代理服务器连接超时</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Proxy connection closed prematurely</source>
+        <translation>代理连接过早关闭</translation>
+    </message>
+</context>
+<context>
+    <name>QIBaseDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
+        <source>Error opening database</source>
+        <translation>打开数据库错误</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Could not start transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Unable to rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+</context>
+<context>
+    <name>QIBaseResult</name>
+    <message>
+        <location line="-1097"/>
+        <source>Unable to create BLOB</source>
+        <translation>不能创建BLOB</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Unable to write BLOB</source>
+        <translation>不能写入BLOB</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Unable to open BLOB</source>
+        <translation>不能打开BLOB</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Unable to read BLOB</source>
+        <translation>不能读取BLOB</translation>
+    </message>
+    <message>
+        <location line="+125"/>
+        <location line="+189"/>
+        <source>Could not find array</source>
+        <translation>不能找到数组</translation>
+    </message>
+    <message>
+        <location line="-157"/>
+        <source>Could not get array data</source>
+        <translation>不能得到数组数据</translation>
+    </message>
+    <message>
+        <location line="+212"/>
+        <source>Could not get query info</source>
+        <translation>不能得到查询信息</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Could not start transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Could not allocate statement</source>
+        <translation>不能分配语句</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Could not prepare statement</source>
+        <translation>不能准备语句</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <location line="+7"/>
+        <source>Could not describe input statement</source>
+        <translation>不能描述输入语句</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Could not describe statement</source>
+        <translation>不能描述语句</translation>
+    </message>
+    <message>
+        <location line="+115"/>
+        <source>Unable to close statement</source>
+        <translation>不能关闭语句</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Unable to execute query</source>
+        <translation>不能执行查询</translation>
+    </message>
+    <message>
+        <location line="+46"/>
+        <source>Could not fetch next item</source>
+        <translation>不能获取下一项</translation>
+    </message>
+    <message>
+        <location line="+160"/>
+        <source>Could not get statement info</source>
+        <translation>不能得到语句信息</translation>
+    </message>
+</context>
+<context>
+    <name>QIODevice</name>
+    <message>
+        <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
+        <source>Permission denied</source>
+        <translation>权限被拒绝</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Too many open files</source>
+        <translation>太多打开的文件</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>No such file or directory</source>
+        <translation>没有这个文件或者目录</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>No space left on device</source>
+        <translation>设备上没有空间了</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+</context>
+<context>
+    <name>QInputContext</name>
+    <message>
+        <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
+        <source>XIM</source>
+        <translation>XIM</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>XIM input method</source>
+        <translation>XIM输入法</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Windows input method</source>
+        <translation>Windows输入法</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Mac OS X input method</source>
+        <translation>Mac OS X输入法</translation>
+    </message>
+</context>
+<context>
+    <name>QInputDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
+        <source>Enter a value:</source>
+        <translation>输入一个值:</translation>
+    </message>
+</context>
+<context>
+    <name>QLibrary</name>
+    <message>
+        <source>QLibrary::load_sys: Cannot load %1 (%2)</source>
+        <translation type="obsolete">QLibrary::load_sys: 不能载入%1 (%2)</translation>
+    </message>
+    <message>
+        <source>QLibrary::unload_sys: Cannot unload %1 (%2)</source>
+        <translation type="obsolete">QLibrary::unload_sys:不能卸载%1 (%2)</translation>
+    </message>
+    <message>
+        <source>QLibrary::resolve_sys: Symbol &quot;%1&quot; undefined in %2 (%3)</source>
+        <translation type="obsolete">QLibrary::resolve_sys: 符号“%1”在%2(%3)没有被定义</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
+        <source>Could not mmap &apos;%1&apos;: %2</source>
+        <translation>不能映射”%1“:%2</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>Plugin verification data mismatch in &apos;%1&apos;</source>
+        <translation>“%1“中的插件验证数据不匹配</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Could not unmap &apos;%1&apos;: %2</source>
+        <translation>不能取消映射“%1“:%2</translation>
+    </message>
+    <message>
+        <location line="+302"/>
+        <source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
+        <translation>插件“%1”使用了不兼容的Qt库。(%2.%3.%4) [%5]</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>The plugin &apos;%1&apos; uses incompatible Qt library. Expected build key &quot;%2&quot;, got &quot;%3&quot;</source>
+        <translation>插件“%1“使用了不兼容的Qt库。期待的构建键是“%2“,得到的却是”%3“</translation>
+    </message>
+    <message>
+        <location line="+340"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+    <message>
+        <location line="-377"/>
+        <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
+        <source>The shared library was not found.</source>
+        <translation>共享库没有被找到。</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
+        <translation>文件“%1“不是有效的Qt插件。</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
+        <translation>插件“%1“使用了不兼容的Qt库。(不能混合使用库的调试版本和发布版本。)</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+        <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
+        <source>Cannot load library %1: %2</source>
+        <translation>无法加载库%1:%2</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+26"/>
+        <source>Cannot unload library %1: %2</source>
+        <translation>无法卸载库%1:%2</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+15"/>
+        <source>Cannot resolve symbol &quot;%1&quot; in %2: %3</source>
+        <translation>无法解析%2中的符号“%2”:%3</translation>
+    </message>
+</context>
+<context>
+    <name>QLineEdit</name>
+    <message>
+        <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
+        <source>&amp;Undo</source>
+        <translation>撤消(&amp;U)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Redo</source>
+        <translation>恢复(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Cu&amp;t</source>
+        <translation>剪切(&amp;T)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Copy</source>
+        <translation>复制(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Paste</source>
+        <translation>粘贴(&amp;P)</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Select All</source>
+        <translation>选择全部</translation>
+    </message>
+</context>
+<context>
+    <name>QLocalServer</name>
+    <message>
+        <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+        <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
+        <source>%1: Name error</source>
+        <translation>%1: 名称错误</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qlocalserver_unix.cpp" line="-8"/>
+        <source>%1: Permission denied</source>
+        <translation>%1:权限被拒绝</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>%1: Address in use</source>
+        <translation>%1:地址正在被使用</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
+        <source>%1: Unknown error %2</source>
+        <translation>%1:未知错误 %2</translation>
+    </message>
+</context>
+<context>
+    <name>QLocalSocket</name>
+    <message>
+        <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
+        <source>%1: Connection refused</source>
+        <translation>%1:连接被拒绝</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Remote closed</source>
+        <translation>%1:远程已关闭</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
+        <location line="+43"/>
+        <source>%1: Invalid name</source>
+        <translation>%1:无效名称</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Socket access error</source>
+        <translation>%1:套接字访问错误</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Socket resource error</source>
+        <translation>%1:套接字资源错误</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Socket operation timed out</source>
+        <translation>%1:套接字操作超时</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Datagram too large</source>
+        <translation>%1:数据报太大</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-48"/>
+        <source>%1: Connection error</source>
+        <translation>%1:连接错误</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: The socket operation is not supported</source>
+        <translation>%1:套接字操作不被支持</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1: Unknown error</source>
+        <translation>%1:未知错误</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+4"/>
+        <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+10"/>
+        <source>%1: Unknown error %2</source>
+        <translation>%1:未知错误 %2</translation>
+    </message>
+</context>
+<context>
+    <name>QMYSQLDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
+        <source>Unable to open database &apos;</source>
+        <translation>不能打开数据库</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Unable to connect</source>
+        <translation>不能连接</translation>
+    </message>
+    <message>
+        <location line="+127"/>
+        <source>Unable to begin transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+</context>
+<context>
+    <name>QMYSQLResult</name>
+    <message>
+        <location line="-922"/>
+        <source>Unable to fetch data</source>
+        <translation>不能获取数据</translation>
+    </message>
+    <message>
+        <location line="+176"/>
+        <source>Unable to execute query</source>
+        <translation>不能执行查询</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Unable to store result</source>
+        <translation>不能存储结果</translation>
+    </message>
+    <message>
+        <location line="+190"/>
+        <location line="+8"/>
+        <source>Unable to prepare statement</source>
+        <translation>不能准备语句</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <source>Unable to reset statement</source>
+        <translation>不能重置语句</translation>
+    </message>
+    <message>
+        <location line="+87"/>
+        <source>Unable to bind value</source>
+        <translation>不能绑定值</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Unable to execute statement</source>
+        <translation>不能执行语句</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <location line="+21"/>
+        <source>Unable to bind outvalues</source>
+        <translation>不能绑定外值</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Unable to store statement results</source>
+        <translation>不能存储语句结果</translation>
+    </message>
+    <message>
+        <location line="-253"/>
+        <source>Unable to execute next query</source>
+        <translation>不能执行下一个查询</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Unable to store next result</source>
+        <translation>不能存储下一个结果</translation>
+    </message>
+</context>
+<context>
+    <name>QMdiArea</name>
+    <message>
+        <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
+        <source>(Untitled)</source>
+        <translation>(未命名的)</translation>
+    </message>
+</context>
+<context>
+    <name>QMdiSubWindow</name>
+    <message>
+        <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
+        <source>%1 - [%2]</source>
+        <translation>%1 - [%2]</translation>
+    </message>
+    <message>
+        <location line="+72"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>Minimize</source>
+        <translation>最小化</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Restore Down</source>
+        <translation>向下恢复</translation>
+    </message>
+    <message>
+        <location line="+707"/>
+        <source>&amp;Restore</source>
+        <translation>恢复(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Move</source>
+        <translation>移动(&amp;M)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Size</source>
+        <translation>大小(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Mi&amp;nimize</source>
+        <translation>最小化(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ma&amp;ximize</source>
+        <translation>最大化(&amp;X)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Stay on &amp;Top</source>
+        <translation>总在最前(&amp;T)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Close</source>
+        <translation>关闭(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="-787"/>
+        <source>- [%1]</source>
+        <translation>- [%1]</translation>
+    </message>
+    <message>
+        <location line="+58"/>
+        <source>Maximize</source>
+        <translation>最大化</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unshade</source>
+        <translation>取消遮蔽</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Shade</source>
+        <translation>遮蔽</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Restore</source>
+        <translation>恢复</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Help</source>
+        <translation>帮助</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Menu</source>
+        <translation>菜单</translation>
+    </message>
+</context>
+<context>
+    <name>QMenu</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
+        <location line="+225"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="-224"/>
+        <location line="+225"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+    <message>
+        <location line="-223"/>
+        <location line="+225"/>
+        <location line="+51"/>
+        <source>Execute</source>
+        <translation>执行</translation>
+    </message>
+</context>
+<context>
+    <name>QMenuBar</name>
+    <message>
+        <source>About</source>
+        <translation type="obsolete">关于</translation>
+    </message>
+    <message>
+        <source>Config</source>
+        <translation type="obsolete">配置</translation>
+    </message>
+    <message>
+        <source>Preference</source>
+        <translation type="obsolete">首选项</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="obsolete">选项</translation>
+    </message>
+    <message>
+        <source>Setting</source>
+        <translation type="obsolete">设置</translation>
+    </message>
+    <message>
+        <source>Setup</source>
+        <translation type="obsolete">安装</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation type="obsolete">退出</translation>
+    </message>
+    <message>
+        <source>Exit</source>
+        <translation type="obsolete">退出</translation>
+    </message>
+    <message>
+        <source>About %1</source>
+        <translation type="obsolete">关于%1</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation type="obsolete">关于Qt</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation type="obsolete">首选项</translation>
+    </message>
+    <message>
+        <source>Quit %1</source>
+        <translation type="obsolete">退出%1</translation>
+    </message>
+</context>
+<context>
+    <name>QMessageBox</name>
+    <message>
+        <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
+        <source>Help</source>
+        <translation>帮助</translation>
+    </message>
+    <message>
+        <location line="-853"/>
+        <location line="+852"/>
+        <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
+        <location line="+8"/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location line="+509"/>
+        <source>About Qt</source>
+        <translation>关于Qt</translation>
+    </message>
+    <message>
+        <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;p&gt;这个程序使用的是Qt %1版。&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="-1605"/>
+        <source>Show Details...</source>
+        <translation>显示细节……</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Hide Details...</source>
+        <translation>隐藏细节……</translation>
+    </message>
+    <message>
+        <location line="+1570"/>
+        <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokiae.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;h3&gt;关于Qt&lt;/h3&gt;%1&lt;p&gt;Qt是一个用于跨平台应用程序开发的C++工具包。&lt;/p&gt;&lt;p&gt;对于MS&amp;nbsp;Windows、Mac&amp;nbsp;OS&amp;nbsp;X、Linux和所有主流商业Unix,Qt提供了单一源程序的可移植性。Qt也有用于嵌入式Linux和Windows CE的版本。&lt;/p&gt;&lt;p&gt;Qt是Nokia的产品。有关更多信息,请参考&lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt;。&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;p&gt;This program uses Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/company/model/&quot;&gt;qt.nokia.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;p&gt;这个程序使用了Qt %1开源版本。&lt;/p&gt;&lt;p&gt;Qt开源版本只用于开源应用程序的开发。如果要开发私有(闭源)软件,你需要一个商业的Qt协议。&lt;/p&gt;&lt;p&gt;有关Qt协议的概览,请参考&lt;a href=&quot;http://qt.nokia.com/company/model/&quot;&gt;qt.nokia.com/company/model/&lt;/a&gt;。&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt Embedded.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;h3&gt;关于Qt&lt;/h3&gt;%1&lt;p&gt;Qt是一个用于跨平台应用程序开发的C++工具包。&lt;/p&gt;&lt;p&gt;对于MS&amp;nbsp;Windows、Mac&amp;nbsp;OS&amp;nbsp;X、Linux和所有主流商业Unix,Qt提供了单一源程序的可移植性。Qt对于嵌入式平台也是可用的,在嵌入式平台上它被称为Qt Embedded。&lt;/p&gt;&lt;p&gt;Qt是Trolltech的产品。有关更多信息,请参考&lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt;。&lt;/p&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>QMultiInputContext</name>
+    <message>
+        <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
+        <source>Select IM</source>
+        <translation>选择输入法</translation>
+    </message>
+</context>
+<context>
+    <name>QMultiInputContextPlugin</name>
+    <message>
+        <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
+        <source>Multiple input method switcher</source>
+        <translation>多输入法切换器</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Multiple input method switcher that uses the context menu of the text widgets</source>
+        <translation>使用文本窗口部件上下文菜单的多输入法切换器</translation>
+    </message>
+</context>
+<context>
+    <name>QNativeSocketEngine</name>
+    <message>
+        <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
+        <source>The remote host closed the connection</source>
+        <translation>远端主机关闭了这个连接</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Network operation timed out</source>
+        <translation>网络操作超时</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Out of resources</source>
+        <translation>资源耗尽了</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unsupported socket operation</source>
+        <translation>不被支持的套接字操作</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Protocol type not supported</source>
+        <translation>协议类型不被支持</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Invalid socket descriptor</source>
+        <translation>无效的套接字描述符</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Network unreachable</source>
+        <translation>网络不能访问</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Permission denied</source>
+        <translation>权限被拒绝</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Connection timed out</source>
+        <translation>连接超时</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Connection refused</source>
+        <translation>连接被拒绝</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The bound address is already in use</source>
+        <translation>要启用的地址已经被使用</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The address is not available</source>
+        <translation>这个地址不可用</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The address is protected</source>
+        <translation>这个地址被保护了</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Unable to send a message</source>
+        <translation>不能发送一个消息</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unable to receive a message</source>
+        <translation>不能接收一个消息</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unable to write</source>
+        <translation>不能写入</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Network error</source>
+        <translation>网络错误</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Another socket is already listening on the same port</source>
+        <translation>另一个套接字已经正在监听同一端口</translation>
+    </message>
+    <message>
+        <location line="-66"/>
+        <source>Unable to initialize non-blocking socket</source>
+        <translation>不能初始化非阻塞套接字</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unable to initialize broadcast socket</source>
+        <translation>不能初始化广播套接字</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
+        <translation>试图在不支持IPv6支持的平台上使用IPv6套接字</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Host unreachable</source>
+        <translation>主机不能访问</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Datagram was too large to send</source>
+        <translation>不能发送过大的数据报</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Operation on non-socket</source>
+        <translation>对非套接字操作</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>The proxy type is invalid for this operation</source>
+        <translation>对于这个操作代理类型是无效的。</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessCacheBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
+        <source>Error opening %1</source>
+        <translation>打开%1发生错误</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessFileBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
+        <source>Request for opening non-local file %1</source>
+        <translation>正在打开非本地文件 %1 的请求</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Error opening %1: %2</source>
+        <translation>打开 %1 错误:%2</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>Write error writing to %1: %2</source>
+        <translation>写入 %1 错误:%2</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Cannot open %1: Path is a directory</source>
+        <translation>无法打开 %1:路径是一个目录</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Read error reading from %1: %2</source>
+        <translation>读取 %1 错误:%2</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessFtpBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
+        <source>No suitable proxy found</source>
+        <translation>未找到合适的代理</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Cannot open %1: is a directory</source>
+        <translation>无法读取 %1:是一个目录</translation>
+    </message>
+    <message>
+        <location line="+130"/>
+        <source>Logging in to %1 failed: authentication required</source>
+        <translation>登入 %1 失败:需要验证</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Error while downloading %1: %2</source>
+        <translation>下载 %1 时错误:%2</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Error while uploading %1: %2</source>
+        <translation>上载 %1 时错误:%2</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessHttpBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
+        <source>No suitable proxy found</source>
+        <translation>未找到合适的代理</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkReply</name>
+    <message>
+        <location line="+128"/>
+        <source>Error downloading %1 - server replied: %2</source>
+        <translation>下载 %1 错误 - 服务器回复:%2</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
+        <source>Protocol &quot;%1&quot; is unknown</source>
+        <translation>协议“%1”是未知的</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkReplyImpl</name>
+    <message>
+        <location line="+432"/>
+        <location line="+22"/>
+        <source>Operation canceled</source>
+        <translation>操作被取消</translation>
+    </message>
+</context>
+<context>
+    <name>QOCIDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
+        <source>Unable to logon</source>
+        <translation>不能登录</translation>
+    </message>
+    <message>
+        <location line="-144"/>
+        <source>Unable to initialize</source>
+        <comment>QOCIDriver</comment>
+        <translation>不能初始化</translation>
+    </message>
+    <message>
+        <location line="+215"/>
+        <source>Unable to begin transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Unable to rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+</context>
+<context>
+    <name>QOCIResult</name>
+    <message>
+        <location line="-963"/>
+        <location line="+161"/>
+        <location line="+15"/>
+        <source>Unable to bind column for batch execute</source>
+        <translation>不能绑定批处理执行的列</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unable to execute batch statement</source>
+        <translation>不能执行批处理语句</translation>
+    </message>
+    <message>
+        <location line="+302"/>
+        <source>Unable to goto next</source>
+        <translation>不能进入下一个</translation>
+    </message>
+    <message>
+        <location line="+59"/>
+        <source>Unable to alloc statement</source>
+        <translation>不能分配语句</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unable to prepare statement</source>
+        <translation>不能准备语句</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Unable to bind value</source>
+        <translation>不能绑定值</translation>
+    </message>
+    <message>
+        <source>Unable to execute select statement</source>
+        <translation type="obsolete">不能执行选择语句</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Unable to execute statement</source>
+        <translation>不能执行语句</translation>
+    </message>
+</context>
+<context>
+    <name>QODBCDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
+        <source>Unable to connect</source>
+        <translation>不能连接</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Unable to connect - Driver doesn&apos;t support all needed functionality</source>
+        <translation>不能连接—驱动程序不支持所有功能</translation>
+    </message>
+    <message>
+        <location line="+242"/>
+        <source>Unable to disable autocommit</source>
+        <translation>不能禁止自动提交</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unable to enable autocommit</source>
+        <translation>不能打开自动提交</translation>
+    </message>
+</context>
+<context>
+    <name>QODBCResult</name>
+    <message>
+        <location line="-1218"/>
+        <location line="+349"/>
+        <source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
+        <translation>QODBCResult::reset: 不能把“SQL_CURSOR_STATIC”设置为语句属性。请检查你的ODBC驱动程序设置。</translation>
+    </message>
+    <message>
+        <location line="-332"/>
+        <location line="+626"/>
+        <source>Unable to execute statement</source>
+        <translation>不能执行语句</translation>
+    </message>
+    <message>
+        <location line="-555"/>
+        <source>Unable to fetch next</source>
+        <translation>不能获取下一个</translation>
+    </message>
+    <message>
+        <location line="+279"/>
+        <source>Unable to prepare statement</source>
+        <translation>不能准备语句</translation>
+    </message>
+    <message>
+        <location line="+268"/>
+        <source>Unable to bind variable</source>
+        <translation>不能帮定变量</translation>
+    </message>
+    <message>
+        <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
+        <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+        <location line="+578"/>
+        <source>Unable to fetch last</source>
+        <translation>不能获取最后一个</translation>
+    </message>
+    <message>
+        <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
+        <source>Unable to fetch</source>
+        <translation>不能获取</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Unable to fetch first</source>
+        <translation>不能获取第一个</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Unable to fetch previous</source>
+        <translation>不能获取上一个</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
+        <source>Home</source>
+        <translation>家</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
+        <source>Operation not supported on %1</source>
+        <translation>在 %1 上不被支持的操作</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Invalid URI: %1</source>
+        <translation>无效的 URI:%1</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
+        <source>Write error writing to %1: %2</source>
+        <translation>写入 %1 错误:%2</translation>
+    </message>
+    <message>
+        <location line="+57"/>
+        <source>Read error reading from %1: %2</source>
+        <translation>读取 %1 错误:%2</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Socket error on %1: %2</source>
+        <translation>%1 上的套接字错误:%2</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Remote host closed the connection prematurely on %1</source>
+        <translation>远程主机过早地关闭了在 %1 上的这个连接</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Protocol error: packet of size 0 received</source>
+        <translation>协议错误:收到了大小为 0 的包</translation>
+    </message>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
+        <location line="+57"/>
+        <source>No host name given</source>
+        <translation>未指定主机名</translation>
+    </message>
+</context>
+<context>
+    <name>QPPDOptionsModel</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
+        <source>Name</source>
+        <translation>名称</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Value</source>
+        <translation>值</translation>
+    </message>
+</context>
+<context>
+    <name>QPSQLDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
+        <source>Unable to connect</source>
+        <translation>不能连接</translation>
+    </message>
+    <message>
+        <location line="+49"/>
+        <source>Could not begin transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Could not commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Could not rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+    <message>
+        <location line="+358"/>
+        <source>Unable to subscribe</source>
+        <translation>不能订阅</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Unable to unsubscribe</source>
+        <translation>不能取消订阅</translation>
+    </message>
+</context>
+<context>
+    <name>QPSQLResult</name>
+    <message>
+        <location line="-1058"/>
+        <source>Unable to create query</source>
+        <translation>不能创建查询</translation>
+    </message>
+    <message>
+        <location line="+374"/>
+        <source>Unable to prepare statement</source>
+        <translation>不能准备语句</translation>
+    </message>
+</context>
+<context>
+    <name>QPageSetupWidget</name>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
+        <source>Centimeters (cm)</source>
+        <translation>厘米 (cm)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Millimeters (mm)</source>
+        <translation>毫米 (mm)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Inches (in)</source>
+        <translation>英寸 (in)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Points (pt)</source>
+        <translation>点 (pt)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+        <source>Form</source>
+        <translation>窗体</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Paper</source>
+        <translation>纸张</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Page size:</source>
+        <translation>纸张大小:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Width:</source>
+        <translation>宽度:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Height:</source>
+        <translation>高度:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Paper source:</source>
+        <translation>纸张源:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Orientation</source>
+        <translation>方向</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Portrait</source>
+        <translation>纵向</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Landscape</source>
+        <translation>横向</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reverse landscape</source>
+        <translation>反向横向</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reverse portrait</source>
+        <translation>反向纵向</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Margins</source>
+        <translation>边距</translation>
+    </message>
+    <message>
+        <location/>
+        <source>top margin</source>
+        <translation>上边距</translation>
+    </message>
+    <message>
+        <location/>
+        <source>left margin</source>
+        <translation>左边距</translation>
+    </message>
+    <message>
+        <location/>
+        <source>right margin</source>
+        <translation>右边距</translation>
+    </message>
+    <message>
+        <location/>
+        <source>bottom margin</source>
+        <translation>下边距</translation>
+    </message>
+</context>
+<context>
+    <name>QPluginLoader</name>
+    <message>
+        <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+24"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+    <message>
+        <location line="-68"/>
+        <source>The plugin was not loaded.</source>
+        <translation>插件没有被载入。</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintDialog</name>
+    <message>
+        <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
+        <source>locally connected</source>
+        <translation>本地已经连接的</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <location line="+225"/>
+        <source>Aliases: %1</source>
+        <translation>别名:%1</translation>
+    </message>
+    <message>
+        <location line="+223"/>
+        <location line="+199"/>
+        <source>unknown</source>
+        <translation>未知的</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
+        <source>Print all</source>
+        <translation>打印全部</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Print selection</source>
+        <translation>打印选择</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Print range</source>
+        <translation>打印范围</translation>
+    </message>
+    <message>
+        <location line="-48"/>
+        <source>A0 (841 x 1189 mm)</source>
+        <translation>A0 (841 x 1189 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A1 (594 x 841 mm)</source>
+        <translation>A1 (594 x 841 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A2 (420 x 594 mm)</source>
+        <translation>A2 (420 x 594 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A3 (297 x 420 mm)</source>
+        <translation>A3 (297 x 420 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+        <translation>A4 (210 x 297 毫米,8.26 x 11.7 英寸)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A5 (148 x 210 mm)</source>
+        <translation>A5 (148 x 210 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A6 (105 x 148 mm)</source>
+        <translation>A6 (105 x 148 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A7 (74 x 105 mm)</source>
+        <translation>A7 (74 x 105 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A8 (52 x 74 mm)</source>
+        <translation>A8 (52 x 74 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A9 (37 x 52 mm)</source>
+        <translation>A9 (37 x 52 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B0 (1000 x 1414 mm)</source>
+        <translation>B0 (1000 x 1414 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B1 (707 x 1000 mm)</source>
+        <translation>B1 (707 x 1000 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B2 (500 x 707 mm)</source>
+        <translation>B2 (500 x 707 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B3 (353 x 500 mm)</source>
+        <translation>B3 (353 x 500 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B4 (250 x 353 mm)</source>
+        <translation>B4 (250 x 353 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+        <translation>B5 (176 x 250 毫米,6.93 x 9.84 英寸)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B6 (125 x 176 mm)</source>
+        <translation>B6 (125 x 176 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B7 (88 x 125 mm)</source>
+        <translation>B7 (88 x 125 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B8 (62 x 88 mm)</source>
+        <translation>B8 (62 x 88 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B9 (44 x 62 mm)</source>
+        <translation>B9 (44 x 62 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B10 (31 x 44 mm)</source>
+        <translation>B10 (31 x 44 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>C5E (163 x 229 mm)</source>
+        <translation>C5E (163 x 229 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>DLE (110 x 220 mm)</source>
+        <translation>DLE (110 x 220 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+        <translation>Executive (7.5 x 10 英寸,191 x 254 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Folio (210 x 330 mm)</source>
+        <translation>Folio (210 x 330 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ledger (432 x 279 mm)</source>
+        <translation>Ledger (432 x 279 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+        <translation>Legal (8.5 x 14 英寸,216 x 356 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
+        <translation>Letter (8.5 x 11 英寸,216 x 279 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Tabloid (279 x 432 mm)</source>
+        <translation>Tabloid (279 x 432 毫米)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>US Common #10 Envelope (105 x 241 mm)</source>
+        <translation>美国普通10号信封 (105 x 241 毫米)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
+        <location line="+13"/>
+        <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
+        <source>Print</source>
+        <translation>打印</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-357"/>
+        <source>Print To File ...</source>
+        <translation>打印到文件……</translation>
+    </message>
+    <message>
+        <location line="+80"/>
+        <source>File %1 is not writable.
+Please choose a different file name.</source>
+        <translation>文件%1不可写。
+请选择一个不同的文件名。</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1 already exists.
+Do you want to overwrite it?</source>
+        <translation>%1已经存在。
+你想覆盖它么?</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-210"/>
+        <source>File exists</source>
+        <translation>文件存在</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;qt&gt;Do you want to overwrite it?&lt;/qt&gt;</source>
+        <translation>&lt;qt&gt;你想覆盖它么?&lt;/qt&gt;</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-8"/>
+        <source>%1 is a directory.
+Please choose a different file name.</source>
+        <translation>%1是目录。
+请选择一个不同的文件名。</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+1"/>
+        <source>The &apos;From&apos; value cannot be greater than the &apos;To&apos; value.</source>
+        <translation>“从”的数值不能大于“到”的数值。</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
+        <source>A0</source>
+        <translation>A0</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A1</source>
+        <translation>A1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A2</source>
+        <translation>A2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A3</source>
+        <translation>A3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A4</source>
+        <translation>A4</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A5</source>
+        <translation>A5</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A6</source>
+        <translation>A6</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A7</source>
+        <translation>A7</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A8</source>
+        <translation>A8</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A9</source>
+        <translation>A9</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B0</source>
+        <translation>B0</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B1</source>
+        <translation>B1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B2</source>
+        <translation>B2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B3</source>
+        <translation>B3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B4</source>
+        <translation>B4</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B5</source>
+        <translation>B5</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B6</source>
+        <translation>B6</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B7</source>
+        <translation>B7</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B8</source>
+        <translation>B8</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B9</source>
+        <translation>B9</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B10</source>
+        <translation>B10</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>C5E</source>
+        <translation>C5E</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>DLE</source>
+        <translation>DLE</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Executive</source>
+        <translation>决策文书</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Folio</source>
+        <translation>对开纸</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ledger</source>
+        <translation>帐页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Legal</source>
+        <translation>法律文书</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Letter</source>
+        <translation>信纸</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Tabloid</source>
+        <translation>小型报纸</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>US Common #10 Envelope</source>
+        <translation>美国普通10号信封</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Custom</source>
+        <translation>自定义</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-522"/>
+        <location line="+68"/>
+        <source>&amp;Options &gt;&gt;</source>
+        <translation>选项(&amp;O) &gt;&gt;</translation>
+    </message>
+    <message>
+        <location line="-63"/>
+        <source>&amp;Print</source>
+        <translation>打印(&amp;P)</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <source>&amp;Options &lt;&lt;</source>
+        <translation>选项(&amp;O) &lt;&lt;</translation>
+    </message>
+    <message>
+        <location line="+253"/>
+        <source>Print to File (PDF)</source>
+        <translation>打印到文件(PDF)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Print to File (Postscript)</source>
+        <translation>打印到文件(Postscript)</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Local file</source>
+        <translation>本地文件</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Write %1 file</source>
+        <translation>写入 %1 文件</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintPreviewDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+        <location line="+12"/>
+        <source>Page Setup</source>
+        <translation>页面设置</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
+        <source>%1%</source>
+        <translation>%1%</translation>
+    </message>
+    <message>
+        <location line="+79"/>
+        <source>Print Preview</source>
+        <translation>打印预览</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Next page</source>
+        <translation>下一页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Previous page</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>First page</source>
+        <translation>第一页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Last page</source>
+        <translation>最后一页</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Fit width</source>
+        <translation>适应宽度</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Fit page</source>
+        <translation>适应页面</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Zoom in</source>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Zoom out</source>
+        <translation>缩小</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Portrait</source>
+        <translation>纵向</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Landscape</source>
+        <translation>横向</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Show single page</source>
+        <translation>显示单页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Show facing pages</source>
+        <translation>显示当前页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Show overview of all pages</source>
+        <translation>显示所有页的概览</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Print</source>
+        <translation>打印</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Page setup</source>
+        <translation>打印设置</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="+151"/>
+        <source>Export to PDF</source>
+        <translation>导出为PDF</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Export to PostScript</source>
+        <translation>导出为PostScript</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintPropertiesWidget</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
+        <source>Form</source>
+        <translation>窗体</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Page</source>
+        <translation>页</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Advanced</source>
+        <translation>高级</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintSettingsOutput</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
+        <source>Form</source>
+        <translation>窗体</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copies</source>
+        <translation>拷贝</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Print range</source>
+        <translation>打印范围</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Print all</source>
+        <translation>打印全部</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Pages from</source>
+        <translation>页数从</translation>
+    </message>
+    <message>
+        <location/>
+        <source>to</source>
+        <translation>到</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Selection</source>
+        <translation>选择</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Output Settings</source>
+        <translation>输出设置</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copies:</source>
+        <translation>备份:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Collate</source>
+        <translation>校对</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reverse</source>
+        <translation>反向</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Options</source>
+        <translation>选项</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Color Mode</source>
+        <translation>彩色模式</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Color</source>
+        <translation>彩色</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Grayscale</source>
+        <translation>灰度</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Duplex Printing</source>
+        <translation>两部分打印</translation>
+    </message>
+    <message>
+        <location/>
+        <source>None</source>
+        <translation>无</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Long side</source>
+        <translation>长侧</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Short side</source>
+        <translation>短侧</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintWidget</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintwidget.ui"/>
+        <source>Form</source>
+        <translation>窗体</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Printer</source>
+        <translation>打印机</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Name:</source>
+        <translation>名称(&amp;N):</translation>
+    </message>
+    <message>
+        <location/>
+        <source>P&amp;roperties</source>
+        <translation>属性(&amp;R)</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Location:</source>
+        <translation>位置:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Preview</source>
+        <translation>预览</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Type:</source>
+        <translation>类型:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Output &amp;file:</source>
+        <translation>输出文件(&amp;F):</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>QProcess</name>
+    <message>
+        <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
+        <source>Could not open input redirection for reading</source>
+        <translation>无法打开用于读取的输入重定向</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+36"/>
+        <source>Could not open output redirection for writing</source>
+        <translation>无法打开用于写入的输出重定向</translation>
+    </message>
+    <message>
+        <location line="+235"/>
+        <source>Resource error (fork failure): %1</source>
+        <translation>资源错误(fork失败):%1</translation>
+    </message>
+    <message>
+        <location line="+259"/>
+        <location line="+53"/>
+        <location line="+74"/>
+        <location line="+67"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+422"/>
+        <location line="+50"/>
+        <location line="+75"/>
+        <location line="+42"/>
+        <location line="+54"/>
+        <source>Process operation timed out</source>
+        <translation>进程处理超时</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
+        <location line="+52"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
+        <location line="+50"/>
+        <source>Error reading from process</source>
+        <translation>从进程中读取时发生错误</translation>
+    </message>
+    <message>
+        <location line="+47"/>
+        <location line="+779"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+140"/>
+        <source>Error writing to process</source>
+        <translation>向进程写入时发生错误</translation>
+    </message>
+    <message>
+        <location line="-709"/>
+        <source>Process crashed</source>
+        <translation>进程已崩溃</translation>
+    </message>
+    <message>
+        <location line="+912"/>
+        <source>No program defined</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
+        <source>Process failed to start</source>
+        <translation>启动进程失败</translation>
+    </message>
+</context>
+<context>
+    <name>QProgressDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
+        <source>Cancel</source>
+        <translation>撤消</translation>
+    </message>
+</context>
+<context>
+    <name>QPushButton</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-8"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+</context>
+<context>
+    <name>QRadioButton</name>
+    <message>
+        <location line="+12"/>
+        <source>Check</source>
+        <translation>选中</translation>
+    </message>
+</context>
+<context>
+    <name>QRegExp</name>
+    <message>
+        <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
+        <source>no error occurred</source>
+        <translation>没有错误发生</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>disabled feature used</source>
+        <translation>使用了失效的特效</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>bad char class syntax</source>
+        <translation>错误的字符类语法</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>bad lookahead syntax</source>
+        <translation>错误的预测语法</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>bad repetition syntax</source>
+        <translation>错误的重复语法</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>invalid octal value</source>
+        <translation>无效的八进制数值</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>missing left delim</source>
+        <translation>找不到左分隔符</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>unexpected end</source>
+        <translation>意外的终止</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>met internal limit</source>
+        <translation>遇到内部限制</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLite2Driver</name>
+    <message>
+        <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
+        <source>Error to open database</source>
+        <translation>打开数据库错误</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Unable to begin transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unable to rollback Transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLite2Result</name>
+    <message>
+        <location line="-323"/>
+        <source>Unable to fetch results</source>
+        <translation>不能获取结果</translation>
+    </message>
+    <message>
+        <location line="+147"/>
+        <source>Unable to execute statement</source>
+        <translation>不能执行语句</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLiteDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
+        <source>Error opening database</source>
+        <translation>打开数据库错误</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Error closing database</source>
+        <translation>关闭数据库错误</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Unable to begin transaction</source>
+        <translation>不能开始事务</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unable to commit transaction</source>
+        <translation>不能提交事务</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unable to rollback transaction</source>
+        <translation>不能回滚事务</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLiteResult</name>
+    <message>
+        <location line="-400"/>
+        <location line="+66"/>
+        <location line="+8"/>
+        <source>Unable to fetch row</source>
+        <translation>不能获取行</translation>
+    </message>
+    <message>
+        <location line="+63"/>
+        <source>Unable to execute statement</source>
+        <translation>不能执行语句</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Unable to reset statement</source>
+        <translation>不能重置语句</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Unable to bind parameters</source>
+        <translation>不能绑定参数</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Parameter count mismatch</source>
+        <translation>参数数量不匹配</translation>
+    </message>
+    <message>
+        <location line="-208"/>
+        <source>No query</source>
+        <translation>没有查询</translation>
+    </message>
+</context>
+<context>
+    <name>QScrollBar</name>
+    <message>
+        <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
+        <source>Scroll here</source>
+        <translation>滚动到这里</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Left edge</source>
+        <translation>左边缘</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Top</source>
+        <translation>顶部</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Right edge</source>
+        <translation>右边缘</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Bottom</source>
+        <translation>底部</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Page left</source>
+        <translation>左一页</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
+        <source>Page up</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Page right</source>
+        <translation>右一页</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+4"/>
+        <source>Page down</source>
+        <translation>下一页</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Scroll left</source>
+        <translation>向左滚动</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Scroll up</source>
+        <translation>向上滚动</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Scroll right</source>
+        <translation>向右滚动</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Scroll down</source>
+        <translation>向下滚动</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-6"/>
+        <source>Line up</source>
+        <translation>向上排列</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Position</source>
+        <translation>位置</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Line down</source>
+        <translation>向下排列</translation>
+    </message>
+</context>
+<context>
+    <name>QSharedMemory</name>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
+        <source>%1: unable to set key on lock</source>
+        <translation>%1:无法设置锁定的键</translation>
+    </message>
+    <message>
+        <location line="+81"/>
+        <source>%1: create size is less then 0</source>
+        <translation>%1:创建的大小小于 0</translation>
+    </message>
+    <message>
+        <location line="+168"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
+        <source>%1: unable to lock</source>
+        <translation>%1:无法锁定</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>%1: unable to unlock</source>
+        <translation>%1:无法取消锁定</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
+        <source>%1: permission denied</source>
+        <translation>%1:权限被拒绝</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-22"/>
+        <source>%1: already exists</source>
+        <translation>%1:已经存在</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
+        <source>%1: doesn&apos;t exists</source>
+        <translation>%1:不存在</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
+        <source>%1: out of resources</source>
+        <translation>%1:资源耗尽了</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+7"/>
+        <source>%1: unknown error %2</source>
+        <translation>%1:未知错误 %2</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>%1: key is empty</source>
+        <translation>%1:键是空的</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>%1: unix key file doesn&apos;t exists</source>
+        <translation>%1:Unix 键文件不存在</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>%1: ftok failed</source>
+        <translation>%1:ftok 失败</translation>
+    </message>
+    <message>
+        <location line="+51"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/>
+        <source>%1: unable to make key</source>
+        <translation>%1:不能制造键</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>%1: system-imposed size restrictions</source>
+        <translation>%1:系统预设大小限制</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>%1: not attached</source>
+        <translation>%1:没有附加</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-27"/>
+        <source>%1: invalid size</source>
+        <translation>%1:无效大小</translation>
+    </message>
+    <message>
+        <location line="+68"/>
+        <source>%1: key error</source>
+        <translation>%1: 键错误</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>%1: size query failed</source>
+        <translation>%1:大小查询失败</translation>
+    </message>
+</context>
+<context>
+    <name>QShortcut</name>
+    <message>
+        <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
+        <source>Space</source>
+        <translation>空格</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Tab</source>
+        <translation>Tab</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Backtab</source>
+        <translation>Backtab</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Backspace</source>
+        <translation>Backspace</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Return</source>
+        <translation>Return</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Enter</source>
+        <translation>Enter</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ins</source>
+        <translation>Ins</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Del</source>
+        <translation>Del</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Pause</source>
+        <translation>Pause</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Print</source>
+        <translation>Print</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>SysReq</source>
+        <translation>SysReq</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Home</source>
+        <translation>Home</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>End</source>
+        <translation>End</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Left</source>
+        <translation>Left</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Up</source>
+        <translation>Up</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Right</source>
+        <translation>Right</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Down</source>
+        <translation>Down</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>PgUp</source>
+        <translation>PgUp</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>PgDown</source>
+        <translation>PgDown</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>CapsLock</source>
+        <translation>CapsLock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>NumLock</source>
+        <translation>NumLock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>ScrollLock</source>
+        <translation>ScrollLock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Menu</source>
+        <translation>Menu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Help</source>
+        <translation>Help</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Back</source>
+        <translation>后退</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Forward</source>
+        <translation>前进</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Stop</source>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Refresh</source>
+        <translation>刷新</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Volume Down</source>
+        <translation>调小音量</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Volume Mute</source>
+        <translation>静音</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Volume Up</source>
+        <translation>调大音量</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Bass Boost</source>
+        <translation>低音增强</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Bass Up</source>
+        <translation>调大低音</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Bass Down</source>
+        <translation>调小低音</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Treble Up</source>
+        <translation>调大高音</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Treble Down</source>
+        <translation>调小高音</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Media Play</source>
+        <translation>多媒体播放</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Media Stop</source>
+        <translation>多媒体停止</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Media Previous</source>
+        <translation>上一个多媒体</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Media Next</source>
+        <translation>下一个多媒体</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Media Record</source>
+        <translation>多媒体记录</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Favorites</source>
+        <translation>最喜爱的</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Search</source>
+        <translation>搜索</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Standby</source>
+        <translation>等待</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Open URL</source>
+        <translation>打开URL</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch Mail</source>
+        <translation>启动邮件</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch Media</source>
+        <translation>启动多媒体</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (0)</source>
+        <translation>启动 (0)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (1)</source>
+        <translation>启动 (1)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (2)</source>
+        <translation>启动 (2)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (3)</source>
+        <translation>启动 (3)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (4)</source>
+        <translation>启动 (4)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (5)</source>
+        <translation>启动 (5)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (6)</source>
+        <translation>启动 (6)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (7)</source>
+        <translation>启动 (7)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (8)</source>
+        <translation>启动 (8)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (9)</source>
+        <translation>启动 (9)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (A)</source>
+        <translation>启动 (A)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (B)</source>
+        <translation>启动 (B)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (C)</source>
+        <translation>启动 (C)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (D)</source>
+        <translation>启动 (D)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (E)</source>
+        <translation>启动 (E)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (F)</source>
+        <translation>启动 (F)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Print Screen</source>
+        <translation>Print Screen</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Page Up</source>
+        <translation>Page Up</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Page Down</source>
+        <translation>Page Down</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Caps Lock</source>
+        <translation>Caps Lock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Num Lock</source>
+        <translation>Num Lock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Number Lock</source>
+        <translation>Number Lock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Scroll Lock</source>
+        <translation>Scroll Lock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Insert</source>
+        <translation>Insert</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Delete</source>
+        <translation>Delete</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Escape</source>
+        <translation>Escape</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>System Request</source>
+        <translation>System Request</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Select</source>
+        <translation>选择</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Context1</source>
+        <translation>上下文1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Context2</source>
+        <translation>上下文2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Context3</source>
+        <translation>上下文3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Context4</source>
+        <translation>上下文4</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Call</source>
+        <translation>呼叫</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Hangup</source>
+        <translation>挂起</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Flip</source>
+        <translation>翻转</translation>
+    </message>
+    <message>
+        <location line="+527"/>
+        <location line="+122"/>
+        <source>Ctrl</source>
+        <translation>Ctrl</translation>
+    </message>
+    <message>
+        <location line="-121"/>
+        <location line="+125"/>
+        <source>Shift</source>
+        <translation>Shift</translation>
+    </message>
+    <message>
+        <location line="-124"/>
+        <location line="+122"/>
+        <source>Alt</source>
+        <translation>Alt</translation>
+    </message>
+    <message>
+        <location line="-121"/>
+        <location line="+117"/>
+        <source>Meta</source>
+        <translation>Meta</translation>
+    </message>
+    <message>
+        <location line="-25"/>
+        <source>+</source>
+        <translation>+</translation>
+    </message>
+    <message>
+        <location line="+46"/>
+        <source>F%1</source>
+        <translation>F%1</translation>
+    </message>
+    <message>
+        <location line="-720"/>
+        <source>Home Page</source>
+        <translation>主页</translation>
+    </message>
+</context>
+<context>
+    <name>QSlider</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+151"/>
+        <source>Page left</source>
+        <translation>左一页</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Page up</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Position</source>
+        <translation>位置</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Page right</source>
+        <translation>右一页</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Page down</source>
+        <translation>下一页</translation>
+    </message>
+</context>
+<context>
+    <name>QSocks5SocketEngine</name>
+    <message>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-67"/>
+        <source>Connection to proxy refused</source>
+        <translation>代理拒绝连接</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Connection to proxy closed prematurely</source>
+        <translation>代理连接过早关闭</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Proxy host not found</source>
+        <translation>代理主机未找到</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Connection to proxy timed out</source>
+        <translation>代理连接超时</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Proxy authentication failed</source>
+        <translation>代理认证失败</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Proxy authentication failed: %1</source>
+        <translation>代理认证失败: %1</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>SOCKS version 5 protocol error</source>
+        <translation>SOCKS版本5协议错误</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>General SOCKSv5 server failure</source>
+        <translation>常规服务器失败</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Connection not allowed by SOCKSv5 server</source>
+        <translation>连接不被SOCKSv5服务器允许</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>TTL expired</source>
+        <translation>TTL已过期</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>SOCKSv5 command not supported</source>
+        <translation>不支持的SOCKSv5命令</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Address type not supported</source>
+        <translation>不支持的地址类型</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unknown SOCKSv5 proxy error code 0x%1</source>
+        <translation>未知SOCKSv5代理,错误代码 0x%1</translation>
+    </message>
+    <message>
+        <source>Socks5 timeout error connecting to socks server</source>
+        <translation type="obsolete">连接到套接字服务器的时候,Socks5超时错误</translation>
+    </message>
+    <message>
+        <location line="+685"/>
+        <source>Network operation timed out</source>
+        <translation>网络操作超时</translation>
+    </message>
+</context>
+<context>
+    <name>QSpinBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-574"/>
+        <source>More</source>
+        <translation>更多</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Less</source>
+        <translation>更少</translation>
+    </message>
+</context>
+<context>
+    <name>QSql</name>
+    <message>
+        <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Delete this record?</source>
+        <translation>删除这条记录?</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <location line="+16"/>
+        <location line="+36"/>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <location line="-51"/>
+        <location line="+16"/>
+        <location line="+36"/>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+    <message>
+        <location line="-44"/>
+        <source>Insert</source>
+        <translation>插入</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Update</source>
+        <translation>更新</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Save edits?</source>
+        <translation>保存编辑?</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Confirm</source>
+        <translation>确认</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Cancel your edits?</source>
+        <translation>取消您的编辑?</translation>
+    </message>
+</context>
+<context>
+    <name>QSslSocket</name>
+    <message>
+        <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
+        <source>Unable to write data: %1</source>
+        <translation>不能写入数据:%1</translation>
+    </message>
+    <message>
+        <location line="+119"/>
+        <source>Error while reading: %1</source>
+        <translation>读取时错误:%1</translation>
+    </message>
+    <message>
+        <location line="+96"/>
+        <source>Error during SSL handshake: %1</source>
+        <translation>SSL握手错误:%1</translation>
+    </message>
+    <message>
+        <location line="-524"/>
+        <source>Error creating SSL context (%1)</source>
+        <translation>创建SSL上下文错误(%1)</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Invalid or empty cipher list (%1)</source>
+        <translation>无效或者空白的密码列表(%1)</translation>
+    </message>
+    <message>
+        <location line="+62"/>
+        <source>Error creating SSL session, %1</source>
+        <translation>创建SSL会话错误,%1</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Error creating SSL session: %1</source>
+        <translation>创建SSL会话错误:%1</translation>
+    </message>
+    <message>
+        <location line="-61"/>
+        <source>Cannot provide a certificate with no key, %1</source>
+        <translation>不能提供没有键的证书,%1</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Error loading local certificate, %1</source>
+        <translation>不能载入本地证书,%1</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Error loading private key, %1</source>
+        <translation>不能载入私有键,%1</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Private key does not certificate public key, %1</source>
+        <translation>私有键不能验证公有键,%1</translation>
+    </message>
+</context>
+<context>
+    <name>QSystemSemaphore</name>
+    <message>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
+        <source>%1: out of resources</source>
+        <translation>%1:资源耗尽了</translation>
+    </message>
+    <message>
+        <location line="-13"/>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+4"/>
+        <source>%1: permission denied</source>
+        <translation>%1:权限被拒绝</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1: already exists</source>
+        <translation>%1:已经存在</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1: does not exist</source>
+        <translation>%1:不存在</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+3"/>
+        <source>%1: unknown error %2</source>
+        <translation>%1:未知错误 %2</translation>
+    </message>
+</context>
+<context>
+    <name>QTDSDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
+        <source>Unable to open connection</source>
+        <translation>不能打开连接</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unable to use database</source>
+        <translation>不能使用数据库</translation>
+    </message>
+</context>
+<context>
+    <name>QTabBar</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="-326"/>
+        <source>Scroll Left</source>
+        <translation>向左滚动</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Scroll Right</source>
+        <translation>向右滚动</translation>
+    </message>
+</context>
+<context>
+    <name>QTcpServer</name>
+    <message>
+        <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+        <source>Operation on socket is not supported</source>
+        <translation>socket操作不被支持</translation>
+    </message>
+</context>
+<context>
+    <name>QTextControl</name>
+    <message>
+        <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
+        <source>&amp;Undo</source>
+        <translation>撤消(&amp;U)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Redo</source>
+        <translation>恢复(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Cu&amp;t</source>
+        <translation>剪切(&amp;T)</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Copy</source>
+        <translation>复制(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Copy &amp;Link Location</source>
+        <translation>复制链接位置(&amp;L)</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>&amp;Paste</source>
+        <translation>粘贴(&amp;P)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Select All</source>
+        <translation>选择全部</translation>
+    </message>
+</context>
+<context>
+    <name>QToolButton</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+254"/>
+        <location line="+6"/>
+        <source>Press</source>
+        <translation>按下</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <location line="+8"/>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+</context>
+<context>
+    <name>QUdpSocket</name>
+    <message>
+        <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
+        <source>This platform does not support IPv6</source>
+        <translation>这个平台不支持IPv6</translation>
+    </message>
+</context>
+<context>
+    <name>QUndoGroup</name>
+    <message>
+        <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
+        <source>Undo</source>
+        <translation>撤销</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Redo</source>
+        <translation>恢复</translation>
+    </message>
+</context>
+<context>
+    <name>QUndoModel</name>
+    <message>
+        <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
+        <source>&lt;empty&gt;</source>
+        <translation>&lt;空白&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>QUndoStack</name>
+    <message>
+        <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
+        <source>Undo</source>
+        <translation>撤销</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Redo</source>
+        <translation>恢复</translation>
+    </message>
+</context>
+<context>
+    <name>QUnicodeControlCharacterMenu</name>
+    <message>
+        <location filename="../src/gui/text/qtextcontrol.cpp" line="+884"/>
+        <source>LRM Left-to-right mark</source>
+        <translation>LRM 从左到右标记</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>RLM Right-to-left mark</source>
+        <translation>RLM 从右向左标记</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>ZWJ Zero width joiner</source>
+        <translation>ZWJ 零宽度连接器</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>ZWNJ Zero width non-joiner</source>
+        <translation>ZWNJ 零宽度非连接器</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>ZWSP Zero width space</source>
+        <translation>ZWSP 零宽度空格</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>LRE Start of left-to-right embedding</source>
+        <translation>LRE 开始从左到右嵌入</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>RLE Start of right-to-left embedding</source>
+        <translation>RLE 开始从右向左嵌入</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>LRO Start of left-to-right override</source>
+        <translation>LRO 开始从左向右覆盖</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>RLO Start of right-to-left override</source>
+        <translation>RLO 开始从右向左覆盖</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>PDF Pop directional formatting</source>
+        <translation>PDF 弹出方向格式</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Insert Unicode control character</source>
+        <translation>插入Unicode控制字符</translation>
+    </message>
+</context>
+<context>
+    <name>QWebFrame</name>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
+        <source>Request cancelled</source>
+        <translation>请求被取消了</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Request blocked</source>
+        <translation>请求被阻塞了</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Cannot show URL</source>
+        <translation>无法显示 URL</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Frame load interruped by policy change</source>
+        <translation>因为策略调整打断了桢的加载</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Cannot show mimetype</source>
+        <translation>无法显示 MIMETYPE</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>File does not exist</source>
+        <translation>文件不存在</translation>
+    </message>
+</context>
+<context>
+    <name>QWebPage</name>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+382"/>
+        <source>Bad HTTP request</source>
+        <translation>错误的 HTTP 请求</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+        <source>Submit</source>
+        <comment>default label for Submit buttons in forms on web pages</comment>
+        <translation>提交</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Submit</source>
+        <comment>Submit (input element) alt text for &lt;input&gt; elements with no alt, title, or value</comment>
+        <translation>提交</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Reset</source>
+        <comment>default label for Reset buttons in forms on web pages</comment>
+        <translation>重置</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>This is a searchable index. Enter search keywords: </source>
+        <comment>text that appears at the start of nearly-obsolete web pages in the form of a &apos;searchable index&apos;</comment>
+        <translation>这是一个可以搜索的索引。请输入要搜索的关键字:</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Choose File</source>
+        <comment>title for file button used in HTML forms</comment>
+        <translation>选择文件</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>No file selected</source>
+        <comment>text to display in file button used in HTML forms when no file is selected</comment>
+        <translation>没有文件被选择</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open in New Window</source>
+        <comment>Open in New Window context menu item</comment>
+        <translation>在新窗口中打开</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Save Link...</source>
+        <comment>Download Linked File context menu item</comment>
+        <translation>保存链接...</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Copy Link</source>
+        <comment>Copy Link context menu item</comment>
+        <translation>复制链接</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open Image</source>
+        <comment>Open Image in New Window context menu item</comment>
+        <translation>打开图片</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Save Image</source>
+        <comment>Download Image context menu item</comment>
+        <translation>保存图片</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Copy Image</source>
+        <comment>Copy Link context menu item</comment>
+        <translation>复制图片</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open Frame</source>
+        <comment>Open Frame in New Window context menu item</comment>
+        <translation>打开框架</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Copy</source>
+        <comment>Copy context menu item</comment>
+        <translation>复制</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Go Back</source>
+        <comment>Back context menu item</comment>
+        <translation>后退</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Go Forward</source>
+        <comment>Forward context menu item</comment>
+        <translation>前进</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Stop</source>
+        <comment>Stop context menu item</comment>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Reload</source>
+        <comment>Reload context menu item</comment>
+        <translation>重新载入</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Cut</source>
+        <comment>Cut context menu item</comment>
+        <translation>剪切</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Paste</source>
+        <comment>Paste context menu item</comment>
+        <translation>粘贴</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>No Guesses Found</source>
+        <comment>No Guesses Found context menu item</comment>
+        <translation>没有找到猜测</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Ignore</source>
+        <comment>Ignore Spelling context menu item</comment>
+        <translation>忽略</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Add To Dictionary</source>
+        <comment>Learn Spelling context menu item</comment>
+        <translation>添加到字典</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Search The Web</source>
+        <comment>Search The Web context menu item</comment>
+        <translation>搜索网页</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Look Up In Dictionary</source>
+        <comment>Look Up in Dictionary context menu item</comment>
+        <translation>在字典中查找</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open Link</source>
+        <comment>Open Link context menu item</comment>
+        <translation>打开链接</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Ignore</source>
+        <comment>Ignore Grammar context menu item</comment>
+        <translation>忽略</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Spelling</source>
+        <comment>Spelling and Grammar context sub-menu item</comment>
+        <translation>拼写</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Show Spelling and Grammar</source>
+        <comment>menu item title</comment>
+        <translation>显示拼写和语法</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Hide Spelling and Grammar</source>
+        <comment>menu item title</comment>
+        <translation>隐藏拼写和语法</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Check Spelling</source>
+        <comment>Check spelling context menu item</comment>
+        <translation>检查拼写</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Check Spelling While Typing</source>
+        <comment>Check spelling while typing context menu item</comment>
+        <translation>在输入时检查拼写</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Check Grammar With Spelling</source>
+        <comment>Check grammar with spelling context menu item</comment>
+        <translation>检查语法和拼写</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Fonts</source>
+        <comment>Font context sub-menu item</comment>
+        <translation>字体</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Bold</source>
+        <comment>Bold context menu item</comment>
+        <translation>粗体</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Italic</source>
+        <comment>Italic context menu item</comment>
+        <translation>意大利体</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Underline</source>
+        <comment>Underline context menu item</comment>
+        <translation>下划线</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Outline</source>
+        <comment>Outline context menu item</comment>
+        <translation>轮廓</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Direction</source>
+        <comment>Writing direction context sub-menu item</comment>
+        <translation>方向</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Text Direction</source>
+        <comment>Text direction context sub-menu item</comment>
+        <translation>文本方向</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Default</source>
+        <comment>Default writing direction context menu item</comment>
+        <translation>默认</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>LTR</source>
+        <comment>Left to Right context menu item</comment>
+        <translation>LTR</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>RTL</source>
+        <comment>Right to Left context menu item</comment>
+        <translation>RTL</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Inspect</source>
+        <comment>Inspect Element context menu item</comment>
+        <translation>检查</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>No recent searches</source>
+        <comment>Label for only item in menu that appears when clicking on the search field image, when no searches have been performed</comment>
+        <translation>没有最近的搜索</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Recent searches</source>
+        <comment>label for first item in the menu that appears when clicking on the search field image, used as embedded menu title</comment>
+        <translation>最近的搜索</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Clear recent searches</source>
+        <comment>menu item in Recent Searches menu that empties menu&apos;s contents</comment>
+        <translation>清除最近的搜索</translation>
+    </message>
+    <message>
+        <location line="+75"/>
+        <source>Unknown</source>
+        <comment>Unknown filesize FTP directory listing item</comment>
+        <translation>未知的</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1 (%2x%3 pixels)</source>
+        <comment>Title string for images</comment>
+        <translation>%1 (%2x%3 像素)</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+185"/>
+        <source>Web Inspector - %2</source>
+        <translation>网页检查员 - %2</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+58"/>
+        <source>Scroll here</source>
+        <translation>滚动到这里</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Left edge</source>
+        <translation>左边缘</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Top</source>
+        <translation>顶部</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Right edge</source>
+        <translation>右边缘</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Bottom</source>
+        <translation>底部</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Page left</source>
+        <translation>左一页</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Page up</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Page right</source>
+        <translation>右一页</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Page down</source>
+        <translation>下一页</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Scroll left</source>
+        <translation>向左滚动</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Scroll up</source>
+        <translation>向上滚动</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Scroll right</source>
+        <translation>向右滚动</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Scroll down</source>
+        <translation>向下滚动</translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
+        <source>%n file(s)</source>
+        <comment>number of chosen file</comment>
+        <translation>
+            <numerusform>%n 个文件</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
+        <source>JavaScript Alert - %1</source>
+        <translation>JavaScript警告 - %1</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>JavaScript Confirm - %1</source>
+        <translation>JavaScript确认 - %1</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>JavaScript Prompt - %1</source>
+        <translation>JavaScript提示 - %1</translation>
+    </message>
+    <message>
+        <location line="+333"/>
+        <source>Move the cursor to the next character</source>
+        <translation>移动光标到下一个字符</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the previous character</source>
+        <translation>移动光标到上一个字符</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the next word</source>
+        <translation>移动光标到下一个单词</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the previous word</source>
+        <translation>移动光标到上一个单词</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the next line</source>
+        <translation>移动光标到下一行</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the previous line</source>
+        <translation>移动光标到上一行</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the start of the line</source>
+        <translation>移动光标到行首</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the end of the line</source>
+        <translation>移动光标到行尾</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the start of the block</source>
+        <translation>移动光标到块首</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the end of the block</source>
+        <translation>移动光标到块尾</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the start of the document</source>
+        <translation>移动光标到文件开头</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Move the cursor to the end of the document</source>
+        <translation>移动光标到文件末尾</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the next character</source>
+        <translation>选中到下一个字符</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the previous character</source>
+        <translation>选中到上一个字符</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the next word</source>
+        <translation>选中到下一个单词</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the previous word</source>
+        <translation>选中到上一个单词</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the next line</source>
+        <translation>选中到下一行</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the previous line</source>
+        <translation>选中到上一行</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the start of the line</source>
+        <translation>选中到行首</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the end of the line</source>
+        <translation>选中到行尾</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the start of the block</source>
+        <translation>选中到块首</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the end of the block</source>
+        <translation>选中到块尾</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the start of the document</source>
+        <translation>选中到文件首</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select to the end of the document</source>
+        <translation>选中到文件尾</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Delete to the start of the word</source>
+        <translation>删除到单词首</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Delete to the end of the word</source>
+        <translation>删除到单词尾</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Insert a new paragraph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Insert a new line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QWhatsThisAction</name>
+    <message>
+        <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
+        <source>What&apos;s This?</source>
+        <translation>这是什么?</translation>
+    </message>
+</context>
+<context>
+    <name>QWidget</name>
+    <message>
+        <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
+        <source>*</source>
+        <translation>*</translation>
+    </message>
+</context>
+<context>
+    <name>QWizard</name>
+    <message>
+        <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
+        <source>Go Back</source>
+        <translation>返回</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Continue</source>
+        <translation>继续</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Commit</source>
+        <translation>提交</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Done</source>
+        <translation>完成</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation type="obsolete">退出</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Help</source>
+        <translation>帮助</translation>
+    </message>
+    <message>
+        <location line="-14"/>
+        <source>&lt; &amp;Back</source>
+        <translation>&lt; 上一步(&amp;B)</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>&amp;Finish</source>
+        <translation>完成(&amp;F)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Help</source>
+        <translation>帮助(&amp;H)</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>&amp;Next</source>
+        <translation>下一步(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Next &gt;</source>
+        <translation>下一步(&amp;N) &gt;</translation>
+    </message>
+</context>
+<context>
+    <name>QWorkspace</name>
+    <message>
+        <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
+        <source>&amp;Restore</source>
+        <translation>恢复(&amp;R)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Move</source>
+        <translation>移动(&amp;M)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Size</source>
+        <translation>大小(&amp;S)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Mi&amp;nimize</source>
+        <translation>最小化(&amp;N)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ma&amp;ximize</source>
+        <translation>最大化(&amp;X)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Close</source>
+        <translation>关闭(&amp;C)</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Stay on &amp;Top</source>
+        <translation>总在最前(&amp;T)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location line="+1059"/>
+        <source>Sh&amp;ade</source>
+        <translation>卷起(&amp;A)</translation>
+    </message>
+    <message>
+        <location line="-278"/>
+        <location line="+60"/>
+        <source>%1 - [%2]</source>
+        <translation>%1 - [%2]</translation>
+    </message>
+    <message>
+        <location line="-1837"/>
+        <source>Minimize</source>
+        <translation>最小化</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Restore Down</source>
+        <translation>恢复</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location line="+2053"/>
+        <source>&amp;Unshade</source>
+        <translation>展开(&amp;U)</translation>
+    </message>
+</context>
+<context>
+    <name>QXml</name>
+    <message>
+        <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
+        <source>no error occurred</source>
+        <translation>没有错误发生</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error triggered by consumer</source>
+        <translation>由消费者出发的错误</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>unexpected end of file</source>
+        <translation>意外的文件终止</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>more than one document type definition</source>
+        <translation>多于一个的文档类型定义</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error occurred while parsing element</source>
+        <translation>在解析元素的时候发生错误</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>tag mismatch</source>
+        <translation>标记不匹配</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error occurred while parsing content</source>
+        <translation>在解析内容的时候发生错误</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>unexpected character</source>
+        <translation>意外的字符</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>invalid name for processing instruction</source>
+        <translation>无效的处理指令名称</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>version expected while reading the XML declaration</source>
+        <translation>在读取XML声明的时候,版本被期待</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>wrong value for standalone declaration</source>
+        <translation>错误的独立声明的值</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+        <translation>在读取XML声明的时候,编码声明或者独立声明被期待</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>standalone declaration expected while reading the XML declaration</source>
+        <translation>在读取XML声明的时候,独立声明被期待</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error occurred while parsing document type definition</source>
+        <translation>在解析文档类型定义的时候发生错误</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>letter is expected</source>
+        <translation>字符被期待</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error occurred while parsing comment</source>
+        <translation>在解析注释的时候发生错误</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error occurred while parsing reference</source>
+        <translation>在解析参考的时候发生错误</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>internal general entity reference not allowed in DTD</source>
+        <translation>在DTD中不允许使用内部解析的通用实体参考</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>external parsed general entity reference not allowed in attribute value</source>
+        <translation>在属性值中不允许使用外部解析的通用实体参考</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>external parsed general entity reference not allowed in DTD</source>
+        <translation>在DTD中不允许使用外部解析的通用实体参考</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>unparsed entity reference in wrong context</source>
+        <translation>没有解析的错误上下文中的实体参考</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>recursive entities</source>
+        <translation>嵌套实体</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error in the text declaration of an external entity</source>
+        <translation>在一个外部实体的文本声明里有错误</translation>
+    </message>
+</context>
+<context>
+    <name>QXmlStream</name>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
+        <source>Extra content at end of document.</source>
+        <translation>文档末尾有额外内容。</translation>
+    </message>
+    <message>
+        <location line="+222"/>
+        <source>Invalid entity value.</source>
+        <translation>无效的实体值。</translation>
+    </message>
+    <message>
+        <location line="+107"/>
+        <source>Invalid XML character.</source>
+        <translation>无效的XML字符。</translation>
+    </message>
+    <message>
+        <location line="+259"/>
+        <source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
+        <translation>内容中不允许有“]]&gt;“序列。</translation>
+    </message>
+    <message>
+        <location line="+309"/>
+        <source>Namespace prefix &apos;%1&apos; not declared</source>
+        <translation>命名空间的”%1“前缀没有被声明</translation>
+    </message>
+    <message>
+        <location line="+78"/>
+        <source>Attribute redefined.</source>
+        <translation>属性重复定义。</translation>
+    </message>
+    <message>
+        <location line="+115"/>
+        <source>Unexpected character &apos;%1&apos; in public id literal.</source>
+        <translation>在公有标识文本中有意外的字符”%1“。</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Invalid XML version string.</source>
+        <translation>无效的XML版本字符串。</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unsupported XML version.</source>
+        <translation>不被支持的XML版本。</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>%1 is an invalid encoding name.</source>
+        <translation>%1是无效的编码名称。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Encoding %1 is unsupported</source>
+        <translation>编码%1不被支持。</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Standalone accepts only yes or no.</source>
+        <translation>独立运行只允许是或者否。</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invalid attribute in XML declaration.</source>
+        <translation>在XML声明中无效的属性。</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Premature end of document.</source>
+        <translation>文档过早的结束。</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Invalid document.</source>
+        <translation>无效的文档。</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>Expected </source>
+        <translation>期待的 </translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>, but got &apos;</source>
+        <translation>,但是得到的是“</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Unexpected &apos;</source>
+        <translation>意外的“</translation>
+    </message>
+    <message>
+        <location line="+210"/>
+        <source>Expected character data.</source>
+        <translation>期待的字符数据。</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-995"/>
+        <source>Recursive entity detected.</source>
+        <translation>检测到嵌套实体。</translation>
+    </message>
+    <message>
+        <location line="+516"/>
+        <source>Start tag expected.</source>
+        <translation>开始期待的标记。</translation>
+    </message>
+    <message>
+        <location line="+222"/>
+        <source>XML declaration not at start of document.</source>
+        <translation>XML声明没有在文档的开始位置。</translation>
+    </message>
+    <message>
+        <location line="-31"/>
+        <source>NDATA in parameter entity declaration.</source>
+        <translation>在参数实体声明中有NDATA。</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <source>%1 is an invalid processing instruction name.</source>
+        <translation>%1 是无效的处理指令名称。</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Invalid processing instruction name.</source>
+        <translation>无效的处理指令名称。</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-521"/>
+        <location line="+12"/>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+164"/>
+        <location line="+53"/>
+        <source>Illegal namespace declaration.</source>
+        <translation>非法的命名空间声明。</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+15"/>
+        <source>Invalid XML name.</source>
+        <translation>无效的XML名称。</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Opening and ending tag mismatch.</source>
+        <translation>开始标记和结束标记不匹配。</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Reference to unparsed entity &apos;%1&apos;.</source>
+        <translation>未解析实体“%1“的引用。</translation>
+    </message>
+    <message>
+        <location line="-13"/>
+        <location line="+61"/>
+        <location line="+40"/>
+        <source>Entity &apos;%1&apos; not declared.</source>
+        <translation>实体”%1“没有被声明。</translation>
+    </message>
+    <message>
+        <location line="-26"/>
+        <source>Reference to external entity &apos;%1&apos; in attribute value.</source>
+        <translation>在属性值中的外部实体“%1”的引用。</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>Invalid character reference.</source>
+        <translation>无效的字符引用。</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-75"/>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-823"/>
+        <source>Encountered incorrectly encoded content.</source>
+        <translation>遇到不正确的编码内容。</translation>
+    </message>
+    <message>
+        <location line="+274"/>
+        <source>The standalone pseudo attribute must appear after the encoding.</source>
+        <translation>独立运行伪属性必须出现在编码之后。</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
+        <source>%1 is an invalid PUBLIC identifier.</source>
+        <translation>%1是一个无效的公有(PUBLIC)标识符。</translation>
+    </message>
+</context>
+<context>
+    <name>QtXmlPatterns</name>
+    <message>
+        <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
+        <source>An %1-attribute with value %2 has already been declared.</source>
+        <translation>带有值 %2 的 %1 属性已经声明过了。</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
+        <translation>一个 %1 属性必须带有一个有效的 %2 作为值,但 %3 却不是。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
+        <source>Network timeout.</source>
+        <translation>网络超时。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+320"/>
+        <source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
+        <translation>元素 %1 不能被串行化,因为它出现在文档元素之外。</translation>
+    </message>
+    <message>
+        <source>Attribute element %1 can&apos;t be serialized because it appears at the top level.</source>
+        <translation type="obsolete">属性元素 %1 不能被串行化,因为它出现在最顶层。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
+        <source>Year %1 is invalid because it begins with %2.</source>
+        <translation>%1 年是无效的,因为应该从 %2 开始。</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Day %1 is outside the range %2..%3.</source>
+        <translation>%1 日是在 %2...%3 范围之外的。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Month %1 is outside the range %2..%3.</source>
+        <translation>%1 月是在 %2...%3 范围之外的。</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Overflow: Can&apos;t represent date %1.</source>
+        <translation>溢出:无法呈现数据 %1。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Day %1 is invalid for month %2.</source>
+        <translation>%1 日对于 %2 月是无效的。</translation>
+    </message>
+    <message>
+        <location line="+49"/>
+        <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
+        <translation>时间 24:%1:%2.%3 是无效的。小时是 24,但是分钟、秒和毫秒不全为 0; </translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Time %1:%2:%3.%4 is invalid.</source>
+        <translation>时间 %1:%2:%3.%4 是无效的。</translation>
+    </message>
+    <message>
+        <location line="+115"/>
+        <source>Overflow: Date can&apos;t be represented.</source>
+        <translation>溢出:数据无法被呈现。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
+        <location line="+15"/>
+        <source>At least one component must be present.</source>
+        <translation>至少有一个组件被呈现。</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>At least one time component must appear after the %1-delimiter.</source>
+        <translation>至少一个时间组件必须出现在这个 %1 界限之后。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
+        <source>No operand in an integer division, %1, can be %2.</source>
+        <translation>在整数除法中没有操作数,%1,可以是 %2。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
+        <translation>除法中的第一个操作数,%1,不能是无穷(%2)。</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The second operand in a division, %1, cannot be zero (%2).</source>
+        <translation>除法中的第二个操作数,%1,不能是零(%2)。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
+        <source>%1 is not a valid value of type %2.</source>
+        <translation>%1 不是类型为 %2 的有效值。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+223"/>
+        <source>When casting to %1 from %2, the source value cannot be %3.</source>
+        <translation>当从 %2 抛出到 %1 时,源值不能是 %3。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
+        <source>Integer division (%1) by zero (%2) is undefined.</source>
+        <translation>整数除法(%1)除零(%2)是未定义的。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Division (%1) by zero (%2) is undefined.</source>
+        <translation>除法(%1)除零(%2)是未定义的。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Modulus division (%1) by zero (%2) is undefined.</source>
+        <translation>求模除法(%1)除零(%2)是未定义的。</translation>
+    </message>
+    <message>
+        <location line="+122"/>
+        <location line="+32"/>
+        <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
+        <translation>一个类型为 %1 的值除以 %2(不是一个数值)是不允许的。</translation>
+    </message>
+    <message>
+        <location line="-20"/>
+        <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
+        <translation>一个类型为 %1 的值除以 %2 或者 %3(正负零)是不允许的。</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
+        <translation>一个类型为 %1 的值乘以 %2 或者 %3(正负无穷)是不允许的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
+        <source>A value of type %1 cannot have an Effective Boolean Value.</source>
+        <translation>一个类型为 %1 的值不能是一个有效的布尔值(Effective Boolean Value)。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+78"/>
+        <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+        <translation>有效的布尔值(Effective Boolean Value)不能被用于计算一个包含两个或者更多原子值的序列。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
+        <source>Value %1 of type %2 exceeds maximum (%3).</source>
+        <translation>类型为 %2 的值 %1 超过了最大值(%3)。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Value %1 of type %2 is below minimum (%3).</source>
+        <translation>类型为 %2 的值 %1 超过了最小值(%3)。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+91"/>
+        <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
+        <translation>类型为 %1 的值必须包含偶数个数字。值 %2 不是这样的。</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>%1 is not valid as a value of type %2.</source>
+        <translation>%1 不是类型为 %2 的有效值。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
+        <source>Operator %1 cannot be used on type %2.</source>
+        <translation>操作符 %1 不能被用于类型 %2。</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
+        <translation>操作符 %1 不能被用于类型为 %2 和 %3 的原子值。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
+        <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
+        <translation>一个被计算的属性的名称中的命名空间 URI 不能是 %1。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
+        <translation>一个被计算的属性的名称不能使用带有本地名称 %2 的命名空间 URI %1。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
+        <source>Type error in cast, expected %1, received %2.</source>
+        <translation>抛出类型错误,期望的是 %1,收到的是 %2。</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
+        <translation>当抛出到 %1 或者它的派生类时,源类型必须是同一类型,或者它必须是一个字符串类型。类型 %2 是不被允许的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
+        <source>No casting is possible with %1 as the target type.</source>
+        <translation>无法以 %1 为目标类型进行抛出。</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>It is not possible to cast from %1 to %2.</source>
+        <translation>无法从 %1 抛出到 %2。</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
+        <translation>无法抛出到 %1,因为它是一个抽象类型,并且因此无法被实例化。</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
+        <translation>无法从类型为 %2 的值 %1 抛出到 %3</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Failure when casting from %1 to %2: %3</source>
+        <translation>从 %2 抛出到 %1 失败:%3</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
+        <source>A comment cannot contain %1</source>
+        <translation>注释不能包含 %1</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>A comment cannot end with a %1.</source>
+        <translation>注释不能以 %1 结尾。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
+        <source>No comparisons can be done involving the type %1.</source>
+        <translation>对于类型 %1 不能进行比较。</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
+        <translation>在类型 %2 和 %3 的原子值之间,操作符 %1 是不可用的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+86"/>
+        <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
+        <translation>一个属性节点不能是一个文档节点的子节点。因此,这个属性 %1 所在位置是不合适的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
+        <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
+        <translation>一个库模块不能被直接评估。它必须从一个主模块中导入。</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>No template by name %1 exists.</source>
+        <translation>没有名为 %1 的模板存在。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
+        <source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
+        <translation>类型为 %1 的值不能被判断。一个判断必须是数值类型或者一个有效的布尔值(Effective Boolean Value)类型。</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>A positional predicate must evaluate to a single numeric value.</source>
+        <translation>一个定位判断必须评估一个单一数值。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+113"/>
+        <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
+        <translation>一个处理指令中的目标名称不能是任何大小写混合的 %1。因此,%2 是无效的。</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
+        <translation>%1 不是处理指令的有效目标名称。它必须是值 %2,例如 %3。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+109"/>
+        <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
+        <translation>一个路径中的最后一步必须包含节点或者原子值。它不能是两者的一个组合。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
+        <source>The data of a processing instruction cannot contain the string %1</source>
+        <translation>处理指令的数据不能包含字符串 %1</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
+        <source>No namespace binding exists for the prefix %1</source>
+        <translation>对于前缀 %1,没有存在绑定的命名空间。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
+        <source>No namespace binding exists for the prefix %1 in %2</source>
+        <translation>对于 %2 中的前缀 %1,没有存在绑定的命名空间。</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
+        <source>%1 is an invalid %2</source>
+        <translation>%1 是一个无效的 %2。</translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+        <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+        <translation>
+            <numerusform>%1 最多可以有 %n 个参数。因此 %2 是无效的。</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location line="+11"/>
+        <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
+        <translation>
+            <numerusform>%1 需要至少 %n 个参数。因此 %2 是无效的。</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
+        <source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
+        <translation>%1 的第一个参数不能是类型 %2 的。它必须是数字类型的,xs:yearMonthDuration 或者 xs:dayTimeDuration。</translation>
+    </message>
+    <message>
+        <location line="+74"/>
+        <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+        <translation>%1 的第一个参数不能是类型 %2 的。它必须是类型 %3、%4 或者 %5 的。</translation>
+    </message>
+    <message>
+        <location line="+91"/>
+        <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+        <translation>%1 的第二个参数不能是类型 %2 的。它必须是类型 %3、%4 或者 %5 的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
+        <source>%1 is not a valid XML 1.0 character.</source>
+        <translation>%1 不是一个有效的 XML 1.0 字符。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
+        <source>The first argument to %1 cannot be of type %2.</source>
+        <translation>%1 的第一个参数不能是类型 %2 的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+86"/>
+        <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
+        <translation>如果两个值都有区偏移(zone offset),它们必须拥有相同的区偏移。%1 和 %2 的区偏移是不同的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
+        <source>%1 was called.</source>
+        <translation>%1 被调用了。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
+        <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
+        <translation>%1 必须被 %2 或者 %3 跟随,不能在替换字符串的末尾。</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+        <translation>在这个替换字符串中,%1 在没有被转义的时候必须被至少一个数字跟随。</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
+        <translation>在这个替换字符串中,%1 只能被用于转义它本身或者 %2,而不是 %3</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
+        <source>%1 matches newline characters</source>
+        <translation>%1 匹配了换行符</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1 and %2 match the start and end of a line.</source>
+        <translation>%1 和 %2 匹配了一行的头和尾。</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Matches are case insensitive</source>
+        <translation>匹配是大小写不敏感的</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Whitespace characters are removed, except when they appear in character classes</source>
+        <translation>空白字符被移除了,除非当它们出现在字符类中</translation>
+    </message>
+    <message>
+        <location line="+99"/>
+        <source>%1 is an invalid regular expression pattern: %2</source>
+        <translation>%1 是正则表达式中的一个无效模式:%2</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
+        <translation>%1 是正则表达式中的一个无效标记。有效标记为:</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+17"/>
+        <source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
+        <translation>如果第一个参数是空序列或者零长度字符串(无命名空间),那么就不能指定前缀。前缀 %1 被指定了。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
+        <source>It will not be possible to retrieve %1.</source>
+        <translation>将不能获取 %1。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+54"/>
+        <source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
+        <translation>函数 %1 的第二个参数的根节点必须是一个文档节点。%2 不是一个文档节点。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
+        <source>The default collection is undefined</source>
+        <translation>默认收集(collection)是未定义的</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>%1 cannot be retrieved</source>
+        <translation>无法获取 %1</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+252"/>
+        <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
+        <translation>不支持正规化(normalization)表单 %1。被支持的表单是 %2、%3、%4 和 %5,以及无,例如空字符串(无正规化)。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+87"/>
+        <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
+        <translation>区偏移(zone offset)必须在 %1...%2 范围之内。%3 是在范围之外的。</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>%1 is not a whole number of minutes.</source>
+        <translation>%1 不是分钟的整数。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
+        <source>Required cardinality is %1; got cardinality %2.</source>
+        <translation>所需要的表间关系是 %1;得到的表间关系却是 %2。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
+        <source>The item %1 did not match the required type %2.</source>
+        <translation>项 %1 和所需的类型 %2 不匹配。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
+        <location line="+7253"/>
+        <source>%1 is an unknown schema type.</source>
+        <translation>%1 是一个未知的方案类型。</translation>
+    </message>
+    <message>
+        <location line="-6971"/>
+        <source>Only one %1 declaration can occur in the query prolog.</source>
+        <translation>只有一个 %1 的声明可以出现在查询序言中。</translation>
+    </message>
+    <message>
+        <location line="+188"/>
+        <source>The initialization of variable %1 depends on itself</source>
+        <translation>变量 %1 的初始化依赖于它本身</translation>
+    </message>
+    <message>
+        <location line="+63"/>
+        <source>No variable by name %1 exists</source>
+        <translation>没有名称为 %1 的变量存在。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
+        <source>The variable %1 is unused</source>
+        <translation>变量 %1 没有被使用</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2841"/>
+        <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+        <translation>不支持版本 %1。被支持的 XQuery 版本是 1.0。</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
+        <translation>编码方式 %1 是无效的。它必须只包含拉丁字符,必须不包含空白符号,并且必须和正则表达式 %2 匹配。</translation>
+    </message>
+    <message>
+        <location line="+55"/>
+        <source>No function with signature %1 is available</source>
+        <translation>没有签名为 %1 的可用函数。</translation>
+    </message>
+    <message>
+        <location line="+72"/>
+        <location line="+10"/>
+        <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+        <translation>默认命名空间声明必须出现在函数、变量和选项声明之前。</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+        <translation>命名空间声明必须出现在函数、变量和选项声明之前。</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Module imports must occur before function, variable, and option declarations.</source>
+        <translation>模块导入不能出现在函数、变量和选项声明之前。</translation>
+    </message>
+    <message>
+        <location line="+200"/>
+        <source>It is not possible to redeclare prefix %1.</source>
+        <translation>不能重复声明前缀 %1。</translation>
+    </message>
+    <message>
+        <source>Only the prefix %1 can be declared to bind the namespace %2. By default, it is already bound to the prefix %1.</source>
+        <translation type="obsolete">至于前缀 %1 可以被声明为和命名空间 %2 绑定。默认情况下,它已经被绑定到前缀 %1。</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Prefix %1 is already declared in the prolog.</source>
+        <translation>前缀 %1 在序言中已经声明过了。</translation>
+    </message>
+    <message>
+        <location line="+95"/>
+        <source>The name of an option must have a prefix. There is no default namespace for options.</source>
+        <translation>一个选项的名称必须带有前缀。对于选项没有默认命名空间。</translation>
+    </message>
+    <message>
+        <location line="+171"/>
+        <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+        <translation>不支持方案导入(Schema Import)特性,并且因此 %1 声明不能出现。</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>The target namespace of a %1 cannot be empty.</source>
+        <translation>%1 的目标命名空间不能为空。</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>The module import feature is not supported</source>
+        <translation>不支持模块导入特性</translation>
+    </message>
+    <message>
+        <source>A variable by name %1 has already been declared in the prolog.</source>
+        <translation type="obsolete">名称为 %1 的变量已经在序言中声明过了。</translation>
+    </message>
+    <message>
+        <location line="+52"/>
+        <source>No value is available for the external variable by name %1.</source>
+        <translation>名称为 %1 的外部变量并没有可用的值。</translation>
+    </message>
+    <message>
+        <source>The namespace for a user defined function cannot be empty(try the predefined prefix %1 which exists for cases like this)</source>
+        <translation type="obsolete">用户定义的函数的命名空间不能为空(请试试预定义的前缀 %1,它就是用于这种情况的)。</translation>
+    </message>
+    <message>
+        <location line="-4154"/>
+        <source>A construct was encountered which only is allowed in XQuery.</source>
+        <translation>遇到了一个只允许在XQuery中出现的构造。</translation>
+    </message>
+    <message>
+        <location line="+118"/>
+        <source>A template by name %1 has already been declared.</source>
+        <translation>模板%1已被声明</translation>
+    </message>
+    <message>
+        <location line="+3581"/>
+        <source>The keyword %1 cannot occur with any other mode name.</source>
+        <translation>任何其他模式名称不能出现关键字%1。</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
+        <translation>属性%1的值必须是类型%2,但%3不是。</translation>
+    </message>
+    <message>
+        <location line="+75"/>
+        <source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
+        <translation>前缀%1不能被绑定。默认的,它已被绑定到名字空间%2。</translation>
+    </message>
+    <message>
+        <location line="+312"/>
+        <source>A variable by name %1 has already been declared.</source>
+        <translation>变量%1已被声明。</translation>
+    </message>
+    <message>
+        <location line="+135"/>
+        <source>A stylesheet function must have a prefixed name.</source>
+        <translation>样式表函数必须有一个前缀名。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
+        <translation>用户定义函数的名字空间不能为空(试用为这种情况而存在的预定义前缀%1)</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source>
+        <translation>命名空间 %1 是保留的;因此用户定义的函数不能使用它。请试试预定义的前缀 %2,它就是用于这种情况的。</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
+        <translation>用户在一个库模块中定义的函数的命名空间必须和这个模块的命名空间一致。也就是说,它应该是 %1,而不是 %2</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <source>A function already exists with the signature %1.</source>
+        <translation>一个带有签名 %1 的函数已经存在。</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
+        <translation>不支持外部函数。所有支持的函数必须可以被直接使用,不能把它们声明为外部的</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
+        <translation>名称为 %1 的参数已经被声明了。每个参数名称必须唯一。</translation>
+    </message>
+    <message>
+        <location line="+179"/>
+        <source>When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal.</source>
+        <translation>当函数%1被用于样式匹配时,参数必须是变量参考或者字符串。</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
+        <translation>在XSL-T样式中,函数%1的第一个参数必须是字符串,以便用于匹配。</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching.</source>
+        <translation>在XSL-T样式中,函数%1的第一个参数必须是文字或者变量参考,以便用于匹配。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+        <translation>在XSL-T样式中,函数%1不能有第三个参数。</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
+        <translation>在XSL-T样式中,只用函数%1和%2可以用于匹配,%3不可以。</translation>
+    </message>
+    <message>
+        <location line="+63"/>
+        <source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
+        <translation>在XSL-T仰视中,不能使用%1轴,只能使用%2轴或者%3轴。</translation>
+    </message>
+    <message>
+        <location line="+126"/>
+        <source>%1 is an invalid template mode name.</source>
+        <translation>%1不是一个合法的模板模式名称。</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
+        <translation>一个在 for 表达式中绑定的变量的名称必须和这个定位变量不同。因此,这两个名称为 %1 的变量冲突。</translation>
+    </message>
+    <message>
+        <location line="+758"/>
+        <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+        <translation>不支持方案验证特性(Schema Validation Feature)。因此,也许不能使用 %1 表达式。</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+        <translation>不支持任何编译指示表达式(pragma expression)。因此,必须呈现一个回调表达式(fallback expression)。</translation>
+    </message>
+    <message>
+        <location line="+267"/>
+        <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+        <translation>每一个模板参数的名称都必须是唯一的;%2是重复的。</translation>
+    </message>
+    <message>
+        <location line="+129"/>
+        <source>The %1-axis is unsupported in XQuery</source>
+        <translation>这个 %1 轴在 XQuery 中是不被支持的。</translation>
+    </message>
+    <message>
+        <location line="+1150"/>
+        <source>%1 is not a valid name for a processing-instruction.</source>
+        <translation>%1不是一个处理指令的合法名称。</translation>
+    </message>
+    <message>
+        <location line="-7029"/>
+        <source>%1 is not a valid numeric literal.</source>
+        <translation>%1 不是一个有效的数字语义。</translation>
+    </message>
+    <message>
+        <location line="+6165"/>
+        <source>No function by name %1 is available.</source>
+        <translation>没有名称为 %1 的可用函数。</translation>
+    </message>
+    <message>
+        <location line="+102"/>
+        <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+        <translation>当这个命名空间 URI 被绑定到一个前缀 %1 时,它不能是空字符串。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>%1 is an invalid namespace URI.</source>
+        <translation>%1 是一个无效的命名空间 URI。</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>It is not possible to bind to the prefix %1</source>
+        <translation>无法绑定到这个前缀 %1。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+        <translation>命名空间 %1 只能和 %2 绑定(并且如果是这种情况,需要提前声明)。</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+        <translation>前缀 %1 只能和 %2 绑定(并且如果是这种情况,需要提前声明)。</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Two namespace declaration attributes have the same name: %1.</source>
+        <translation>两个命名空间声明属性使用了相同的名称:%1。</translation>
+    </message>
+    <message>
+        <location line="+89"/>
+        <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+        <translation>命名空间 URI 必须是一个常量并且不能使用封闭的表达式。</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>An attribute by name %1 has already appeared on this element.</source>
+        <translation>一个名称为 %1 的属性已经出现在这个元素中了。</translation>
+    </message>
+    <message>
+        <location line="+61"/>
+        <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+        <translation>一个直接元素构造器没有很好地形成。%1 后面跟着 %2。</translation>
+    </message>
+    <message>
+        <location line="+458"/>
+        <source>The name %1 does not refer to any schema type.</source>
+        <translation>名称 %1 没有指向任何方案类型。</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
+        <translation>%1 是一个复杂类型。无法抛出到复杂类型。因此,抛出到例如 %2 这样的原子类型是可以的。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+        <translation>%1 不是原子类型。只能抛出到原子类型。</translation>
+    </message>
+    <message>
+        <source>%1 is not a valid name for a processing-instruction. Therefore this name test will never match.</source>
+        <translation type="obsolete">%1 不是处理指令的有效名称。因此这个名称测试永远不会匹配。</translation>
+    </message>
+    <message>
+        <location line="+145"/>
+        <location line="+71"/>
+        <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
+        <translation>%1 不是范围内属性声明。注意方案导入特性是不被支持的。</translation>
+    </message>
+    <message>
+        <location line="+48"/>
+        <source>The name of an extension expression must be in a namespace.</source>
+        <translation>一个扩展表达式的名称必须在一个命名空间中。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+        <source>empty</source>
+        <translation>空白</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>zero or one</source>
+        <translation>零或者一</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>exactly one</source>
+        <translation>确切地一</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>one or more</source>
+        <translation>一或者更多</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>zero or more</source>
+        <translation>零或者更多</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
+        <source>Required type is %1, but %2 was found.</source>
+        <translation>需要的类型是 %1,但是找到的是 %2。</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Promoting %1 to %2 may cause loss of precision.</source>
+        <translation>把 %1 升级为 %2 会导致精度的损失。</translation>
+    </message>
+    <message>
+        <location line="+49"/>
+        <source>The focus is undefined.</source>
+        <translation>焦点未定义。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
+        <source>It&apos;s not possible to add attributes after any other kind of node.</source>
+        <translation>不能在任何其它类型节点后添加属性。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>An attribute by name %1 has already been created.</source>
+        <translation>一个名称为 %1 的属性已经被创建。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
+        <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
+        <translation>只支持 Unicode 代码点校验(Unicode Codepoint Collation)(%1)。%2 是不被支持的。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+60"/>
+        <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
+        <translation>属性 %1 不能被串行化,因为它出现在最顶层。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
+        <source>%1 is an unsupported encoding.</source>
+        <translation> %1 是不被支持的编码。</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+        <translation>%1包含了在请求编码%2中不允许的八进位值。</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+        <translation>在使用编码%3的%2中出现的代码点%1不是一个有效的XML字符。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
+        <source>Ambiguous rule match.</source>
+        <translation>含糊规则匹配。</translation>
+    </message>
+    <message>
+        <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+        <translation type="obsolete">在一个命名空间构造中,命名空间的值不能为空字符串。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+69"/>
+        <source>In a namespace constructor, the value for a namespace cannot be an empty string.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>The prefix must be a valid %1, which %2 is not.</source>
+        <translation>前缀必须是有效的%1,而%2不是。</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>The prefix %1 cannot be bound.</source>
+        <translation>前缀%1不能被绑定。</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+        <translation>只有前缀%1可以绑定到%2,反之也一样</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
+        <source>Circularity detected</source>
+        <translation>检测到环</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
+        <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+        <translation>需要参数%1,但是没有提供对应的%2。</translation>
+    </message>
+    <message>
+        <location line="-71"/>
+        <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+        <translation>参数%1已传递,但没有相应的%2存在。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
+        <source>The URI cannot have a fragment</source>
+        <translation>URI不能有片段</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
+        <source>Element %1 is not allowed at this location.</source>
+        <translation>元素%1不能在这个位置。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Text nodes are not allowed at this location.</source>
+        <translation>文本节点不能在这个位置。</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Parse error: %1</source>
+        <translation>解析错误:%1</translation>
+    </message>
+    <message>
+        <location line="+62"/>
+        <source>The value of the XSL-T version attribute must be a value of type %1, which %2 isn&apos;t.</source>
+        <translation>XSL-T版本属性的值必须是%1类型的值,而%2不是。</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
+        <translation>在XSL-T 2.0处理器中运行一个1.0的样式表。</translation>
+    </message>
+    <message>
+        <location line="+108"/>
+        <source>Unknown XSL-T attribute %1.</source>
+        <translation>未知的XSL-T属性%1。</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Attribute %1 and %2 are mutually exclusive.</source>
+        <translation>属性%1和%2彼此互斥。</translation>
+    </message>
+    <message>
+        <location line="+166"/>
+        <source>In a simplified stylesheet module, attribute %1 must be present.</source>
+        <translation>在一个简化样式表模块中,属性%1必须存在。</translation>
+    </message>
+    <message>
+        <location line="+72"/>
+        <source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
+        <translation>如果元素%1没有属性%2,那么它也不能有属性%3或者%4。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Element %1 must have at least one of the attributes %2 or %3.</source>
+        <translation>元素%1必须至少有属性%2或者%3其中一个。</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>At least one mode must be specified in the %1-attribute on element %2.</source>
+        <translation>在元素%2的%1属性中至少要指定一个模式。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
+        <source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
+        <translation>属性%1不能出现在元素%2上。只有标准属性可以出现。</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
+        <translation>属性%1不能出现在元素%2上。只有%3和标准属性是允许的。</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.</source>
+        <translation>属性%1不能出现在元素%2上。只有%3、%4和标准属性是允许的。</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
+        <translation>属性%1不能出现在元素%2上。只有%3和标准属性是允许的。</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is.</source>
+        <translation>XSL-T元素中的XSL-T属性必须放在空(null)命名空间中,而不是在XSL-T命名空间中,%1却是这个样子。</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>The attribute %1 must appear on element %2.</source>
+        <translation>属性%1必须出现在元素%2中。</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>The element with local name %1 does not exist in XSL-T.</source>
+        <translation>有本地名称%1的元素在XSL-T中不存在。</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+123"/>
+        <source>Element %1 must come last.</source>
+        <translation>元素%1必须最后出现。</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>At least one %1-element must occur before %2.</source>
+        <translation>至少一个元素%1要出现在%2之前。</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Only one %1-element can appear.</source>
+        <translation>只能出现一个元素%1。</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>At least one %1-element must occur inside %2.</source>
+        <translation>至少一个元素%1要出现在%2之内。</translation>
+    </message>
+    <message>
+        <location line="+58"/>
+        <source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
+        <translation>当属性%1出现在%2中时,不能使用顺序构造。</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
+        <translation>元素%1必须有在一个%2属性或者顺序构造。</translation>
+    </message>
+    <message>
+        <location line="+125"/>
+        <source>When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor.</source>
+        <translation>当需要参数时,不能通过属性%1或者顺序构造提供默认值。</translation>
+    </message>
+    <message>
+        <location line="+270"/>
+        <source>Element %1 cannot have children.</source>
+        <translation>元素%1不能有子元素。</translation>
+    </message>
+    <message>
+        <location line="+434"/>
+        <source>Element %1 cannot have a sequence constructor.</source>
+        <translation>元素%1不能有顺序构造。</translation>
+    </message>
+    <message>
+        <location line="+86"/>
+        <location line="+9"/>
+        <source>The attribute %1 cannot appear on %2, when it is a child of %3.</source>
+        <translation>属性%1不能出现在%2中,因为它是%3的子元素。</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>A parameter in a function cannot be declared to be a tunnel.</source>
+        <translation>函数内的参数不能被声明为通道(tunnel)。</translation>
+    </message>
+    <message>
+        <location line="+149"/>
+        <source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
+        <translation>这个处理器不能感知Schema,因此%1不能被使用。</translation>
+    </message>
+    <message>
+        <location line="+57"/>
+        <source>Top level stylesheet elements must be in a non-null namespace, which %1 isn&apos;t.</source>
+        <translation>顶级样式表元素必须是在非空命名空间中的,而%1不是。</translation>
+    </message>
+    <message>
+        <location line="+48"/>
+        <source>The value for attribute %1 on element %2 must either be %3 or %4, not %5.</source>
+        <translation>元素%2中属性%1的值必须是%3或者%4,而不是%5。</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Attribute %1 cannot have the value %2.</source>
+        <translation>属性%1的值不能是%2。</translation>
+    </message>
+    <message>
+        <location line="+58"/>
+        <source>The attribute %1 can only appear on the first %2 element.</source>
+        <translation>属性%1只能出现在前%2个元素中。</translation>
+    </message>
+    <message>
+        <location line="+99"/>
+        <source>At least one %1 element must appear as child of %2.</source>
+        <translation>%2必须至少又一个子元素%1。</translation>
+    </message>
+</context>
+<context>
+    <name>VolumeSlider</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+67"/>
+        <source>Muted</source>
+        <translation>已静音</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <location line="+15"/>
+        <source>Volume: %1%</source>
+        <translation>音量:%1%</translation>
+    </message>
+</context>
+<context>
+    <name>WebCore::PlatformScrollbar</name>
+    <message>
+        <source>Scroll here</source>
+        <translation type="obsolete">滚动到这里</translation>
+    </message>
+    <message>
+        <source>Left edge</source>
+        <translation type="obsolete">左边缘</translation>
+    </message>
+    <message>
+        <source>Top</source>
+        <translation type="obsolete">顶部</translation>
+    </message>
+    <message>
+        <source>Right edge</source>
+        <translation type="obsolete">右边缘</translation>
+    </message>
+    <message>
+        <source>Bottom</source>
+        <translation type="obsolete">底部</translation>
+    </message>
+    <message>
+        <source>Page left</source>
+        <translation type="obsolete">左一页</translation>
+    </message>
+    <message>
+        <source>Page up</source>
+        <translation type="obsolete">上一页</translation>
+    </message>
+    <message>
+        <source>Page right</source>
+        <translation type="obsolete">右一页</translation>
+    </message>
+    <message>
+        <source>Page down</source>
+        <translation type="obsolete">下一页</translation>
+    </message>
+    <message>
+        <source>Scroll left</source>
+        <translation type="obsolete">向左滚动</translation>
+    </message>
+    <message>
+        <source>Scroll up</source>
+        <translation type="obsolete">向上滚动</translation>
+    </message>
+    <message>
+        <source>Scroll right</source>
+        <translation type="obsolete">向右滚动</translation>
+    </message>
+    <message>
+        <source>Scroll down</source>
+        <translation type="obsolete">向下滚动</translation>
+    </message>
+</context>
+</TS>

二进制
kylin-os-installer-1.0.9/language/zh_CN.qm


+ 2274 - 0
kylin-os-installer-1.0.9/language/zh_CN.ts

@@ -0,0 +1,2274 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_CN" sourcelanguage="en_AS">
+<context>
+    <name>KInstaller::CreatePartitionFrame</name>
+    <message>
+        <source>Ext4 File system</source>
+        <translatorcomment>Ext4文件系统</translatorcomment>
+        <translation type="vanished">Ext4文件系统</translation>
+    </message>
+    <message>
+        <source>Ext3 File system</source>
+        <translatorcomment>Ext3文件系统</translatorcomment>
+        <translation type="vanished">Ext3文件系统</translation>
+    </message>
+    <message>
+        <source>Fat File system</source>
+        <translatorcomment>Fat文件系统</translatorcomment>
+        <translation type="vanished">Fat文件系统</translation>
+    </message>
+    <message>
+        <source>Vfat File system</source>
+        <translatorcomment>Vfat文件系统</translatorcomment>
+        <translation type="vanished">Vfat文件系统</translation>
+    </message>
+    <message>
+        <source>/</source>
+        <translatorcomment>/</translatorcomment>
+        <translation type="vanished">/</translation>
+    </message>
+    <message>
+        <source>/boot</source>
+        <translatorcomment>/boot</translatorcomment>
+        <translation type="vanished">/boot</translation>
+    </message>
+    <message>
+        <source>/home</source>
+        <translatorcomment>/home</translatorcomment>
+        <translation type="vanished">/home</translation>
+    </message>
+    <message>
+        <source>/var</source>
+        <translatorcomment>/var</translatorcomment>
+        <translation type="vanished">/var</translation>
+    </message>
+    <message>
+        <source>Swap</source>
+        <translatorcomment>Swap</translatorcomment>
+        <translation type="vanished">Swap</translation>
+    </message>
+    <message>
+        <source>/data</source>
+        <translatorcomment>/data</translatorcomment>
+        <translation type="vanished">/data</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="335"/>
+        <source>OK</source>
+        <translatorcomment>确定</translatorcomment>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <source>File system type:</source>
+        <translatorcomment>文件系统类型:</translatorcomment>
+        <translation type="vanished">文件系统类型:</translation>
+    </message>
+    <message>
+        <source>Create partition:</source>
+        <translatorcomment>创建分区:</translatorcomment>
+        <translation type="vanished">创建分区:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="337"/>
+        <source>Used to:</source>
+        <translation>用于:</translation>
+    </message>
+    <message>
+        <source>Create partition</source>
+        <translatorcomment>新建分区</translatorcomment>
+        <translation type="vanished">新建分区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="341"/>
+        <source>Mount point</source>
+        <translatorcomment>挂载点:</translatorcomment>
+        <translation>挂载点:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="343"/>
+        <source>Location for the new partition</source>
+        <translatorcomment>新分区的位置:</translatorcomment>
+        <translation>新分区的位置</translation>
+    </message>
+    <message>
+        <source>end of this space</source>
+        <translatorcomment>剩余空间尾部</translatorcomment>
+        <translation type="vanished">剩余空间尾部</translation>
+    </message>
+    <message>
+        <source>unused</source>
+        <translation type="vanished">不使用</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="338"/>
+        <source>Create Partition</source>
+        <translation>新建分区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="279"/>
+        <source>Mount point starts with &apos;/&apos;</source>
+        <translation>挂载点要以“/”开头</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="344"/>
+        <source>End of this space</source>
+        <translation>剩余空间尾部</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="345"/>
+        <source>Beginning of this space</source>
+        <translatorcomment>剩余空间头部</translatorcomment>
+        <translation>剩余空间头部</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="347"/>
+        <source>Type for the new partition:</source>
+        <translatorcomment>新分区的类型:</translatorcomment>
+        <translation>新分区的类型:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="403"/>
+        <source>Recommended efi partition size is between 256MiB and 2GiB.</source>
+        <translation>EFI分区大小256MiB到2GiB之间。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="415"/>
+        <source>Recommended boot partition size is between 500MiB and 2GiB.</source>
+        <translation>boot分区大小推荐500MiB到2GiB之间。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="435"/>
+        <source>close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <source>Swap partition size is twice the size of the memory.</source>
+        <translation type="vanished">交换分区大小是内存的两倍大小。</translation>
+    </message>
+    <message>
+        <source>EFI partition size is between 256MiB and 2GiB.</source>
+        <translation type="vanished">EFI分区大小256MiB到2GiB之间。</translation>
+    </message>
+    <message>
+        <source>Boot partition size is between 500MiB and 2GiB.</source>
+        <translation type="vanished">boot分区大小500MiB到2GiB之间。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="417"/>
+        <source>Root partition size is greater than 15GiB, 
+but Huawei machines require greater than 25GiB.</source>
+        <translation>根分区大小大于15GiB,华为机器要求大于25GiB</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the root partition size is at least 15G.
+*Please make sure the root partition is /dev/sda2 on FT1500A.</source>
+        <translation type="vanished">请保证根分区大小至少为15G。
+FT1500A上请保证根分区为/dev/sda2。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="353"/>
+        <source>Size(MiB)</source>
+        <translation>大小(MiB)</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT1500A.</source>
+        <translation type="vanished">*请保证分区大小至少为8G。
+*FT1500A上请保证分区为/dev/sda2。 {8G?} {2 ?} {1500A?}</translation>
+    </message>
+    <message>
+        <source>Size(MB)</source>
+        <translatorcomment>大小(MB)</translatorcomment>
+        <translation type="vanished">大小(MB)</translation>
+    </message>
+    <message>
+        <source>Type for the new partition</source>
+        <translatorcomment>新分区的类型:</translatorcomment>
+        <translation type="vanished">新分区的类型:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="348"/>
+        <source>Logical</source>
+        <translatorcomment>逻辑分区</translatorcomment>
+        <translation>逻辑分区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="349"/>
+        <source>Primary</source>
+        <translatorcomment>主分区</translatorcomment>
+        <translation>主分区</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</source>
+        <translatorcomment>*请保证分区大小至少为8G。
+*FT500A上请保证分区为/dev/sda2。</translatorcomment>
+        <translation type="vanished">*请保证分区大小至少为8G。
+*FT500A上请保证分区为/dev/sda2。</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::CustomPartitionFrame</name>
+    <message>
+        <source>Device for boot loader installation:</source>
+        <translatorcomment>引导加载程序安装设备:</translatorcomment>
+        <translation type="vanished">引导加载程序安装设备:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/custompartitionframe.cpp" line="295"/>
+        <source>Device for boot loader path:</source>
+        <translation>引导加载程序路径:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/custompartitionframe.cpp" line="296"/>
+        <source>Revert</source>
+        <translatorcomment>还原</translatorcomment>
+        <translation>还原</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::CustomPartitiondelegate</name>
+    <message>
+        <source>#%1 partition on the device %2 is %3 ,which will be set to %4
+</source>
+        <translation type="vanished">#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 ,which will be set to %3
+</source>
+        <translation type="vanished">#%1 分区在设备 %2 ,将被格式化为%3
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 ,which will be set to %4
+</source>
+        <translatorcomment>#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4
+</translatorcomment>
+        <translation type="vanished">#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was created
+</source>
+        <translation type="vanished">#%1 分区在设备 %2 被创建。
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was Deleted
+</source>
+        <translation type="vanished">#%1 分区在设备 %2 被删除。
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was Formated %3
+</source>
+        <translation type="vanished">#%1 分区在设备 %2 被格式化为%3。
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was mounted %3
+</source>
+        <translation type="vanished">#%1 分区在设备 %2 被挂载为%3。
+</translation>
+    </message>
+    <message>
+        <source>GPT New Partition Table was created
+</source>
+        <translation type="vanished">GPT分区表被创建
+</translation>
+    </message>
+    <message>
+        <source>MsDos New Partition Table was created
+</source>
+        <translation type="vanished">MsDos分区表被创建。
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 was Formated
+</source>
+        <translation type="obsolete">#%1 分区在设备 %2 ,将被格式化为%4
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="81"/>
+        <source>#%1 partition on the device %2 will be created.
+</source>
+        <translation>#%1 分区在设备上 %2 将被创建。
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition will be mounted %2.
+</source>
+        <translation type="vanished">#%1 分区将被挂载为 %2。
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition will be formated %2.
+</source>
+        <translation type="vanished">#%1 分区将被格式化为 %2。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="84"/>
+        <source>#%1 partition on the device %2 will be mounted %3.
+</source>
+        <translation>#%1 分区在 %2 上将被挂载为 %3。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="88"/>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="97"/>
+        <source>#%1 partition on the device %2 will be formated %3.
+</source>
+        <translation>#%1 分区在 %2 上将被格式化为 %3。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="93"/>
+        <source>#%1 partition on the device %2 will be deleted.
+</source>
+        <translation>#%1 分区在设备 %2 中将被删除。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="101"/>
+        <source>#%1 partition  on the device %2 will be mounted %3.
+</source>
+        <translation>#%1 分区在 %2 上将被挂载为 %3。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="116"/>
+        <source>%1 GPT new partition table will be created.
+</source>
+        <translation>%1 GPT 分区表将被创建。
+</translation>
+    </message>
+    <message>
+        <source>%1 GPT new partition table will be created .
+</source>
+        <translation type="vanished">%1 GPT 分区表将被创建。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/delegate/custom_partition_delegate.cpp" line="118"/>
+        <source>%1 MsDos new partition table will be created.
+</source>
+        <translation>%1 MsDos 分区表将被创建。
+</translation>
+    </message>
+    <message>
+        <source>GPT new partition table was created.
+</source>
+        <translation type="obsolete">GPT new partition table was created.
+</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::FinishedFrame</name>
+    <message>
+        <source>The system installation is complete.
+But after the system restarts, any changes you made and saved files will not be retained</source>
+        <translation type="vanished">系统安装完成。
+但系统重启后,您所做的任何改系统安装完成。动和保存的文件都不会保留</translation>
+    </message>
+    <message>
+        <source>Install Finished</source>
+        <translatorcomment>安装完成</translatorcomment>
+        <translation type="vanished">安装完成</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/finishedInstall.cpp" line="79"/>
+        <source>Installation Finished</source>
+        <translation>安装完成</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/finishedInstall.cpp" line="80"/>
+        <source>Restart</source>
+        <translation>现在重启</translation>
+    </message>
+    <message>
+        <source>restart</source>
+        <translatorcomment>现在重启</translatorcomment>
+        <translation type="vanished">现在重启</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::FullPartitionFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/quickpartitionframe.cpp" line="136"/>
+        <source>Please choose custom way to install, disk size less than 50G!</source>
+        <translation>请选择自定义方式进行安装,磁盘大小小于50G!</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/quickpartitionframe.cpp" line="137"/>
+        <source>Full disk encryption</source>
+        <translation>全盘加密</translation>
+    </message>
+    <message>
+        <source>Disk encryption</source>
+        <translation type="vanished">磁盘加密</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallErrorFrame</name>
+    <message>
+        <source>The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.To install KylinOS, please click &quot;OK&quot; to restart the computer, and then reinstall</source>
+        <translation type="vanished">计算机意外地重新启动或遇到错误。KylinOS安装无法继续。
+若要安装KylinOS,请点击“确定”重启计算机,然后重新安装。</translation>
+    </message>
+    <message>
+        <source>The computer restarted unexpectedly or encountered an error. KylinOS installation cannot continue.To install KylinOS, please click &quot;restart&quot; to restart the computer, and then reinstall</source>
+        <translatorcomment>计算机意外地重新启动或遇到错误。KylinOS安装无法继续。
+若要安装KylinOS,请点击“重启”重启计算机,然后重新安装。</translatorcomment>
+        <translation type="vanished">计算机意外地重新启动或遇到错误。KylinOS安装无法继续。
+若要安装KylinOS,请点击“重启”重启计算机,然后重新安装。</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installerrorframe.cpp" line="87"/>
+        <source>The computer restarted unexpectedly or encountered an error.
+please click &quot;restart&quot; to restart the computer, and then reinstall</source>
+        <translation>计算机出现意外或遇到错误。
+请点击“重启”重启计算机,然后重新安装。</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installerrorframe.cpp" line="90"/>
+        <source>Installation Failed</source>
+        <translation>安装失败</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installerrorframe.cpp" line="91"/>
+        <source>Restart</source>
+        <translation>现在重启</translation>
+    </message>
+    <message>
+        <source>Install Failed</source>
+        <translation type="vanished">安装失败</translation>
+    </message>
+    <message>
+        <source>restart</source>
+        <translatorcomment>现在重启</translatorcomment>
+        <translation type="vanished">现在重启</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallerMainWidget</name>
+    <message>
+        <source>Information</source>
+        <translatorcomment>提示信息</translatorcomment>
+        <translation type="vanished">提示信息</translation>
+    </message>
+    <message>
+        <source>Really to shutdown?</source>
+        <translatorcomment>是否立即关机</translatorcomment>
+        <translation type="vanished">现在关机?</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="vanished">关机</translation>
+    </message>
+    <message>
+        <source>Installation will be exited, the computer will enter the trial or restart.</source>
+        <translation type="vanished">安装将被退出,电脑进入试用或重启。</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="215"/>
+        <source>About to exit the installer, restart the computer.</source>
+        <translation>即将退出安装程序,重启计算机。</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="217"/>
+        <source>About to exit the installer and return to the trial interface.</source>
+        <translation>即将退出安装程序,回到试用界面。</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="269"/>
+        <source>Installer is about to exit and the computer will be shut down.</source>
+        <translation>安装程序即将退出,计算机将关机。</translation>
+    </message>
+    <message>
+        <source>quit installer</source>
+        <translation type="vanished">退出安装</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="452"/>
+        <source>back</source>
+        <translation>上一步</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="429"/>
+        <source>quit</source>
+        <translation>退出</translation>
+    </message>
+    <message>
+        <source>exit</source>
+        <translation type="vanished">退出</translation>
+    </message>
+    <message>
+        <source>power off</source>
+        <translatorcomment>关机</translatorcomment>
+        <translation type="vanished">关机</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installermainwidget.cpp" line="406"/>
+        <source>keyboard</source>
+        <translation>键盘</translation>
+    </message>
+    <message>
+        <source>keyborad</source>
+        <translation type="vanished">键盘</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallingFrame</name>
+    <message>
+        <source>Installing</source>
+        <translation type="vanished">正在安装</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installingframe.cpp" line="119"/>
+        <source>The system is being installed, please do not turn off the computer</source>
+        <translation>系统正在安装,请不要关闭计算机</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::InstallingOEMConfigFrame</name>
+    <message>
+        <source>Optimizing system configuration</source>
+        <translation type="obsolete">正在进行系统配置</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/installingoemconfigframe.cpp" line="66"/>
+        <source>Progressing system configuration</source>
+        <translation>正在进行系统配置</translation>
+    </message>
+    <message>
+        <source>Please wait patiently......</source>
+        <translation type="vanished">请耐心等待……</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::LanguageFrame</name>
+    <message>
+        <source>Select system language</source>
+        <translatorcomment>请选择系统语言</translatorcomment>
+        <translation type="vanished">请选择系统语言</translation>
+    </message>
+    <message>
+        <source>Welcome to use Galaxy Kylin desktop operating system</source>
+        <translatorcomment>欢迎使用银河麒麟桌面操作系统</translatorcomment>
+        <translation type="vanished">欢迎使用银河麒麟桌面操作系统</translation>
+    </message>
+    <message>
+        <source>KYLIN OS V10.1.0.4</source>
+        <translatorcomment>KYLIN OS V10.1.0.4</translatorcomment>
+        <translation type="vanished">KYLIN OS V10.1.0.4</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>下一步</translatorcomment>
+        <translation type="vanished">下一步</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KChoiceLanguage/languageframe.cpp" line="222"/>
+        <source>Select Language</source>
+        <translation>选择语言</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KChoiceLanguage/languageframe.cpp" line="225"/>
+        <source>Next</source>
+        <translation>下一步</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::LicenseFrame</name>
+    <message>
+        <source>Please read the license agreement</source>
+        <translatorcomment>请阅读许可协议</translatorcomment>
+        <translation type="vanished">请阅读许可协议</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KyLicense/licenseframe.cpp" line="156"/>
+        <source>Read License Agreement</source>
+        <translation>阅读许可协议</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KyLicense/licenseframe.cpp" line="157"/>
+        <source>I have read and agree to the terms of the agreement</source>
+        <translation>我已经阅读并同意协议条款</translation>
+    </message>
+    <message>
+        <source>Please pull down the slider to read the user agreement</source>
+        <translatorcomment>请下拉滑块阅读用户许可协议</translatorcomment>
+        <translation type="vanished">请下拉滑块阅读用户许可协议</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KyLicense/licenseframe.cpp" line="159"/>
+        <source>Next</source>
+        <translation>下一步</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>下一步</translatorcomment>
+        <translation type="vanished">下一步</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::MainPartFrame</name>
+    <message>
+        <source>Choose installation method</source>
+        <translatorcomment>选择安装方式</translatorcomment>
+        <translation type="vanished">选择安装方式</translation>
+    </message>
+    <message>
+        <source>Quick install</source>
+        <translatorcomment>快速安装</translatorcomment>
+        <translation type="vanished">快速安装</translation>
+    </message>
+    <message>
+        <source>Format the hard drive,This will delete all your programs, documents, photos, music, and any other files in all operating systems.</source>
+        <translatorcomment>格式化硬盘,
+删除硬盘内所有的程序,文档,图片,音乐及其他文件</translatorcomment>
+        <translation type="vanished">格式化硬盘,
+删除硬盘内所有的程序,文档,图片,音乐及其他文件</translation>
+    </message>
+    <message>
+        <source>SCSI1(0,0,0)(%1) 设备上第1分区为EFI,将设为vfat
+SCSI1(0,0,0)(%1) 设备上第2分区为boot,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第3分区为/,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第4分区为backup,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第5分区为data,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第6分区为swap,将设为swap
+</source>
+        <translation type="vanished">SCSI1(0,0,0)(%1) 设备上第1分区为EFI,将设为vfat
+SCSI1(0,0,0)(%1) 设备上第2分区为boot,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第3分区为/,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第4分区为backup,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第5分区为data,将设为ext4
+SCSI1(0,0,0)(%1) 设备上第6分区为swap,将设为swap</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="511"/>
+        <source>Custom install</source>
+        <translatorcomment>自定义安装</translatorcomment>
+        <translation>自定义安装</translation>
+    </message>
+    <message>
+        <source>Coexist install</source>
+        <translatorcomment>并存安装</translatorcomment>
+        <translation type="vanished">并存安装</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为EFI,将设为vfat
+%1设备上第2分区为boot,将设为ext4
+%1设备上第3分区为/,将设为ext4
+%1设备上第4分区为backup,将设为ext4
+%1设备上第5分区为data,将设为ext4
+%1设备上第6分区为swap,将设为swap
+</source>
+        <translation type="vanished">%1设备上第1分区为EFI,将设为vfat
+%1设备上第2分区为boot,将设为ext4
+%1设备上第3分区为/,将设为ext4
+%1设备上第4分区为backup,将设为ext4
+%1设备上第5分区为data,将设为ext4
+%1设备上第6分区为swap,将设为swap
+</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为 EFI, 将设为 vfat;
+%1设备上第2分区为 boot, 将设为 ext4;
+%1设备上第3分区为 /,将设为 ext4;
+%1设备上第4分区为 backup, 将设为 ext4;
+%1设备上第5分区为 data, 将设为 ext4;
+%1设备上第6分区为 swap, 将设为 swap;
+</source>
+        <translation type="vanished">%1设备上第1分区为 EFI, 将设为 vfat;
+%1设备上第2分区为 boot, 将设为 ext4;
+%1设备上第3分区为 /, 将设为 ext4;
+%1设备上第4分区为 backup, 将设为 ext4;
+%1设备上第5分区为 data, 将设为 ext4;
+%1设备上第6分区为 swap, 将设为 swap;</translation>
+    </message>
+    <message>
+        <source>Disk must be greater than 50G or No disk selected.</source>
+        <translation type="vanished">磁盘大小应大于50G或者没有选中需要安装的磁盘。</translation>
+    </message>
+    <message>
+        <source>Quick Install</source>
+        <translation type="vanished">快速安装</translation>
+    </message>
+    <message>
+        <source>Formatted the whole disk.</source>
+        <translation type="vanished">格式化整个分区。</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为 EFI, 将设为 vfat;
+%1设备上第2分区为 boot, 将设为 ext4;
+%1设备上第3分区为 /, 将设为 ext4;
+%1设备上第4分区为 backup, 将设为 ext4;
+%1设备上第5分区为 data, 将设为 ext4;
+%1设备上第6分区为 swap, 将设为 swap;
+</source>
+        <translation type="vanished">%1设备上第1分区为 EFI, 将设为 vfat;
+%1设备上第2分区为 boot, 将设为 ext4;
+%1设备上第3分区为 /, 将设为 ext4;
+%1设备上第4分区为 backup, 将设为 ext4;
+%1设备上第5分区为 data, 将设为 ext4;
+%1设备上第6分区为 swap, 将设为 swap;</translation>
+    </message>
+    <message>
+        <source>%1设备上第1分区为 boot, 将设为 ext4;
+%1设备上第2分区为 extend;
+%1设备上第5分区为 /, 将设为;ext4;
+%1设备上第6分区为 backup, 将设为;ext4;
+%1设备上第7分区为 data, 将设为;ext4;
+%1设备上第8分区为 swap, 将设为;swap;
+</source>
+        <translation type="vanished">%1 设备上第1分区为 boot, 将设为 ext4;
+%1 设备上第2分区为 extend;
+%1 设备上第5分区为 /, 将设为 ext4;
+%1 设备上第6分区为 backup, 将设为 ext4;
+%1 设备上第7分区为 data, 将设为 ext4;
+%1 设备上第8分区为 swap, 将设为 swap;</translation>
+    </message>
+    <message>
+        <source>Confirm custom installation</source>
+        <translatorcomment>确认自定义安装</translatorcomment>
+        <translation type="vanished">确认自定义安装</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="336"/>
+        <source>Coexist Install</source>
+        <translation>并存安装</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="364"/>
+        <source>Confirm Custom Installation</source>
+        <translation>确认自定义安装</translation>
+    </message>
+    <message>
+        <source>Formatted the above partitions.</source>
+        <translation type="vanished">格式化以上分区。</translation>
+    </message>
+    <message>
+        <source>Confirm the above operations.</source>
+        <translation type="obsolete">确认以上操作。</translation>
+    </message>
+    <message>
+        <source>Bootloader method inconsistent with the disk partition table type.</source>
+        <translation type="vanished">引导方式和磁盘分区表类型不一致。</translation>
+    </message>
+    <message>
+        <source>BootLoader method inconsistent with the disk partition table type.</source>
+        <translation type="vanished">引导方式和磁盘分区表类型不一致。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="293"/>
+        <source>Disk must be greater than 50G or No disk selected</source>
+        <translation>磁盘大小应大于50G或者没有选中需要安装的磁盘</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="315"/>
+        <source>Formatted the whole disk</source>
+        <translation>格式化整个磁盘。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="317"/>
+        <source>%1 设备上第1分区为 EFI, 将设为 vfat;
+%1 设备上第2分区为 boot, 将设为 ext4;
+%1 设备上第3分区为 /, 将设为 ext4;
+%1 设备上第4分区为 backup, 将设为 ext4;
+%1 设备上第5分区为 data, 将设为 ext4;
+%1 设备上第6分区为 swap, 将设为 swap;
+</source>
+        <translation>%1 设备上第 1 分区为 EFI, 将设为 vfat;
+%1 设备上第 2 分区为 boot, 将设为 ext4;
+%1 设备上第 3 分区为 /, 将设为 ext4;
+%1 设备上第 4 分区为 backup, 将设为 ext4;
+%1 设备上第 5 分区为 data, 将设为 ext4;
+%1 设备上第 6 分区为 swap, 将设为 swap;</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="324"/>
+        <source>%1 设备上第1分区为 boot, 将设为 ext4;
+%1 设备上第2分区为 extend;
+%1 设备上第5分区为 /, 将设为 ext4;
+%1 设备上第6分区为 backup, 将设为 ext4;
+%1 设备上第7分区为 data, 将设为 ext4;
+%1 设备上第8分区为 swap, 将设为 swap;
+</source>
+        <translation>%1 设备上第 1 分区为 boot, 将设为 ext4;
+%1 设备上第 2 分区为 extend;
+%1 设备上第 5 分区为 /, 将设为 ext4;
+%1 设备上第 6 分区为 backup, 将设为 ext4;
+%1 设备上第 7 分区为 data, 将设为 ext4;
+%1 设备上第 8 分区为 swap, 将设为 swap;</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="372"/>
+        <source>Confirm the above operations</source>
+        <translation>确认以上操作</translation>
+    </message>
+    <message>
+        <source>BootLoader method %1 inconsistent with the disk partition table type %2.</source>
+        <translation type="vanished">引导方式%1和磁盘分区表类型%2不一致。</translation>
+    </message>
+    <message>
+        <source>BootLoader method %1 inconsistent with the disk partition table type %2, cannot have efi partition.</source>
+        <translation type="vanished">引导方式%1和磁盘分区表类型%2不一致,不需要EFI分区。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="421"/>
+        <source>InvalidId
+</source>
+        <translation>无效
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="424"/>
+        <source>Boot filesystem invalid
+</source>
+        <translation>Boot分区文件系统不可用
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="451"/>
+        <source>Root partition size is greater than 15GiB,
+but Huawei machines require greater than 25GiB.
+</source>
+        <translation>根分区大小大于15GiB,华为机器要求大于25GiB。
+</translation>
+    </message>
+    <message>
+        <source>Boot partition number invalid
+</source>
+        <translation type="vanished">Boot分区编号不可用
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="430"/>
+        <source>Boot partition too small
+</source>
+        <translation>Boot分区太小
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="427"/>
+        <source>Boot partition not in the first partition
+</source>
+        <translation>Boot分区必须为第一分区
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="314"/>
+        <source>Confirm Full Installation</source>
+        <translation>确认全盘安装</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="392"/>
+        <source>BootLoader method %1 inconsistent with the disk partition table 
+type %2.</source>
+        <translation>引导方式%1和磁盘分区表类型%2不一致。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="395"/>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="400"/>
+        <source>BootLoader method %1 inconsistent with the disk partition table 
+type %2, cannot have efi partition.</source>
+        <translation>引导方式%1和磁盘分区表类型%2不一致,
+不需要EFI分区。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="433"/>
+        <source>No boot partition
+</source>
+        <translation>未找到boot分区
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="436"/>
+        <source>No Efi partition
+</source>
+        <translation>未找到Efi分区
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="439"/>
+        <source>Efi partition too small
+</source>
+        <translation>Efi分区太小
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="442"/>
+        <source>Only one EFI partition is allowed
+</source>
+        <translation>只允许一个EFI分区存在
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="445"/>
+        <source>Efi partition number invalid
+</source>
+        <translation>Efi分区编号不可用
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="448"/>
+        <source>No root partition
+</source>
+        <translation>未找到根分区。
+</translation>
+    </message>
+    <message>
+        <source>The root partition size is greater than 15G 
+except for Huawei 990 series which requires 25G 
+</source>
+        <translation type="vanished">根分区大小大于15GiB
+除了华为990系列需要25GiB
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="464"/>
+        <source>No backup partition
+</source>
+        <translation>未找到备份还原分区。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="473"/>
+        <source>This machine not support EFI partition
+</source>
+        <translation>当前这台机器不支持EFI分区
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="510"/>
+        <source>Full install</source>
+        <translation>全盘安装</translation>
+    </message>
+    <message>
+        <source>Full installation</source>
+        <translation type="vanished">全盘安装</translation>
+    </message>
+    <message>
+        <source>Custom installation</source>
+        <translation type="vanished">自定义安装</translation>
+    </message>
+    <message>
+        <source>Root partition too small
+</source>
+        <translation type="vanished">根分区太小
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="455"/>
+        <source>Partition too small
+</source>
+        <translation>分区太小
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="458"/>
+        <source>BackUp partition too small
+</source>
+        <translation>备份还原分区太小
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="461"/>
+        <source>Repeated mountpoint
+</source>
+        <translation>存在重复挂载的分区
+</translation>
+    </message>
+    <message>
+        <source>No data or backup partition
+</source>
+        <translation type="vanished">没有数据分区或备份还原分区
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="476"/>
+        <source>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition, other partition not proposed</source>
+        <translation>FAT16和FAT32是不完整的文件系统,
+除了EFI分区外,其他分区不建议使用。</translation>
+    </message>
+    <message>
+        <source>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition ,please choose other filesystem</source>
+        <translation type="vanished">FAT16和FAT32是不完整的文件系统,
+除了EFI分区允许外,</translation>
+    </message>
+    <message>
+        <source>BootFileSystemInvalid
+</source>
+        <translation type="vanished">Boot分区文件系统不可用
+</translation>
+    </message>
+    <message>
+        <source>BootPartitionNumberInvalid
+</source>
+        <translation type="vanished">Boot分区编号不可用
+</translation>
+    </message>
+    <message>
+        <source>BootPartitionTooSmall
+</source>
+        <translation type="vanished">Boot分区太小
+</translation>
+    </message>
+    <message>
+        <source>EfiPartitionMissing
+</source>
+        <translation type="vanished">不存在Efi分区
+</translation>
+    </message>
+    <message>
+        <source>EfiPartitionTooSmall
+</source>
+        <translation type="vanished">Efi分区太小
+</translation>
+    </message>
+    <message>
+        <source>Too many EFI partition
+</source>
+        <translation type="vanished">存在多个EFI分区
+</translation>
+    </message>
+    <message>
+        <source>EfiPartitionNumberInvalid
+</source>
+        <translation type="vanished">Efi分区编号不可用
+</translation>
+    </message>
+    <message>
+        <source>RootPartitionMissing
+</source>
+        <translation type="vanished">不存在Root分区
+</translation>
+    </message>
+    <message>
+        <source>RootPartitionTooSmall
+</source>
+        <translation type="vanished">根分区太小
+</translation>
+    </message>
+    <message>
+        <source>Mips format Boot partition to Ext3
+</source>
+        <translation type="vanished">龙芯机器Boot分区必须格式化为ext3
+</translation>
+    </message>
+    <message>
+        <source>This Mips machine not support EFI partition
+</source>
+        <translation type="vanished">当前这台龙芯机器不支持EFI分区
+</translation>
+    </message>
+    <message>
+        <source>The filesystem type FAT16 or FAT32 is not fully-function filesystem,
+except EFI partition, other partition not allowed</source>
+        <translation type="vanished">FAT16和FAT32不是一个完整的文件系统,
+除了EFI分区外,其他分区不允许使用。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="509"/>
+        <source>Choose Installation Method</source>
+        <translation>选择安装方式</translation>
+    </message>
+    <message>
+        <source>Custom Install</source>
+        <translation type="vanished">自定义安装</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/mainpartframe.cpp" line="513"/>
+        <source>Next</source>
+        <translation>下一步</translation>
+    </message>
+    <message>
+        <source>BootTooSmall
+</source>
+        <translation type="vanished">Boot分区过小
+</translation>
+    </message>
+    <message>
+        <source>EfiMissing
+</source>
+        <translation type="vanished">未找到EFI分区
+</translation>
+    </message>
+    <message>
+        <source>EfiTooSmall
+</source>
+        <translation type="vanished">EFI分区太小
+</translation>
+    </message>
+    <message>
+        <source>RootMissing
+</source>
+        <translation type="vanished">未找到根分区
+</translation>
+    </message>
+    <message>
+        <source>RootTooSmall
+</source>
+        <translation type="vanished">根分区太小
+</translation>
+    </message>
+    <message>
+        <source>PartitionTooSmall
+</source>
+        <translation type="vanished">分区太小
+</translation>
+    </message>
+    <message>
+        <source>BackUpPartitionTooSmall
+</source>
+        <translation type="vanished">备份还原分区太小
+</translation>
+    </message>
+    <message>
+        <source>RepeatedMountPoint
+</source>
+        <translation type="vanished">存在重复挂载的分区
+</translation>
+    </message>
+    <message>
+        <source>NoDataOrBackupPartition
+</source>
+        <translation type="vanished">没有数据分区或备份还原分区
+</translation>
+    </message>
+    <message>
+        <source>RootTooMany
+</source>
+        <translation type="vanished">根分区太大
+</translation>
+    </message>
+    <message>
+        <source>#%1 partition on the device %2 is %3 ,which will be set to %4</source>
+        <translatorcomment>#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4</translatorcomment>
+        <translation type="vanished">#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4</translation>
+    </message>
+    <message>
+        <source>The partition table of the following devices has changed:</source>
+        <translatorcomment>以下设备的分区表已改变:</translatorcomment>
+        <translation type="vanished">以下设备的分区表已改变:</translation>
+    </message>
+    <message>
+        <source>If you continue, the changes listed below will be written to disk. Alternatively, you can make other modifications manually.    
+Warning: Data on any partitions that have been deleted and will be formatted will be destroyed.
+</source>
+        <translatorcomment>如果您继续,以下所列出的修改内容将会写入到磁盘中。或者,您也可以手动来进行其它修改。
+
+警告:任何已删除和将要格式化的分区上的数据都将被摧毁
+</translatorcomment>
+        <translation type="vanished">如果您继续,以下所列出的修改内容将会写入到磁盘中。或者,您也可以手动来进行其它修改。
+
+警告:任何已删除和将要格式化的分区上的数据都将被摧毁
+</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>下一步</translatorcomment>
+        <translation type="vanished">下一步</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::MessageBox</name>
+    <message>
+        <source>Close</source>
+        <translation type="vanished">关机</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="vanished">取消</translation>
+    </message>
+    <message>
+        <source>OK</source>
+        <translation type="vanished">确定</translation>
+    </message>
+    <message>
+        <source>close</source>
+        <translation type="vanished">关闭</translation>
+    </message>
+    <message>
+        <source>the installer is about to exit and the computer will be shut down.</source>
+        <translation type="vanished">即将退出安装程序,关闭计算机。</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::MiddleFrameManager</name>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/middleframemanager.cpp" line="49"/>
+        <source>next</source>
+        <translatorcomment>下一步</translatorcomment>
+        <translation>下一步</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::ModifyPartitionFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="45"/>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="187"/>
+        <source>unused</source>
+        <translation>不使用</translation>
+    </message>
+    <message>
+        <source>format this partition</source>
+        <translation type="vanished">格式化此分区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="173"/>
+        <source>Format partition.</source>
+        <translation>格式化此分区。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="174"/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="176"/>
+        <source>Used to:</source>
+        <translation>用于:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="177"/>
+        <source>Modify Partition</source>
+        <translation>修改分区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="288"/>
+        <source>Mount point starts with &apos;/&apos;</source>
+        <translation>挂载点要以“/”开头</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="342"/>
+        <source>close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <source>Modify partition</source>
+        <translation type="vanished">修改分区</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the root partition size is at least 15G.
+*Please make sure the root partition is /dev/sda2 on FT1500A.</source>
+        <translation type="vanished">请保证根分区大小至少为15G。
+FT1500A上请保证根分区为/dev/sda2。</translation>
+    </message>
+    <message>
+        <source>*Please ensure that the partition size is at least 8G.
+*Please make sure the partition is /dev/sda2 on FT500A.</source>
+        <translation type="vanished">*请保证分区大小至少为8G。
+*FT500A上请保证分区为/dev/sda2。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="182"/>
+        <source>Mount point</source>
+        <translation>挂载点</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::PartitionDelegate</name>
+    <message>
+        <source>#%1 partition on the device %2 is %3 ,which will be set to %4</source>
+        <translatorcomment>#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4</translatorcomment>
+        <translation type="vanished">#%1 分区在设备 %2 上被挂载%3 ,将被格式化为%4</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::PartitionFrame</name>
+    <message>
+        <source>Prompt message display in quick installation</source>
+        <translation type="vanished">快速安装中的提示信息显示</translation>
+    </message>
+    <message>
+        <source>Quick installation will format the entire hard drive!Please back up important data, and then select the system installation location.</source>
+        <translation type="vanished">快速安装将格式化整个硬盘!
+请备份好重要数据,然后选择系统安装位置。</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::PrepareInstallFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/prepareinstallframe.cpp" line="115"/>
+        <source>Check it and click [Start Installation]</source>
+        <translatorcomment>勾选后点击[开始安装]</translatorcomment>
+        <translation>勾选后点击[开始安装]</translation>
+    </message>
+    <message>
+        <source>Please back up the data and confirm the follow-up operation</source>
+        <translation type="vanished">请备份好数据,然后确认后续操作</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/prepareinstallframe.cpp" line="154"/>
+        <source>Start Installation</source>
+        <translation>开始安装</translation>
+    </message>
+    <message>
+        <source>The following partitions will be operated:</source>
+        <translation type="vanished">以下分区将被操作:</translation>
+    </message>
+    <message>
+        <source>The following partitions are going to be formatted:</source>
+        <translatorcomment>以下分区将被格式化:</translatorcomment>
+        <translation type="vanished">以下分区将被格式化:</translation>
+    </message>
+    <message>
+        <source>The above partition will be formatted!</source>
+        <translation type="vanished">以上分区将被格式化</translation>
+    </message>
+    <message>
+        <source>Quick installation will format the entire hard drive!</source>
+        <translatorcomment>快速安装将格式化整个硬盘!</translatorcomment>
+        <translation type="vanished">快速安装将格式化整个硬盘!</translation>
+    </message>
+    <message>
+        <source>start install</source>
+        <translatorcomment>开始安装</translatorcomment>
+        <translation type="vanished">开始安装</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::TableWidgetView</name>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="277"/>
+        <source>yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="277"/>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="309"/>
+        <source>no</source>
+        <translation>否</translation>
+    </message>
+    <message>
+        <source>change</source>
+        <translatorcomment>修改 </translatorcomment>
+        <translation type="vanished">修改 </translation>
+    </message>
+    <message>
+        <source>delete</source>
+        <translatorcomment>删除</translatorcomment>
+        <translation type="vanished">删除 </translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="150"/>
+        <source>Create partition table</source>
+        <translation>创建分区表</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="279"/>
+        <source>delete </source>
+        <translation>删除 </translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="283"/>
+        <source>change </source>
+        <translation>修改 </translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="303"/>
+        <source>freespace</source>
+        <translation>空闲</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="311"/>
+        <source>add </source>
+        <translation>添加 </translation>
+    </message>
+    <message>
+        <source>add</source>
+        <translatorcomment>添加</translatorcomment>
+        <translation type="vanished">添加 </translation>
+    </message>
+    <message>
+        <source>device</source>
+        <translatorcomment>设备</translatorcomment>
+        <translation type="vanished">设备</translation>
+    </message>
+    <message>
+        <source>Format Disk</source>
+        <translatorcomment>格式化磁盘</translatorcomment>
+        <translation type="vanished">格式化磁盘</translation>
+    </message>
+    <message>
+        <source>Create Partition table</source>
+        <translatorcomment>新建分区表</translatorcomment>
+        <translation type="vanished">新建分区表</translation>
+    </message>
+    <message>
+        <source>type</source>
+        <translatorcomment>类型</translatorcomment>
+        <translation type="vanished">类型</translation>
+    </message>
+    <message>
+        <source>system</source>
+        <translatorcomment>系统</translatorcomment>
+        <translation type="vanished">系统</translation>
+    </message>
+    <message>
+        <source>Mount point</source>
+        <translation type="obsolete">挂载点</translation>
+    </message>
+    <message>
+        <source>size</source>
+        <translatorcomment>大小</translatorcomment>
+        <translation type="vanished">大小</translation>
+    </message>
+    <message>
+        <source>Mounted</source>
+        <translatorcomment>挂载点</translatorcomment>
+        <translation type="vanished">挂载点</translation>
+    </message>
+    <message>
+        <source>used</source>
+        <translatorcomment>已用</translatorcomment>
+        <translation type="vanished">已用</translation>
+    </message>
+    <message>
+        <source>Installed system</source>
+        <translation type="obsolete">已装系统</translation>
+    </message>
+    <message>
+        <source>format</source>
+        <translatorcomment>格式化</translatorcomment>
+        <translation type="vanished">格式化</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::TimeZoneFrame</name>
+    <message>
+        <source>Select system timezone</source>
+        <translatorcomment>请选择系统时区</translatorcomment>
+        <translation type="vanished">请选择系统时区</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translatorcomment>下一步</translatorcomment>
+        <translation type="vanished">下一步</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KTimeZone/timezoneframe.cpp" line="117"/>
+        <source>Select Timezone</source>
+        <translation>选择时区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KTimeZone/timezoneframe.cpp" line="118"/>
+        <source>Next</source>
+        <translation>下一步</translation>
+    </message>
+</context>
+<context>
+    <name>KInstaller::UserFrame</name>
+    <message>
+        <source>password is empty!</source>
+        <translatorcomment>密码不一致</translatorcomment>
+        <translation type="vanished">密码不一致</translation>
+    </message>
+    <message>
+        <source>Only letters,numbers,underscore and hyphen are allowed.</source>
+        <translation type="vanished">只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;。</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed.</source>
+        <translation type="vanished">用户名只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;。</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.</source>
+        <translation type="vanished">用户名只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;,长度不超过32位。</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 64 bits in length.</source>
+        <translation type="vanished">用户名只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;,长度不超过64位。</translation>
+    </message>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.
+Start with a lowercase letter</source>
+        <translation type="vanished">用户名只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;。
+以小写字母开头。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="342"/>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed, no more than 32 bits in length.
+but start with a lowercase letter</source>
+        <translation>用户名以小写字母开头,只允许字母,
+数字,下划线&quot;_&quot;和连接符&quot;-&quot;,长度不超过32位。
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="352"/>
+        <source>Your hostname only letters,numbers,underscore and hyphen are allowed, no more than 64 bits in length.</source>
+        <translation>主机名只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;,长度不超过64位。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="371"/>
+        <source>Two password entries are inconsistent!</source>
+        <translatorcomment>两次密码输入不一致</translatorcomment>
+        <translation>两次密码输入不一致!</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="417"/>
+        <source>Create User</source>
+        <translation>创建用户</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="423"/>
+        <source>Automatic login on boot</source>
+        <translation>开机自动登录</translation>
+    </message>
+    <message>
+        <source>computer name</source>
+        <translation type="vanished">主机名</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="419"/>
+        <source>hostname</source>
+        <translation>主机名</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="421"/>
+        <source>enter the password again</source>
+        <translation>再次输入密码</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="422"/>
+        <source>Next</source>
+        <translation>下一步</translation>
+    </message>
+    <message>
+        <source>No password required for login</source>
+        <translation type="vanished">登录系统时不需要密码</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="427"/>
+        <source>Detecte fingerprint device.
+ Fingerprint entry can be done through [biometric management tool].</source>
+        <translation>检测到指纹设备。
+可通过“生物特征管理工具”进行指纹录入。</translation>
+    </message>
+    <message>
+        <source>No password required for login.</source>
+        <translation type="vanished">登录系统时不需要密码。</translation>
+    </message>
+    <message>
+        <source>Create user</source>
+        <translatorcomment>创建用户</translatorcomment>
+        <translation type="vanished">创建用户</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="418"/>
+        <source>username</source>
+        <translatorcomment>用户名</translatorcomment>
+        <translation>用户名</translation>
+    </message>
+    <message>
+        <source>Computer name</source>
+        <translatorcomment>计算机名</translatorcomment>
+        <translation type="vanished">计算机名</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="420"/>
+        <source>new password</source>
+        <translatorcomment>新密码</translatorcomment>
+        <translation>新密码</translation>
+    </message>
+    <message>
+        <source>Enter the password again</source>
+        <translatorcomment>再次输入密码</translatorcomment>
+        <translation type="vanished">再次输入密码</translation>
+    </message>
+    <message>
+        <source>next</source>
+        <translation type="vanished">下一步</translation>
+    </message>
+    <message>
+        <source>auto login</source>
+        <translatorcomment>自动登录</translatorcomment>
+        <translation type="vanished">自动登录</translation>
+    </message>
+    <message>
+        <source>Password required for login</source>
+        <translatorcomment>登录时需要密码</translatorcomment>
+        <translation type="vanished">登录时需要密码</translation>
+    </message>
+    <message>
+        <source>Password length cannot be less than 6 characters
+Password must have two different characters</source>
+        <translation type="vanished">密码长度不能少于6个字符
+密码必须有两种不同字符</translation>
+    </message>
+</context>
+<context>
+    <name>KServer::EncryptSetFrame</name>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="71"/>
+        <source>password:</source>
+        <translation>密码:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="72"/>
+        <source>confirm password:</source>
+        <translation>确认密码:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="106"/>
+        <source>Please keep your password properly.If you forget it,
+you will not be able to access the disk data.</source>
+        <translation>请妥善保管您的密码。如忘记密码,将无法访问磁盘数据。</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="183"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="184"/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="257"/>
+        <source>close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/encryptsetframe.cpp" line="294"/>
+        <source>Two password entries are inconsistent!</source>
+        <translation>两次密码输入不一致!</translation>
+    </message>
+</context>
+<context>
+    <name>KServer::MessageBox</name>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/messagebox.cpp" line="130"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/messagebox.cpp" line="131"/>
+        <source>OK</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/ui_unit/messagebox.cpp" line="203"/>
+        <source>close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>KeyboardWidget</name>
+    <message>
+        <location filename="../src/plugins/VirtualKeyboard/src/keyboardwidget.ui" line="29"/>
+        <source>KeyboardWidget</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LevelScrollDiskView</name>
+    <message>
+        <source>Please choose custom way to install!</source>
+        <translation type="vanished">请选择自定义方式进行安装!</translation>
+    </message>
+</context>
+<context>
+    <name>PartitionFrame</name>
+    <message>
+        <source>Prompt message display in quick installation</source>
+        <translatorcomment>快速安装中的提示信息显示</translatorcomment>
+        <translation type="vanished">快速安装中的提示信息显示</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Your username only letters,numbers,underscore and hyphen are allowed.</source>
+        <translation type="vanished">用户名只允许字母,数字,下划线&quot;_&quot;和连接符&quot;-&quot;。</translation>
+    </message>
+    <message>
+        <source>Two password entries are inconsistent!</source>
+        <translation type="vanished">两次密码输入不一致!</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="451"/>
+        <source>good</source>
+        <translatorcomment>好</translatorcomment>
+        <translation>好</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="454"/>
+        <source>Is empty</source>
+        <translatorcomment>空</translatorcomment>
+        <translation>空</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="457"/>
+        <source>The first character is wrong</source>
+        <translatorcomment>首字符错误</translatorcomment>
+        <translation>首字符错误</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="460"/>
+        <source>Invalid character error</source>
+        <translatorcomment>无效字符</translatorcomment>
+        <translation>无效字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="463"/>
+        <source>Too long</source>
+        <translatorcomment>太长</translatorcomment>
+        <translation>太长</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="466"/>
+        <source>Too short</source>
+        <translatorcomment>太短</translatorcomment>
+        <translation>太短</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="469"/>
+        <source>No number error</source>
+        <translatorcomment>没有数字</translatorcomment>
+        <translation>没有数字</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="472"/>
+        <source>No lowercase letter errors</source>
+        <translatorcomment>没有数字</translatorcomment>
+        <translation>无小写字母</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="475"/>
+        <source>No capital letter errors</source>
+        <translatorcomment>无大写字母</translatorcomment>
+        <translation>无大写字母</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="478"/>
+        <source>No special character error</source>
+        <translatorcomment>无特殊字符</translatorcomment>
+        <translation>无特殊字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KUserRegister/userframe.cpp" line="481"/>
+        <source>Too weak</source>
+        <translatorcomment>太弱</translatorcomment>
+        <translation>太弱</translation>
+    </message>
+    <message>
+        <source>Create extended partition %1</source>
+        <translatorcomment>创建扩展分区 %1</translatorcomment>
+        <translation type="vanished">创建扩展分区 %1</translation>
+    </message>
+    <message>
+        <source>Create new partition %1,%2</source>
+        <translatorcomment>创建新分区</translatorcomment>
+        <translation type="vanished">创建新分区 %1,%2</translation>
+    </message>
+    <message>
+        <source>Create new partition %1,%2,%3</source>
+        <translatorcomment>创建新分区</translatorcomment>
+        <translation type="vanished">创建新分区 %1,%2,%3</translation>
+    </message>
+    <message>
+        <source>Delete partition %1</source>
+        <translatorcomment>创建新分区</translatorcomment>
+        <translation type="vanished">删除分区 %1</translation>
+    </message>
+    <message>
+        <source>Format %1 partition, %2</source>
+        <translatorcomment>格式化分区</translatorcomment>
+        <translation type="vanished">格式化分区</translation>
+    </message>
+    <message>
+        <source>Format partition %1,%2,%3</source>
+        <translatorcomment>格式化分区</translatorcomment>
+        <translation type="vanished">格式化分区 %1,%2,%3</translation>
+    </message>
+    <message>
+        <source>%1 partition mountPoint %2</source>
+        <translatorcomment>分区挂载点</translatorcomment>
+        <translation type="vanished">分区挂载点</translation>
+    </message>
+    <message>
+        <source>New Partition Table %1 %2</source>
+        <translatorcomment>新分区表</translatorcomment>
+        <translation type="vanished">新分区表 %1 %2</translation>
+    </message>
+    <message>
+        <source>Reset size %1 partition</source>
+        <translatorcomment>重置分区</translatorcomment>
+        <translation type="vanished">重置分区</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="9"/>
+        <source>wd</source>
+        <translation>西部数据</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="11"/>
+        <source>seagate</source>
+        <translation>希捷</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="13"/>
+        <source>hitachi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="15"/>
+        <source>samsung</source>
+        <translation>三星</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="17"/>
+        <source>toshiba</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="19"/>
+        <source>fujitsu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="21"/>
+        <source>maxtor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="23"/>
+        <source>IBM</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="25"/>
+        <source>excelStor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="27"/>
+        <source>lenovo</source>
+        <translation>联想</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="29"/>
+        <source>other</source>
+        <translation>其他</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/disktype_name.cpp" line="31"/>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="299"/>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="80"/>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="310"/>
+        <source>Freespace</source>
+        <translation>空闲</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="290"/>
+        <source>kylin data partition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/partition_unit.cpp" line="297"/>
+        <source>Swap partition</source>
+        <translation>交换分区</translation>
+    </message>
+    <message>
+        <location filename="../src/Installer_main/main.cpp" line="94"/>
+        <source>Show debug informations</source>
+        <translation>展现调试信息</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="191"/>
+        <source>Extended partition %1 has 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="193"/>
+        <source>Create new partition %1,%2
+</source>
+        <translation type="unfinished">创建新分区 %1,%2
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="196"/>
+        <source>Create new partition %1,%2,%3
+</source>
+        <translation type="unfinished">创建新分区 %1,%2,%3
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="201"/>
+        <source>Delete partition %1
+</source>
+        <translation type="unfinished">删除分区 %1
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="205"/>
+        <source>Format %1 partition, %2
+</source>
+        <translation type="unfinished">格式化分区 {1 ?} {2
+?}</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="208"/>
+        <source>Format partition %1,%2,%3
+</source>
+        <translation type="unfinished">格式化分区 %1,%2,%3
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="213"/>
+        <source>%1 partition mountPoint %2
+</source>
+        <translation type="unfinished">分区挂载点 {1 ?} {2
+?}</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="217"/>
+        <source>New Partition Table %1
+</source>
+        <translation type="unfinished">新分区表 %1
+</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/partman/operationdisk.cpp" line="220"/>
+        <source>Reset size %1 partition
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="21"/>
+        <source>KCommand::m_cmdInstance is not init.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="58"/>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="90"/>
+        <source>WorkingPath is not found. 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/kcommand.cpp" line="82"/>
+        <source>Shell file is empty, does not continue. 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>device</source>
+        <translation>设备</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>type</source>
+        <translation>类型</translation>
+    </message>
+    <message>
+        <source>Mounted</source>
+        <translation type="vanished">挂载点</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>size</source>
+        <translation>大小</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="147"/>
+        <source>mounted</source>
+        <translation>挂载点</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="148"/>
+        <source>used</source>
+        <translation>已用</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="148"/>
+        <source>system</source>
+        <translation>系统</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/frames/tablewidgetview.cpp" line="148"/>
+        <source>format</source>
+        <translation>格式化</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="69"/>
+        <source>Memory allocation error when setting</source>
+        <translation>设置时发生内存分配错误</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="73"/>
+        <source>Memory allocation error</source>
+        <translation>内存分配错误</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="75"/>
+        <source>The password is the same as the old one</source>
+        <translation>这个密码和原来的相同</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="77"/>
+        <source>The password is a palindrome</source>
+        <translation>密码是一个回文</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="79"/>
+        <source>The password differs with case changes only</source>
+        <translation>密码仅包含大小写变更</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="81"/>
+        <source>The password is too similar to the old one</source>
+        <translation>密码与原来的太相似</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="83"/>
+        <source>The password contains the user name in some form</source>
+        <translation>密码包含了某种形式的用户名</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="85"/>
+        <source>The password contains words from the real name of the user in some form</source>
+        <translation>密码包含了某种形式的用户真实名称</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="87"/>
+        <source>The password contains forbidden words in some form</source>
+        <translation>密码包含了某种形式的禁用单词</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld digits</source>
+        <translation type="vanished">密码包含的数字字符少于 %ld 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="92"/>
+        <source>The password contains too few digits</source>
+        <translation>密码包含的数字字符少于 %ld 位</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld uppercase letters</source>
+        <translation type="vanished">密码包含的大写字母少于 %ld 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="97"/>
+        <source>The password contains too few uppercase letters</source>
+        <translation>密码包含的大写字母太少</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld lowercase letters</source>
+        <translation type="vanished">密码包含的小写字母少于 %ld 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="102"/>
+        <source>The password contains too few lowercase letters</source>
+        <translation>密码包含的小写字母太少</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld non-alphanumeric characters</source>
+        <translation type="vanished">密码包含的特殊字符少于 %ld 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="107"/>
+        <source>The password contains too few non-alphanumeric characters</source>
+        <translation>密码包含的特殊字符数太少</translation>
+    </message>
+    <message>
+        <source>The password is shorter than %ld characters</source>
+        <translation type="vanished">密码少于 %ld 个字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="112"/>
+        <source>The password is too short</source>
+        <translation>密码太短了</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="114"/>
+        <source>The password is just rotated old one</source>
+        <translation>密码仅是旧密码的反转</translation>
+    </message>
+    <message>
+        <source>The password contains less than %ld character classes</source>
+        <translation type="vanished">密码包含的字符类型少于 %ld 种</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="119"/>
+        <source>The password does not contain enough character classes</source>
+        <translation>密码未包含足够的字符类型</translation>
+    </message>
+    <message>
+        <source>The password contains more than %ld same characters consecutively</source>
+        <translation type="vanished">密码包含了超过 %ld 位相同连续字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="124"/>
+        <source>The password contains too many same characters consecutively</source>
+        <translation>密码包含了太多相同连续字符</translation>
+    </message>
+    <message>
+        <source>The password contains more than %ld characters of the same class consecutively</source>
+        <translation type="vanished">密码包含了超过 %ld 位同类型连续字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="129"/>
+        <source>The password contains too many characters of the same class consecutively</source>
+        <translation>密码包含了过多的同类型连续字符</translation>
+    </message>
+    <message>
+        <source>The password contains monotonic sequence longer than %ld characters</source>
+        <translation type="vanished">密码包含超过%ld 个字符的单调序列</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="90"/>
+        <source>The password contains less than %1 digits</source>
+        <translation>密码包含的数字字符少于 %1 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="95"/>
+        <source>The password contains less than %1 uppercase letters</source>
+        <translation>密码包含的大写字母少于 %1 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="100"/>
+        <source>The password contains less than %1 lowercase letters</source>
+        <translation>密码包含的小写字母少于 %1 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="105"/>
+        <source>The password contains less than %1 non-alphanumeric characters</source>
+        <translation>密码包含的特殊字符少于 %1 位</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="110"/>
+        <source>The password is shorter than %1 characters</source>
+        <translation>密码少于 %1 个字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="117"/>
+        <source>The password contains less than %1 character classes</source>
+        <translation>密码包含的字符类型少于 %1 种</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="122"/>
+        <source>The password contains more than %1 same characters consecutively</source>
+        <translation>密码包含了超过 %1 位相同连续字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="127"/>
+        <source>The password contains more than %1 characters of the same class consecutively</source>
+        <translation>密码包含了超过 %1 位同类型连续字符</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="132"/>
+        <source>The password contains monotonic sequence longer than %1 characters</source>
+        <translation>密码包含超过%1 个字符的单调序列</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="134"/>
+        <source>The password contains too long of a monotonic character sequence</source>
+        <translation>密码包含过长的单调字符序列</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="136"/>
+        <source>No password supplied</source>
+        <translation>密码未提供</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="138"/>
+        <source>Cannot obtain random numbers from the RNG device</source>
+        <translation>无法从 RNG 随机数生成设备获得随机数</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="140"/>
+        <source>Password generation failed - required entropy too low for settings</source>
+        <translation>密码生成失败 - 未达到设置所需的熵</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="143"/>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="145"/>
+        <source>The password fails the dictionary check</source>
+        <translation>密码未通过字典检查</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="149"/>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="151"/>
+        <source>Unknown setting</source>
+        <translation>未知设置</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="155"/>
+        <source>Bad integer value of setting</source>
+        <translation>错误的整数设置值</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="157"/>
+        <source>Bad integer value</source>
+        <translation>错误的整数设置值</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="161"/>
+        <source>Setting %s is not of integer type</source>
+        <translation>设置 %s 并非整数类型</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="163"/>
+        <source>Setting is not of integer type</source>
+        <translation>设置并非整数类型</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="167"/>
+        <source>Setting %s is not of string type</source>
+        <translation>设置 %s 并非字符串类型</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="169"/>
+        <source>Setting is not of string type</source>
+        <translation>设置并非字符串类型</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="171"/>
+        <source>Opening the configuration file failed</source>
+        <translation>打开配置文件失败</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="173"/>
+        <source>The configuration file is malformed</source>
+        <translation>配置文件格式不正确</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="175"/>
+        <source>Fatal failure</source>
+        <translation>致命的错误</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/PluginService/sysInfo/kpasswordcheck.cpp" line="177"/>
+        <source>Unknown error</source>
+        <translation>未知的错误</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="358"/>
+        <source>unused</source>
+        <translation>不使用</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/KPartition/createpartitionframe.cpp" line="360"/>
+        <location filename="../src/plugins/KPartition/modifypartitionframe.cpp" line="189"/>
+        <source>kylin-data</source>
+        <translation>用户数据分区</translation>
+    </message>
+</context>
+</TS>

+ 23 - 0
kylin-os-installer-1.0.9/scripts/after/15setup-sourceslist

@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" == "true" ]]; then
+  return 0
+elif [[ "${is_ghost}" == "true" ]]; then
+  return 0
+fi
+
+[ -d /cdrom/pool ] || \
+  return 0
+
+#sed -i "s/^/#/g" /etc/apt/sources.list
+
+#TODO, 优化获取方式
+CODENAME=$(ls -l /cdrom/dists | awk '/^d/{print $NF}')
+
+mv /target/etc/apt/sources.list{,.bak}
+echo "deb file:/cdrom ${CODENAME} main restricted" >>/target/etc/apt/sources.list
+
+# todo, set timeout
+chroot /target apt-get update --allow-insecure-repositories -y

+ 61 - 0
kylin-os-installer-1.0.9/scripts/after/21setup-auditmode

@@ -0,0 +1,61 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" == "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" == "true" ]]; then
+    return 0
+# audit mode
+elif [[ "${is_audit_mode}" == "false" ]]; then
+    return 0
+fi
+
+USERNAME=test
+PASSWORD=qwe123
+AUTO_LOGIN=1
+KUID=11111
+# sudo 免密
+echo "test ALL=(ALL) NOPASSWD: ALL" >/target/etc/sudoers.d/test
+
+### TODO, 重复代码
+# groups zz adm cdrom sudo dip plugdev lpadmin sambashare
+msg "设置用户 ${USERNAME}"
+chroot /target useradd -u ${KUID} -m -s /bin/bash "${USERNAME}"
+chroot /target sh -c "echo ${USERNAME}:${PASSWORD} | chpasswd"
+
+add_groups() {
+    user_default_groups=(adm cdrom sudo dip plugdev lpadmin sambashare debian-tor libvirtd lxd)
+    for group in ${user_default_groups[*]}; do
+        chroot /target sh -c 'adduser ${USERNAME} $group || true'
+    done
+}
+
+set_autologin() {
+    if [[ "${AUTO_LOGIN}" == "1" ]]; then
+        if [[ -d /target/etc/lightdm ]]; then
+            # Configure LightDM autologin
+            LightDMCustomFile=/target/etc/lightdm/lightdm.conf
+            AutologinParameters="autologin-guest=false\n\
+autologin-user=${USERNAME}\n\
+autologin-user-timeout=0"
+        if ! grep -qs '^autologin-user' ${LightDMCustomFile}; then
+                if ! grep -qs '^\[Seat:\*\]' ${LightDMCustomFile}; then
+                    echo '[Seat:*]' >>${LightDMCustomFile}
+                fi
+                sed -i "s/\[Seat:\*\]/\[SeatDefaults]\n${AutologinParameters}/" ${LightDMCustomFile}
+            # 设置 test 自动登录
+            else
+                sed -i "s/^autologin-user=.*$/autologin-user=${USERNAME}/g" ${LightDMCustomFile}
+            fi
+        fi
+    fi
+}
+
+add_groups
+
+set_autologin
+
+if [[ "${is_audit_mode}" == "true" ]]; then
+    chroot /target /bin/sh -c "unset DEBIAN_HAS_FRONTEND && apt-get install -y kylin-audit-mode"
+fi

+ 64 - 0
kylin-os-installer-1.0.9/scripts/after/95install-third-party-packages

@@ -0,0 +1,64 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" == "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" == "true" ]]; then
+    return 0
+fi
+
+# TODO, repeat code
+### Install third-party software packages for local
+do_third_party() {
+    dirname=$1
+    rsync -aHA ${dirname}/third-party /target/tmp
+    chroot /target /bin/sh -c 'find /tmp/third-party -name "*.deb" >/tmp/third-party/packages.list'
+    count=$(cat /target/tmp/third-party/packages.list | wc -l)
+    if [ $count -ne 0 ]; then
+        chroot /target /bin/sh -c 'unset DEBIAN_HAS_FRONTEND && UCF_FORCE_CONFFNEW=YES dpkg -i $(cat /tmp/third-party/packages.list | xargs)'
+    fi
+    rm -rf /target/tmp/third-party
+}
+
+install_package() {
+    pkgdir=$1
+    if [[ ! -d /target/tmp/third-party/${pkgdir} ]]; then
+        return
+    fi
+
+    count=$(find /target/tmp/third-party/${pkgdir} -name "*.deb" | wc -l)
+
+    if [ $count -ne 0 ]; then
+        chroot /target /bin/sh -c "unset DEBIAN_HAS_FRONTEND && UCF_FORCE_CONFFNEW=YES dpkg -i /tmp/third-party/${pkgdir}/*.deb"
+    fi
+}
+
+do_990third_party() {
+    dirname=$1
+    rsync -aHA ${dirname}/third-party /target/tmp
+    install_package "common"
+
+    if [[ "${hw_typedata}" =~ "pguv" ]]; then
+        install_package "pguv"
+    elif [[ "${hw_typedata}" =~ "klvu" ]]; then
+        install_package "klvu"
+    elif [[ "${hw_typedata}" =~ "klvv" ]]; then
+        install_package "klvv"
+    fi
+
+    rm -rf /target/tmp/third-party
+}
+
+if [[ -d /home/kylin/third-party ]]; then
+    do_third_party "/home/kylin"
+fi
+
+### Install third-party software packages
+if [[ -d /cdrom/third-party ]]; then
+    if [[ "${is_990_9a0}" == true ]]; then
+        do_990third_party "/cdrom"
+    else
+        do_third_party "/cdrom"
+    fi
+fi

+ 13 - 0
kylin-os-installer-1.0.9/scripts/after/96rsetup-sourceslist

@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+if [[ -f /target/etc/apt/sources.list.bak ]]; then
+    mv /target/etc/apt/sources.list{.bak,}
+fi

+ 79 - 0
kylin-os-installer-1.0.9/scripts/autopart-efi.sh

@@ -0,0 +1,79 @@
+#!/bin/bash
+
+set -e
+
+# /boot/efi 512M
+# /boot     1024M
+# /         6
+# /backup   free/9
+# /data     4
+# swap      ram*1.2
+
+if [[ "${is_efi}" == "false" ]]; then
+    return 0
+fi
+
+### efi
+efi=512
+
+
+### boot
+boot=1024
+
+disk=$(get_value devpath)
+size=$(fdisk -s "${disk}")
+real_size=$(( size / 1024 ))
+
+
+### backup
+backup_size=$(( real_size / 9 ))
+if [ $backup_size -lt 16384 ]; then
+    backup_size=16384
+elif [ $backup_size -gt 102400 ]; then
+    backup_size=102400
+fi
+
+
+ram=$(cat < /proc/meminfo  | grep ^MemTotal: | awk '{print $2}')
+
+
+### swap
+swap=$(( ram * 12 / 1024 / 10 ))
+if [ $swap -gt 64000 ]; then
+    swap=64000
+fi
+swapfile=0
+if [[ "${is_swapfile}" == "true" ]]; then
+    swapfile=${swap}
+    swap=0
+fi
+free_size=$(( real_size - efi - boot - backup_size - swap ))
+
+
+### root
+root_size=$(( free_size * 6 / 10 ))
+if [ $root_size -lt 16384 ]; then
+    root_size=16384
+    if [ $free_size -lt 0 ]; then
+        exit 1
+    fi
+elif [ $root_size -gt 102400 ]; then
+    root_size=102400
+fi
+root_size=$((root_size + swapfile))
+
+
+### data
+data_size=$(( free_size - root_size ))
+if [ $data_size -lt 0 ]; then
+    exit 1
+fi
+
+
+echo "efi: $efi"
+echo "boot: $boot"
+echo "root_size: $root_size"
+echo "backup_size: $backup_size"
+echo "data_size: $data_size"
+echo "swap: $swap"
+echo "swapfile: $swapfile"

+ 74 - 0
kylin-os-installer-1.0.9/scripts/autopart.sh

@@ -0,0 +1,74 @@
+#!/bin/bash
+
+set -e
+
+# /boot     1024M
+# /         6
+# /backup   free/9
+# /data     4
+# swap      ram*1.2
+
+if [[ "${is_efi}" == "true" ]]; then
+    return
+fi
+
+
+### boot
+boot=1024
+
+
+disk=$(get_value devpath)
+size=$(fdisk -s "${disk}")
+real_size=$(( size / 1024 ))
+
+
+### backup
+backup_size=$(( real_size / 9 ))
+if [ $backup_size -lt 16384 ]; then
+    backup_size=16384
+elif [ $backup_size -gt 102400 ]; then
+    backup_size=102400
+fi
+
+
+ram=$(cat < /proc/meminfo  | grep ^MemTotal: | awk '{print $2}')
+
+
+### swap
+swap=$(( ram * 12 / 1024 / 10 ))
+if [ $swap -gt 64000 ]; then
+    swap=64000
+fi
+swapfile=0
+if [[ "${is_swapfile}" == "true" ]]; then
+    swapfile=${swap}
+    swap=0
+fi
+free_size=$(( real_size - boot - backup_size - swap ))
+
+
+### root
+root_size=$(( free_size * 6 / 10 ))
+if [ $root_size -lt 16384 ]; then
+    root_size=16384
+    if [ $free_size -lt 0 ]; then
+        exit 1
+    fi
+elif [ $root_size -gt 102400 ]; then
+    root_size=102400
+fi
+root_size=$((root_size + swapfile))
+
+### data
+data_size=$(( free_size - root_size ))
+if [ $data_size -lt 0 ]; then
+    exit 1
+fi
+
+
+echo "boot: $boot"
+echo "root_size: $root_size"
+echo "backup_size: $backup_size"
+echo "data_size: $data_size"
+echo "swap: $swap"
+echo "swapfile: $swapfile"

+ 19 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/00setup-timezone

@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" == "true" ]]; then
+  return 0
+elif [[ "${is_ghost}" == "true" ]]; then
+  return 0
+fi
+
+TIMEZONE=$(get_value timezone)
+
+msg "设置时区为 ${TIMEZONE}"
+ln -sf /usr/share/zoneinfo/"${TIMEZONE}" /etc/localtime
+
+# 写入硬件时间
+if [[ -f /dev/rtc0 ]]; then
+  hwclock -w
+fi

+ 22 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/03setup-locale

@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+LANGUAGE=$(get_value language)
+
+echo "zh_CN.UTF-8 UTF-8
+en_US.UTF-8 UTF-8" >/etc/locale.gen
+
+msg "设置语言为 ${LANGUAGE}"
+echo "LANG=${LANGUAGE}.UTF-8" >/etc/default/locale
+if [[ "${LANGUAGE}" = "zh_CN" ]]; then
+    echo "LANGUAGE=\"zh_CN:zh\"" >>/etc/default/locale
+fi
+
+locale-gen

+ 29 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/06setup-hostname

@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+HOSTNAME=$(get_value hostname)
+# oem mode
+if [[ "${is_oem_mode}" = "true" ]]; then
+    HOSTNAME=oem-PC
+fi
+
+echo "${HOSTNAME}" >/etc/hostname
+#hostnamectl set-hostname "${HOSTNAME}"
+
+echo -e "127.0.0.1\tlocalhost
+127.0.1.1\t${HOSTNAME}
+
+# The following lines are desirable for IPv6 capable hosts
+::1     ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+" >/etc/hosts

+ 23 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/15setup-sourceslist

@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+[ -d /cdrom/pool ] || \
+    return 0
+
+sed -i "s/^/#/g" /etc/apt/sources.list
+
+#TODO, 优化获取方式
+CODENAME=$(ls -l /cdrom/dists | awk '/^d/{print $NF}')
+
+rm -rf /etc/apt/sources.list.d
+echo "deb file:/cdrom ${CODENAME} main restricted" >>/etc/apt/sources.list
+
+# todo, set timeout
+apt-get update --allow-insecure-repositories -y

+ 65 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/18setup-bootloader

@@ -0,0 +1,65 @@
+#!/bin/bash
+
+set -e
+
+karch=$(uname -m)
+# 字符串包含
+if [[ ${karch} =~ "mips" ]] || [[ ${karch} =~ "loongarch" ]]; then
+    do_mips_bootloader
+    return 0
+elif [[ ${karch} =~ "sw_64" ]]; then
+    do_sw64_bootloader
+    return 0
+fi
+
+# TODO, IS_UEFI
+
+#TODO, -f lsb-release
+#DISTRO_ID=$(lsb_release -is)
+automatic=$(get_value automatic-installation)
+disk=
+if [[ "${automatic}" = "1" ]]; then
+    disk=$(get_value devpath)
+else
+    disktmp1=$(get_value bootloader)
+    disk="${disktmp1%% *}"
+fi
+
+BOOT_METHOD="UEFI"
+if [[ "${is_efi}" = "false" ]]; then
+    BOOT_METHOD="legacy"
+fi
+
+case ${BOOT_METHOD} in
+  "UEFI")
+    # TODO, 统一安装
+    if ! dpkg -l | grep -q grub-efi; then
+        apt install -y grub-efi efibootmgr
+    fi
+    grub-install || \
+        msg "grub-install for uefi failed!!!"
+#TODO, copy to boot
+#TODO, fix boot order
+
+    ;;
+  "legacy")
+    if [[ $(uname -m) != "aarch64" ]]; then
+        apt install -y grub-pc
+    fi
+    grub-install --no-floppy --force "${disk}" || \
+        msg "grub-install for legacy failed!!!"
+
+    ;;
+esac
+
+# 兼容性考虑
+copy_efi() {
+    if [[ $(uname -m) = "aarch64" ]]; then
+        if [[ -f /boot/efi/EFI/kylin/grubaa64.efi ]]; then
+            mkdir -p /boot/efi/EFI/neokylin
+            cp /boot/efi/EFI/kylin/grubaa64.efi /boot/efi/EFI/neokylin/grubaa64.efi
+        fi
+    fi
+}
+
+copy_efi

+ 65 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/21setup-user

@@ -0,0 +1,65 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+USERNAME=$(get_value username)
+PASSWORD=$(get_value_bytearray password)
+AUTO_LOGIN=$(get_value autologin)
+KUID=1000
+
+# oem mode
+if [[ "${is_oem_mode}" = "true" ]]; then
+    USERNAME=oem
+    PASSWORD=qwe123
+    AUTO_LOGIN=1
+    KUID=29999
+    # sudo 免密
+    echo "oem ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/oem
+fi
+
+### TODO
+# groups zz adm cdrom sudo dip plugdev lpadmin sambashare
+msg "设置用户 ${USERNAME}"
+useradd -m -s /bin/bash -u ${KUID} "${USERNAME}"
+usermod -c "${USERNAME}" "${USERNAME}"
+echo "${USERNAME}:${PASSWORD}" | chpasswd
+# /etc/sudoers
+
+add_groups() {
+    user_default_groups=(adm cdrom sudo dip plugdev lpadmin sambashare debian-tor libvirtd lxd)
+    for group in ${user_default_groups[*]}; do
+        adduser ${USERNAME} $group || true
+    done
+}
+
+set_autologin() {
+    if [[ "${AUTO_LOGIN}" = "1" ]]; then
+        if [[ -d /etc/lightdm ]]; then
+            # Configure LightDM autologin
+            LightDMCustomFile=/etc/lightdm/lightdm.conf
+            AutologinParameters="autologin-guest=false\n\
+autologin-user=${USERNAME}\n\
+autologin-user-timeout=0"
+        if ! grep -qs '^autologin-user' ${LightDMCustomFile}; then
+                if ! grep -qs '^\[Seat:\*\]' ${LightDMCustomFile}; then
+                    echo '[Seat:*]' >>${LightDMCustomFile}
+                fi
+                sed -i "s/\[Seat:\*\]/\[SeatDefaults]\n${AutologinParameters}/" ${LightDMCustomFile}
+            # oem config scenario
+            else
+                #sed -i "s/^\(\(str  *\)\?autologin-user\)=.*$/\1=${USERNAME}/g;" /etc/lightdm/lightdm.conf
+                sed -i "s/^autologin-user=.*$/autologin-user=${USERNAME}/g" ${LightDMCustomFile}
+            fi
+        fi
+    fi
+}
+
+add_groups
+
+set_autologin

+ 44 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/27generate-fstab

@@ -0,0 +1,44 @@
+#!/bin/bash
+
+set -e
+
+# TODO, 多次重复
+disk=$(get_value devpath)
+if echo "${disk}" | grep -q nvme; then
+    disk=${disk}p
+fi
+
+readonly GENFSTAB="${IN_TARGET}"/in_chroot/genfstab
+if [[ -f "${GENFSTAB}" ]]; then
+    if [[ "${is_990_9a0}" = "true" ]]; then
+        bash "${GENFSTAB}" -p / >/etc/fstab
+        # 990, 9a0 不自动挂载 swapfile
+        sed -i "/${swap_file}/d" /etc/fstab
+        sed -i '/\/boot/s/rw,/ro,/g' /etc/fstab
+    else
+        bash "${GENFSTAB}" -p -U / >/etc/fstab
+    fi
+fi
+
+# 删除安装介质
+tac /etc/fstab | sed -n '/cdrom/,+1!p' | tac >/etc/fstab.new
+mv /etc/fstab.new /etc/fstab
+
+# 修改 /data, /backup 的 options
+#sed -n '/\/data /p' /etc/fstab |
+#    while read dev mp fs options; do
+#        sed -i "s/\\$mp .*/\\$mp     \t$fs     \trw,user,x-gvfs-show,nosuid,nofail     \t0 0/" /etc/fstab
+#    done
+
+sed -n '/\/backup /p' /etc/fstab |
+    while read dev mp fs options; do
+        sed -i "s/\\$mp .*/\\$mp     \t$fs     \tnoauto     \t0 0/" /etc/fstab
+    done
+
+# add bind
+if grep -q '/home' /proc/mounts; then
+    echo -e "/data/home     \t/home     \tnone     \tdefaults,bind     \t0 0" >>/etc/fstab
+fi
+if grep -q '/root' /proc/mounts; then
+    echo -e "/data/root     \t/root     \tnone     \tdefaults,bind     \t0 0" >>/etc/fstab
+fi

+ 23 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/30update-initramfs

@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+if [[ $(uname -m) =~ 'sw_64' ]]; then
+    return 0
+fi
+
+if grep -q 'zh_CN' /etc/default/locale; then
+    touch /usr/share/initramfs-tools/scripts/lang_is_zh
+else
+    rm -f /usr/share/initramfs-tools/scripts/lang_is_zh || true
+fi
+
+if [[ -f /usr/sbin/update-initramfs ]]; then
+    msg "更新 initramfs"
+    update-initramfs -u
+    sync
+fi
+
+if [[ -f /usr/sbin/update-grub ]]; then
+    update-grub
+fi

+ 8 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/321hw-next-boot

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_990_9a0}" = "true" ]]; then
+    hw_next_boot "hd"
+fi
+

+ 13 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/32oem-test

@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+if [[ -f /cdrom/QC ]]; then
+    /usr/bin/rsync -a /cdrom/QC/ /usr/share/oem-test/
+fi

+ 15 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/95install-extra-packages

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+### automatically install the packages listed in the /cdrom/.kylin-post-packages
+if [[ -f /cdrom/.kylin-post-packages ]]; then
+    msg "安装光盘源列表包"
+    /bin/sh -c "unset DEBIAN_HAS_FRONTEND && apt-get install -y $(cat /cdrom/.kylin-post-packages | grep -v ^\# | xargs)"
+fi

+ 34 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/96-resetup-sourceslist

@@ -0,0 +1,34 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+fi
+
+sed -i "/^deb cdrom:/s/^/#/" /etc/apt/sources.list
+
+### TODO v10pro only
+DISTRIB_RELEASE=$(grep -r PRETTY_NAME= /etc/os-release)
+DISTRIB_RELEASE=${DISTRIB_RELEASE#*=}
+
+case ${DISTRIB_RELEASE} in
+    '"Kylin V10 SP1"')
+        echo "
+deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main restricted universe multiverse
+deb http://archive.kylinos.cn/kylin/partner 10.1 main" >/etc/apt/sources.list
+        ;;
+    '"Kylin V10"')
+        echo "
+deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.0 main restricted universe multiverse
+" >/etc/apt/sources.list
+        ;;
+    *)
+        echo "
+deb http://archive.launchpad.dev/kylin/ v101 main restricted universe multiverse
+deb http://archive.launchpad.dev/kylin-desktop/ v101 main restricted universe multiverse
+" >/etc/apt/sources.list
+        ;;
+esac

+ 18 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/97rsync-license

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+set -e
+
+# 删除链接,重新拷贝授权文件
+if [[ -f /etc/.kyinfo ]]; then
+    rm -f /etc/.kyinfo
+    if [[ -f /cdrom/.kyinfo ]]; then
+        rsync -a /cdrom/.kyinfo /etc
+    fi
+fi
+
+if [[ -f /etc/LICENSE ]]; then
+    rm -f /etc/LICENSE
+    if [[ -f /cdrom/LICENSE ]]; then
+        rsync -a /cdrom/LICENSE /etc
+    fi
+fi

+ 30 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/99remove-packages

@@ -0,0 +1,30 @@
+#!/bin/bash
+
+set -e
+
+# remove package list
+packages_list_remove=(
+    kylin-os-installer
+    casper
+    ukui-installer-wayland
+    ubiquity
+)
+
+# oem mode 不删除安装包
+if [[ "${is_oem_mode}" = "true" ]]; then
+    packages_list_remove=(
+        ukui-installer-wayland
+    )
+    if [[ "${is_990_9a0}" = "true" ]]; then
+    packages_list_remove=(
+        casper
+    )
+    fi
+fi
+
+for i in ${packages_list_remove[*]}; do
+    if dpkg -l | grep -q $i; then
+        msg "移除 $i"
+        apt purge -y $i
+    fi
+done

+ 53 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/99setup-oem-service

@@ -0,0 +1,53 @@
+#!/bin/bash
+
+set -e
+
+if [[ "${is_minimal}" = "true" ]]; then
+    return 0
+elif [[ "${is_ghost}" = "true" ]]; then
+    return 0
+elif [[ "${is_oem_mode}" = "false" ]]; then
+    return 0
+fi
+
+oem_mode=
+if grep -q 'test-mode' /proc/cmdline; then
+    oem_mode="oem-automatic"
+    # 拷贝自定义的配置
+    if [[ -f /cdrom/kyple-installer.cfg ]]; then
+        cp /cdrom/kyple-installer.cfg /usr/share/kylin-os-installer/ky-installer.cfg
+        echo 'test-mode=true' >>/usr/share/kylin-os-installer/ky-installer.cfg
+    fi
+else
+    oem_mode="oem"
+fi
+
+if grep -q 'auti-mode' /proc/cmdline; then
+    if [[ -f /usr/share/kylin-os-installer/data/oem-qc.service ]]; then
+        cp -a /usr/share/kylin-os-installer/data/oem-qc.service /lib/systemd/system	
+        cp -a /usr/share/kylin-os-installer/scripts/oem-second /usr/sbin/
+     #   /bin/systemctl disable oem-qc.service
+    fi
+else
+    cp -a /usr/share/applications/kylin-os-installer.desktop /etc/xdg/autostart
+    sed -i "/Exec/d" /etc/xdg/autostart/kylin-os-installer.desktop
+    echo "Exec=/usr/bin/kylin-os-installer-${oem_mode}" >>/etc/xdg/autostart/kylin-os-installer.desktop
+fi
+
+
+
+if [[ "${is_990_9a0}" = "true" ]]; then
+    sed -i "s/kylin-os-installer/kylin-os-installer-${oem_mode}/" /usr/bin/start-installer
+else
+#    cp -a /usr/share/applications/kylin-os-installer.desktop /etc/xdg/autostart
+#    sed -i "/Exec/d" /etc/xdg/autostart/kylin-os-installer.desktop
+#    echo "Exec=/usr/bin/kylin-os-installer-${oem_mode}" >>/etc/xdg/autostart/kylin-os-installer.desktop
+
+    /bin/systemctl disable kylin-os-installer
+fi
+
+# 删除用户与重启 lightdm
+if [[ -f /usr/share/kylin-os-installer/data/delete-oem-user.service ]]; then
+    cp -a /usr/share/kylin-os-installer/data/delete-oem-user.service /lib/systemd/system
+    /bin/systemctl disable delete-oem-user.service
+fi

+ 513 - 0
kylin-os-installer-1.0.9/scripts/in_chroot/genfstab

@@ -0,0 +1,513 @@
+#!/bin/bash
+
+shopt -s extglob
+
+# generated from util-linux source: libmount/src/utils.c
+declare -A pseudofs_types=([anon_inodefs]=1
+                           [autofs]=1
+                           [bdev]=1
+                           [bpf]=1
+                           [binfmt_misc]=1
+                           [cgroup]=1
+                           [cgroup2]=1
+                           [configfs]=1
+                           [cpuset]=1
+                           [debugfs]=1
+                           [devfs]=1
+                           [devpts]=1
+                           [devtmpfs]=1
+                           [dlmfs]=1
+                           [efivarfs]=1
+                           [fuse.gvfs-fuse-daemon]=1
+                           [fusectl]=1
+                           [hugetlbfs]=1
+                           [mqueue]=1
+                           [nfsd]=1
+                           [none]=1
+                           [pipefs]=1
+                           [proc]=1
+                           [pstore]=1
+                           [ramfs]=1
+                           [rootfs]=1
+                           [rpc_pipefs]=1
+                           [securityfs]=1
+                           [sockfs]=1
+                           [spufs]=1
+                           [sysfs]=1
+                           [tmpfs]=1)
+
+# generated from: pkgfile -vbr '/fsck\..+' | awk -F. '{ print $NF }' | sort
+declare -A fsck_types=([cramfs]=1
+                       [exfat]=1
+                       [ext2]=1
+                       [ext3]=1
+                       [ext4]=1
+                       [ext4dev]=1
+                       [jfs]=1
+                       [minix]=1
+                       [msdos]=1
+                       [reiserfs]=1
+                       [vfat]=1
+                       [xfs]=1)
+
+out() { printf "$1 $2\n" "${@:3}"; }
+error() { out "==> ERROR:" "$@"; } >&2
+warning() { out "==> WARNING:" "$@"; } >&2
+msg() { out "==>" "$@"; }
+msg2() { out "  ->" "$@";}
+die() { error "$@"; exit 1; }
+
+ignore_error() {
+  "$@" 2>/dev/null
+  return 0
+}
+
+in_array() {
+  local i
+  for i in "${@:2}"; do
+    [[ $1 = "$i" ]] && return 0
+  done
+  return 1
+}
+
+chroot_add_mount() {
+  mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
+}
+
+chroot_maybe_add_mount() {
+  local cond=$1; shift
+  if eval "$cond"; then
+    chroot_add_mount "$@"
+  fi
+}
+
+chroot_policyd() {
+  cat << EOF > "$1/usr/sbin/policy-rc.d"
+#!/bin/sh
+exit 101
+EOF
+  chmod +x "$1/usr/sbin/policy-rc.d"
+}
+
+chroot_setup() {
+  CHROOT_ACTIVE_MOUNTS=()
+  [[ $(trap -p EXIT) ]] && die '(BUG): attempting to overwrite existing EXIT trap'
+  trap "chroot_teardown $1" EXIT
+
+  chroot_add_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
+  chroot_add_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
+  ignore_error chroot_maybe_add_mount "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
+      efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
+  chroot_add_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
+  chroot_add_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
+  chroot_add_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
+  chroot_add_mount /run "$1/run" --bind &&
+  chroot_add_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
+  chroot_policyd "$1"
+}
+
+chroot_teardown() {
+  if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then
+    umount "${CHROOT_ACTIVE_MOUNTS[@]}"
+  fi
+  unset CHROOT_ACTIVE_MOUNTS
+  rm -f "$1/usr/sbin/policy-rc.d"
+}
+
+try_cast() (
+  _=$(( $1#$2 ))
+) 2>/dev/null
+
+valid_number_of_base() {
+  local base=$1 len=${#2} i=
+
+  for (( i = 0; i < len; i++ )); do
+    try_cast "$base" "${2:i:1}" || return 1
+  done
+
+  return 0
+}
+
+mangle() {
+  local i= chr= out=
+  local {a..f}= {A..F}=
+
+  for (( i = 0; i < ${#1}; i++ )); do
+    chr=${1:i:1}
+    case $chr in
+      [[:space:]\\])
+        printf -v chr '%03o' "'$chr"
+        out+=\\
+        ;;
+    esac
+    out+=$chr
+  done
+
+  printf '%s' "$out"
+}
+
+unmangle() {
+  local i= chr= out= len=$(( ${#1} - 4 ))
+  local {a..f}= {A..F}=
+
+  for (( i = 0; i < len; i++ )); do
+    chr=${1:i:1}
+    case $chr in
+      \\)
+        if valid_number_of_base 8 "${1:i+1:3}" ||
+            valid_number_of_base 16 "${1:i+1:3}"; then
+          printf -v chr '%b' "${1:i:4}"
+          (( i += 3 ))
+        fi
+        ;;
+    esac
+    out+=$chr
+  done
+
+  printf '%s' "$out${1:i}"
+}
+
+optstring_match_option() {
+  local candidate pat patterns
+
+  IFS=, read -ra patterns <<<"$1"
+  for pat in "${patterns[@]}"; do
+    if [[ $pat = *=* ]]; then
+      # "key=val" will only ever match "key=val"
+      candidate=$2
+    else
+      # "key" will match "key", but also "key=anyval"
+      candidate=${2%%=*}
+    fi
+
+    [[ $pat = "$candidate" ]] && return 0
+  done
+
+  return 1
+}
+
+optstring_remove_option() {
+  local o options_ remove=$2 IFS=,
+
+  read -ra options_ <<<"${!1}"
+
+  for o in "${!options_[@]}"; do
+    optstring_match_option "$remove" "${options_[o]}" && unset 'options_[o]'
+  done
+
+  declare -g "$1=${options_[*]}"
+}
+
+optstring_normalize() {
+  local o options_ norm IFS=,
+
+  read -ra options_ <<<"${!1}"
+
+  # remove empty fields
+  for o in "${options_[@]}"; do
+    [[ $o ]] && norm+=("$o")
+  done
+
+  # avoid empty strings, reset to "defaults"
+  declare -g "$1=${norm[*]:-defaults}"
+}
+
+optstring_append_option() {
+  if ! optstring_has_option "$1" "$2"; then
+    declare -g "$1=${!1},$2"
+  fi
+
+  optstring_normalize "$1"
+}
+
+optstring_prepend_option() {
+  local options_=$1
+
+  if ! optstring_has_option "$1" "$2"; then
+    declare -g "$1=$2,${!1}"
+  fi
+
+  optstring_normalize "$1"
+}
+
+optstring_get_option() {
+  local opts o
+
+  IFS=, read -ra opts <<<"${!1}"
+  for o in "${opts[@]}"; do
+    if optstring_match_option "$2" "$o"; then
+      declare -g "$o"
+      return 0
+    fi
+  done
+
+  return 1
+}
+
+optstring_has_option() {
+  local "${2%%=*}"
+
+  optstring_get_option "$1" "$2"
+}
+
+dm_name_for_devnode() {
+  read dm_name <"/sys/class/block/${1#/dev/}/dm/name"
+  if [[ $dm_name ]]; then
+    printf '/dev/mapper/%s' "$dm_name"
+  else
+    # don't leave the caller hanging, just print the original name
+    # along with the failure.
+    print '%s' "$1"
+    error 'Failed to resolve device mapper name for: %s' "$1"
+  fi
+}
+
+fstype_is_pseudofs() {
+  (( pseudofs_types["$1"] ))
+}
+
+fstype_has_fsck() {
+  (( fsck_types["$1"] ))
+}
+
+
+write_source() {
+  local src=$1 spec= label= uuid= comment=()
+
+  label=$(lsblk -rno LABEL "$1" 2>/dev/null)
+  uuid=$(lsblk -rno UUID "$1" 2>/dev/null)
+
+  # bind mounts do not have a UUID!
+
+  case $bytag in
+    '')
+      [[ $uuid ]] && comment=("UUID=$uuid")
+      [[ $label ]] && comment+=("LABEL=$(mangle "$label")")
+      ;;
+    LABEL)
+      spec=$label
+      [[ $uuid ]] && comment=("$src" "UUID=$uuid")
+      ;;
+    UUID)
+      spec=$uuid
+      comment=("$src")
+      [[ $label ]] && comment+=("LABEL=$(mangle "$label")")
+      ;;
+    *)
+      [[ $uuid ]] && comment=("$1" "UUID=$uuid")
+      [[ $label ]] && comment+=("LABEL=$(mangle "$label")")
+      [[ $bytag ]] && spec=$(lsblk -rno "$bytag" "$1" 2>/dev/null)
+      ;;
+  esac
+
+  [[ $comment ]] && printf '# %s\n' "${comment[*]}"
+
+  if [[ $spec ]]; then
+    printf '%-20s' "$bytag=$(mangle "$spec")"
+  else
+    printf '%-20s' "$(mangle "$src")"
+  fi
+}
+
+optstring_apply_quirks() {
+  local varname=$1 fstype=$2
+
+  # SELinux displays a 'seclabel' option in /proc/self/mountinfo. We can't know
+  # if the system we're generating the fstab for has any support for SELinux (as
+  # one might install Arch from a Fedora environment), so let's remove it.
+  optstring_remove_option "$varname" seclabel
+
+  # Prune 'relatime' option for any pseudofs. This seems to be a rampant
+  # default which the kernel often exports even if the underlying filesystem
+  # doesn't support it. Example: https://bugs.archlinux.org/task/54554.
+  if awk -v fstype="$fstype" '$1 == fstype { exit 1 }' /proc/filesystems; then
+    optstring_remove_option "$varname" relatime
+  fi
+
+  case $fstype in
+    f2fs)
+      # These are Kconfig options for f2fs. Kernels supporting the options will
+      # only provide the negative versions of these (e.g. noacl), and vice versa
+      # for kernels without support.
+      optstring_remove_option "$varname" noacl,acl,nouser_xattr,user_xattr
+      ;;
+    vfat)
+      # Before Linux v3.8, "cp" is prepended to the value of the codepage.
+      if optstring_get_option "$varname" codepage && [[ $codepage = cp* ]]; then
+        optstring_remove_option "$varname" codepage
+        optstring_append_option "$varname" "codepage=${codepage#cp}"
+      fi
+      ;;
+  esac
+}
+
+usage() {
+  cat <<EOF
+usage: ${0##*/} [options] root
+
+  Options:
+    -f <filter>    Restrict output to mountpoints matching the prefix FILTER
+    -L             Use labels for source identifiers (shortcut for -t LABEL)
+    -p             Exclude pseudofs mounts (default behavior)
+    -P             Include pseudofs mounts
+    -t <tag>       Use TAG for source identifiers (TAG should be one of: LABEL,
+                      UUID, PARTLABEL, PARTUUID)
+    -U             Use UUIDs for source identifiers (shortcut for -t UUID)
+
+    -h             Print this help message
+
+genfstab generates output suitable for addition to an fstab file based on the
+devices mounted under the mountpoint specified by the given root.
+
+EOF
+}
+
+if [[ -z $1 || $1 = @(-h|--help) ]]; then
+  usage
+  exit $(( $# ? 0 : 1 ))
+fi
+
+while getopts ':f:LPpt:U' flag; do
+  case $flag in
+    L)
+      bytag=LABEL
+      ;;
+    U)
+      bytag=UUID
+      ;;
+    f)
+      prefixfilter=$OPTARG
+      ;;
+    P)
+      pseudofs=1
+      ;;
+    p)
+      pseudofs=0
+      ;;
+    t)
+      bytag=${OPTARG^^}
+      ;;
+    :)
+      die '%s: option requires an argument -- '\''%s'\' "${0##*/}" "$OPTARG"
+      ;;
+    ?)
+      die '%s: invalid option -- '\''%s'\' "${0##*/}" "$OPTARG"
+      ;;
+  esac
+done
+shift $(( OPTIND - 1 ))
+
+(( $# )) || die "No root directory specified"
+root=$(realpath -mL "$1"); shift
+
+if ! mountpoint -q "$root"; then
+  die "$root is not a mountpoint"
+fi
+
+# handle block devices
+cat <<EOF
+# /etc/fstab: static file system information.
+#
+# Use 'blkid' to print the universally unique identifier for a
+# device; this may be used with UUID= as a more robust way to name devices
+# that works even if disks are added and removed. See fstab(5).
+#
+EOF
+printf "%-15s %-15s %-7s %-15s %-7s %s\n" '# <file system>' '<mount point>' '<type>' '<options>' '<dump>' '<pass>'
+findmnt -Recvruno SOURCE,TARGET,FSTYPE,OPTIONS,FSROOT "$root" |
+    while read -r src target fstype opts fsroot; do
+  if (( !pseudofs )) && fstype_is_pseudofs "$fstype"; then
+    continue
+  fi
+
+  [[ $target = "$prefixfilter"* ]] || continue
+
+  # default 5th and 6th columns
+  dump=0 pass=0
+
+  src=$(unmangle "$src")
+  target=$(unmangle "$target")
+  target=${target#$root}
+
+  if (( !foundroot )) && findmnt "$src" "$root" >/dev/null; then
+    # this is root. we can't possibly have more than one...
+    pass=1 foundroot=1
+  fi
+
+  # if there's no fsck tool available, then only pass=0 makes sense.
+  if ! fstype_has_fsck "$fstype"; then
+    pass=0
+  fi
+
+  if [[ $fsroot != / ]]; then
+    if [[ $fstype = btrfs ]]; then
+      opts+=,subvol=${fsroot#/}
+    else
+      # it's a bind mount
+      src=$(findmnt -funcevo TARGET "$src")$fsroot
+      if [[ $src -ef $target ]]; then
+        # hrmm, this is weird. we're probably looking at a file or directory
+        # that was bound into a chroot from the host machine. Ignore it,
+        # because this won't actually be a valid mount. Worst case, the user
+        # just re-adds it.
+        continue
+      fi
+      fstype=none
+      opts+=,bind
+      pass=0
+    fi
+  fi
+
+  # filesystem quirks
+  case $fstype in
+    fuseblk)
+      # well-behaved FUSE filesystems will report themselves as fuse.$fstype.
+      # this is probably NTFS-3g, but let's just make sure.
+      if ! newtype=$(lsblk -no FSTYPE "$src") || [[ -z $newtype ]]; then
+        # avoid blanking out fstype, leading to an invalid fstab
+        error 'Failed to derive real filesystem type for FUSE device on %s' "$target"
+      else
+        fstype=$newtype
+      fi
+      ;;
+  esac
+
+  optstring_apply_quirks "opts" "$fstype"
+
+  # write one line
+  write_source "$src"
+  printf '\t%-10s' "/$(mangle "${target#/}")" "$fstype" "$opts"
+  printf '\t%s %s' "$dump" "$pass"
+  printf '\n\n'
+done
+
+# handle swaps devices
+{
+  # ignore header
+  read
+
+  while read -r device type _ _ prio; do
+    options=defaults
+    if (( prio >= 0 )); then
+      options+=,pri=$prio
+    fi
+
+    # skip files marked deleted by the kernel
+    [[ $device = *'\040(deleted)' ]] && continue
+
+    if [[ $type = file ]]; then
+      printf '%-20s' "${device#${root%/}}"
+    elif [[ $device = /dev/dm-+([0-9]) ]]; then
+      # device mapper doesn't allow characters we need to worry
+      # about being mangled, and it does the escaping of dashes
+      # for us in sysfs.
+      write_source "$(dm_name_for_devnode "$device")"
+    else
+      write_source "$(unmangle "$device")"
+    fi
+
+    printf '\t%-10s\t%-10s\t%-10s\t0 0\n\n' 'none' 'swap' "$options"
+  done
+} </proc/swaps
+
+# vim: et ts=2 sw=2 ft=sh:

+ 21 - 0
kylin-os-installer-1.0.9/scripts/k.sh

@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+. /tmp/utils
+
+#timedatectl set-ntp true
+mkdir -p /var/log/installer
+
+do_inchroot() {
+  # 运行 "${IN_TARGET}"/in_chroot/ 脚本
+  run_scripts_dir "${IN_TARGET}"/in_chroot
+
+  if [[ -d /cdrom/hooks/in_chroot ]]; then
+    run_scripts_dir /cdrom/hooks/in_chroot
+  fi
+}
+
+do_inchroot
+
+msg "k.sh 运行结束"

+ 15 - 0
kylin-os-installer-1.0.9/scripts/oem-second

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -e
+
+oem_mode=
+if grep -q 'test-mode' /proc/cmdline; then
+    oem_mode="oem-automatic"
+else
+    oem_mode="oem"
+fi
+
+cp -a /usr/share/applications/kylin-os-installer.desktop /etc/xdg/autostart || echo "kylin-os-installer.desktop is unexit" >>/var/log/installer/kylin-os-installer.log
+sed -i "/Exec/d" /etc/xdg/autostart/kylin-os-installer.desktop
+echo "Exec=/usr/bin/kylin-os-installer-${oem_mode}" >>/etc/xdg/autostart/kylin-os-installer.desktop
+

+ 237 - 0
kylin-os-installer-1.0.9/scripts/oem.sh

@@ -0,0 +1,237 @@
+#!/bin/bash
+
+set -e
+
+cfgFile=/usr/share/kylin-os-installer/ky-installer.cfg
+logFile=/var/log/installer/kylin-os-installer-oem.log
+
+userName=
+timeZone=
+password=
+autoLogin=
+userDefGroup=
+
+msg() {
+    echo "$(date +'%Y-%m-%d %H:%M:%S') $*" >> $logFile
+}
+
+get_value()
+{
+    indexStr=$1
+    valueStr=
+
+    valueStr=$(grep "^$indexStr=" "$cfgFile")
+    valueStr=${valueStr##*=}
+    echo "${valueStr}"
+}
+
+get_value_bytearray() {
+    local key=$1
+    local value
+    value=$(grep "^$key" "$cfgFile")
+
+    # TODO, 连续空格有问题
+    if ! egrep -q '^password=.?@ByteArray' $cfgFile; then
+        echo "${value#*=}"
+        return 0
+    fi
+
+    value1=$(echo "${value#*\(}")
+    echo "${value1%)*}"
+}
+
+set_timezone()
+{
+    timeZone=$(get_value "timezone")
+    #msg "Set timezone to $timeZone"
+    ln -sf /usr/share/zoneinfo/$timeZone /etc/localtime
+
+    hwclock -w
+}
+
+set_user()
+{
+    userName=$(get_value "username")
+    password=$(get_value_bytearray "password")
+    autoLogin=$(get_value "autologin")
+    KUID=1000
+
+    #msg "Set user $userName"
+    useradd -m -s /bin/bash -u "${KUID}" "${userName}"
+    usermod -c "${userName}" "${userName}"
+    echo "$userName:$password" | chpasswd
+}
+
+add_groups()
+{
+    userName=$(get_value "username")
+    userDefGroup=(adm cdrom sudo dip plugdev lpadmin sambashare debian-tor libvirtd lxd)
+    for item in ${userDefGroup[*]}; do
+        adduser $userName $item || true
+    done
+}
+
+set_auto_login()
+{
+    if [[ "${autoLogin}" == "1" ]]; then
+        if [[ -d /etc/lightdm ]]; then
+            LightDMCustomFile=/etc/lightdm/lightdm.conf
+            autoLoginParam="autologin-guest=false\n\
+autologin-user=$userName\n\
+autologin-user-timeout=0"
+
+            if ! grep -qs '^autologin-user' ${LightDMCustomFile}; then
+                if ! grep -qs '^\[Seat:\*\]' ${LightDMCustomFile}; then
+                    echo '[Seat:*]' >>${LightDMCustomFile}
+                fi
+                sed -i "s/\[Seat:\*\]/\[SeatDefaults]\n${AutologinParameters}/" ${LightDMCustomFile}
+            # oem config scenario
+            else
+                #sed -i "s/^\(\(str  *\)\?autologin-user\)=.*$/\1=${USERNAME}/g;" /etc/lightdm/lightdm.conf
+                sed -i "s/^autologin-user=.*$/autologin-user=${userName}/g" ${LightDMCustomFile}
+            fi
+        fi
+    else
+        if [[ -f /etc/lightdm/lightdm.conf ]]; then
+            rm -f /etc/lightdm/lightdm.conf
+        fi
+    fi
+}
+
+set_language()
+{
+    language=$(get_value "language")
+    echo "zh_CN.UTF-8 UTF-8
+en_US.UTF-8 UTF-8" > /etc/locale.gen
+
+    #msg "Set language $language"
+    echo "LANG=$language.UTF-8" > /etc/default/locale
+    if [[ "$language" == "zh_CN" ]]; then
+        echo "LANGUAGE=\"zh_CN:zh\"" >> /etc/default/locale
+    fi
+
+    locale-gen
+
+    if [[ -f /lib/systemd/system/accounts-daemon.service ]]; then
+        systemctl restart accounts-daemon || true
+    fi
+}
+
+set_hostname()
+{
+    HOSTNAME=$(get_value "hostname")
+    echo "${HOSTNAME}" >/etc/hostname
+    hostnamectl set-hostname "${HOSTNAME}"
+
+    echo -e "127.0.0.1\tlocalhost
+
+127.0.1.1\t${HOSTNAME}
+# The following lines are desirable for IPv6 capable hosts
+::1     ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+" >/etc/hosts
+
+  # bug 39277, 重启蓝牙服务
+  if [[ -f /lib/systemd/system/bluetooth.service ]]; then
+    /bin/systemctl restart bluetooth.service || true
+  fi
+}
+
+remove_packages()
+{
+    # remove package list
+    packages_list_remove=(
+        kylin-os-installer
+        casper
+        ukui-installer-wayland
+        ubiquity
+    )
+    
+    for i in ${packages_list_remove[*]}; do
+        if dpkg -l | grep -q $i; then
+            msg "移除 $i"
+            apt purge -y $i
+        fi
+    done
+}
+
+remove_oem_service() {
+    if [[ -f /lib/systemd/system/oem-config.service ]]; then
+        /bin/systemctl disable oem-config.service || true
+        /bin/systemctl disable oem-config.target || true
+        rm -f /lib/systemd/system/oem-config.*
+        /bin/systemctl --no-block isolate graphical.target || true
+    fi
+    if [[ -f /etc/xdg/autostart/kylin-os-installer.desktop ]]; then
+        rm -f /etc/xdg/autostart/kylin-os-installer.desktop
+    fi
+}
+
+delete_oem_user() {
+    if getent passwd 'oem' >/dev/null; then
+        if [[ -f /etc/sudoers.d/oem ]]; then
+            rm -f /etc/sudoers.d/oem
+        fi
+        pkill -u 'oem' || true
+        userdel --force --remove 'oem' || true
+    fi
+}
+
+set_test_mode() {
+    if grep -q 'test-mode=true' ${cfgFile}; then
+        userName=$(get_value "username")
+        # sudo 免密
+        echo "${userName} ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/${userName}
+
+        if [[ ! -z "$DISPLAY" ]]; then
+            xset s off -dpms
+        fi
+    fi
+}
+
+restart_lightdm()
+{
+    systemctl restart lightdm
+}
+
+set_language >>${logFile}
+set_timezone >>${logFile}
+set_hostname >>${logFile}
+set_user >>${logFile}
+add_groups >>${logFile}
+
+set_test_mode >>${logFile}
+
+set_auto_login >>${logFile}
+remove_oem_service >>${logFile}
+systemctl start delete-oem-user.service
+
+case $1 in
+'user')
+	set_user
+	;;
+'host')
+	set_hostname
+	;;
+'time')
+	set_timezone
+	;;
+'locale')
+	set_language
+	;;
+'autologin')
+	set_auto_login
+	;;
+'addgroup')
+	add_groups
+	;;
+'unload')
+	rm_ky_installer
+	;;
+'logout')
+	restart_lightdm
+	;;
+esac

+ 22 - 0
kylin-os-installer-1.0.9/scripts/prepare/00umount

@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+#
+# 卸载设备
+
+TARGET=/target
+USER=$(id -un 999)
+
+if [[ -f /usr/share/glib-2.0/schemas/org.ukui.flash-disk.autoload.gschema.xml ]]; then
+  # 取消自动挂载设置
+  sudo -u ${USER:-kylin} gsettings set org.ukui.flash-disk.autoload ifautoload false
+fi
+
+swapoff -a || true
+
+umount /media/*/* || true
+
+# 卸载 target 及虚拟文件系统
+if grep -q '/target' /proc/mounts; then
+    umount -l /target || true
+fi

+ 10 - 0
kylin-os-installer-1.0.9/scripts/prepare/01set-dpms

@@ -0,0 +1,10 @@
+#!/bin/bash
+
+set -e
+
+# Inhibit display screensaver.
+
+if [[ ! -z "$DISPLAY" ]]; then
+  # 防止屏幕熄灭
+  xset s off -dpms
+fi

+ 88 - 0
kylin-os-installer-1.0.9/scripts/prepare/10partition

@@ -0,0 +1,88 @@
+#!/bin/bash
+
+set -e
+
+automatic=$(get_value automatic-installation)
+if [[ "$automatic" == "0" ]]; then
+    return 0
+elif [[ "${is_efi}" == "true" ]]; then
+    return 0
+fi
+
+. /usr/share/kylin-os-installer/scripts/autopart.sh
+disk=$(get_value devpath)
+
+parted -s "${disk}" mktable msdos
+
+### boot
+start=1
+end=$((boot + 1))
+parted -s "${disk}" mkpart primary ext4 1MiB "${end}"MiB
+
+### ext
+start=$((end + 2))
+end=$((end + root_size))
+parted -s "${disk}" mkpart extended "${start}"MiB 100%
+
+### root
+start=$((start + 1))
+
+if [[ "${isluks_lvm}" == "true" ]]; then
+  parted -s "${disk}" mkpart logical ext4 "${start}"MiB 100%
+else
+  parted -s "${disk}" mkpart logical ext4 "${start}"MiB "${end}"MiB
+fi
+
+if [[ "${isluks_lvm}" == "true" ]]; then
+  PASSWORD="$(get_value_bytearray encryptyPWD)"
+  parted -s "${disk}" set 1 boot on
+  partprobe "${disk}"
+  sync
+  if echo "${disk}" | grep -q nvme; then
+    disk=${disk}p
+  fi
+
+  modprobe sm4_generic || true
+  if grep -q sm4 /proc/crypto; then
+    echo "${PASSWORD}" | cryptsetup -c sm4-xts-plain64 -h sha256 -s 256 luksFormat "${disk}"5 -q
+  else
+    echo "${PASSWORD}" | cryptsetup -c aes-xts-plain64 -h sha256 -s 512 luksFormat "${disk}"5 -q
+  fi
+  echo "${PASSWORD}" | cryptsetup luksOpen "${disk}"5 "${disk##*/}"5_crypt
+  root_uuid=$(lsblk -ro name,uuid | grep "${disk##*/}5 " | awk '{print $2}')
+  echo "${disk##*/}5_crypt UUID=${root_uuid} none luks" >/etc/crypttab
+  pvcreate -ffy /dev/mapper/"${disk##*/}"5_crypt
+  vgcreate kylin-vg /dev/mapper/"${disk##*/}"5_crypt
+  lvcreate --wipesignatures n -L "${root_size}" -n root kylin-vg
+  lvcreate --wipesignatures n -L "${backup_size}" -n backup kylin-vg
+  lvcreate --wipesignatures n -L "${data_size}" -n data kylin-vg
+  lvcreate --wipesignatures n -l 100%free -n swap kylin-vg
+
+  return 0
+fi
+
+
+### backup
+start=$((end + 1))
+end=$((end + backup_size))
+parted -s "${disk}" mkpart logical ext4 "${start}"MiB "${end}"MiB
+
+
+### data
+start=$((end + 1))
+end=$((end + data_size))
+if [[ "${is_swapfile}" = "true" ]]; then
+    parted -s "${disk}" mkpart logical ext4 "${start}"MiB 100%
+else
+    parted -s "${disk}" mkpart logical ext4 "${start}"MiB "${end}"MiB
+
+    ### swap partition
+    start=$((end + 1))
+    end=$((end + swap))
+    parted -s "${disk}" mkpart logical linux-swap "${start}"MiB 100%
+fi
+
+
+parted -s "${disk}" set 1 boot on
+partprobe "${disk}"
+sync

+ 88 - 0
kylin-os-installer-1.0.9/scripts/prepare/10partition-efi

@@ -0,0 +1,88 @@
+#!/bin/bash
+
+set -e
+
+automatic=$(get_value automatic-installation)
+if [[ "$automatic" == "0" ]]; then
+  return 0
+elif [[ "${is_efi}" == "false" ]]; then
+  return 0
+fi
+
+. /usr/share/kylin-os-installer/scripts/autopart-efi.sh
+disk=$(get_value devpath)
+
+parted -s "${disk}" mktable gpt
+
+### efi
+start=1
+end=$((efi + 1))
+parted -s "${disk}" mkpart "EFI" fat32 1MiB "${end}"MiB
+
+### boot
+start=${end}
+end=$((end + boot))
+parted -s "${disk}" mkpart "boot" ext4 "${start}"MiB "${end}"MiB
+
+### root
+start=${end}
+end=$((end + root_size))
+
+if [[ "${isluks_lvm}" == "true" ]]; then
+  parted -s "${disk}" mkpart "SYSROOT" ext4 "${start}"MiB 100%
+else
+  parted -s "${disk}" mkpart "SYSROOT" ext4 "${start}"MiB "${end}"MiB
+fi
+
+
+if [[ "${isluks_lvm}" == "true" ]]; then
+  PASSWORD="$(get_value_bytearray encryptyPWD)"
+  parted -s "${disk}" set 1 esp on
+  partprobe "${disk}"
+  sync
+  if echo "${disk}" | grep -q nvme; then
+    disk=${disk}p
+  fi
+
+  modprobe sm4_generic || true
+  if grep -q sm4 /proc/crypto; then
+    echo "${PASSWORD}" | cryptsetup -c sm4-xts-plain64 -h sha256 -s 256 luksFormat "${disk}"3 -q
+  else
+    echo "${PASSWORD}" | cryptsetup -c aes-xts-plain64 -h sha256 -s 512 luksFormat "${disk}"3 -q
+  fi
+  echo "${PASSWORD}" | cryptsetup luksOpen "${disk}"3 "${disk##*/}"3_crypt
+  root_uuid=$(lsblk -ro name,uuid | grep "${disk##*/}3 " | awk '{print $2}')
+  echo "${disk##*/}3_crypt UUID=${root_uuid} none luks" >/etc/crypttab
+  pvcreate -ffy /dev/mapper/"${disk##*/}"3_crypt
+  vgcreate kylin-vg /dev/mapper/"${disk##*/}"3_crypt
+  lvcreate --wipesignatures n -L "${root_size}" -n root kylin-vg
+  lvcreate --wipesignatures n -L "${backup_size}" -n backup kylin-vg
+  lvcreate --wipesignatures n -L "${data_size}" -n data kylin-vg
+  lvcreate --wipesignatures n -l 100%free -n swap kylin-vg
+
+  return 0
+fi
+
+
+### backup
+start=${end}
+end=$((end + backup_size))
+parted -s "${disk}" mkpart "backup" ext4 "${start}"MiB "${end}"MiB
+
+### data
+start=${end}
+end=$((end + data_size))
+if [[ "${is_swapfile}" == "true" ]]; then
+  parted -s "${disk}" mkpart "data" ext4 "${start}"MiB 100%
+else
+  parted -s "${disk}" mkpart "data" ext4 "${start}"MiB "${end}"MiB
+
+  ### swap partition
+  start=${end}
+  end=$((end + swap))
+  parted -s "${disk}" mkpart "swap" linux-swap "${start}"MiB 100%
+fi
+
+parted -s "${disk}" set 1 esp on
+partprobe "${disk}"
+sync

+ 122 - 0
kylin-os-installer-1.0.9/scripts/prepare/13mount-target

@@ -0,0 +1,122 @@
+#!/bin/bash
+
+set -e
+
+automatic=$(get_value automatic-installation)
+if [[ "$automatic" == "0" ]]; then
+  return 0
+fi
+
+disk=$(get_value devpath)
+partprobe "${disk}" && sync
+if echo "${disk}" | grep -q nvme; then
+  disk=${disk}p
+fi
+
+sleep 1
+
+has_backup=0
+
+do_mkfs_efi(){
+  #if egrep -qi 'kirin.?990' /proc/cpuinfo; then
+  if [[ "${is_990_9a0}" == "true" ]]; then
+    sudo mkfs.vfat -s1 -n ESP "${disk}1"
+  else
+    sudo mkfs.vfat -n ESP "${disk}1"
+  fi
+}
+
+do_prepare_sw() {
+  umount -l /media/*/* || true
+  dmsetup remove_all -f
+  #gsettings set org.ukui.flash-disk.autoload ifautoload false
+}
+
+do_mkfs_boot() {
+  boot_part=$1
+  if [[ "$(archdetect)" == "sw64/generic" ]]; then
+    do_prepare_sw
+    mkfs.ext3 -Fq -L SYSBOOT "${boot_part}"
+  else
+    mkfs.ext4 -Fq -L SYSBOOT "${boot_part}"
+  fi
+}
+
+if [[ "${is_efi}" == "true" ]]; then
+  do_mkfs_efi
+
+  do_mkfs_boot "${disk}2"
+
+  part_root="${disk}3"
+  part_backup="${disk}4"
+  part_data="${disk}5"
+  part_swap="${disk}6"
+
+  if [[ "${isluks_lvm}" == "true" ]]; then
+    part_root="/dev/mapper/kylin--vg-root"
+    part_backup="/dev/mapper/kylin--vg-backup"
+    part_data="/dev/mapper/kylin--vg-data"
+    part_swap="/dev/mapper/kylin--vg-swap"
+  fi
+
+  mkfs.ext4 -Fq -L SYSROOT "${part_root}"
+  mkfs.ext4 -Fq -L KYLIN-BACKUP "${part_backup}"
+  mkfs.ext4 -Fq -L DATA "${part_data}"
+
+  if [[ "${is_swapfile}" == "false" ]]; then
+    mkswap -L SWAP "${part_swap}"
+    swapon "${part_swap}"
+  fi
+
+  mkdir -p /target
+  mount "${part_root}" /target
+  mkdir -p /target/boot
+  mount "${disk}2" /target/boot
+  mkdir -p /target/boot/efi
+  mount "${disk}1" /target/boot/efi
+  mkdir -p /target/data
+  mount "${part_data}" /target/data
+  chmod 1777 /target/data
+  mkdir -p /target/backup
+  mount "${part_backup}" /target/backup
+  set_backup "${part_backup}"
+
+  do_bind_data
+
+else
+  do_mkfs_boot "${disk}1"
+
+  part_root="${disk}5"
+  part_backup="${disk}6"
+  part_data="${disk}7"
+  part_swap="${disk}8"
+
+  if [[ "${isluks_lvm}" == "true" ]]; then
+    part_root="/dev/mapper/kylin--vg-root"
+    part_backup="/dev/mapper/kylin--vg-backup"
+    part_data="/dev/mapper/kylin--vg-data"
+    part_swap="/dev/mapper/kylin--vg-swap"
+  fi
+
+  mkfs.ext4 -Fq -L SYSROOT "${part_root}"
+  mkfs.ext4 -Fq -L KYLIN-BACKUP "${part_backup}"
+  mkfs.ext4 -Fq -L DATA "${part_data}"
+
+  if [[ "${is_swapfile}" == "false" ]]; then
+    mkswap -L SWAP "${part_swap}"
+    swapon "${part_swap}"
+  fi
+
+  mkdir -p /target
+  mount "${part_root}" /target
+  mkdir -p /target/boot
+  mount "${disk}1" /target/boot
+  mkdir -p /target/data
+  mount "${part_data}" /target/data
+  chmod 1777 /target/data
+  mkdir -p /target/backup
+  mount "${part_backup}" /target/backup
+  set_backup "${part_backup}"
+
+  do_bind_data
+fi

+ 91 - 0
kylin-os-installer-1.0.9/scripts/prepare/16copy-basic-filesystem

@@ -0,0 +1,91 @@
+#!/bin/bash
+
+set -ex
+
+set_swap() {
+  while (true); do
+    if ! echo ${array} | grep -q linux-swap; then
+        break
+    fi
+    swaptmp=${array#*linux-swap:}
+    swapdev=$(echo ${swaptmp%%|*})
+    #mkswap ${swapdev}
+    swapon ${swapdev}
+
+    array=$(echo ${swaptmp} | cut -d'\' -f2-)
+  done
+}
+
+
+automatic=$(get_value automatic-installation)
+if [[ $automatic -eq 0 ]]; then
+
+  partlists=$(get_value partitions | sed 's/\"//g')
+  array_space=${partlists//;/ }
+  array=${partlists//;/|}
+
+  list=
+  for i in ${array_space[@]}; do
+    list="$list $(echo $i | cut -d: -f1)"
+  done
+  sort_list=$(echo $list | tr ' ' '\n' | sort)
+
+  for mountpoint in $sort_list; do
+    dev0=$(echo ${array#*$mountpoint:})
+    dev=$(echo ${dev0%%|*})
+
+    if [[ $mountpoint == "linux-swap" ]]; then
+      continue
+    fi
+
+    if [[ $mountpoint == "kylin-data" ]]; then
+      mkdir -p /target/data
+      mount $dev /target/data
+      do_bind_data
+      continue
+    fi
+
+    mkdir -p /target$mountpoint
+    mount $dev /target$mountpoint
+    
+    if [[ $mountpoint == "/backup" ]]; then
+      set_backup $dev
+    fi
+
+    if [[ $mountpoint == "/data" ]]; then
+      chmod 1777 /target$mountpoint >/dev/null
+    fi
+  done
+
+  set_swap
+fi
+
+deal_squashfs() {
+  if [[ "${is_minimal}" == "true" ]]; then
+    minimal_squashfs=$(find /cdrom/casper -name '*img' | head -1)
+    # 挂载最小系统镜像
+    if [[ $minimal_squashfs =~ 'img' ]]; then
+      mount -r $minimal_squashfs /rofs
+    fi
+  elif [[ "${is_ghost}" == "true" ]]; then
+    ghost_img=$(get_value ghost-path)
+    # 挂载 ghost 镜像
+    if [[ ${ghost_img} =~ 'img' ]]; then
+      mount -r $ghost_img /rofs
+    fi
+  fi
+}
+
+msg "正在拷贝基础文件系统..."
+# 判断使用最小系统镜像或 ghost
+deal_squashfs
+rsync -aHAX /rofs/ /target
+msg "文件系统拷贝完成"
+sync
+
+# 加密
+if [[ "${isluks_lvm}" == "true" ]]; then
+  rsync /etc/crypttab /target/etc
+  rm -f /target/etc/grub.d/05* || true
+  rm -f /target/etc/grub.d/06* || true
+fi

+ 36 - 0
kylin-os-installer-1.0.9/scripts/prepare/18setup-swapfile

@@ -0,0 +1,36 @@
+#!/bin/bash
+
+set -e
+
+is_automatic=$(get_value automatic-installation)
+if [[ "${is_swapfile}" = "false" ]] || [[ "${is_990_9a0}" = "false" ]]; then
+    return 0
+fi
+
+ram=$(cat < /proc/meminfo  | grep ^MemTotal: | awk '{print $2}')
+
+
+### swapfile size
+swapfile=$(( ram * 12 / 1024 / 10 ))
+if [ $swapfile -gt 64000 ]; then
+    swapfile=64000
+fi
+
+do_setup_swapfile() {
+    dd if=/dev/zero of=/target/${swap_file} bs=1M count=${swapfile:-1}
+    chmod 0600 /target/${swap_file}
+    mkswap /target/${swap_file}
+    swapon /target/${swap_file}
+
+    offset=$(filefrag -v /target/${swap_file} | awk '{if($1=="0:"){print $4}}')
+    root=$(findmnt -rno SOURCE /target)
+
+    if [[ -f /target/etc/default/grub ]]; then
+        sed -ri "s@quiet splash@resume=${root} systemd.kylin_force_hibernate=true resume_offset=${offset:0:-2} quiet splash@" /target/etc/default/grub
+    fi
+}
+
+do_setup_swapfile
+
+
+

+ 21 - 0
kylin-os-installer-1.0.9/scripts/prepare/20setup-chroot

@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+do_mountfs() {
+    mkdir -p /target/{dev,run,dev/pts,proc,sys}
+    mount --bind /dev /target/dev
+    mount --bind /run /target/run
+    mount -vt devpts devpts /target/dev/pts -o gid=5,mode=620
+    mount -vt proc proc /target/proc
+    mount -vt sysfs sysfs /target/sys
+}
+
+do_mount_cdrom() {
+    mkdir -p /target/cdrom
+    mount --bind /cdrom /target/cdrom
+}
+
+do_mountfs
+
+do_mount_cdrom

+ 3 - 0
kylin-os-installer-1.0.9/scripts/umount.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+sudo swapoff -a || true
+sudo umount -l /target || true

+ 322 - 0
kylin-os-installer-1.0.9/scripts/utils

@@ -0,0 +1,322 @@
+#!/bin/bash
+#
+# 工具
+
+CONFIGFILE=/tmp/ky-installer.cfg
+LOG_FILE=/var/log/installer/kylin-os-installer.log
+IN_TARGET=/tmp/k-i/
+
+msg() {
+    echo "$(date +'%Y-%m-%d %H:%M:%S') $*" >&2
+}
+
+get_value() {
+    local key=$1
+    local value
+    value=$(grep "^$key=" "$CONFIGFILE")
+    echo "${value#*=}"
+}
+
+get_value_bytearray() {
+    local key=$1
+    local value
+    value=$(grep "^$key=" "$CONFIGFILE")
+
+    if ! egrep -q "^$key=.?@ByteArray" $CONFIGFILE; then
+        echo "${value#*=}"
+        return 0
+    fi
+
+    value1=$(echo "${value#*\(}")
+    echo "${value1%)*}"
+}
+
+set_backup() {
+    backup_dev=$1
+    backup_uuid=$(blkid -o value -s UUID $backup_dev)
+    mkdir -p /target/etc
+    echo "RECOVERY_DEV_UUID=$backup_uuid
+SNAPSHOT_ENABLED=1" >/target/etc/.bootinfo
+    mkdir -p /target/backup/current
+    mkdir -p /target/backup/snapshots
+    msg "设置备份还原分区完成"
+}
+
+# 卸载文件系统
+umount_all() {
+    msg "正在卸载文件系统..."
+    sync
+    umount -l /target || true
+    if mount | grep -q /backup; then
+        umount -l /backup || true
+    fi
+    msg "卸载完成"
+}
+
+do_mipsel_loongson_2f() {
+    ROOT=
+    ARCH=$(archdetect)
+    case $ARCH in
+        mipsel/loongson-2f)
+        # Configure PMON to load GRUB by default.
+        if [ ! -e $ROOT/boot.cfg ] && [ ! -e $ROOT/boot/boot.cfg ]; then
+            pmon_partition="$(grub_probe -d -t drive "$bootfs" | \
+                      sed 's/.*,//; s/[^0-9]//g')"
+            if [ "$pmon_partition" ]; then
+                pmon_partition=$(($pmon_partition - 1))
+            else
+                pmon_partition=0 # fallback guess
+            fi
+            if [[ "$rootfs" == "$bootfs" ]]; then
+                pmon_grub_path=/boot/grub.elf
+                pmon_boot_cfg_path=$ROOT/boot.cfg
+            else
+                pmon_grub_path=/grub.elf
+                pmon_boot_cfg_path=$ROOT/boot/boot.cfg
+            fi
+            cat > $pmon_boot_cfg_path <<EOF
+default 0
+timeout 0
+showmenu 0
+
+title Boot with GRUB
+    kernel (wd0,$pmon_partition)$pmon_grub_path
+    args nil
+EOF
+        fi
+        ;;
+    esac
+}
+
+do_mips_bootloader() {
+    if [[ -f /usr/sbin/update-grub ]]; then
+        update-grub
+    fi
+
+    rsync -r /cdrom/boot/ /boot
+
+    pushd /boot
+    ln -fs . boot || true
+    popd
+
+    # 其他设置
+    do_mipsel_loongson_2f
+
+    # bug 32789, 创建 esp 时无法引导
+    if [[ -d /boot/efi ]] && [[ -d /boot/EFI ]]; then
+        rsync -a /boot/{EFI/,efi}
+    fi
+}
+
+do_sw64_bootloader() {
+    grub_opts="root=UUID=$(blkid -o value -s UUID $(findmnt / -no source))"
+    swap_dev=$(grep /dev /proc/swaps | head -1 | awk '{print $1}')
+    swap_opts=""
+    if [[ ! -z "${swap_dev}" ]]; then
+        swap_opts="resume=UUID=$(blkid -o value -s UUID ${swap_dev})"
+    fi
+    rsync -r /cdrom/boot/ /boot
+    sed -i "s|boot=casper|${grub_opts} ${swap_opts}|g" /boot/grub/grub.cfg
+
+    pushd /boot
+    ln -fs . boot || true
+    popd
+}
+
+# 根据磁盘大小自动选择磁盘
+auto_select_disk() {
+    DiskList=`LANG=en_US; sudo fdisk -l | awk '{if($1=="Disk" && $2!="identifier:" && $2!="model:") print $2$5}'`
+    MAX=$[$(get_value max)]
+    MIN=$[$(get_value min)]
+    Size_0=1024
+    Size_1=1024
+    Ret=
+
+    for i in $DiskList
+    do
+        Val=`LANG=en_US; echo $i | cut -d ':' -f 2`
+        Val=$[$Val / 1024 / 1024 / 1024]
+        Disk=`LANG=en_US; echo $i | cut -d ':' -f 1`
+            if [[ `echo "$Val < 35" | bc` -eq 1 ]]; then
+            continue
+        fi
+        if [[ `echo "$Val < $Size_0" | bc` -eq 1 ]]; then
+            Size_0=$Val
+            Ret_back=$Disk
+        fi
+            if [[ `echo "$Val >= $MIN" | bc` -eq 1 ]] &&
+               [[ `echo "$Val <= $MAX" | bc` -eq 1 ]] &&
+               [[ `echo "$Val < $Size_1" | bc` -eq 1 ]]; then
+        Size_1=$Val
+        Ret=$Disk
+        fi
+    done
+
+    if [ -z $Ret ]; then
+        Ret=$Ret_back
+    fi
+
+    echo $Ret
+}
+
+
+get_is_efi() {
+    if type archdetect >/dev/null 2>&1; then
+        archdetect=$(archdetect)
+    else
+        archdetect=unknown/generic
+    fi
+    arch=${archdetect%/*}
+    sub=${archdetect#*/}
+    ret=true
+    case "$arch" in
+        alpha|sw64)
+            ret=false;;
+        amd64|i386)
+            case "$sub" in
+                mac|efi)
+                ret=true;;
+                *)
+                ret=false;;
+            esac;;
+        arm|armhf|armel)
+            ret=false;;
+        arm64)
+            ret=true;;
+        mips64el)
+            case "$sub" in
+                efi)
+                ret=true;;
+                *)
+                ret=false;;
+            esac;;
+        mips|mipsel)
+            ret=false;;
+        *)
+            ret=true;;
+    esac
+
+    # 华为 990 设置为 efi
+    if egrep -qi 'kirin.?9[09]0' /proc/cpuinfo; then
+        ret=true
+    fi
+
+    echo $ret
+}
+
+readonly is_efi=$(get_is_efi)
+
+# 优先使用引导参数中设置
+set_swap_mode() {
+    if grep -q kyswapfile /proc/cmdline; then
+        readonly is_swapfile=true
+        return 0
+    fi
+    readonly is_swapfile=$(get_value enable-swapfile)
+}
+set_swap_mode
+
+get_oem_mode() {
+    ret=false
+    if grep -qi 'oem-config/enable=true' /proc/cmdline; then
+        ret=true
+    fi
+    echo $ret
+}
+
+readonly is_oem_mode=$(get_oem_mode)
+
+# 审核模式,工厂安装
+get_audit_mode() {
+    ret=false
+    if grep -qiE 'auditmode|ple-mode' /proc/cmdline; then
+        ret=true
+    fi
+    echo $ret
+}
+
+readonly is_audit_mode=$(get_audit_mode)
+
+
+get_is_990_9a0() {
+    ret=false
+    # 匹配 kirin 990 5g, kirin990, kirin 9006c
+    if egrep -qi 'kirin.?9[09]0' /proc/cpuinfo; then
+        ret=true
+    fi
+    echo $ret
+}
+readonly is_990_9a0=$(get_is_990_9a0)
+
+readonly swap_file=swap_file
+
+get_is_minimal() {
+    ret=false
+    if egrep -qi kylin-minimal /proc/cmdline; then
+        ret=true
+    fi
+    echo $ret
+}
+readonly is_minimal=$(get_is_minimal)
+
+readonly is_ghost=$(get_value ghost)
+
+readonly isluks_lvm=$(get_value encrypty)
+
+run_scripts_dir() {
+    name=$1
+    for i in ${name}/*; do
+        if [ -x "$i" ]; then
+            filename=$(basename $i)
+            echo "$(date +'%b %d %H:%M:%S') ${filename}"
+            . "$i"
+        else
+            msg "跳过 $i"
+        fi
+    done
+}
+
+get_hw_typedata() {
+    typedata=$(dmidecode -s system-product-name)
+    ret="${typedata#* }"
+    if [[ "${typedata}" =~ "PGUV" ]]; then
+        ret=pguv
+    elif [[ "${typedata}" =~ "KLVU" ]]; then
+        ret=klvu
+    elif [[ "${typedata}" =~ "KLVV" ]]; then
+        ret=klvv
+    fi
+    echo $ret
+}
+readonly hw_typedata=$(get_hw_typedata)
+
+# 华为更改启动项
+hw_next_boot() {
+    next_boot=$1
+    boot_order_file="/boot/efi/EFI/BOOT/HwBootOrder.ini"
+    case $next_boot in
+    hd|HD)
+          echo HwBootOrder=0123 > ${boot_order_file}
+          ;;
+    pxe|PXE)
+          echo HwBootOrder=2013 > ${boot_order_file}
+          ;;
+    *)
+          echo "Error argument $next_boot, only hd or pxe is supported"
+          exit 1
+          ;;
+    esac
+
+    msg "set next order to $next_boot is done"
+}
+
+do_bind_data() {
+    mkdir -p /target/{home,root}
+    mkdir -p /target/data/{home,root,usershare}
+
+    mount --bind /target/data/home /target/home
+    mount --bind /target/data/root /target/root
+
+    chmod -R 1777 /target/data/usershare >/dev/null
+}
+

+ 129 - 0
kylin-os-installer-1.0.9/scripts/z.sh

@@ -0,0 +1,129 @@
+#!/bin/bash
+
+set -e
+set -o pipefail
+
+# 拷贝配置文件
+do_copy_config() {
+  # 使用绝对路径,方便在 /target 中加载
+  cp utils /tmp
+
+  # sp1 使用 automatic
+  if grep -q automatic /proc/cmdline; then
+    [[ -f /cdrom/ky-installer.cfg ]] && cp /cdrom/ky-installer.cfg /tmp
+  # 990/9A0 使用此设置,ple-mode 审核模式,test-mode 全自动安装模式
+  elif grep -qE 'ple-mode|test-mode' /proc/cmdline; then
+    [[ -f /cdrom/kyple-installer.cfg ]] && cp /cdrom/kyple-installer.cfg /tmp/ky-installer.cfg
+  else
+    cp /usr/share/kylin-os-installer/ky-installer.cfg /tmp
+  fi
+}
+
+do_copy_config
+
+. /tmp/utils
+
+# 运行 prepare 脚本
+do_prepare() {
+  mkdir -p /var/log/installer
+
+  run_scripts_dir prepare
+
+  if [[ -d /cdrom/hooks/prepare ]]; then
+    run_scripts_dir /cdrom/hooks/prepare
+  fi
+}
+
+# 运行 in_chroot 脚本
+do_run_target() {
+  mkdir -p /target/${IN_TARGET}
+  cp utils /tmp/ky-installer.cfg /target/tmp
+  cp -r k.sh in_chroot /target/${IN_TARGET}
+
+  chroot /target bash ${IN_TARGET}/k.sh >>${LOG_FILE} 2>&1
+}
+
+# 运行 after 脚本
+do_after() {
+  run_scripts_dir after
+
+  if [[ -d /cdrom/hooks/after ]]; then
+    run_scripts_dir /cdrom/hooks/after
+  fi
+}
+
+# 执行 post 脚本
+do_cdrom_post_actions() {
+  if [[ -f /cdrom/.kylin-post-actions ]] && [[ "${is_ghost}" != "true" ]]; then
+    cp /cdrom/.kylin-post-actions /target/${IN_TARGET}
+    chroot /target bash ${IN_TARGET}/.kylin-post-actions >>${LOG_FILE} 2>&1
+  fi
+
+  if [[ -f /cdrom/.kylin-post-actions-nochroot ]] && [[ "${is_ghost}" != "true" ]]; then
+    bash /cdrom/.kylin-post-actions-nochroot >>${LOG_FILE} 2>&1
+  fi
+}
+
+# 拷贝日志
+do_copy_log() {
+  msg "正在拷贝安装日志..."
+  cp -r /var/log/installer/ /target/var/log/
+}
+
+# 出厂备份
+do_factory_backup() {
+  umount /target/backup
+  msg "正在进行系统备份..."
+  ## 工厂备份
+  /usr/bin/backup-auto --factorybackup /target /backup || true
+  msg "系统备份完成"
+}
+
+do_install_success() {
+  if [[ "${is_990_9a0}" == "true" ]]; then
+    mkdir -p /target/boot/efi
+    touch /target/boot/efi/INSTALL_SUCCESS
+  fi
+}
+
+handle_factory_backup() {
+  factory_backup=$(get_value factory-backup)
+  if [[ -f /target/etc/.bootinfo ]]; then
+    if grep -q 'factory-backup' /proc/cmdline; then
+      do_factory_backup
+    elif [[ $factory_backup -eq 1 ]]; then
+      do_factory_backup
+    fi
+  fi
+}
+
+do_finished() {
+  echo 'finished'
+  touch /tmp/z-finished-install
+}
+
+# 运行 prepare 阶段脚本
+mkdir -p /var/log/installer
+do_prepare >>${LOG_FILE} 2>&1
+
+# 执行 target inchroot 脚本
+do_run_target
+
+# 运行 after 阶段脚本
+do_after >>${LOG_FILE} 2>&1
+
+# 执行 postactions 脚本
+do_cdrom_post_actions
+
+# 拷贝安装日志
+do_copy_log
+
+do_install_success
+
+# 处理出厂备份
+handle_factory_backup
+
+# 卸载文件系统
+umount_all
+
+do_finished

+ 92 - 0
kylin-os-installer-1.0.9/src/Installer_main/Installer_main.pro

@@ -0,0 +1,92 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2020-06-17T13:22:56
+#
+#-------------------------------------------------
+
+QT       += core gui svg
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets xml
+
+TARGET = kylin-os-installer
+TEMPLATE = app
+
+CONFIG += c++11
+
+# The following define makes your compiler emit warnings if you us
+e
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+
+SOURCES += \
+    installermainwidget_auto.cpp \
+    installingoemconfigframe.cpp \
+    main.cpp \
+    installermainwidget.cpp \
+    ksetting.cpp \
+    installingframe.cpp \
+    installerrorframe.cpp \
+    uilt/slidershow.cpp \
+    uilt/showprogressbar.cpp \
+    finishedInstall.cpp
+
+
+
+HEADERS += \
+    installermainwidget.h \
+    installermainwidget_auto.h \
+    installingoemconfigframe.h \
+    ksetting.h \
+    installingframe.h \
+    installerrorframe.h \
+    uilt/slidershow.h \
+    uilt/showprogressbar.h \
+    finishedInstall.h
+
+
+RESOURCES += \
+    resource.qrc
+
+
+PKGCONFIG += x11
+
+unix:!macx: LIBS += -L/usr/lib/x86_64-linux-gnu/ -lyaml-cpp
+
+INCLUDEPATH += /usr/lib/x86_64-linux-gnu
+DEPENDPATH += /usr/lib/x86_64-linux-gnu
+
+
+unix:!macx: LIBS += -L$$PWD/../KPlugins/ -lReflex
+
+INCLUDEPATH += $$PWD/../plugins/Reflex
+DEPENDPATH += $$PWD/../plugins/Reflex
+
+unix:!macx: LIBS += -L$$PWD/../KPlugins/ -lPluginDll
+
+INCLUDEPATH += $$PWD/../plugins/PluginDll
+DEPENDPATH += $$PWD/../plugins/PluginDll
+
+unix:!macx: LIBS += -L$$PWD/../KPlugins/ -lPluginTask
+
+INCLUDEPATH += $$PWD/../plugins/PluginTask
+DEPENDPATH += $$PWD/../plugins/PluginTask
+
+unix:!macx: LIBS += -L$$PWD/../KPlugins/ -lPluginService
+
+INCLUDEPATH += $$PWD/../plugins/PluginService
+DEPENDPATH += $$PWD/../plugins/PluginService
+
+
+
+unix:!macx: LIBS += -L$$OUT_PWD/../plugins/VirtualKeyboard/ -lVirtualKeyboard
+
+INCLUDEPATH += $$PWD/../plugins/VirtualKeyboard
+DEPENDPATH += $$PWD/../plugins/VirtualKeyboard

+ 9 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/file/ksettings.conf

@@ -0,0 +1,9 @@
+# YAML: list of lists of strings.
+sequence:
+- view:
+  - KChoiceLanguage
+  - KyLicense
+  - KTimeZone
+  - KUserRegister
+  - KPartition
+- exec:

+ 9 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/file/ksettingsoem1.conf

@@ -0,0 +1,9 @@
+# YAML: list of lists of strings.
+sequence:
+- view:
+  - KChoiceLanguage
+#  - KTimeZone
+  - KyLicense
+#  - KUserRegister
+  - KPartition
+- exec:

+ 9 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/file/ksettingsoem2.conf

@@ -0,0 +1,9 @@
+# YAML: list of lists of strings.
+sequence:
+- view:
+  - KChoiceLanguage
+  - KTimeZone
+#  - KyLicense
+  - KUserRegister
+#  - KPartition
+- exec:

二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/bg.jpg


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/bg0.jpg


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/bg0@2x.jpg


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/bg12-18.jpg


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/bg@2x.jpg


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/bg_message.jpg


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/dot.png


+ 3 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/png/dot.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
+  <circle id="椭圆_11" data-name="椭圆 11" cx="4" cy="4" r="4" fill="#fff" opacity="0.702"/>
+</svg>

+ 3 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/png/greydot.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
+  <circle id="椭圆_11_拷贝" data-name="椭圆 11 拷贝" cx="4" cy="4" r="4" fill="#fff" opacity="0.149"/>
+</svg>

二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/greydot1.png


+ 22 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/png/icon-anzhuangshibai.svg

@@ -0,0 +1,22 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="248" height="221" viewBox="0 0 248 221">
+  <g id="icon-anzhuangshibai" transform="translate(-836 -271)">
+    <g id="矩形_55" data-name="矩形 55" transform="translate(836 271)" fill="none" stroke="#fff" stroke-width="5" opacity="0.749">
+      <rect width="248" height="182" rx="26" stroke="none"/>
+      <rect x="2.5" y="2.5" width="243" height="177" rx="23.5" fill="none"/>
+    </g>
+    <g id="矩形_57" data-name="矩形 57" transform="translate(851 286)" fill="none" stroke="#fff" stroke-width="1" opacity="0.749">
+      <rect width="218" height="152" rx="16" stroke="none"/>
+      <rect x="0.5" y="0.5" width="217" height="151" rx="15.5" fill="none"/>
+    </g>
+    <g id="组_72" data-name="组 72" transform="translate(-6.5 -1.5)" opacity="0.749">
+      <line id="直线_5" data-name="直线 5" y2="34" transform="translate(949.5 454.5)" fill="none" stroke="#fff" stroke-width="5"/>
+      <line id="直线_6" data-name="直线 6" y2="34" transform="translate(983.5 454.5)" fill="none" stroke="#fff" stroke-width="5"/>
+    </g>
+    <path id="椭圆_1954" data-name="椭圆 1954" d="M45,0A45,45,0,1,1,0,45,45,45,0,0,1,45,0Z" transform="translate(915 317)" fill="none" stroke="#fff" stroke-width="3"/>
+    <g id="组_49" data-name="组 49" transform="translate(935.098 337.934)">
+      <line id="直线_1" data-name="直线 1" x2="50" y2="49" transform="translate(-0.098 0.066)" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="3"/>
+      <line id="直线_2" data-name="直线 2" x1="50" y2="49" transform="translate(-0.098 0.066)" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="3"/>
+    </g>
+    <path id="路径_39" data-name="路径 39" d="M0,0H132.5" transform="translate(894.251 489.5)" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="5" opacity="0.749"/>
+  </g>
+</svg>

+ 3 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/png/pan-down-symbolic.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="11.412" height="5.706" viewBox="0 0 11.412 5.706">
+  <path id="公用-右箭头" d="M0,0,4.5,5,0,10" transform="translate(10.706 0.706) rotate(90)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="1"/>
+</svg>

+ 3 - 0
kylin-os-installer-1.0.9/src/Installer_main/data/png/pan-up-symbolic.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="11.412" height="5.879" viewBox="0 0 11.412 5.879">
+  <path id="公用-右箭头" d="M0,10,4.5,5.052,0,0" transform="translate(0.706 5.173) rotate(-90)" fill="none" stroke="#fff" stroke-linecap="round" stroke-miterlimit="10" stroke-width="1" opacity="0.75"/>
+</svg>

二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/1.png


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/1e.png


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/2.png


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/2e.png


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/3.png


二进制
kylin-os-installer-1.0.9/src/Installer_main/data/png/slidershow/3e.png


部分文件因为文件数量过多而无法显示