diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15f4a6453..aae390f38 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,11 +5,11 @@ if(${CMAKE_VERSION} STREQUAL "2.8.2")
endif(${CMAKE_VERSION} STREQUAL "2.8.2")
# This can be read from ${PROJECT_NAME} after project() is called
-project(minetest)
+project(minetest-delta)
set(VERSION_MAJOR 0)
set(VERSION_MINOR 2)
-set(VERSION_PATCH 20110704_0)
+set(VERSION_PATCH 20110720_0)
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
# Configuration options
@@ -48,15 +48,15 @@ if(WIN32)
set(EXAMPLE_CONF_DIR ".")
elseif(APPLE)
# random placeholders
- set(DATADIR "share/minetest")
+ set(DATADIR "share/${PROJECT_NAME}")
set(BINDIR "bin")
- set(DOCDIR "share/doc/minetest")
+ set(DOCDIR "share/doc/${PROJECT_NAME}")
set(EXAMPLE_CONF_DIR ".")
elseif(UNIX) # Linux, BSD etc
- set(DATADIR "share/minetest")
+ set(DATADIR "share/${PROJECT_NAME}")
set(BINDIR "bin")
- set(DOCDIR "share/doc/minetest")
- set(EXAMPLE_CONF_DIR "share/doc/minetest")
+ set(DOCDIR "share/doc/${PROJECT_NAME}")
+ set(EXAMPLE_CONF_DIR "share/doc/${PROJECT_NAME}")
endif()
install(FILES "doc/README.txt" DESTINATION "${DOCDIR}")
@@ -103,7 +103,7 @@ elseif(APPLE)
set(CPACK_BUNDLE_NAME ${PROJECT_NAME})
set(CPACK_BUNDLE_ICON "")
set(CPACK_BUNDLE_PLIST "")
- set(CPACK_BUNDLE_STARTUP_COMMAND "Contents/MacOS/minetest")
+ set(CPACK_BUNDLE_STARTUP_COMMAND "Contents/MacOS/${PROJECT_NAME}")
set(CPACK_GENERATOR "Bundle")
else()
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-linux")
diff --git a/README b/README
index e03bdae25..82fcdd331 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
Minetest Δ (“Minetest Delta”) is a fork of Minetest-c55 , incorporating experimental features that are not (yet) included in Minetest-c55.
New features:
-* Submenu for key assignment (changes apply after restart)
+* Submenu for key assignment
* configurable far mesh tree display (boolean)
* configurable far mesh rendering distance
* volumetric clouds (using fake shading)
diff --git a/cmake/Modules/FindGettextLib.cmake b/cmake/Modules/FindGettextLib.cmake
new file mode 100644
index 000000000..b99fd33b8
--- /dev/null
+++ b/cmake/Modules/FindGettextLib.cmake
@@ -0,0 +1,80 @@
+# Package finder for gettext libs and include files
+
+SET(CUSTOM_GETTEXT_PATH "${PROJECT_SOURCE_DIR}/../../gettext"
+ CACHE FILEPATH "path to custom gettext")
+
+# by default
+SET(GETTEXT_FOUND FALSE)
+
+FIND_PATH(GETTEXT_INCLUDE_DIR
+ NAMES libintl.h
+ PATHS "${CUSTOM_GETTEXT_PATH}/include"
+ DOC "gettext include directory")
+
+FIND_PROGRAM(GETTEXT_MSGFMT
+ NAMES 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
+IF (WIN32)
+ IF(MSVC)
+ SET(GETTEXT_LIB_NAMES
+ libintl.lib intl.lib libintl3.lib intl3.lib)
+ ELSE()
+ SET(GETTEXT_LIB_NAMES
+ libintl.dll.a intl.dll.a libintl3.dll.a intl3.dll.a)
+ ENDIF()
+ FIND_LIBRARY(GETTEXT_LIBRARY
+ NAMES ${GETTEXT_LIB_NAMES}
+ PATHS "${CUSTOM_GETTEXT_PATH}/lib"
+ DOC "gettext *intl*.lib")
+ FIND_FILE(GETTEXT_DLL
+ NAMES libintl.dll intl.dll libintl3.dll intl3.dll
+ PATHS "${CUSTOM_GETTEXT_PATH}/bin" "${CUSTOM_GETTEXT_PATH}/lib"
+ DOC "gettext *intl*.dll")
+ FIND_FILE(GETTEXT_ICONV_DLL
+ NAMES libiconv2.dll
+ PATHS "${CUSTOM_GETTEXT_PATH}/bin" "${CUSTOM_GETTEXT_PATH}/lib"
+ DOC "gettext *iconv*.lib")
+ENDIF(WIN32)
+
+
+IF(GETTEXT_INCLUDE_DIR AND GETTEXT_MSGFMT)
+ IF (WIN32)
+ # in the Win32 case check also for the extra linking requirements
+ IF(GETTEXT_LIBRARY AND GETTEXT_DLL AND GETTEXT_ICONV_DLL)
+ SET(GETTEXT_FOUND TRUE)
+ ENDIF()
+ ELSE(WIN32)
+ SET(GETTEXT_FOUND TRUE)
+ ENDIF(WIN32)
+ENDIF()
+
+IF(GETTEXT_FOUND)
+ SET(GETTEXT_PO_PATH ${CMAKE_SOURCE_DIR}/po)
+ 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}/*")
+ MACRO(SET_MO_PATHS _buildvar _destvar _locale)
+ STRING(REPLACE "" ${_locale} ${_buildvar} ${GETTEXT_MO_BUILD_PATH})
+ STRING(REPLACE "" ${_locale} ${_destvar} ${GETTEXT_MO_DEST_PATH})
+ ENDMACRO(SET_MO_PATHS)
+ENDIF()
diff --git a/data/firefly.png b/data/firefly.png
index d5a444b03..40df7fa1c 100644
Binary files a/data/firefly.png and b/data/firefly.png differ
diff --git a/data/unknown_block.png b/data/unknown_block.png
index a27cb8ca9..8a8e0109c 100644
Binary files a/data/unknown_block.png and b/data/unknown_block.png differ
diff --git a/makepackage_binary.sh b/makepackage_binary.sh
index f00ec608c..32d19865a 100755
--- a/makepackage_binary.sh
+++ b/makepackage_binary.sh
@@ -1,17 +1,19 @@
#!/bin/sh
-PACKAGEDIR=../minetest-packages
-PACKAGENAME=minetest-c55-binary-`date +%y%m%d%H%M%S`
+PROJECT_NAME=minetest-delta
+PACKAGEDIR=../$PROJECT_NAME-packages
+PACKAGENAME=$PROJECT_NAME-binary-`date +%y%m%d%H%M%S`
PACKAGEPATH=$PACKAGEDIR/$PACKAGENAME
mkdir -p $PACKAGEPATH
mkdir -p $PACKAGEPATH/bin
mkdir -p $PACKAGEPATH/data
mkdir -p $PACKAGEPATH/doc
+mkdir -p $PACKAGEPATH/locale/de/LC_MESSAGES/
cp minetest.conf.example $PACKAGEPATH/
-cp bin/minetest.exe $PACKAGEPATH/bin/
+cp bin/$PROJECT_NAME.exe $PACKAGEPATH/bin/
cp bin/Irrlicht.dll $PACKAGEPATH/bin/
cp bin/zlibwapi.dll $PACKAGEPATH/bin/
#cp bin/test $PACKAGEPATH/bin/
@@ -57,6 +59,8 @@ cp -r data/sand.png $PACKAGEPATH/data/
cp -r doc/README.txt $PACKAGEPATH/doc/README.txt
+cp -r locale/de/LC_MESSAGES/$PROJECT_NAME.mo $PACKAGEPATH/locale/de/LC_MESSAGES/
+
cd $PACKAGEDIR
rm $PACKAGENAME.zip
zip -r $PACKAGENAME.zip $PACKAGENAME
diff --git a/po/de/minetest-c55.po b/po/de/minetest.po
similarity index 78%
rename from po/de/minetest-c55.po
rename to po/de/minetest.po
index c5ec1c7a0..69b57fd95 100644
--- a/po/de/minetest-c55.po
+++ b/po/de/minetest.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-20 16:57+0200\n"
+"POT-Creation-Date: 2011-07-22 11:00+0200\n"
"PO-Revision-Date: 2011-07-20 16:58+0100\n"
"Last-Translator: Constantin Wenger \n"
"Language-Team: Deutsch <>\n"
@@ -21,44 +21,43 @@ msgstr ""
msgid "Name/Password"
msgstr "Name/Passwort"
-#: src/guiMainMenu.cpp:202
+#: src/guiMainMenu.cpp:203
msgid "Address/Port"
msgstr "Adresse / Port"
-#: src/guiMainMenu.cpp:220
+#: src/guiMainMenu.cpp:223
msgid "Leave address blank to start a local server."
msgstr "Lasse die Adresse frei um einen eigenen Server zu starten"
-#: src/guiMainMenu.cpp:226
+#: src/guiMainMenu.cpp:230
msgid "Fancy trees"
msgstr "Schöne Bäume"
-#: src/guiMainMenu.cpp:232
+#: src/guiMainMenu.cpp:236
msgid "Smooth Lighting"
msgstr "Besseres Licht"
-#: src/guiMainMenu.cpp:239
+#: src/guiMainMenu.cpp:244
msgid "Start Game / Connect"
msgstr "Spiel starten / Verbinden"
-#: src/guiMainMenu.cpp:247
+#: src/guiMainMenu.cpp:253
msgid "Change keys"
msgstr "Tastenbelegung ändern"
-#: src/guiMainMenu.cpp:269
+#: src/guiMainMenu.cpp:276
msgid "Creative Mode"
msgstr "Kreativitätsmodus"
-#: src/guiMainMenu.cpp:274
+#: src/guiMainMenu.cpp:282
msgid "Enable Damage"
msgstr "Schaden einschalten"
-#: src/guiMainMenu.cpp:281
+#: src/guiMainMenu.cpp:290
msgid "Delete map"
msgstr "Karte löschen"
-#: src/guiMessageMenu.cpp:92
-#: src/guiTextInputMenu.cpp:110
+#: src/guiMessageMenu.cpp:93 src/guiTextInputMenu.cpp:111
msgid "Proceed"
msgstr "Fortsetzen"
@@ -66,39 +65,39 @@ msgstr "Fortsetzen"
msgid "Old Password"
msgstr "Altes Passwort"
-#: src/guiPasswordChange.cpp:116
+#: src/guiPasswordChange.cpp:117
msgid "New Password"
msgstr "Neues Passwort"
-#: src/guiPasswordChange.cpp:129
+#: src/guiPasswordChange.cpp:131
msgid "Confirm Password"
msgstr "Passwort wiederholen"
-#: src/guiPasswordChange.cpp:143
+#: src/guiPasswordChange.cpp:146
msgid "Change"
msgstr "Ändern"
-#: src/guiPasswordChange.cpp:151
+#: src/guiPasswordChange.cpp:155
msgid "Passwords do not match!"
msgstr "Passwörter passen nicht zusammen"
-#: src/guiPauseMenu.cpp:109
+#: src/guiPauseMenu.cpp:110
msgid "Continue"
msgstr "Weiter"
-#: src/guiPauseMenu.cpp:115
+#: src/guiPauseMenu.cpp:117
msgid "Change Password"
msgstr "Passwort ändern"
-#: src/guiPauseMenu.cpp:121
+#: src/guiPauseMenu.cpp:124
msgid "Disconnect"
msgstr "Verbindung trennen"
-#: src/guiPauseMenu.cpp:127
+#: src/guiPauseMenu.cpp:131
msgid "Exit to OS"
msgstr "Programm beenden"
-#: src/guiPauseMenu.cpp:134
+#: src/guiPauseMenu.cpp:138
msgid ""
"Keys:\n"
"- WASD: Walk\n"
@@ -122,4 +121,3 @@ msgstr ""
"- R: Alle geladenen Kartenteile anzeigen, umschalten\n"
"- I: Inventarmenü\n"
"- T: Chat\n"
-
diff --git a/po/en/minetest.pot b/po/en/minetest.pot
new file mode 100644
index 000000000..e242c494b
--- /dev/null
+++ b/po/en/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-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/fr/minetest-c55.po b/po/fr/minetest.po
similarity index 78%
rename from po/fr/minetest-c55.po
rename to po/fr/minetest.po
index cfb76ae1a..b060c424c 100644
--- a/po/fr/minetest-c55.po
+++ b/po/fr/minetest.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-21 02:00+0200\n"
+"POT-Creation-Date: 2011-07-22 11:00+0200\n"
"PO-Revision-Date: 2011-07-21 15:48+0200\n"
"Last-Translator: Cyriaque 'Cisoun' Skrapits \n"
"Language-Team: Français <>\n"
@@ -21,44 +21,43 @@ msgstr ""
msgid "Name/Password"
msgstr "Nom / MdP"
-#: src/guiMainMenu.cpp:202
+#: src/guiMainMenu.cpp:203
msgid "Address/Port"
msgstr "Adresse / Port"
-#: src/guiMainMenu.cpp:220
+#: src/guiMainMenu.cpp:223
msgid "Leave address blank to start a local server."
msgstr "Laisser l'adresse vide pour lancer un serveur local."
-#: src/guiMainMenu.cpp:226
+#: src/guiMainMenu.cpp:230
msgid "Fancy trees"
msgstr "Arbres spéciaux"
-#: src/guiMainMenu.cpp:232
+#: src/guiMainMenu.cpp:236
msgid "Smooth Lighting"
msgstr "Lumière douce"
-#: src/guiMainMenu.cpp:239
+#: src/guiMainMenu.cpp:244
msgid "Start Game / Connect"
msgstr "Démarrer / Connecter"
-#: src/guiMainMenu.cpp:247
+#: src/guiMainMenu.cpp:253
msgid "Change keys"
msgstr "Changer touches"
-#: src/guiMainMenu.cpp:269
+#: src/guiMainMenu.cpp:276
msgid "Creative Mode"
msgstr "Mode créatif"
-#: src/guiMainMenu.cpp:274
+#: src/guiMainMenu.cpp:282
msgid "Enable Damage"
msgstr "Activer blessures"
-#: src/guiMainMenu.cpp:281
+#: src/guiMainMenu.cpp:290
msgid "Delete map"
msgstr "Supprimer carte"
-#: src/guiMessageMenu.cpp:92
-#: src/guiTextInputMenu.cpp:110
+#: src/guiMessageMenu.cpp:93 src/guiTextInputMenu.cpp:111
msgid "Proceed"
msgstr "OK"
@@ -66,39 +65,39 @@ msgstr "OK"
msgid "Old Password"
msgstr "Ancien mot de passe"
-#: src/guiPasswordChange.cpp:116
+#: src/guiPasswordChange.cpp:117
msgid "New Password"
msgstr "Nouveau mot de passe"
-#: src/guiPasswordChange.cpp:129
+#: src/guiPasswordChange.cpp:131
msgid "Confirm Password"
msgstr "Confirmer mot de passe"
-#: src/guiPasswordChange.cpp:143
+#: src/guiPasswordChange.cpp:146
msgid "Change"
msgstr "Changer"
-#: src/guiPasswordChange.cpp:151
+#: src/guiPasswordChange.cpp:155
msgid "Passwords do not match!"
msgstr "Mauvaise correspondance!"
-#: src/guiPauseMenu.cpp:109
+#: src/guiPauseMenu.cpp:110
msgid "Continue"
msgstr "Continuer"
-#: src/guiPauseMenu.cpp:115
+#: src/guiPauseMenu.cpp:117
msgid "Change Password"
msgstr "Changer mot de passe"
-#: src/guiPauseMenu.cpp:121
+#: src/guiPauseMenu.cpp:124
msgid "Disconnect"
msgstr "Déconnection"
-#: src/guiPauseMenu.cpp:127
+#: src/guiPauseMenu.cpp:131
msgid "Exit to OS"
msgstr "Quitter le jeu"
-#: src/guiPauseMenu.cpp:134
+#: src/guiPauseMenu.cpp:138
msgid ""
"Keys:\n"
"- WASD: Walk\n"
@@ -122,4 +121,3 @@ msgstr ""
"- R: Active la vue de tous les blocs\n"
"- I: Inventaire\n"
"- T: Chat\n"
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 532ac9fee..c93762cab 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,10 +1,32 @@
-project(minetest)
+project(minetest-delta)
cmake_minimum_required( VERSION 2.6 )
if(RUN_IN_PLACE)
add_definitions ( -DRUN_IN_PLACE )
endif(RUN_IN_PLACE)
+OPTION(USE_GETTEXT "Use GetText for internationalization" OFF)
+
+if(USE_GETTEXT)
+ find_package(GettextLib REQUIRED)
+ message(STATUS "gettext include path: ${GETTEXT_INCLUDE_DIR}")
+ message(STATUS "gettext msgfmt path: ${GETTEXT_MSGFMT}")
+ if(WIN32)
+ message(STATUS "gettext library: ${GETTEXT_LIBRARY}")
+ message(STATUS "gettext dll: ${GETTEXT_DLL}")
+ message(STATUS "gettext iconv dll: ${GETTEXT_ICONV_DLL}")
+ endif()
+ if (GETTEXT_FOUND)
+ add_definitions( -DUSE_GETTEXT )
+ message(STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}")
+ else()
+ message(STATUS "ERROR: GetText enabled but not found, disabling")
+ set(USE_GETTEXT FALSE)
+ endif(GETTEXT_FOUND)
+else(USE_GETTEXT)
+ message(STATUS "GetText disabled")
+endif(USE_GETTEXT)
+
if(NOT MSVC)
set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
endif()
@@ -27,12 +49,6 @@ if(WIN32)
CACHE FILEPATH "Path to zlibwapi.lib")
set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
- set(GETTEXT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../gettext/include"
- CACHE PATH "gettext include directory")
- set(GETTEXT_BIN_DIR "${PROJECT_SOURCE_DIR}/../../gettext/bin"
- CACHE PATH "gettext bin directory")
- set(GETTEXT_LIBRARIES "${PROJECT_SOURCE_DIR}/../../gettext/lib/intl.lib"
- CACHE FILEPATH "gettext intl.lib")
set(IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2"
CACHE PATH "irrlicht dir")
else()
@@ -153,9 +169,9 @@ include_directories(
set(EXECUTABLE_OUTPUT_PATH ../bin)
if(BUILD_CLIENT)
- add_executable(minetest ${minetest_SRCS})
+ add_executable(${PROJECT_NAME} ${minetest_SRCS})
target_link_libraries(
- minetest
+ ${PROJECT_NAME}
${ZLIB_LIBRARIES}
${IRRLICHT_LIBRARY}
${OPENGL_LIBRARIES}
@@ -163,7 +179,7 @@ if(BUILD_CLIENT)
${BZIP2_LIBRARIES}
${PNG_LIBRARIES}
${X11_LIBRARIES}
- ${GETTEXT_LIBRARIES}
+ ${GETTEXT_LIBRARY}
${PLATFORM_LIBS}
${CLIENT_PLATFORM_LIBS}
${JTHREAD_LIBRARY}
@@ -172,9 +188,9 @@ if(BUILD_CLIENT)
endif(BUILD_CLIENT)
if(BUILD_SERVER)
- add_executable(minetestserver ${minetestserver_SRCS})
+ add_executable(${PROJECT_NAME}server ${minetestserver_SRCS})
target_link_libraries(
- minetestserver
+ ${PROJECT_NAME}server
${ZLIB_LIBRARIES}
${PLATFORM_LIBS}
${JTHREAD_LIBRARY}
@@ -199,7 +215,7 @@ if(MSVC)
set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
if(BUILD_SERVER)
- set_target_properties(minetestserver PROPERTIES
+ set_target_properties(${PROJECT_NAME}server PROPERTIES
COMPILE_DEFINITIONS "SERVER")
endif(BUILD_SERVER)
@@ -221,10 +237,6 @@ else()
set(ARCH i386)
endif()
- if(WIN32)
- set(CMAKE_EXE_LINKER_FLAGS "-lintl -L ${GETTEXT_BIN_DIR}")
- endif()
-
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS}")
@@ -233,7 +245,7 @@ else()
endif()
if(BUILD_SERVER)
- set_target_properties(minetestserver PROPERTIES
+ set_target_properties(${PROJECT_NAME}server PROPERTIES
COMPILE_DEFINITIONS "SERVER")
endif(BUILD_SERVER)
@@ -250,15 +262,20 @@ endif()
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../minetest.conf.example" DESTINATION ${EXAMPLE_CONF_DIR})
if(BUILD_CLIENT)
- install(TARGETS minetest DESTINATION ${BINDIR})
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png")
install(FILES ${images} DESTINATION ${DATADIR})
- install(FILES ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES/minetest-c55.mo DESTINATION locale/de/LC_MESSAGES)
- install(FILES ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES/minetest-c55.mo DESTINATION locale/fr/LC_MESSAGES)
-
+ 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")
+ install(FILES ${MO_BUILD_PATH} DESTINATION ${MO_DEST_PATH})
+ endforeach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
+ endif()
+
if(WIN32)
if(DEFINED IRRLICHT_DLL)
install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
@@ -266,51 +283,72 @@ if(BUILD_CLIENT)
if(DEFINED ZLIB_DLL)
install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
endif()
- if(DEFINED GETTEXT_BIN_DIR)
- install(FILES ${GETTEXT_BIN_DIR}/libintl3.dll DESTINATION ${BINDIR})
- install(FILES ${GETTEXT_BIN_DIR}/libiconv2.dll DESTINATION ${BINDIR})
- endif()
+ 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(USE_GETTEXT)
endif()
endif(BUILD_CLIENT)
if(BUILD_SERVER)
- install(TARGETS minetestserver DESTINATION ${BINDIR})
+ install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR})
endif(BUILD_SERVER)
-if(WIN32)
- set(GETTEXT_MSGFMT "${GETTEXT_BIN_DIR}/msgfmt" CACHE FILEPATH "path to msgfmt")
-elseif(APPLE)
- set(GETTEXT_MSGFMT "${GETTEXT_BIN_DIR}/msgfmt" CACHE FILEPATH "path to msgfmt")
-else()
- set(GETTEXT_MSGFMT "msgfmt")
-endif()
+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")
-add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES COMMENT "mo-update [de]: Creating locale directory.")
-add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES COMMENT "mo-update [fr]: Creating locale directory.")
+ set(PO_FILES)
+ set(MO_FILES)
-add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES/minetest-c55.mo
- COMMAND ${GETTEXT_MSGFMT} -o ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES/minetest-c55.mo ${CMAKE_SOURCE_DIR}/po/de/minetest-c55.po
- DEPENDS
- ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES
- ${CMAKE_SOURCE_DIR}/po/de/minetest-c55.po
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/po/de
- COMMENT "mo-update [de]: Creating mo file."
- )
-add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES/minetest-c55.mo
- COMMAND ${GETTEXT_MSGFMT} -o ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES/minetest-c55.mo ${CMAKE_SOURCE_DIR}/po/fr/minetest-c55.po
- DEPENDS
- ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES
- ${CMAKE_SOURCE_DIR}/po/fr/minetest-c55.po
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/po/fr
- COMMENT "mo-update [fr]: Creating mo file."
- )
-
-add_custom_target(translation_de ALL COMMENT "mo update [de]" DEPENDS ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES/minetest-c55.mo)
-add_custom_target(translation_fr ALL COMMENT "mo update [fr]" DEPENDS ${CMAKE_BINARY_DIR}/locale/fr/LC_MESSAGES/minetest-c55.mo)
+ 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_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}/minetest.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
if (JTHREAD_FOUND)
diff --git a/src/gettext.h b/src/gettext.h
index 7f5f56e49..8ddb95346 100644
--- a/src/gettext.h
+++ b/src/gettext.h
@@ -1,9 +1,16 @@
+#ifdef USE_GETTEXT
#include
+#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 wchar_t* chartowchar_t(char *str)
+inline wchar_t* chartowchar_t(const char *str)
{
size_t l = strlen(str)+1;
wchar_t* nstr = new wchar_t[l];
diff --git a/src/guiKeyChangeMenu.cpp b/src/guiKeyChangeMenu.cpp
index 3e594aeca..4a11cf93c 100644
--- a/src/guiKeyChangeMenu.cpp
+++ b/src/guiKeyChangeMenu.cpp
@@ -338,7 +338,7 @@ bool GUIKeyChangeMenu::acceptInput()
g_settings.set("keymap_fastmove", keycode_to_keyname(key_fast));
g_settings.set("keymap_special1", keycode_to_keyname(key_use));
g_settings.set("keymap_print_debug_stacks", keycode_to_keyname(key_dump));
- //clearKeyCache(); Y U NO SCOPE?!
+ clearKeyCache();
return true;
}
void GUIKeyChangeMenu::init_keys()
diff --git a/src/guiMainMenu.cpp b/src/guiMainMenu.cpp
index f557f4dc0..1d7f224f6 100644
--- a/src/guiMainMenu.cpp
+++ b/src/guiMainMenu.cpp
@@ -177,7 +177,8 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, 50+6);
- Environment->addStaticText(chartowchar_t(gettext("Name/Password")), rect, false, true, this, -1);
+ Environment->addStaticText(chartowchar_t(gettext("Name/Password")),
+ rect, false, true, this, -1);
}
{
core::rect rect(0, 0, 230, 30);
@@ -199,7 +200,8 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, 100+6);
- Environment->addStaticText(chartowchar_t(gettext("Address/Port")), rect, false, true, this, -1);
+ Environment->addStaticText(chartowchar_t(gettext("Address/Port")),
+ rect, false, true, this, -1);
}
{
core::rect rect(0, 0, 230, 30);
@@ -217,13 +219,15 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
}
{
core::rect rect(0, 0, 400, 20);
- Environment->addStaticText(chartowchar_t(gettext("Leave address blank to start a local server.")), rect, false, true, this, -1);
+ rect += topleft_client + v2s32(160, 100+35);
+ Environment->addStaticText(chartowchar_t(gettext("Leave address blank to start a local server.")),
+ rect, false, true, this, -1);
}
{
core::rect rect(0, 0, 250, 30);
rect += topleft_client + v2s32(35, 150);
Environment->addCheckBox(fancy_trees, rect, this, GUI_ID_FANCYTREE_CB,
- chartowchar_t(gettext("Fancy trees")));
+ chartowchar_t(gettext("Fancy trees")));
}
{
core::rect rect(0, 0, 250, 30);
@@ -236,7 +240,8 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
core::rect rect(0, 0, 180, 30);
//rect += topleft_client + v2s32(size_client.X/2-180/2, 225-30/2);
rect += topleft_client + v2s32(size_client.X-180-40, 150+25);
- Environment->addButton(rect, this, GUI_ID_JOIN_GAME_BUTTON, chartowchar_t(gettext("Start Game / Connect")));
+ Environment->addButton(rect, this, GUI_ID_JOIN_GAME_BUTTON,
+ chartowchar_t(gettext("Start Game / Connect")));
}
// Key change button
@@ -244,7 +249,8 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
core::rect rect(0, 0, 100, 30);
//rect += topleft_client + v2s32(size_client.X/2-180/2, 225-30/2);
rect += topleft_client + v2s32(size_client.X-180-40-100-20, 150+25);
- Environment->addButton(rect, this, GUI_ID_CHANGE_KEYS_BUTTON, chartowchar_t(gettext("Change keys")));
+ Environment->addButton(rect, this, GUI_ID_CHANGE_KEYS_BUTTON,
+ chartowchar_t(gettext("Change keys")));
}
/*
Server section
@@ -266,19 +272,22 @@ void GUIMainMenu::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 250, 30);
rect += topleft_server + v2s32(35, 30);
- Environment->addCheckBox(creative_mode, rect, this, GUI_ID_CREATIVE_CB, chartowchar_t(gettext("Creative Mode")));
+ Environment->addCheckBox(creative_mode, rect, this, GUI_ID_CREATIVE_CB,
+ chartowchar_t(gettext("Creative Mode")));
}
{
core::rect rect(0, 0, 250, 30);
rect += topleft_server + v2s32(35, 60);
- Environment->addCheckBox(enable_damage, rect, this, GUI_ID_DAMAGE_CB, chartowchar_t(gettext("Enable Damage")));
+ Environment->addCheckBox(enable_damage, rect, this, GUI_ID_DAMAGE_CB,
+ chartowchar_t(gettext("Enable Damage")));
}
// Map delete button
{
core::rect rect(0, 0, 130, 30);
//rect += topleft_server + v2s32(size_server.X-40-130, 100+25);
rect += topleft_server + v2s32(40, 100+25);
- Environment->addButton(rect, this, GUI_ID_DELETE_MAP_BUTTON, chartowchar_t(gettext("Delete map")));
+ Environment->addButton(rect, this, GUI_ID_DELETE_MAP_BUTTON,
+ chartowchar_t(gettext("Delete map")));
}
}
diff --git a/src/guiMessageMenu.cpp b/src/guiMessageMenu.cpp
index e4e582ab1..155be6029 100644
--- a/src/guiMessageMenu.cpp
+++ b/src/guiMessageMenu.cpp
@@ -89,7 +89,8 @@ void GUIMessageMenu::regenerateGui(v2u32 screensize)
core::rect rect(0, 0, 140, 30);
rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2+25);
gui::IGUIElement *e =
- Environment->addButton(rect, this, 257, chartowchar_t(gettext("Proceed")));
+ Environment->addButton(rect, this, 257,
+ chartowchar_t(gettext("Proceed")));
Environment->setFocus(e);
}
}
diff --git a/src/guiPasswordChange.cpp b/src/guiPasswordChange.cpp
index 79601a99f..fabe75110 100644
--- a/src/guiPasswordChange.cpp
+++ b/src/guiPasswordChange.cpp
@@ -99,7 +99,8 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, ypos+6);
- Environment->addStaticText(chartowchar_t(gettext("Old Password")), rect, false, true, this, -1);
+ Environment->addStaticText(chartowchar_t(gettext("Old Password")),
+ rect, false, true, this, -1);
}
{
core::rect rect(0, 0, 230, 30);
@@ -113,7 +114,8 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, ypos+6);
- Environment->addStaticText(chartowchar_t(gettext("New Password")), rect, false, true, this, -1);
+ Environment->addStaticText(chartowchar_t(gettext("New Password")),
+ rect, false, true, this, -1);
}
{
core::rect rect(0, 0, 230, 30);
@@ -126,7 +128,8 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 110, 20);
rect += topleft_client + v2s32(35, ypos+6);
- Environment->addStaticText(chartowchar_t(gettext("Confirm Password")), rect, false, true, this, -1);
+ Environment->addStaticText(chartowchar_t(gettext("Confirm Password")),
+ rect, false, true, this, -1);
}
{
core::rect rect(0, 0, 230, 30);
@@ -148,7 +151,9 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
core::rect rect(0, 0, 300, 20);
rect += topleft_client + v2s32(35, ypos);
IGUIElement *e =
- Environment->addStaticText(chartowchar_t(gettext("Passwords do not match!")), rect, false, true, this, ID_message);
+ Environment->addStaticText(
+ chartowchar_t(gettext("Passwords do not match!")),
+ rect, false, true, this, ID_message);
e->setVisible(false);
}
diff --git a/src/guiPauseMenu.cpp b/src/guiPauseMenu.cpp
index 5f40a4820..61485518c 100644
--- a/src/guiPauseMenu.cpp
+++ b/src/guiPauseMenu.cpp
@@ -106,25 +106,29 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
- Environment->addButton(rect, this, 256, chartowchar_t(gettext("Continue")));
+ Environment->addButton(rect, this, 256,
+ chartowchar_t(gettext("Continue")));
}
btn_y += btn_height + btn_gap;
{
core::rect rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
- Environment->addButton(rect, this, 261, chartowchar_t(gettext("Change Password")));
+ Environment->addButton(rect, this, 261,
+ chartowchar_t(gettext("Change Password")));
}
btn_y += btn_height + btn_gap;
{
core::rect rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
- Environment->addButton(rect, this, 260, chartowchar_t(gettext("Disconnect")));
+ Environment->addButton(rect, this, 260,
+ chartowchar_t(gettext("Disconnect")));
}
btn_y += btn_height + btn_gap;
{
core::rect rect(0, 0, 140, btn_height);
rect = rect + v2s32(size.X/2-140/2, btn_y);
- Environment->addButton(rect, this, 257, chartowchar_t(gettext("Exit to OS")));
+ Environment->addButton(rect, this, 257,
+ chartowchar_t(gettext("Exit to OS")));
}
{
diff --git a/src/guiTextInputMenu.cpp b/src/guiTextInputMenu.cpp
index b15f8bc07..252e452f5 100644
--- a/src/guiTextInputMenu.cpp
+++ b/src/guiTextInputMenu.cpp
@@ -107,7 +107,8 @@ void GUITextInputMenu::regenerateGui(v2u32 screensize)
{
core::rect rect(0, 0, 140, 30);
rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2+25);
- Environment->addButton(rect, this, 257, chartowchar_t(gettext("Proceed")));
+ Environment->addButton(rect, this, 257,
+ chartowchar_t(gettext("Proceed")));
}
}
diff --git a/src/keycode.h b/src/keycode.h
index 9c62004d8..300682b12 100644
--- a/src/keycode.h
+++ b/src/keycode.h
@@ -24,11 +24,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include
irr::EKEY_CODE keyname_to_keycode(const char *name);
+std::string keycode_to_keyname(s32 keycode);
// Key configuration getter
irr::EKEY_CODE getKeySetting(const char *settingname);
-std::string keycode_to_keyname(s32 keycode);
-void clearCache();
+
+// Clear fast lookup cache
+void clearKeyCache();
#endif
diff --git a/src/main.cpp b/src/main.cpp
index 505f82fc7..9a1e1960f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1139,9 +1139,9 @@ int main(int argc, char *argv[])
// Create user data directory
fs::CreateDir(porting::path_userdata);
- setlocale(LC_ALL, "");
- bindtextdomain("minetest-c55", (porting::path_userdata+"/locale").c_str());
- textdomain("minetest-c55");
+ setlocale(LC_MESSAGES, "");
+ bindtextdomain("minetest", (porting::path_userdata+"/locale").c_str());
+ textdomain("minetest");
// Initialize debug streams
#ifdef RUN_IN_PLACE
diff --git a/updatelocales.sh b/updatelocales.sh
deleted file mode 100755
index e84145107..000000000
--- a/updatelocales.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/bash
-xgettext -n -o minetest-c55.pot ./src/*.cpp ./src/*.h
-msgmerge -U ./po/de/minetest-c55.po minetest-c55.pot
-msgmerge -U ./po/fr/minetest-c55.po minetest-c55.pot
-rm minetest-c55.pot