diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9db7949..4872889 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -125,7 +125,11 @@ QT5_WRAP_UI(WRAPPED_UI_FILES
             gui/page/ui/settings.ui
             gui/page/ui/homepage.ui)
 
-qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} lang/zh.ts)
+add_custom_target(run_lupdate
+                  COMMAND lupdate . -ts lang/zh.ts
+                  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+
+qt5_add_translation(QM_FILES lang/zh.ts)
 
 add_executable(${EXECUTABLE_NAME} ${SOURCE_FILES} ${QM_FILES})
 
diff --git a/docs/translating.md b/docs/translating.md
new file mode 100644
index 0000000..dc78b96
--- /dev/null
+++ b/docs/translating.md
@@ -0,0 +1,6 @@
+
+# 翻译
+
+由于CMake和Qt的稀烂集成,我们不能使用CMake自动lupdate更新翻译。
+
+如果需要更新翻译,请使用`make run_lupdate`目标进行。qm文件的编译无需其他操作,只需build即可。