From 4ffba76bb39363a01647acb19667cd33bbbd700b Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 23 Jul 2011 15:47:09 +0200 Subject: Place project name and gettext use in config --- src/cmake_config.h.in | 3 ++- src/config.h | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cmake_config.h.in b/src/cmake_config.h.in index 5e375191f..6a8f93bac 100644 --- a/src/cmake_config.h.in +++ b/src/cmake_config.h.in @@ -3,6 +3,7 @@ #ifndef CMAKE_CONFIG_H #define CMAKE_CONFIG_H +#define PROJECT_NAME "@PROJECT_NAME@" #define INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@" #define VERSION_STRING "@VERSION_STRING@" #ifdef NDEBUG @@ -10,7 +11,7 @@ #else #define BUILD_TYPE "Debug" #endif -#define BUILD_INFO "VER="VERSION_STRING" RUN_IN_PLACE=@RUN_IN_PLACE@ INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@ BUILD_TYPE="BUILD_TYPE +#define BUILD_INFO "VER="VERSION_STRING" RUN_IN_PLACE=@RUN_IN_PLACE@ USE_GETTEXT=@USE_GETTEXT@ INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@ BUILD_TYPE="BUILD_TYPE #endif diff --git a/src/config.h b/src/config.h index b24cf6a69..eb1d1a9aa 100644 --- a/src/config.h +++ b/src/config.h @@ -9,6 +9,8 @@ #ifdef USE_CMAKE_CONFIG_H #include "cmake_config.h" #else + #define PROJECT_NAME "minetest" + //#define INSTALL_PREFIX "" #define VERSION_STRING "unknown" #ifdef NDEBUG @@ -21,7 +23,12 @@ #else #define RUN_IN_PLACE_BOOLSTRING "0" #endif - #define BUILD_INFO "NON-CMAKE RUN_IN_PLACE="RUN_IN_PLACE_BOOLSTRING" BUILD_TYPE="BUILD_TYPE + #ifdef USE_GETTEXT + #define USE_GETTEXT_BOOLSTRING "ON" + #else + #define USE_GETTEXT_BOOLSTRING "OFF" + #endif + #define BUILD_INFO "NON-CMAKE RUN_IN_PLACE="RUN_IN_PLACE_BOOLSTRING" USE_GETTEXT="USE_GETTEXT_BOOLSTRING" BUILD_TYPE="BUILD_TYPE #endif #endif -- cgit v1.2.3 From d4e7faca219ca2d9d84b02e46d591799afed32d8 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 23 Jul 2011 15:49:06 +0200 Subject: Gettext domain should match the project name This partially reverts 023cc0d37776976b4b192b7363f73a5d2debdef6, goes back to using PROJECT_NAME for the filename and also uses PROJECT_NAME as text domain in the source code. --- src/CMakeLists.txt | 2 +- src/main.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5554ec448..6daf9385c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -327,7 +327,7 @@ if (GETTEXT_FOUND AND USE_GETTEXT) COMMAND ${CMAKE_COMMAND} -E make_directory ${MO_BUILD_PATH} COMMENT "mo-update [${LOCALE}]: Creating locale directory.") - set(MO_FILE_PATH "${MO_BUILD_PATH}/minetest.mo") + set(MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") add_custom_command( OUTPUT ${MO_FILE_PATH} diff --git a/src/main.cpp b/src/main.cpp index 11941a43f..2f48d229f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1134,8 +1134,8 @@ int main(int argc, char *argv[]) #ifdef LC_MESSAGES setlocale(LC_MESSAGES, ""); - bindtextdomain("minetest", (porting::path_userdata+"/locale").c_str()); - textdomain("minetest"); + bindtextdomain(PROJECT_NAME, (porting::path_userdata+"/locale").c_str()); + textdomain(PROJECT_NAME); #endif // Initialize debug streams -- cgit v1.2.3 From 5aa2679be7696862066edf617dc5a8261b7325ab Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 23 Jul 2011 16:15:29 +0200 Subject: Do not package en translation, since we don't build it --- src/CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6daf9385c..c50b74dc5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -267,9 +267,11 @@ if(BUILD_CLIENT) if(GETTEXT_FOUND AND USE_GETTEXT) foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) - set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE}) - set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") - install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH}) + if (NOT LOCALE STREQUAL "en") + set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE}) + set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") + install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH}) + endif(NOT LOCALE STREQUAL "en") endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) endif() -- cgit v1.2.3 From c578efb32b57b08275b9a0a2fd4a76b4e4b9e87d Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 23 Jul 2011 16:38:37 +0200 Subject: Refactor gettext init Put the gettext init code in a macro and define it appropriately depending on whether gettext is actually available or not. --- src/gettext.h | 18 +++++++++--------- src/main.cpp | 6 +----- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/gettext.h b/src/gettext.h index e74b4eb96..751b83774 100644 --- a/src/gettext.h +++ b/src/gettext.h @@ -1,21 +1,21 @@ -#ifdef GETTEXT_FOUND -#ifdef USE_GETTEXT +#if defined(GETTEXT_FOUND) && defined(USE_GETTEXT) #include #else #define gettext(String) String -#define bindtextdomain(domain, dir) /* */ -#define textdomain(domain) /* */ -#endif -#else -#define gettext(String) String -#define bindtextdomain(domain, dir) /* */ -#define textdomain(domain) /* */ #endif #define _(String) gettext(String) #define gettext_noop(String) String #define N_(String) gettext_noop (String) +inline void init_gettext(const char *path) { +#if USE_GETTEXT + setlocale(LC_MESSAGES, ""); + bindtextdomain(PROJECT_NAME, path); + textdomain(PROJECT_NAME); +#endif +} + inline wchar_t* chartowchar_t(const char *str) { size_t l = strlen(str)+1; diff --git a/src/main.cpp b/src/main.cpp index 2f48d229f..bdfbc35f7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1132,11 +1132,7 @@ int main(int argc, char *argv[]) // Create user data directory fs::CreateDir(porting::path_userdata); -#ifdef LC_MESSAGES - setlocale(LC_MESSAGES, ""); - bindtextdomain(PROJECT_NAME, (porting::path_userdata+"/locale").c_str()); - textdomain(PROJECT_NAME); -#endif + init_gettext((porting::path_userdata+"/locale").c_str()); // Initialize debug streams #ifdef RUN_IN_PLACE -- cgit v1.2.3 From 47381bde3b4d7a9ee9780786c9a993f2b63a488a Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sun, 24 Jul 2011 10:19:31 +0200 Subject: Bring po update out of cmake again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This solves two issues at once: * CMake would delete po files during ‘make clean’ because it thought they were autogenerated and not just managed * the only gettext tools readily available in Windows are so old they don't support options like --package-name The change also moves minetest.pot down one level, so we don't need to special case ‘en’ anymore. The downside is of course that you need some sane POSIX shell to update the po files. --- cmake/Modules/FindGettextLib.cmake | 16 +----- po/en/minetest.pot | 113 ------------------------------------- po/minetest.pot | 113 +++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 65 +++++++-------------- util/updatepo.sh | 65 +++++++++++++++++++++ 5 files changed, 198 insertions(+), 174 deletions(-) delete mode 100644 po/en/minetest.pot create mode 100644 po/minetest.pot create mode 100755 util/updatepo.sh diff --git a/cmake/Modules/FindGettextLib.cmake b/cmake/Modules/FindGettextLib.cmake index 1c36f8c6e..a215f3f8d 100644 --- a/cmake/Modules/FindGettextLib.cmake +++ b/cmake/Modules/FindGettextLib.cmake @@ -16,21 +16,6 @@ FIND_PROGRAM(GETTEXT_MSGFMT PATHS "${CUSTOM_GETTEXT_PATH}/bin" DOC "path to msgfmt") -FIND_PROGRAM(GETTEXT_MSGMERGE - NAMES msgmerge - PATHS "${CUSTOM_GETTEXT_PATH}/bin" - DOC "path to msgmerge") - -FIND_PROGRAM(GETTEXT_MSGEN - NAMES msgen - PATHS "${CUSTOM_GETTEXT_PATH}/bin" - DOC "path to msgen") - -FIND_PROGRAM(GETTEXT_EXTRACT - NAMES xgettext - PATHS "${CUSTOM_GETTEXT_PATH}/bin" - DOC "path to xgettext") - # modern Linux, as well as Mac, seem to not need require special linking # they do not because gettext is part of glibc # TODO check the requirements on other BSDs and older Linux @@ -73,6 +58,7 @@ IF(GETTEXT_FOUND) SET(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale//LC_MESSAGES) SET(GETTEXT_MO_DEST_PATH locale//LC_MESSAGES) FILE(GLOB GETTEXT_AVAILABLE_LOCALES RELATIVE ${GETTEXT_PO_PATH} "${GETTEXT_PO_PATH}/*") + LIST(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES minetest.pot) MACRO(SET_MO_PATHS _buildvar _destvar _locale) STRING(REPLACE "" ${_locale} ${_buildvar} ${GETTEXT_MO_BUILD_PATH}) STRING(REPLACE "" ${_locale} ${_destvar} ${GETTEXT_MO_DEST_PATH}) diff --git a/po/en/minetest.pot b/po/en/minetest.pot deleted file mode 100644 index e242c494b..000000000 --- a/po/en/minetest.pot +++ /dev/null @@ -1,113 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: minetest\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-07-22 11:02+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/guiMainMenu.cpp:180 -msgid "Name/Password" -msgstr "" - -#: src/guiMainMenu.cpp:203 -msgid "Address/Port" -msgstr "" - -#: src/guiMainMenu.cpp:223 -msgid "Leave address blank to start a local server." -msgstr "" - -#: src/guiMainMenu.cpp:230 -msgid "Fancy trees" -msgstr "" - -#: src/guiMainMenu.cpp:236 -msgid "Smooth Lighting" -msgstr "" - -#: src/guiMainMenu.cpp:244 -msgid "Start Game / Connect" -msgstr "" - -#: src/guiMainMenu.cpp:253 -msgid "Change keys" -msgstr "" - -#: src/guiMainMenu.cpp:276 -msgid "Creative Mode" -msgstr "" - -#: src/guiMainMenu.cpp:282 -msgid "Enable Damage" -msgstr "" - -#: src/guiMainMenu.cpp:290 -msgid "Delete map" -msgstr "" - -#: src/guiMessageMenu.cpp:93 src/guiTextInputMenu.cpp:111 -msgid "Proceed" -msgstr "" - -#: src/guiPasswordChange.cpp:102 -msgid "Old Password" -msgstr "" - -#: src/guiPasswordChange.cpp:117 -msgid "New Password" -msgstr "" - -#: src/guiPasswordChange.cpp:131 -msgid "Confirm Password" -msgstr "" - -#: src/guiPasswordChange.cpp:146 -msgid "Change" -msgstr "" - -#: src/guiPasswordChange.cpp:155 -msgid "Passwords do not match!" -msgstr "" - -#: src/guiPauseMenu.cpp:110 -msgid "Continue" -msgstr "" - -#: src/guiPauseMenu.cpp:117 -msgid "Change Password" -msgstr "" - -#: src/guiPauseMenu.cpp:124 -msgid "Disconnect" -msgstr "" - -#: src/guiPauseMenu.cpp:131 -msgid "Exit to OS" -msgstr "" - -#: src/guiPauseMenu.cpp:138 -msgid "" -"Keys:\n" -"- WASD: Walk\n" -"- Mouse left: dig blocks\n" -"- Mouse right: place blocks\n" -"- Mouse wheel: select item\n" -"- 0...9: select item\n" -"- Shift: sneak\n" -"- R: Toggle viewing all loaded chunks\n" -"- I: Inventory menu\n" -"- ESC: This menu\n" -"- T: Chat\n" -msgstr "" diff --git a/po/minetest.pot b/po/minetest.pot new file mode 100644 index 000000000..7b95d212e --- /dev/null +++ b/po/minetest.pot @@ -0,0 +1,113 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-07-24 10:16+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/guiMainMenu.cpp:180 +msgid "Name/Password" +msgstr "" + +#: src/guiMainMenu.cpp:203 +msgid "Address/Port" +msgstr "" + +#: src/guiMainMenu.cpp:223 +msgid "Leave address blank to start a local server." +msgstr "" + +#: src/guiMainMenu.cpp:230 +msgid "Fancy trees" +msgstr "" + +#: src/guiMainMenu.cpp:236 +msgid "Smooth Lighting" +msgstr "" + +#: src/guiMainMenu.cpp:244 +msgid "Start Game / Connect" +msgstr "" + +#: src/guiMainMenu.cpp:253 +msgid "Change keys" +msgstr "" + +#: src/guiMainMenu.cpp:276 +msgid "Creative Mode" +msgstr "" + +#: src/guiMainMenu.cpp:282 +msgid "Enable Damage" +msgstr "" + +#: src/guiMainMenu.cpp:290 +msgid "Delete map" +msgstr "" + +#: src/guiMessageMenu.cpp:93 src/guiTextInputMenu.cpp:111 +msgid "Proceed" +msgstr "" + +#: src/guiPasswordChange.cpp:102 +msgid "Old Password" +msgstr "" + +#: src/guiPasswordChange.cpp:117 +msgid "New Password" +msgstr "" + +#: src/guiPasswordChange.cpp:131 +msgid "Confirm Password" +msgstr "" + +#: src/guiPasswordChange.cpp:146 +msgid "Change" +msgstr "" + +#: src/guiPasswordChange.cpp:155 +msgid "Passwords do not match!" +msgstr "" + +#: src/guiPauseMenu.cpp:110 +msgid "Continue" +msgstr "" + +#: src/guiPauseMenu.cpp:117 +msgid "Change Password" +msgstr "" + +#: src/guiPauseMenu.cpp:124 +msgid "Disconnect" +msgstr "" + +#: src/guiPauseMenu.cpp:131 +msgid "Exit to OS" +msgstr "" + +#: src/guiPauseMenu.cpp:138 +msgid "" +"Keys:\n" +"- WASD: Walk\n" +"- Mouse left: dig blocks\n" +"- Mouse right: place blocks\n" +"- Mouse wheel: select item\n" +"- 0...9: select item\n" +"- Shift: sneak\n" +"- R: Toggle viewing all loaded chunks\n" +"- I: Inventory menu\n" +"- ESC: This menu\n" +"- T: Chat\n" +msgstr "" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c50b74dc5..c897f4bf3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -267,11 +267,9 @@ if(BUILD_CLIENT) if(GETTEXT_FOUND AND USE_GETTEXT) foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) - if (NOT LOCALE STREQUAL "en") - set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE}) - set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") - install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH}) - endif(NOT LOCALE STREQUAL "en") + set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE}) + set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") + install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH}) endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) endif() @@ -298,54 +296,29 @@ if(BUILD_SERVER) endif(BUILD_SERVER) if (GETTEXT_FOUND AND 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}) - # 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(PO_FILE_PATH "${GETTEXT_PO_PATH}/${LOCALE}/minetest.po") + set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE}) + set(MO_FILE_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") + + add_custom_command(OUTPUT ${MO_BUILD_PATH} + COMMAND ${CMAKE_COMMAND} -E make_directory ${MO_BUILD_PATH} + COMMENT "mo-update [${LOCALE}]: Creating locale directory.") + + 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_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") + set(MO_FILES ${MO_FILES} ${MO_FILE_PATH}) 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(GETTEXT_FOUND AND USE_GETTEXT) # Subdirectories diff --git a/util/updatepo.sh b/util/updatepo.sh new file mode 100755 index 000000000..bcfa4c4de --- /dev/null +++ b/util/updatepo.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +# Update/create minetest po files + +# an auxiliary function to abort processing with an optional error +# message +abort() { + test -n "$1" && echo >&2 "$1" + exit 1 +} + +# The po/ directory is assumed to be parallel to the directory where +# this script is. Relative paths are fine for us so we can just +# use the following trick (works both for manual invocations and for +# script found from PATH) +scriptisin="$(dirname "$(which "$0")")" + +# The script is executed from the parent of po/, which is also the +# parent of the script directory and of the src/ directory. +# We go through $scriptisin so that it can be executed from whatever +# directory and still work correctly +cd "$scriptisin/.." + +test -e po || abort "po/ directory not found" +test -d po || abort "po/ is not a directory!" + +# Get a list of the languages we have to update/create + +cd po || abort "couldn't change directory to po!" + +# This assumes that we won't have dirnames with space, which is +# the case for language codes, which are the only subdirs we expect to +# find in po/ anyway. If you put anything else there, you need to suffer +# the consequences of your actions, so we don't do sanity checks +langs="" + +for lang in * ; do + if test ! -d $lang; then + continue + fi + langs="$langs $lang" +done + +# go back +cd .. + +# First thing first, update the .pot template. We place it in the po/ +# directory at the top level. You a recent enough xgettext that supports +# --package-name +potfile=po/minetest.pot +xgettext --package-name=minetest -F -n -o $potfile src/*.cpp src/*.h + +# Now iterate on all languages and create the po file if missing, or update it +# if it exists already +for lang in $langs ; do # note the missing quotes around $langs + pofile=po/$lang/minetest.po + if test -e $pofile; then + echo "[$lang]: updating strings" + msgmerge -F -U $pofile $potfile + else + # This will ask for the translator identity + echo "[$lang]: NEW strings" + msginit -l $lang -o $pofile -i $potfile + fi +done -- cgit v1.2.3 From e034f8a2a372279edfc5a6c69dc14fb31c9a7685 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sun, 24 Jul 2011 13:58:51 +0200 Subject: Sanitize GETTEXT usage macros Now the user-level option is called ENABLE_GETTEXT, and USE_GETTEXT is only set to true if gettext was enabled and found. This simplifies all check to USE_GETTEXT only rather than the double checks for it being enabled and found. --- src/CMakeLists.txt | 25 +++++++++++++++---------- src/config.h | 8 ++++---- src/gettext.h | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c897f4bf3..fcdb3ccbc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,11 +5,15 @@ if(RUN_IN_PLACE) add_definitions ( -DRUN_IN_PLACE ) endif(RUN_IN_PLACE) -OPTION(USE_GETTEXT "Use GetText for internationalization" ON) +# user-visible option to enable/disable gettext usage +OPTION(ENABLE_GETTEXT "Use GetText for internationalization" ON) + +# this is only set to 1 if gettext is enabled _and_ available +set(USE_GETTEXT 0) find_package(GettextLib) -if(GETTEXT_FOUND AND USE_GETTEXT) +if(GETTEXT_FOUND AND ENABLE_GETTEXT) message(STATUS "gettext include path: ${GETTEXT_INCLUDE_DIR}") message(STATUS "gettext msgfmt path: ${GETTEXT_MSGFMT}") if(WIN32) @@ -17,12 +21,13 @@ if(GETTEXT_FOUND AND USE_GETTEXT) message(STATUS "gettext dll: ${GETTEXT_DLL}") message(STATUS "gettext iconv dll: ${GETTEXT_ICONV_DLL}") endif() + set(USE_GETTEXT 1) message(STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}") -elseif(GETTEXT_FOUND AND NOT USE_GETTEXT) +elseif(GETTEXT_FOUND AND NOT ENABLE_GETTEXT) MESSAGE(STATUS "GetText found but disabled;") -else(GETTEXT_FOUND AND USE_GETTEXT) +else(GETTEXT_FOUND AND ENABLE_GETTEXT) message(STATUS "GetText disabled") -endif(GETTEXT_FOUND AND USE_GETTEXT) +endif(GETTEXT_FOUND AND ENABLE_GETTEXT) if(NOT MSVC) set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++") @@ -265,7 +270,7 @@ if(BUILD_CLIENT) install(FILES ${images} DESTINATION ${DATADIR}) - if(GETTEXT_FOUND AND USE_GETTEXT) + if(USE_GETTEXT) foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) set_mo_paths(MO_BUILD_PATH MO_DEST_PATH ${LOCALE}) set(MO_BUILD_PATH "${MO_BUILD_PATH}/${PROJECT_NAME}.mo") @@ -280,14 +285,14 @@ if(BUILD_CLIENT) if(DEFINED ZLIB_DLL) install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR}) endif() - if(GETTEXT_FOUND AND USE_GETTEXT) + if(USE_GETTEXT) if(DEFINED GETTEXT_DLL) install(FILES ${GETTEXT_DLL} DESTINATION ${BINDIR}) endif() if(DEFINED GETTEXT_ICONV_DLL) install(FILES ${GETTEXT_ICONV_DLL} DESTINATION ${BINDIR}) endif() - endif(GETTEXT_FOUND AND USE_GETTEXT) + endif(USE_GETTEXT) endif() endif(BUILD_CLIENT) @@ -295,7 +300,7 @@ if(BUILD_SERVER) install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR}) endif(BUILD_SERVER) -if (GETTEXT_FOUND AND USE_GETTEXT) +if (USE_GETTEXT) set(MO_FILES) foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) @@ -319,7 +324,7 @@ if (GETTEXT_FOUND AND USE_GETTEXT) endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) add_custom_target(translations ALL COMMENT "mo update" DEPENDS ${MO_FILES}) -endif(GETTEXT_FOUND AND USE_GETTEXT) +endif(USE_GETTEXT) # Subdirectories diff --git a/src/config.h b/src/config.h index eb1d1a9aa..54b89a060 100644 --- a/src/config.h +++ b/src/config.h @@ -23,13 +23,13 @@ #else #define RUN_IN_PLACE_BOOLSTRING "0" #endif - #ifdef USE_GETTEXT - #define USE_GETTEXT_BOOLSTRING "ON" + #if USE_GETTEXT + #define USE_GETTEXT_BOOLSTRING "1" #else - #define USE_GETTEXT_BOOLSTRING "OFF" + #define USE_GETTEXT_BOOLSTRING "0" #endif + #define BUILD_INFO "NON-CMAKE RUN_IN_PLACE="RUN_IN_PLACE_BOOLSTRING" USE_GETTEXT="USE_GETTEXT_BOOLSTRING" BUILD_TYPE="BUILD_TYPE #endif - #endif diff --git a/src/gettext.h b/src/gettext.h index 751b83774..7c3a6ffab 100644 --- a/src/gettext.h +++ b/src/gettext.h @@ -1,4 +1,4 @@ -#if defined(GETTEXT_FOUND) && defined(USE_GETTEXT) +#if USE_GETTEXT #include #else #define gettext(String) String -- cgit v1.2.3