Add per-language targets for po-generation: update-po-domain-LANG

Fix gettext detection

Fix out of source build
This commit is contained in:
Moritz Göbelbecker 2008-05-05 18:52:11 +00:00
parent 4fe4c219de
commit 7419a6726d
4 changed files with 30 additions and 17 deletions

View file

@ -15,6 +15,7 @@ FIND_PACKAGE( PythonLibs 2.4 )
FIND_PACKAGE( Boost 1.33 REQUIRED COMPONENTS iostreams regex )
FIND_PACKAGE( ZLIB REQUIRED )
FIND_PACKAGE( PNG REQUIRED )
FIND_PACKAGE( Gettext REQUIRED )
#Options

View file

@ -1,13 +1,14 @@
MACRO (ADD_POT_TARGET DOMAIN)
add_custom_command(OUTPUT remove-potcdate.sed
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/remove-potcdate.sed
COMMAND sed
ARGS -e "'/^#/d'" remove-potcdate.sin > remove-potcdate.sed
MAIN_DEPENDENCY remove-potcdate.sin )
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/remove-potcdate.sin
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set(POTFILE ${DOMAIN}.pot)
add_custom_target(update-pot-${DOMAIN}
COMMAND ${CMAKE_SOURCE_DIR}/po/pot-update.sh ${DOMAIN}
COMMAND ${CMAKE_BINARY_DIR}/po/pot-update.sh ${DOMAIN}
DEPENDS remove-potcdate.sed
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# add_custom_command(OUTPUT ${POTFILE}
@ -23,42 +24,51 @@ ENDMACRO (ADD_POT_TARGET DOMAIN)
MACRO (ADD_PO_TARGETS DOMAIN)
if(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGINIT_EXECUTABLE)
set(LINGUAS ${ARGN})
set(POFILES)
add_custom_target(update-po-${DOMAIN})
foreach(LANG ${LINGUAS})
set(POFILE ${LANG}.po)
set(UPDFILE ${LANG}.upd)
add_custom_command(OUTPUT ${UPDFILE}
COMMAND ${CMAKE_SOURCE_DIR}/po/po-update.sh
ARGS ${DOMAIN} ${LANG} ${GETTEXT_MSGMERGE_EXECUTABLE} ${GETTEXT_MSGINIT_EXECUTABLE}
MAIN_DEPENDENCY ${DOMAIN}.pot )
add_custom_target(update-po-${DOMAIN}-${LANG}
COMMAND ${CMAKE_SOURCE_DIR}/po/po-update.sh
${DOMAIN} ${LANG} ${GETTEXT_MSGMERGE_EXECUTABLE} ${GETTEXT_MSGINIT_EXECUTABLE}
DEPENDS ${DOMAIN}.pot
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_dependencies(update-po-${DOMAIN} update-po-${DOMAIN}-${LANG})
#add_dependencies(update-po-${DOMAIN}-${LANG} )
set_source_files_properties(${POFILE} PROPERTIES GENERATED TRUE)
set(POFILES ${POFILES} ${UPDFILE})
endforeach(LANG ${LINGUAS})
add_custom_target(update-po-${DOMAIN} DEPENDS ${POFILES})
add_dependencies(update-po update-po-${DOMAIN})
endif(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGINIT_EXECUTABLE)
ENDMACRO (ADD_PO_TARGETS DOMAIN)
MACRO (ADD_MO_TARGETS DOMAIN)
if(GETTEXT_MSGFMT_EXECUTABLE)
set(LINGUAS ${ARGN})
set(MOFILES)
foreach(LANG ${LINGUAS})
set(POFILE ${LANG}.po)
set(MOFILE ${LANG}.gmo)
set(MOFILE ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.gmo)
set_source_files_properties(${POFILE} PROPERTIES GENERATED TRUE)
add_custom_command(OUTPUT ${MOFILE}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
ARGS -c -o ${MOFILE} ${POFILE}
MAIN_DEPENDENCY ${POFILE} )
MAIN_DEPENDENCY ${POFILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
install(FILES ${MOFILE} DESTINATION ${LOCALE_INSTALL}/${LANG}/LC_MESSAGES/ RENAME ${DOMAIN}.mo)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${MOFILE} DESTINATION ${LOCALE_INSTALL}/${LANG}/LC_MESSAGES/ RENAME ${DOMAIN}.mo)
set(MOFILES ${MOFILES} ${MOFILE})
@ -66,4 +76,6 @@ MACRO (ADD_MO_TARGETS DOMAIN)
add_custom_target(update-gmo-${DOMAIN} ALL DEPENDS ${MOFILES})
add_dependencies(update-gmo update-gmo-${DOMAIN})
endif(GETTEXT_MSGFMT_EXECUTABLE)
ENDMACRO (ADD_MO_TARGETS DOMAIN)

View file

@ -1,7 +1,7 @@
INCLUDE(TranslationTargets)
set(XGETTEXT_OPTIONS "--from-code=UTF-8 --sort-by-file --keyword=sgettext --keyword=vgettext --keyword=_n:1,2 --keyword=sngettext:1,2 --keyword=vngettext:1,2")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pot-update.sh.in ${CMAKE_CURRENT_SOURCE_DIR}/pot-update.sh)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pot-update.sh.in ${CMAKE_CURRENT_BINARY_DIR}/pot-update.sh)
add_custom_target(update-pot)
add_custom_target(update-po)

View file

@ -8,9 +8,9 @@ GETTEXT_MSGINIT_EXECUTABLE=$4
if test -f "$LANG.po"; then
echo "$GETTEXT_MSGMERGE_EXECUTABLE --update $LANG.po $DOMAIN.pot"
$GETTEXT_MSGMERGE_EXECUTABLE --update $LANG.po $DOMAIN.pot
touch $LANG.upd
# touch $LANG.upd
else
echo "$GETTEXT_MSGINIT_EXECUTABLE --no-translator --input=$DOMAIN.pot --output-file=$LANG.po --locale=$LANG"
$GETTEXT_MSGINIT_EXECUTABLE --no-translator --input="$DOMAIN.pot" --output-file="$LANG.po" --locale="$LANG"
touch $LANG.upd
# touch $LANG.upd
fi