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 - fabian@ritter-vogt.de
+
+- 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 , 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 \n"
+"Language-Team: German \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
-#
-# 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
+# Copyright (c) 2017 Harald Sitter
+#
+# 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
+#
+# 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 , 2006, 2007, 2008, 2009.
# Yasen Pramatarov , 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
+
+// +++ 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]"