Hello community, here is the log from the commit of package ki18n for openSUSE:Factory checked in at 2017-06-01 16:19:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ki18n (Old) and /work/SRC/openSUSE:Factory/.ki18n.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ki18n" Thu Jun 1 16:19:34 2017 rev:44 rq:495044 version:5.34.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ki18n/ki18n.changes 2017-04-30 21:18:27.634698760 +0200 +++ /work/SRC/openSUSE:Factory/.ki18n.new/ki18n.changes 2017-06-01 16:19:37.941972406 +0200 @@ -1,0 +2,14 @@ +Mon May 15 13:53:17 CEST 2017 - [email protected] + +- Update to 5.34.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.34.0.php +- Changes since 5.33.0: + * fix basename handling of po files (kde#379116) + * Fix ki18n bootstrapping + * Move .po and .ts files look-up to build-time + * Docs: correct doctype for non-deprecated root element with ui.rc file example + * Docs: Use non-deprecated <gui> root element with rc file example + +------------------------------------------------------------------- Old: ---- ki18n-5.33.0.tar.xz New: ---- ki18n-5.34.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ki18n.spec ++++++ --- /var/tmp/diff_new_pack.FFeBCf/_old 2017-06-01 16:19:38.485895705 +0200 +++ /var/tmp/diff_new_pack.FFeBCf/_new 2017-06-01 16:19:38.489895142 +0200 @@ -18,9 +18,9 @@ %bcond_without lang %define lname libKF5I18n5 -%define _tar_path 5.33 +%define _tar_path 5.34 Name: ki18n -Version: 5.33.0 +Version: 5.34.0 Release: 0 BuildRequires: cmake >= 3.0 BuildRequires: extra-cmake-modules >= %{_tar_path} ++++++ ki18n-5.33.0.tar.xz -> ki18n-5.34.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/CMakeLists.txt new/ki18n-5.34.0/CMakeLists.txt --- old/ki18n-5.33.0/CMakeLists.txt 2017-04-01 21:34:45.000000000 +0200 +++ new/ki18n-5.34.0/CMakeLists.txt 2017-05-06 13:52:49.000000000 +0200 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.0) -set(KF5_VERSION "5.33.0") # handled by release scripts +set(KF5_VERSION "5.34.0") # handled by release scripts project(KI18n VERSION ${KF5_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.33.0 NO_MODULE) +find_package(ECM 5.34.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -45,6 +45,9 @@ PURPOSE "Needed for building KI18n unless glibc is the system libc implementation" ) +# usually is called using find_package(KF5I18n), +# KF5I18NMacros.cmake needs to know the scripts directory +set(KF5I18n_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake) include(cmake/KF5I18NMacros.cmake) remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY) @@ -82,6 +85,8 @@ install( FILES cmake/KF5I18NMacros.cmake cmake/kf5i18nuic.cmake + cmake/build-pofiles.cmake + cmake/build-tsfiles.cmake cmake/ts-pmap-compile.py DESTINATION ${CMAKECONFIG_INSTALL_DIR} COMPONENT Devel ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/autotests/CMakeLists.txt new/ki18n-5.34.0/autotests/CMakeLists.txt --- old/ki18n-5.33.0/autotests/CMakeLists.txt 2017-04-01 21:34:45.000000000 +0200 +++ new/ki18n-5.34.0/autotests/CMakeLists.txt 2017-05-06 13:52:49.000000000 +0200 @@ -34,3 +34,16 @@ target_compile_definitions(ki18n-ktranscriptcleantest PRIVATE "KTRANSCRIPT_TESTBUILD") target_include_directories(ki18n-ktranscriptcleantest PRIVATE ..) endif() + +add_test(ki18n_install ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/ki18n_install" + "${CMAKE_CURRENT_BINARY_DIR}/ki18n_install" + --build-generator ${CMAKE_GENERATOR} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-target install + --build-options + "-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}" + "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ki18n_install/destdir" + "-DKF5I18n_DIR=${KF5I18n_DIR}" + --test-command ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/ki18n_install/test.cmake") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/autotests/ki18n_install/CMakeLists.txt new/ki18n-5.34.0/autotests/ki18n_install/CMakeLists.txt --- old/ki18n-5.33.0/autotests/ki18n_install/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ki18n-5.34.0/autotests/ki18n_install/CMakeLists.txt 2017-05-06 13:52:49.000000000 +0200 @@ -0,0 +1,6 @@ +project(ki18n_install) +cmake_minimum_required(VERSION 3.0) + +include(KF5I18NMacros) + +ki18n_install(${CMAKE_CURRENT_SOURCE_DIR}/po) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/autotests/ki18n_install/po/de/plasma_applet_org.kde.plasma.katesessions.po new/ki18n-5.34.0/autotests/ki18n_install/po/de/plasma_applet_org.kde.plasma.katesessions.po --- old/ki18n-5.33.0/autotests/ki18n_install/po/de/plasma_applet_org.kde.plasma.katesessions.po 1970-01-01 01:00:00.000000000 +0100 +++ new/ki18n-5.34.0/autotests/ki18n_install/po/de/plasma_applet_org.kde.plasma.katesessions.po 2017-05-06 13:52:49.000000000 +0200 @@ -0,0 +1,20 @@ +# Burkhard Lück <[email protected]>, 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2016-11-19 20:06+0100\n" +"PO-Revision-Date: 2014-09-10 14:27+0200\n" +"Last-Translator: Burkhard Lück <[email protected]>\n" +"Language-Team: German <[email protected]>\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: applet/contents/ui/katesessions.qml:38 +#, kde-format +msgid "Kate Sessions" +msgstr "Kate-Sitzungen" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/autotests/ki18n_install/test.cmake new/ki18n-5.34.0/autotests/ki18n_install/test.cmake --- old/ki18n-5.33.0/autotests/ki18n_install/test.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/ki18n-5.34.0/autotests/ki18n_install/test.cmake 2017-05-06 13:52:49.000000000 +0200 @@ -0,0 +1,5 @@ +# Make sure file names with dots in them are properly processed. +# https://bugs.kde.org/show_bug.cgi?id=379116 +if(NOT EXISTS "destdir/share/locale/de/LC_MESSAGES/plasma_applet_org.kde.plasma.katesessions.mo") + message(SEND_ERROR "destdir/share/locale/de/LC_MESSAGES/plasma_applet_org.kde.plasma.katesessions.mo was not found") +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/cmake/KF5I18NMacros.cmake new/ki18n-5.34.0/cmake/KF5I18NMacros.cmake --- old/ki18n-5.33.0/cmake/KF5I18NMacros.cmake 2017-04-01 21:34:45.000000000 +0200 +++ new/ki18n-5.34.0/cmake/KF5I18NMacros.cmake 2017-05-06 13:52:49.000000000 +0200 @@ -57,53 +57,6 @@ endforeach (_current_FILE) endmacro (KI18N_WRAP_UI) -#install the scripts for a given language in the target folder -#usage: KI18N_INSTALL_TS_FILES("ja" ${scripts_dir}) -function(KI18N_INSTALL_TS_FILES lang scripts_dir) - file(GLOB_RECURSE ts_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${scripts_dir}/*) - set(pmapc_files) - foreach(ts_file ${ts_files}) - string(REGEX MATCH "\\.svn/" in_svn ${ts_file}) - if(NOT in_svn) - # If ts_file is "path/to/foo/bar.js" - # We want subpath to contain "foo" - get_filename_component(subpath ${ts_file} DIRECTORY) - get_filename_component(subpath ${subpath} NAME) - install(FILES ${ts_file} - DESTINATION ${LOCALE_INSTALL_DIR}/${lang}/LC_SCRIPTS/${subpath}) - # If current file is a pmap, also install the compiled version. - get_filename_component(ts_ext ${ts_file} EXT) - if(ts_ext STREQUAL ".pmap") - set(pmap_file ${ts_file}) - get_filename_component(pmap_basename ${ts_file} NAME) - set(pmapc_basename "${pmap_basename}c") - set(pmapc_file "${lang}-${subpath}-${pmapc_basename}") - add_custom_command(OUTPUT ${pmapc_file} - COMMAND ${PYTHON_EXECUTABLE} - ARGS - -B - ${_ki18n_pmap_compile_script} - ${CMAKE_CURRENT_SOURCE_DIR}/${pmap_file} - ${pmapc_file} - DEPENDS ${pmap_file}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${pmapc_file} - DESTINATION ${LOCALE_INSTALL_DIR}/${lang}/LC_SCRIPTS/${subpath} - RENAME ${pmapc_basename}) - list(APPEND pmapc_files ${pmapc_file}) - endif() - endif() - endforeach() - if(pmapc_files) - if(NOT TARGET pmapfiles) - add_custom_target(pmapfiles) - endif() - set(pmapc_target "pmapfiles-${lang}") - string(REPLACE "@" "_" pmapc_target ${pmapc_target}) - add_custom_target(${pmapc_target} ALL DEPENDS ${pmapc_files}) - add_dependencies(pmapfiles ${pmapc_target}) - endif() -endfunction() - # KI18N_INSTALL(podir) # Search for .po files and scripting modules and install them to the standard # location. @@ -118,10 +71,9 @@ # *.js # *.po # -# .po files are passed to the GETTEXT_PROCESS_PO_FILES function from the -# CMake Gettext module. +# .po files are passed to build-pofiles.cmake # -# .js files are installed using KI18N_INSTALL_TS_FILES. +# .js files are installed using build-tsfiles.cmake # # For example, given the following directory structure: # @@ -137,92 +89,50 @@ # ${LOCALE_INSTALL_DIR}/fr/LC_MESSAGES or share/locale/fr/LC_MESSAGES if # ${LOCALE_INSTALL_DIR} is not set. # - Installs kfoo.js in ${LOCALE_INSTALL_DIR}/fr/LC_SCRIPTS/kfoo +# +# KI18N_INSTALL_TS_FILES() is deprecated, use KI18N_INSTALL() +# function(KI18N_INSTALL podir) - file(GLOB lang_dirs "${podir}/*") if (NOT LOCALE_INSTALL_DIR) set(LOCALE_INSTALL_DIR share/locale) endif() - foreach(lang_dir ${lang_dirs}) - get_filename_component(lang ${lang_dir} NAME) - - file(GLOB po_files "${lang_dir}/*.po") - _ki18n_gettext_process_po_files(${lang} ALL - INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} - PO_FILES ${po_files} - ) - ki18n_install_ts_files(${lang} ${lang_dir}/scripts) - endforeach() -endfunction() + get_filename_component(dirname ${LOCALE_INSTALL_DIR} NAME) + get_filename_component(destname ${LOCALE_INSTALL_DIR} DIRECTORY) -############################################################################### -# The following code has been copied from CMake FindGettext.cmake and adjusted -# to support processing multiple .po files with the same name in different -# directories. -# -# CMake bug report: http://public.kitware.com/Bug/view.php?id=14904 -# -# This code comes with the following license notice: -#============================================================================= -# Copyright 2007-2009 Kitware, Inc. -# Copyright 2007 Alexander Neundorf <[email protected]> -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -function(_KI18N_GETTEXT_PROCESS_PO_FILES _lang) - set(_options ALL) - set(_oneValueArgs INSTALL_DESTINATION) - set(_multiValueArgs PO_FILES) - set(_gmoFiles) - - CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) - - foreach(_current_PO_FILE ${_parsedArguments_PO_FILES}) - get_filename_component(_name ${_current_PO_FILE} NAME) - string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name}) - set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}-${_basename}.gmo) - add_custom_command(OUTPUT ${_gmoFile} - COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - DEPENDS ${_current_PO_FILE} - ) - - if(_parsedArguments_INSTALL_DESTINATION) - install(FILES ${_gmoFile} DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES/ RENAME ${_basename}.mo) - endif() - list(APPEND _gmoFiles ${_gmoFile}) - endforeach() - - - if(NOT TARGET pofiles) - add_custom_target(pofiles) - endif() - - _KI18N_GETTEXT_GET_UNIQUE_TARGET_NAME( pofiles uniqueTargetName) - - if(_parsedArguments_ALL) - add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles}) - else() - add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles}) - endif() + get_filename_component(absolute_podir ${podir} ABSOLUTE) + string(MD5 pathmd5 ${absolute_podir}) - add_dependencies(pofiles ${uniqueTargetName}) + add_custom_target(pofiles-${pathmd5} ALL + COMMENT "Generating mo..." + COMMAND ${CMAKE_COMMAND} + -DGETTEXT_MSGFMT_EXECUTABLE=${GETTEXT_MSGFMT_EXECUTABLE} + -DCOPY_TO=${CMAKE_CURRENT_BINARY_DIR}/${dirname} + -DPO_DIR=${absolute_podir} + -P ${KF5I18n_DIR}/build-pofiles.cmake + ) + add_custom_target(tsfiles-${pathmd5} ALL + COMMENT "Generating ts..." + COMMAND ${CMAKE_COMMAND} + -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} + -D_ki18n_pmap_compile_script=${_ki18n_pmap_compile_script} + -DCOPY_TO=${CMAKE_CURRENT_BINARY_DIR}/${dirname} + -DPO_DIR=${absolute_podir} + -P ${KF5I18n_DIR}/build-tsfiles.cmake + ) + + if (NOT TARGET pofiles) + add_custom_target(pofiles) + add_custom_target(tsfiles) + endif() + add_dependencies(pofiles pofiles-${pathmd5}) + add_dependencies(tsfiles tsfiles-${pathmd5}) + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dirname}) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dirname} DESTINATION ${destname}) endfunction() -function(_KI18N_GETTEXT_GET_UNIQUE_TARGET_NAME _name _unique_name) - set(propertyName "_KI18N_GETTEXT_UNIQUE_COUNTER_${_name}") - get_property(currentCounter GLOBAL PROPERTY "${propertyName}") - if(NOT currentCounter) - set(currentCounter 1) - endif() - set(${_unique_name} "${_name}_${currentCounter}" PARENT_SCOPE) - math(EXPR currentCounter "${currentCounter} + 1") - set_property(GLOBAL PROPERTY ${propertyName} ${currentCounter} ) +function(ki18n_install_ts_files _lang) + message(AUTHOR_WARNING "KI18N_INSTALL_TS_FILES is deprecated!") + ki18n_install(${_lang}) endfunction() -# End of CMake copied code #################################################### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/cmake/build-pofiles.cmake new/ki18n-5.34.0/cmake/build-pofiles.cmake --- old/ki18n-5.33.0/cmake/build-pofiles.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/ki18n-5.34.0/cmake/build-pofiles.cmake 2017-05-06 13:52:49.000000000 +0200 @@ -0,0 +1,48 @@ +# Copyright (c) 2017 Aleix Pol Gonzalez <[email protected]> +# Copyright (c) 2017 Harald Sitter <[email protected]> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +file(GLOB_RECURSE pofiles RELATIVE "${PO_DIR}" "${PO_DIR}/**.po") + +foreach(pofile IN LISTS pofiles) + get_filename_component(name ${pofile} NAME) + # Regex the basename, cmake only allows stripping the longest extension, we + # need the shortest or we'll screw up "org.kde.plasma.kittens.po" + # https://bugs.kde.org/show_bug.cgi?id=379116 + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" name ${name}) + get_filename_component(langdir ${pofile} DIRECTORY) + set(dest ${COPY_TO}/${langdir}/LC_MESSAGES) + file(MAKE_DIRECTORY ${dest}) + + message(STATUS "building... ${pofile} to ${name}.mo" ) + execute_process( + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${dest}/${name}.mo ${PO_DIR}/${pofile} + RESULT_VARIABLE code + ) + if(code) + message(FATAL_ERROR "failed at generating ${name}.mo") + endif() +endforeach() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/cmake/build-tsfiles.cmake new/ki18n-5.34.0/cmake/build-tsfiles.cmake --- old/ki18n-5.33.0/cmake/build-tsfiles.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/ki18n-5.34.0/cmake/build-tsfiles.cmake 2017-05-06 13:52:49.000000000 +0200 @@ -0,0 +1,59 @@ +# Copyright (c) 2017 Aleix Pol Gonzalez <[email protected]> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +file(GLOB_RECURSE ts_files RELATIVE ${PO_DIR} ${PO_DIR}/**/scripts/*) +foreach(ts_file ${ts_files}) + if(ts_file MATCHES "\\.svn") + continue() + endif() + + get_filename_component(subpath ${ts_file} DIRECTORY) + string(REPLACE "scripts" "LC_SCRIPTS" subpath ${subpath}) + + message(STATUS "copying... ${PO_DIR}/${ts_file} DESTINATION ${COPY_TO}/${subpath}" ) + file(COPY ${PO_DIR}/${ts_file} DESTINATION ${COPY_TO}/${subpath}) +endforeach() + +file(GLOB_RECURSE pmap_files RELATIVE ${PO_DIR} "${PO_DIR}/**.pmap") +foreach(pmap_file ${pmap_files}) + get_filename_component(pmap_basename ${pmap_file} NAME) + get_filename_component(subpath ${pmap_file} DIRECTORY) + string(REPLACE "scripts" "LC_SCRIPTS" subpath ${subpath}) + set(pmapc_file "${COPY_TO}/${subpath}/${pmap_basename}c") + + message(STATUS "building... ${pmap_file} to ${pmapc_file}" ) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} + -B + ${_ki18n_pmap_compile_script} + ${PO_DIR}/${pmap_file} + ${pmapc_file} + RESULT_VARIABLE code + ) + if(code) + message(FATAL_ERROR "failed at creating ${pmap_file}...") + endif() +endforeach() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/docs/programmers-guide.md new/ki18n-5.34.0/docs/programmers-guide.md --- old/ki18n-5.33.0/docs/programmers-guide.md 2017-04-01 21:34:45.000000000 +0200 +++ new/ki18n-5.34.0/docs/programmers-guide.md 2017-05-06 13:52:49.000000000 +0200 @@ -1142,8 +1142,8 @@ by adding the `translationDomain` attribute to the top element: ~~~ -<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<kpartgui name="foolib_part" version="55" translationDomain="foolib"> +<!DOCTYPE gui SYSTEM "kpartgui.dtd"> +<gui name="foolib_part" version="55" translationDomain="foolib"> ... ~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/po/bg/ki18n5.po new/ki18n-5.34.0/po/bg/ki18n5.po --- old/ki18n-5.33.0/po/bg/ki18n5.po 2017-04-01 21:34:45.000000000 +0200 +++ new/ki18n-5.34.0/po/bg/ki18n5.po 2017-05-06 13:52:49.000000000 +0200 @@ -1,8 +1,5 @@ -# translation of kdelibs4.po to Bulgarian -# Bulgarian translation of KDE. -# This file is licensed under the GPL. -# -# $Id:$ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. # # Zlatko Popov <[email protected]>, 2006, 2007, 2008, 2009. # Yasen Pramatarov <[email protected]>, 2009, 2010, 2011, 2012, 2013. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.33.0/po/ja/scripts/ki18n5/ki18n5.js new/ki18n-5.34.0/po/ja/scripts/ki18n5/ki18n5.js --- old/ki18n-5.33.0/po/ja/scripts/ki18n5/ki18n5.js 1970-01-01 01:00:00.000000000 +0100 +++ new/ki18n-5.34.0/po/ja/scripts/ki18n5/ki18n5.js 2017-05-06 13:52:49.000000000 +0200 @@ -0,0 +1,225 @@ +// kdelibs4.js of Japanese KDE translation +// Maintained by Chusslove Illich <[email protected]> + +// +++ Global dictionary of states. +// _states_[state], if defined, is set to some value for the state. +var _states_ = {}; + +// *** Set global states to values. +// : setStates(state1 value1 state2 value2 ...) +// Returns empty string. +function setStates (/*...*/) { + var f = "setStates: "; + if (arguments.length % 2 != 0) { + throw Error(f + "must have even number of arguments"); + } + for (var i = 0; i < arguments.length; i += 2) { + var state = arguments[i]; + var val = arguments[i + 1]; + _states_[state] = val; + } + return ""; +} + +// *** Get global state value; empty string if not defined. +function getState (state) { + if (state in _states_) { + return _states_[state]; + } + return ""; +} + +// *** Set properties to the phrase given by current msgstrf. +// : setMsgstrProperties(prop1 value1 prop2 value2...) +// Returns empty string. +function setMsgstrProperties (/*...*/) { + var f = "setMsgstrProperties: "; + if (arguments.length % 2 != 0) { + throw Error(f + "must have even number of arguments"); + } + + var phrase = Ts.msgstrf(); + for (var i = 0; i < arguments.length; i += 2) { + var property = arguments[i]; + var val = arguments[i + 1]; + Ts.setProp(phrase, property, val); + } + return ""; +} + +// *** Get property value of the given phrase; empty string if not defined. +function getProperty (phrase, property) { + var val = Ts.getProp(phrase, property); + if (!val) { + return ""; + } + return val; +} + +// *** Get form of the given phrase. +// A "form" is taken to be a special type of property which defaults to the +// phrase itself when not defined. Hence, if the requested form has not been +// defined, phrase is returned as is. +function getFormProperty (phrase, formm) { + var val = Ts.getProp(phrase, formm); + if (!val) { + return phrase; + } + return val; +} + +// *** Select one of the strings according to the test value. +// : selectByValue(testvalue value1 str1 value2 str2 ... defaultstr) +// Select the string to the first value equal to the test value, +// or returns default string if there is no match. +function selectByValue (/*...*/) { + var f = "selectByValue: "; + if (arguments.length % 2 != 0) { + throw Error(f + "must have even number of arguments."); + } + if (arguments.length < 2) + throw Error(f + "must have at least two arguments."); + + var testval = arguments[0]; + for (var i = 1; i < arguments.length - 1; i += 2) { + var val = arguments[i]; + var str = arguments[i + 1]; + if (testval == val) { + return str; + } + } + // Return the default choice if no other returned before. + return arguments[arguments.length - 1]; +} + +// *** Return first non-empty string among the arguments, or empty if all empty. +// : firstNonEmpty(str1 str2 ...) +function firstNonEmpty (/*...*/) { + for (var i = 0; i < arguments.length; ++i) { + if (arguments[i].length > 0) { + return arguments[i]; + } + } + return ""; +} + +// *** Return the finalized ordinary msgstr. +function theMsgstr () { + return Ts.msgstrf(); +} + +// *** If the first character in the phrase is non-Japanese, return +// the phrase with space added to the start, otherwise return as is. +function spaceOnDemandLeft (phrase) { + if (phrase.length == 0) { + return phrase; + } + var firstChar = phrase.charAt(0); + if (firstChar != " " && firstChar < "\u2E00") { + return " " + phrase; + } + return phrase; +} + +// *** If the last character in the phrase is non-Japanese, return +// the phrase with space added to the end, otherwise return as is. +function spaceOnDemandRight (phrase) { + if (phrase.length == 0) { + return phrase; + } + var lastChar = phrase.charAt(phrase.length - 1); + if (lastChar != " " && lastChar < "\u2E00") { + return phrase + " "; + } + return phrase; +} + +// *** Combination of spaceOnDemandLeft and spaceOnDemandRight: both first +// and last characters are checked, and spaces added where needed. +function spaceOnDemandBoth (phrase) { + return spaceOnDemandLeft(spaceOnDemandRight(phrase)); +} + +// *** Strip the accelerator marker, composed of an ASCII alphanumeric +// within parenthesis (with or without an ampersand in front). +stripAccRx = /\((&|&)?[a-zA-Z0-9]\)/; +function stripAccelerator (phrase) { + return phrase.replace(stripAccRx, ""); +} + +// ==> Exports to PO calls +Ts.setcall("~set", setStates); +Ts.setcall("~get", getState); +Ts.setcall("~setProps", setMsgstrProperties); +Ts.setcall("~getProp", getProperty); +Ts.setcall("~getForm", getFormProperty); +Ts.setcall("~case", selectByValue); +Ts.setcall("~first", firstNonEmpty); +Ts.setcall("~this", theMsgstr); +Ts.setcall("~spacerL", spaceOnDemandLeft); +Ts.setcall("~spacerR", spaceOnDemandRight); +Ts.setcall("~spacerB", spaceOnDemandBoth); +Ts.setcall("~stripAccel", stripAccelerator); + + +// ------------------------------ +// When verbs such as "Configure" are used as the positive answer in question +// dialogs, "設定する", as opposed to "設定しない (Do Not Configure)", would +// be more appropriate than "設定". However, it would sound funny if the same +// translation is used in other contexts (e.g. @title:window), so we cannot +// do it safely. +// Instead, attach the proper answers to the message caption/text in the PO, +// and then retrieve them in filtering messages for message dialog buttons +// in kdelibs4.po (those with context "@action:button filter-..."). + +// Dictionary of answers. +var _answers_ = {}; + +// Set answers as key-value pairs, as many as needed. +// The call always signals fallback. +function setAnswers (/*...*/) +{ + if (arguments.length % 2 != 0) + throw Error("Answers setter given odd number of arguments."); + + for (var i = 0; i < arguments.length; i += 2) { + var akey = arguments[i]; + var answer = arguments[i + 1]; + _answers_[akey] = answer; + } + + throw Ts.fallback(); +} +Ts.setcall("set-answers", setAnswers); +// msgid "... Would you like to configure it now?" +// msgstr "" +// "... 今設定しますか?" +// "|/|" +// "$[set-answers yes '設定する(&Y)' no '設定しない(&N)']" + +// Get an answer by key. +// Signals fallback if the answer with the given key is not set. +// Deletes the answer from the dictionary, so that it doesn't happen +// that it gets retrieved in a later, unrelated question. +function getAnswer (akey) +{ + answer = _answers_[akey]; + if (!answer) throw Ts.fallback(); + delete _answers_[akey]; + return answer; +} +Ts.setcall("get-answer", getAnswer); +// msgctxt "@action:button filter-yes" +// msgid "%1" +// msgstr "%1|/|$[get-answer yes]" + +// Reset all answers, so that they don't get used for the wrong question. +// Always signals fallback. +function resetAnswers () +{ + _answers_ = {}; +} +Ts.setcall("reset-answers", resetAnswers); +// msgctxt "@action:button post-filter" +// msgid "." +// msgstr ".|/|$[reset-answers]"
