diff options
author | Peter Åstrand <astrand@cendio.se> | 2011-04-28 09:29:13 +0000 |
---|---|---|
committer | Peter Åstrand <astrand@cendio.se> | 2011-04-28 09:29:13 +0000 |
commit | bb445ef944f3850de98a6a90b44b1f87c341e989 (patch) | |
tree | 4fb275ef8a17570707ef957cc079a1f56466b13a | |
parent | 37d60d82caadcd765b7491f1b95feb9c8747df63 (diff) | |
download | tigervnc-bb445ef944f3850de98a6a90b44b1f87c341e989.tar.gz tigervnc-bb445ef944f3850de98a6a90b44b1f87c341e989.zip |
This patch adds gettext support for our new vncviewer. CMake only. The
change of the project name is to make the CMake build behave like the
Autotools build - define PACKAGE_NAME in the same way.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4388 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r-- | CMakeLists.txt | 8 | ||||
-rw-r--r-- | config.h.cmake.in | 1 | ||||
-rw-r--r-- | po/CMakeLists.txt | 61 |
3 files changed, 69 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 498c6148..7322cbc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ include(CheckTypeSize) include(CheckCSourceCompiles) include(CheckCXXSourceCompiles) -project(TigerVNC) +project(tigervnc) set(VERSION 1.0.90) # The RC version must always be four comma-separated numbers @@ -123,6 +123,11 @@ if(NOT ZLIB_FOUND) set(USE_INCLUDED_ZLIB 1) endif() +# Check for gettext +option(ENABLE_NLS "Enable translation of program messages" ON) +find_package(Gettext) +set(LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") + # Check for libjpeg find_package(JPEG REQUIRED) @@ -199,5 +204,6 @@ else() endif() if(BUILD_NEW_VNCVIEWER) + add_subdirectory(po) add_subdirectory(vncviewer) endif() diff --git a/config.h.cmake.in b/config.h.cmake.in index 27e90c4d..50fe25d1 100644 --- a/config.h.cmake.in +++ b/config.h.cmake.in @@ -12,6 +12,7 @@ #cmakedefine HAVE_GNUTLS_PK_ALGORITHM_T #cmakedefine HAVE_GNUTLS_SIGN_ALGORITHM_T #cmakedefine HAVE_FLTK_DEAD_KEYS +#cmakedefine ENABLE_NLS 1 /* MS Visual Studio 2008 and newer doesn't know ssize_t */ #if defined(HAVE_GNUTLS) && defined(WIN32) && !defined(__MINGW32__) diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 00000000..51f01720 --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,61 @@ +# Gettext support - mostly borrowed from the Licq project + +set(po_FILES + de fr pl ru sk sv +) + +if (NOT GETTEXT_MSGMERGE_EXECUTABLE AND NOT GETTEXT_MSGFMT_EXECUTABLE) + message(FATAL_ERROR "Gettext message catalog tools NOT found") +endif (NOT GETTEXT_MSGMERGE_EXECUTABLE AND NOT GETTEXT_MSGFMT_EXECUTABLE) + +find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext) +if (GETTEXT_XGETTEXT_EXECUTABLE) + # Get list of all source files + file(GLOB_RECURSE po_source + RELATIVE ${PROJECT_SOURCE_DIR} + ${PROJECT_SOURCE_DIR}/vncviewer/*.h + ${PROJECT_SOURCE_DIR}/vncviewer/*.cxx + ) + + add_custom_target(translations_update + ${GETTEXT_XGETTEXT_EXECUTABLE} + --directory ${PROJECT_SOURCE_DIR} + --output="${CMAKE_CURRENT_SOURCE_DIR}/tigervnc.pot" + --default-domain=tigervnc + --keyword=_ + --keyword=N_ + --copyright-holder='RealVNC Ltd, Constantin Kaplinsky, Peter Astrand, Cendio AB' + --msgid-bugs-address="tigervnc-devel@lists.sourceforge.net" + --sort-output + --no-location + ${po_source} + COMMENT "Updating tigervnc.pot" + ) +endif (GETTEXT_XGETTEXT_EXECUTABLE) + +foreach(lang ${po_FILES}) + set(po "${CMAKE_CURRENT_SOURCE_DIR}/${lang}.po") + set(mo "${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo") + + # Update po files after pot file + add_custom_command(TARGET translations_update POST_BUILD + COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none + --sort-output ${po} ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc.pot + COMMENT "Updating ${lang}.po" + ) + + # Add command to build X.mo from X.po + add_custom_command(OUTPUT ${mo} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${mo} ${po} + DEPENDS ${po} + ) + + install(FILES ${mo} + DESTINATION "${LOCALE_DIR}/${lang}/LC_MESSAGES" + RENAME tigervnc.mo + ) + + set(moFiles ${moFiles} ${mo}) +endforeach(lang) + +add_custom_target(translations ALL DEPENDS ${moFiles}) |