summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2011-07-22 10:55:05 +0200
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2011-07-22 12:40:29 +0200
commitaaa165f985ec30e96ae9a975c9ad96d6e99f5ac7 (patch)
treeaf2f721b97ab3c172d6e4e1084b1a8ddc89596a5 /src
parent8f2409a1b41bbe32abf626b06e1b90f6cc7118c8 (diff)
downloadminetest-aaa165f985ec30e96ae9a975c9ad96d6e99f5ac7.tar.gz
minetest-aaa165f985ec30e96ae9a975c9ad96d6e99f5ac7.tar.bz2
minetest-aaa165f985ec30e96ae9a975c9ad96d6e99f5ac7.zip
updatepo cmake rule
Get rid of the system-specific updatelocales.sh and introduce an updatepo cmake rule. po files are also updated before creating the mo files, and we now keep the .pot file (in the po/en directory). To stabilize the po file creation, file contents are sorted by source filename. Update po files in the process.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt58
1 files changed, 42 insertions, 16 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 61fb20680..0c4b41829 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -297,28 +297,54 @@ if(BUILD_SERVER)
endif(BUILD_SERVER)
if (USE_GETTEXT)
+ add_custom_command(OUTPUT "${GETTEXT_PO_PATH}/en"
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${GETTEXT_PO_PATH}/en"
+ COMMENT "po-update [en]: creating translation template base directory")
+ set(POT_FILE "${GETTEXT_PO_PATH}/en/minetest.pot")
+ file(GLOB GETTEXT_POT_DEPS *.cpp *.h)
+ file(GLOB GETTEXT_POT_DEPS_REL RELATIVE ${CMAKE_SOURCE_DIR} *.cpp *.h)
+ add_custom_command(OUTPUT ${POT_FILE}
+ COMMAND ${GETTEXT_EXTRACT} -F -n -o ${POT_FILE} ${GETTEXT_POT_DEPS_REL}
+ DEPENDS "${GETTEXT_PO_PATH}/en" ${GETTEXT_POT_DEPS}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ COMMENT "po-update [en]: updating translation template")
+
+ set(PO_FILES)
set(MO_FILES)
+
foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
- set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE})
- add_custom_command(OUTPUT ${MO_BUILD_PATH}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${MO_BUILD_PATH}
- COMMENT "mo-update [${LOCALE}]: Creating locale directory.")
-
- set(MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo")
- set(PO_FILE_PATH "${GETTEXT_PO_PATH}/${LOCALE}/minetest.po")
-
- add_custom_command(
- OUTPUT ${MO_FILE_PATH}
- COMMAND ${GETTEXT_MSGFMT} -o ${MO_FILE_PATH} ${PO_FILE_PATH}
- DEPENDS ${MO_BUILD_PATH} ${PO_FILE_PATH}
- WORKING_DIRECTORY "${GETTEXT_PO_PATH}/${LOCALE}"
- COMMENT "mo-update [${LOCALE}]: Creating mo file."
- )
+ # skip the 'en' locale which is treated separately
+ if (NOT LOCALE STREQUAL "en")
+ set(PO_FILE_PATH "${GETTEXT_PO_PATH}/${LOCALE}/minetest.po")
+ add_custom_command(OUTPUT ${PO_FILE_PATH}
+ COMMAND ${GETTEXT_MSGMERGE} -F -U ${PO_FILE_PATH} ${POT_FILE}
+ DEPENDS ${POT_FILE}
+ WORKING_DIRECTORY "${GETTEXT_PO_PATH}/${LOCALE}"
+ COMMENT "po-update [${LOCALE}]: updating strings")
- set(MO_FILES ${MO_FILES} ${MO_FILE_PATH})
+
+ set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE})
+ add_custom_command(OUTPUT ${MO_BUILD_PATH}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${MO_BUILD_PATH}
+ COMMENT "mo-update [${LOCALE}]: Creating locale directory.")
+
+ set(MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo")
+
+ add_custom_command(
+ OUTPUT ${MO_FILE_PATH}
+ COMMAND ${GETTEXT_MSGFMT} -o ${MO_FILE_PATH} ${PO_FILE_PATH}
+ DEPENDS ${MO_BUILD_PATH} ${PO_FILE_PATH}
+ WORKING_DIRECTORY "${GETTEXT_PO_PATH}/${LOCALE}"
+ COMMENT "mo-update [${LOCALE}]: Creating mo file."
+ )
+
+ set(MO_FILES ${MO_FILES} ${MO_FILE_PATH})
+ set(PO_FILES ${PO_FILES} ${PO_FILE_PATH})
+ endif(NOT LOCALE STREQUAL "en")
endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
add_custom_target(translations ALL COMMENT "mo update" DEPENDS ${MO_FILES})
+ add_custom_target(updatepo COMMENT "po update" DEPENDS ${PO_FILES})
endif(USE_GETTEXT)
# Subdirectories