]> source.dussan.org Git - tigervnc.git/commitdiff
This patch adds gettext support for our new vncviewer. CMake only. The
authorPeter Åstrand <astrand@cendio.se>
Thu, 28 Apr 2011 09:29:13 +0000 (09:29 +0000)
committerPeter Åstrand <astrand@cendio.se>
Thu, 28 Apr 2011 09:29:13 +0000 (09:29 +0000)
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

CMakeLists.txt
config.h.cmake.in
po/CMakeLists.txt [new file with mode: 0644]

index 498c6148002e421592c475f7d28f46b70bbb074a..7322cbc80b223f7d5957b3df4531f76cd993b943 100644 (file)
@@ -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()
index 27e90c4dd5fa6b93b90abdff592552fdf18bb99e..50fe25d1dabb9782f8f459e5ee4b891f7a6f5a01 100644 (file)
@@ -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 (file)
index 0000000..51f0172
--- /dev/null
@@ -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})