You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

88 lines
2.4 KiB

set( TARGET locale )
set( TARGET_ROOT ${CMAKE_SOURCE_DIR}/locale )
message( STATUS "========== Configuring ${TARGET} ==========" )
def_vars()
# Load the list of catalogs
file( STRINGS ${TARGET_ROOT}/LINGUAS SOURCES )
list( TRANSFORM SOURCES APPEND ".po" )
# Look for gettext
find_package( Gettext QUIET )
if( GETTEXT_FOUND )
mark_as_advanced( FORCE GETTEXT_MSGFMT_EXECUTABLE )
mark_as_advanced( FORCE GETTEXT_MSGMERGE_EXECUTABLE )
set( msgfmt "${GETTEXT_MSGFMT_EXECUTABLE}" )
elseif( PYTHON )
set( msgfmt "${PYTHON}" "${TARGET_ROOT}/msgfmt.py" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
nuget_package( pkgdir "Gettext.Tools" "0.20.1.1" )
file( TO_NATIVE_PATH "${pkgdir}/tools/bin/msgfmt.exe" msgfmt )
endif()
if( NOT DEFINED msgfmt )
message( WARNING "The msgfmt program wasn't found...translations will not be provided." )
return()
endif()
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( locale "${_DEST}/Resources" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( locale "${_DEST}/Languages" )
else()
set( locale "${_DEST}/locale" )
endif()
set( OUTPUTS )
foreach( source ${SOURCES} )
get_filename_component( lang "${source}" NAME_WE )
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( dst "${locale}/${lang}.lproj" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( dst "${locale}/${lang}" )
else()
set( dst "${locale}/${lang}/LC_MESSAGES" )
endif()
set( po "${_SRCDIR}/${source}" )
set( mo "${dst}/tenacity.mo" )
add_custom_command(
DEPENDS
"${po}"
COMMAND
"${CMAKE_COMMAND}" -E make_directory "${dst}"
COMMAND
${msgfmt} -o "${mo}" "${po}"
OUTPUT
"${mo}"
)
# Always make sure there's an empty English folder. Otherwise, some menu
# items will be translated to the next language listed in System
# Preferences/Language & Text
# if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
# add_custom_command(
# COMMAND
# ${CMAKE_COMMAND} -E make_directory "${_DEST}/Resources/en.lproj"
# OUTPUT
# "${mo}"
# APPEND
# )
# endif()
list( APPEND OUTPUTS ${mo} )
endforeach()
add_custom_target( "${TARGET}" ALL DEPENDS ${OUTPUTS} SOURCES "${SOURCES}" )
if( NOT CMAKE_SYSTEM_NAME MATCHES "Darwin" )
if( NOT WIN32)
install( DIRECTORY ${locale}/
TYPE LOCALE )
endif()
endif()