diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7322cbc..1731899 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,8 +4,12 @@
 
 cmake_minimum_required(VERSION 2.6)
 
+# Internal cmake modules
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
+
 include(CheckIncludeFiles)
 include(CheckFunctionExists)
+include(CheckLibraryExists)
 include(CheckTypeSize)
 include(CheckCSourceCompiles)
 include(CheckCXXSourceCompiles)
@@ -29,7 +33,7 @@
 # some kind of Unix system. The id will be empty if things fail.
 set(BUILD "")
 if(MSVC)
-  execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmakescripts/getdate.bat"
+  execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat"
     OUTPUT_VARIABLE BUILD)
 else()
   execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
@@ -125,8 +129,38 @@
 
 # Check for gettext
 option(ENABLE_NLS "Enable translation of program messages" ON)
-find_package(Gettext)
-set(LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale")
+if(ENABLE_NLS)
+  # Tools
+  find_package(Gettext REQUIRED)
+  set(LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale")
+
+  # Gettext needs iconv
+  find_package(Iconv REQUIRED)
+
+  # Headers and libraries (copied from licq)
+  set(GETTEXT_FOUND FALSE)
+
+  find_path(GETTEXT_INCLUDE_DIR libintl.h)
+  if(GETTEXT_INCLUDE_DIR)
+    set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
+    check_function_exists(dgettext LIBC_HAS_DGETTEXT)
+    if(LIBC_HAS_DGETTEXT)
+      set(GETTEXT_FOUND TRUE)
+    else()
+      find_library(LIBINTL_LIBRARY NAMES intl libintl)
+      check_library_exists(${LIBINTL_LIBRARY} "dgettext" "" LIBINTL_HAS_DGETTEXT)
+      if(LIBINTL_HAS_DGETTEXT)
+        set(GETTEXT_LIBRARIES ${LIBINTL_LIBRARY})
+        set(GETTEXT_FOUND TRUE)
+      endif()
+    endif()
+    set(CMAKE_REQUIRED_LIBRARIES)
+  endif()
+
+  if(NOT GETTEXT_FOUND)
+    message(FATAL_ERROR "Gettext NOT found")
+  endif()
+endif()
 
 # Check for libjpeg
 find_package(JPEG REQUIRED)
diff --git a/cmake/Modules/FindIconv.cmake b/cmake/Modules/FindIconv.cmake
new file mode 100644
index 0000000..cf268ea
--- /dev/null
+++ b/cmake/Modules/FindIconv.cmake
@@ -0,0 +1,66 @@
+# From: http://gitorious.org/gammu/mainline/blobs/master/cmake/FindIconv.cmake
+
+# - Try to find Iconv 
+# Once done this will define 
+# 
+#  ICONV_FOUND - system has Iconv 
+#  ICONV_INCLUDE_DIR - the Iconv include directory 
+#  ICONV_LIBRARIES - Link these to use Iconv 
+#  ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const
+# 
+include(CheckCCompilerFlag)
+include(CheckCXXSourceCompiles)
+
+IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
+  # Already in cache, be silent
+  SET(ICONV_FIND_QUIETLY TRUE)
+ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
+
+FIND_PATH(ICONV_INCLUDE_DIR iconv.h) 
+ 
+FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv c)
+ 
+IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
+   SET(ICONV_FOUND TRUE) 
+ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
+
+set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
+set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
+IF(ICONV_FOUND)
+  check_c_compiler_flag("-Werror" ICONV_HAVE_WERROR)
+  set (CMAKE_C_FLAGS_BACKUP "${CMAKE_C_FLAGS}")
+  if(ICONV_HAVE_WERROR)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
+  endif(ICONV_HAVE_WERROR)
+  check_c_source_compiles("
+  #include <iconv.h>
+  int main(){
+    iconv_t conv = 0;
+    const char* in = 0;
+    size_t ilen = 0;
+    char* out = 0;
+    size_t olen = 0;
+    iconv(conv, &in, &ilen, &out, &olen);
+    return 0;
+  }
+" ICONV_SECOND_ARGUMENT_IS_CONST )
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_BACKUP}")
+ENDIF(ICONV_FOUND)
+set(CMAKE_REQUIRED_INCLUDES)
+set(CMAKE_REQUIRED_LIBRARIES)
+
+IF(ICONV_FOUND) 
+  IF(NOT ICONV_FIND_QUIETLY) 
+    MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}") 
+  ENDIF(NOT ICONV_FIND_QUIETLY) 
+ELSE(ICONV_FOUND) 
+  IF(Iconv_FIND_REQUIRED) 
+    MESSAGE(FATAL_ERROR "Could not find Iconv") 
+  ENDIF(Iconv_FIND_REQUIRED) 
+ENDIF(ICONV_FOUND) 
+
+MARK_AS_ADVANCED(
+  ICONV_INCLUDE_DIR
+  ICONV_LIBRARIES
+  ICONV_SECOND_ARGUMENT_IS_CONST
+)
diff --git a/cmakescripts/getdate.bat b/cmake/getdate.bat
similarity index 100%
rename from cmakescripts/getdate.bat
rename to cmake/getdate.bat
diff --git a/vncviewer/CMakeLists.txt b/vncviewer/CMakeLists.txt
index b4f888e..c832b35 100644
--- a/vncviewer/CMakeLists.txt
+++ b/vncviewer/CMakeLists.txt
@@ -1,4 +1,5 @@
 include_directories(${FLTK_INCLUDE_DIR})
+include_directories(${GETTEXT_INCLUDE_DIR})
 
 include_directories(${CMAKE_SOURCE_DIR}/common)
 set(VNCVIEWER_SOURCES
@@ -16,6 +17,6 @@
 
 add_executable(vncviewer ${VNCVIEWER_SOURCES})
 
-target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES})
+target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES})
 
 install (TARGETS vncviewer DESTINATION bin)
