@ -42,15 +42,6 @@ if( NOT DEFINED XGETTEXT_EXECUTABLE )
if ( "${XGETTEXT_EXECUTABLE}" STREQUAL "XGETTEXT_EXECUTABLE-NOTFOUND" )
tde_message_fatal ( "xgettext is required but not found" )
endif ( )
execute_process (
C O M M A N D $ { X G E T T E X T _ E X E C U T A B L E } - - v e r s i o n
O U T P U T _ V A R I A B L E _ x g e t t e x t _ v e r s i o n
E R R O R _ V A R I A B L E _ x g e t t e x t _ v e r s i o n
)
string ( REGEX REPLACE "^xgettext[^\n]* ([^ ]*)\n.*" "\\1" _xgettext_version ${ _xgettext_version } )
if ( "${_xgettext_version}" VERSION_LESS "0.19" )
tde_message_fatal ( "xgettext version >= 0.19 is required but found only ${_xgettext_version}" )
endif ( )
endif ( )
if ( NOT DEFINED MSGUNIQ_EXECUTABLE )
@ -414,7 +405,9 @@ macro( tde_l10n_create_template )
unset ( _keywords_desktop )
unset ( _keyword )
endif ( )
list ( APPEND _keywords_desktop "-k${_keyword}" )
if ( _keyword )
list ( APPEND _keywords_desktop "${_keyword}" )
endif ( )
endforeach ( )
# p r e p a r e r e s o u r c e f i l e s * . k c f g , * . r c a n d * . u i
@ -561,6 +554,13 @@ macro( tde_l10n_create_template )
# p r o c e s s d e s k t o p f i l e s
if ( _desktops )
# p r e p a r e d e s k t o p f i l e s
foreach ( _src ${ _desktops } )
tde_l10n_prepare_desktop ( ${ _src } KEYWORDS ${ _keywords_desktop } )
list ( REMOVE_ITEM _desktops ${ _src } )
list ( APPEND _desktops "${_src}.tde_l10n" )
endforeach ( )
# c r e a t e t r a n s l a t i o n t e m p l a t e f o r d e s k t o p f i l e s
if ( _pot )
set ( _withPotHeader "--omit-header" )
@ -568,8 +568,8 @@ macro( tde_l10n_create_template )
set ( _withPotHeader "--foreign-user" )
endif ( )
execute_process (
C O M M A N D $ { X G E T T E X T _ E X E C U T A B L E } $ { _ w i t h P o t H e a d e r } - L D e s k t o p
${ _ k e y w o r d s _ d e s k t o p } - o - $ { _ d e s k t o p s }
C O M M A N D $ { X G E T T E X T _ E X E C U T A B L E } $ { _ w i t h P o t H e a d e r } - C
-c - k i 1 8 n - o - $ { _ d e s k t o p s }
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E _ p o t D e s k t o p
)
@ -1158,3 +1158,104 @@ function( tde_l10n_prepare_xmlattr )
file ( WRITE ${ _target } "${_xml_l10n}" )
endfunction ( )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # t d e _ l 1 0 n _ p r e p a r e _ d e s k t o p
# # # # #
# # # # # T h e f u n c t i o n i s u s e d t o p r e p a r e d e s k t o p s t y l e f i l e
# # # # # f o r x g e t t e x t .
# # # # #
# # # # # N o t e : g e t t e x t > = 0 . 1 9 i n c l u d e s s u p p o r t f o r e x t r a c t i n g
# # # # # s t r i n g s f r o m d e s k t o p f i l e s , b u t t h e r e a r e s o m e d r a w b a c k s .
# # # # #
function ( tde_l10n_prepare_desktop )
unset ( _source )
unset ( _target )
unset ( _keywords )
unset ( _directive )
set ( _var _source )
foreach ( _arg ${ ARGN } )
# f o u n d d i r e c t i v e " S O U R C E "
if ( "+${_arg}" STREQUAL "+SOURCE" )
unset ( _source )
set ( _var _source )
set ( _directive 1 )
endif ( )
# f o u n d d i r e c t i v e " T A R G E T "
if ( "+${_arg}" STREQUAL "+TARGET" )
unset ( _target )
set ( _var _target )
set ( _directive 1 )
endif ( )
# f o u n d d i r e c t i v e " K E Y W O R D S "
if ( "+${_arg}" STREQUAL "+KEYWORDS" )
unset ( _keywords )
set ( _var _keywords )
set ( _directive 1 )
endif ( )
# c o l l e c t d a t a
if ( _directive )
unset ( _directive )
elseif ( _var )
list ( APPEND ${ _var } ${ _arg } )
endif ( )
endforeach ( )
# v e r i f y s o u r c e
if ( NOT _source )
tde_message_fatal ( "no source desktop file" )
endif ( )
if ( NOT IS_ABSOLUTE "${_source}" )
set ( _source "${CMAKE_CURRENT_SOURCE_DIR}/${_source}" )
endif ( )
if ( NOT _target )
set ( _target "${_source}.tde_l10n" )
endif ( )
if ( NOT IS_ABSOLUTE "${_target}" )
set ( _target "${CMAKE_CURRENT_SOURCE_DIR}/${_target}" )
endif ( )
# p r e p a r e k e y w o r d s
if ( NOT _keywords )
tde_message_fatal ( "the keywords whose strings are to be extracted are not specified" )
endif ( )
string ( REPLACE ";" "|" _keywords_match "(${_keywords})" )
# r e a d f i l e
file ( READ ${ _source } _desktop_data )
string ( REGEX REPLACE "[^\n]" "" _desktop_len ${ _desktop_data } )
string ( LENGTH "+${_desktop_len}" _desktop_len )
# p r o c e s s l i n e s
set ( _desktop_pos 0 )
unset ( _desktop_l10n )
while ( _desktop_pos LESS ${ _desktop_len } )
# p i c k l i n e
string ( REGEX REPLACE "^([^\n]*)\n(.*)" "\\1" _desktop_line "${_desktop_data}" )
string ( REGEX REPLACE "^([^\n]*)\n(.*)" "\\2" _desktop_data "${_desktop_data}" )
math ( EXPR _desktop_pos "${_desktop_pos}+1" )
# p r o c e s s l i n e
if ( "${_desktop_line}" MATCHES "^${_keywords_match}=" )
string ( REGEX REPLACE "\\\" " " \\\\\"" _desktop_line "${_desktop_line}" )
string ( REGEX REPLACE "^${_keywords_match}=([^\n]*)" "/*\\1*/i18n(\" \\2\");" _desktop_line "${_desktop_line}" )
else ( )
set ( _desktop_line "" )
endif ( )
set ( _desktop_l10n "${_desktop_l10n}${_desktop_line}\n" )
endwhile ( )
# w r i t e f i l e
file ( WRITE ${ _target } "${_desktop_l10n}" )
endfunction ( )