Hello community,

here is the log from the commit of package python-oslo.i18n for 
openSUSE:Factory checked in at 2015-10-30 13:42:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.i18n (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.i18n.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.i18n"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.i18n/python-oslo.i18n.changes        
2015-08-27 08:54:49.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-oslo.i18n.new/python-oslo.i18n.changes   
2015-10-30 13:42:19.000000000 +0100
@@ -1,0 +2,9 @@
+Wed Sep  9 06:57:21 UTC 2015 - [email protected]
+
+- update to 2.6.0:
+* Updated from global requirements
+* Trap formatting errors
+* Imported Translations from Transifex
+* Clean up _translate_msgid logic a bit
+
+-------------------------------------------------------------------

Old:
----
  oslo.i18n-2.2.0.tar.gz

New:
----
  oslo.i18n-2.6.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-oslo.i18n.spec ++++++
--- /var/tmp/diff_new_pack.5IxgUD/_old  2015-10-30 13:42:20.000000000 +0100
+++ /var/tmp/diff_new_pack.5IxgUD/_new  2015-10-30 13:42:20.000000000 +0100
@@ -19,7 +19,7 @@
 %global sname oslo.i18n
 
 Name:           python-oslo.i18n
-Version:        2.2.0
+Version:        2.6.0
 Release:        0
 Summary:        OpenStack i18n library
 License:        Apache-2.0

++++++ oslo.i18n-2.2.0.tar.gz -> oslo.i18n-2.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/AUTHORS new/oslo.i18n-2.6.0/AUTHORS
--- old/oslo.i18n-2.2.0/AUTHORS 2015-07-27 21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/AUTHORS 2015-09-08 17:41:43.000000000 +0200
@@ -2,6 +2,7 @@
 Anderson Mesquita <[email protected]>
 Andreas Jaeger <[email protected]>
 Andrey Kurilin <[email protected]>
+Balazs Gibizer <[email protected]>
 Ben Nemec <[email protected]>
 Brant Knudson <[email protected]>
 Chang Bo Guo <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/ChangeLog 
new/oslo.i18n-2.6.0/ChangeLog
--- old/oslo.i18n-2.2.0/ChangeLog       2015-07-27 21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/ChangeLog       2015-09-08 17:41:43.000000000 +0200
@@ -1,6 +1,32 @@
 CHANGES
 =======
 
+2.6.0
+-----
+
+* Updated from global requirements
+* Updated from global requirements
+
+2.5.0
+-----
+
+* Trap formatting errors
+
+2.4.0
+-----
+
+* Imported Translations from Transifex
+* Updated from global requirements
+* Imported Translations from Transifex
+* Updated from global requirements
+* Clean up _translate_msgid logic a bit
+
+2.3.0
+-----
+
+* Imported Translations from Transifex
+* Updated from global requirements
+
 2.2.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/PKG-INFO new/oslo.i18n-2.6.0/PKG-INFO
--- old/oslo.i18n-2.2.0/PKG-INFO        2015-07-27 21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/PKG-INFO        2015-09-08 17:41:43.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: oslo.i18n
-Version: 2.2.0
+Version: 2.6.0
 Summary: Oslo i18n library
 Home-page: http://launchpad.net/oslo
 Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/de/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/de/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/de/LC_MESSAGES/oslo.i18n.po    
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/de/LC_MESSAGES/oslo.i18n.po    
2015-09-08 17:41:03.000000000 +0200
@@ -4,20 +4,21 @@
 #
 # Translators:
 # Andreas Jaeger <[email protected]>, 2014
+# Robert Simai, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
-"PO-Revision-Date: 2014-07-07 16:53+0000\n"
-"Last-Translator: Andreas Jaeger <[email protected]>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/osloi18n/language/";
+"POT-Creation-Date: 2015-08-13 06:02+0000\n"
+"PO-Revision-Date: 2015-08-12 10:58+0000\n"
+"Last-Translator: Robert Simai\n"
+"Language-Team: German (http://www.transifex.com/openstack/osloi18n/language/";
 "de/)\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "Message-Objekt unterstützt keine Addition."
@@ -27,4 +28,4 @@
 "characters. Please use unicode() or translate() instead."
 msgstr ""
 "Message-Objekte unterstützen str() nicht, da diese Nicht-ASCII Charackter "
-"enthalten können. Bitte benutze unicode() oder translate()."
+"enthalten können. Bitte verwenden Sie unicode() oder translate()."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/en_GB/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/en_GB/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/en_GB/LC_MESSAGES/oslo.i18n.po 
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/en_GB/LC_MESSAGES/oslo.i18n.po 
2015-09-08 17:41:03.000000000 +0200
@@ -8,16 +8,16 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2014-09-02 09:09+0000\n"
 "Last-Translator: Andi Chandler <[email protected]>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/";
+"Language-Team: English (United Kingdom) (http://www.transifex.com/openstack/";
 "osloi18n/language/en_GB/)\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "Message objects do not support addition."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/es/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/es/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/es/LC_MESSAGES/oslo.i18n.po    
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/es/LC_MESSAGES/oslo.i18n.po    
2015-09-08 17:41:03.000000000 +0200
@@ -8,16 +8,16 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2015-06-22 21:03+0000\n"
 "Last-Translator: Adriana Chisco Landazábal <[email protected]>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/osloi18n/";
-"language/es/)\n"
+"Language-Team: Spanish (http://www.transifex.com/openstack/osloi18n/language/";
+"es/)\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "Objectos de mensaje no soportan adición."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/fr/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/fr/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/fr/LC_MESSAGES/oslo.i18n.po    
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/fr/LC_MESSAGES/oslo.i18n.po    
2015-09-08 17:41:03.000000000 +0200
@@ -9,16 +9,16 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2014-09-25 09:36+0000\n"
 "Last-Translator: Jonathan Dupart <[email protected]>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/osloi18n/language/";
+"Language-Team: French (http://www.transifex.com/openstack/osloi18n/language/";
 "fr/)\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "Les objects message ne supportent pas l'ajout."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/it/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/it/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/it/LC_MESSAGES/oslo.i18n.po    
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/it/LC_MESSAGES/oslo.i18n.po    
2015-09-08 17:41:03.000000000 +0200
@@ -8,16 +8,16 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2014-08-24 11:27+0000\n"
 "Last-Translator: PierAlberto <[email protected]>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/osloi18n/";
-"language/it/)\n"
+"Language-Team: Italian (http://www.transifex.com/openstack/osloi18n/language/";
+"it/)\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "I messaggi oggetti non supportano aggiunte."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/ko_KR/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/ko_KR/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/ko_KR/LC_MESSAGES/oslo.i18n.po 
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/ko_KR/LC_MESSAGES/oslo.i18n.po 
2015-09-08 17:41:03.000000000 +0200
@@ -8,16 +8,16 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2014-09-24 16:32+0000\n"
 "Last-Translator: Sungjin Kang <[email protected]>\n"
-"Language-Team: Korean (Korea) (http://www.transifex.com/projects/p/osloi18n/";
+"Language-Team: Korean (Korea) (http://www.transifex.com/openstack/osloi18n/";
 "language/ko_KR/)\n"
 "Plural-Forms: nplurals=1; plural=0\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "메시지 객체는 추가 지원을하지 않습니다."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-critical.pot 
new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-critical.pot
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-critical.pot     
2015-07-27 21:56:30.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-critical.pot     
2015-09-08 17:41:03.000000000 +0200
@@ -1,19 +1,19 @@
 # Translations template for oslo.i18n.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
 # This file is distributed under the same license as the oslo.i18n project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.i18n 0.1.0.6.gc9d841b\n"
+"Project-Id-Version: oslo.i18n 2.2.1.dev1\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-25 06:03+0000\n"
+"POT-Creation-Date: 2015-07-29 06:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-error.pot 
new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-error.pot
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-error.pot        
2015-07-27 21:56:30.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-error.pot        
2015-09-08 17:41:03.000000000 +0200
@@ -1,19 +1,19 @@
 # Translations template for oslo.i18n.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
 # This file is distributed under the same license as the oslo.i18n project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.i18n 0.1.0.6.gc9d841b\n"
+"Project-Id-Version: oslo.i18n 2.2.1.dev1\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-25 06:03+0000\n"
+"POT-Creation-Date: 2015-07-29 06:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-info.pot 
new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-info.pot
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-info.pot 2015-07-27 
21:56:30.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-info.pot 2015-09-08 
17:41:03.000000000 +0200
@@ -1,19 +1,19 @@
 # Translations template for oslo.i18n.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
 # This file is distributed under the same license as the oslo.i18n project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.i18n 0.1.0.6.gc9d841b\n"
+"Project-Id-Version: oslo.i18n 2.2.1.dev1\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-25 06:03+0000\n"
+"POT-Creation-Date: 2015-07-29 06:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-warning.pot 
new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-warning.pot
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n-log-warning.pot      
2015-07-27 21:56:30.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n-log-warning.pot      
2015-09-08 17:41:03.000000000 +0200
@@ -1,19 +1,19 @@
 # Translations template for oslo.i18n.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
 # This file is distributed under the same license as the oslo.i18n project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.i18n 0.1.0.6.gc9d841b\n"
+"Project-Id-Version: oslo.i18n 2.2.1.dev1\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-07-25 06:03+0000\n"
+"POT-Creation-Date: 2015-07-29 06:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n.pot 
new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n.pot
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/oslo.i18n.pot  2015-07-27 
21:56:30.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/oslo.i18n.pot  2015-09-08 
17:41:03.000000000 +0200
@@ -1,27 +1,27 @@
 # Translations template for oslo.i18n.
-# Copyright (C) 2014 ORGANIZATION
+# Copyright (C) 2015 ORGANIZATION
 # This file is distributed under the same license as the oslo.i18n project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: oslo.i18n 73d16d8\n"
+"Project-Id-Version: oslo.i18n 2.2.1.dev1\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-06-05 22:20+0200\n"
+"POT-Creation-Date: 2015-07-29 06:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
-#: oslo/i18n/gettextutils.py:315
+#: oslo_i18n/_message.py:194
 msgid "Message objects do not support addition."
 msgstr ""
 
-#: oslo/i18n/gettextutils.py:325
+#: oslo_i18n/_message.py:205
 msgid ""
 "Message objects do not support str() because they may contain non-ascii "
 "characters. Please use unicode() or translate() instead."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/pl_PL/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/pl_PL/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/pl_PL/LC_MESSAGES/oslo.i18n.po 
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/pl_PL/LC_MESSAGES/oslo.i18n.po 
2015-09-08 17:41:03.000000000 +0200
@@ -8,17 +8,17 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2014-08-21 11:28+0000\n"
 "Last-Translator: Łukasz Jernaś <[email protected]>\n"
-"Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/osloi18n/";
+"Language-Team: Polish (Poland) (http://www.transifex.com/openstack/osloi18n/";
 "language/pl_PL/)\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "Obiekty Message nie wspierają dodawania."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/pt/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/pt/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/pt/LC_MESSAGES/oslo.i18n.po    
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/pt/LC_MESSAGES/oslo.i18n.po    
2015-09-08 17:41:03.000000000 +0200
@@ -0,0 +1,30 @@
+# Portuguese translations for oslo.i18n.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the oslo.i18n project.
+#
+# Translators:
+# MMSRS, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version:  oslo.i18n\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-08-13 06:02+0000\n"
+"PO-Revision-Date: 2015-08-11 17:02+0000\n"
+"Last-Translator: MMSRS\n"
+"Language-Team: Portuguese (http://www.transifex.com/openstack/osloi18n/";
+"language/pt/)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.0\n"
+
+msgid "Message objects do not support addition."
+msgstr "Os objetos de mensagem não suportam a adição."
+
+msgid ""
+"Message objects do not support str() because they may contain non-ascii "
+"characters. Please use unicode() or translate() instead."
+msgstr ""
+"Os objetos de mensagem não suportam str() porque eles poderão conter "
+"carateres não ascii. Por favor, use unicode() ou translate()."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.i18n-2.2.0/oslo.i18n/locale/zh_CN/LC_MESSAGES/oslo.i18n.po 
new/oslo.i18n-2.6.0/oslo.i18n/locale/zh_CN/LC_MESSAGES/oslo.i18n.po
--- old/oslo.i18n-2.2.0/oslo.i18n/locale/zh_CN/LC_MESSAGES/oslo.i18n.po 
2015-07-27 21:56:31.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n/locale/zh_CN/LC_MESSAGES/oslo.i18n.po 
2015-09-08 17:41:03.000000000 +0200
@@ -8,16 +8,16 @@
 msgstr ""
 "Project-Id-Version:  oslo.i18n\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-07-23 06:01+0000\n"
+"POT-Creation-Date: 2015-08-04 06:16+0000\n"
 "PO-Revision-Date: 2014-11-20 00:40+0000\n"
 "Last-Translator: Xiao Xi LIU <[email protected]>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/osloi18n/";
+"Language-Team: Chinese (China) (http://www.transifex.com/openstack/osloi18n/";
 "language/zh_CN/)\n"
 "Plural-Forms: nplurals=1; plural=0\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 1.3\n"
+"Generated-By: Babel 2.0\n"
 
 msgid "Message objects do not support addition."
 msgstr "消息对象不支持添加操作。"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo.i18n.egg-info/PKG-INFO 
new/oslo.i18n-2.6.0/oslo.i18n.egg-info/PKG-INFO
--- old/oslo.i18n-2.2.0/oslo.i18n.egg-info/PKG-INFO     2015-07-27 
21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n.egg-info/PKG-INFO     2015-09-08 
17:41:43.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: oslo.i18n
-Version: 2.2.0
+Version: 2.6.0
 Summary: Oslo i18n library
 Home-page: http://launchpad.net/oslo
 Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo.i18n.egg-info/SOURCES.txt 
new/oslo.i18n-2.6.0/oslo.i18n.egg-info/SOURCES.txt
--- old/oslo.i18n-2.2.0/oslo.i18n.egg-info/SOURCES.txt  2015-07-27 
21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n.egg-info/SOURCES.txt  2015-09-08 
17:41:43.000000000 +0200
@@ -42,6 +42,7 @@
 oslo.i18n/locale/it/LC_MESSAGES/oslo.i18n.po
 oslo.i18n/locale/ko_KR/LC_MESSAGES/oslo.i18n.po
 oslo.i18n/locale/pl_PL/LC_MESSAGES/oslo.i18n.po
+oslo.i18n/locale/pt/LC_MESSAGES/oslo.i18n.po
 oslo.i18n/locale/zh_CN/LC_MESSAGES/oslo.i18n.po
 oslo_i18n/__init__.py
 oslo_i18n/_factory.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo.i18n.egg-info/pbr.json 
new/oslo.i18n-2.6.0/oslo.i18n.egg-info/pbr.json
--- old/oslo.i18n-2.2.0/oslo.i18n.egg-info/pbr.json     2015-07-27 
21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n.egg-info/pbr.json     2015-09-08 
17:41:43.000000000 +0200
@@ -1 +1 @@
-{"is_release": true, "git_version": "cefa610"}
\ No newline at end of file
+{"is_release": true, "git_version": "4417d33"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo.i18n.egg-info/requires.txt 
new/oslo.i18n-2.6.0/oslo.i18n.egg-info/requires.txt
--- old/oslo.i18n-2.2.0/oslo.i18n.egg-info/requires.txt 2015-07-27 
21:57:00.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo.i18n.egg-info/requires.txt 2015-09-08 
17:41:43.000000000 +0200
@@ -1,3 +1,3 @@
-pbr<2.0,>=1.3
+pbr<2.0,>=1.6
 Babel>=1.3
 six>=1.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo_i18n/_message.py 
new/oslo.i18n-2.6.0/oslo_i18n/_message.py
--- old/oslo.i18n-2.2.0/oslo_i18n/_message.py   2015-07-27 21:56:30.000000000 
+0200
+++ new/oslo.i18n-2.6.0/oslo_i18n/_message.py   2015-09-08 17:41:03.000000000 
+0200
@@ -19,6 +19,7 @@
 import copy
 import gettext
 import locale
+import logging
 import os
 
 import six
@@ -30,6 +31,9 @@
 CONTEXT_SEPARATOR = "\x04"
 
 
+LOG = logging.getLogger(__name__)
+
+
 class Message(six.text_type):
     """A Message object is a unicode object that can be translated.
 
@@ -90,9 +94,7 @@
         translated_params = _translate.translate_args(self.params,
                                                       desired_locale)
 
-        translated_message = translated_message % translated_params
-
-        return translated_message
+        return self._safe_translate(translated_message, translated_params)
 
     @staticmethod
     def _translate_msgid(msgid, domain, desired_locale=None,
@@ -110,15 +112,17 @@
                                    languages=[desired_locale],
                                    fallback=True)
 
-        # Primary translation function
         if not has_contextual_form and not has_plural_form:
+            # This is the most common case, so check it first.
             translator = lang.gettext if six.PY3 else lang.ugettext
-
             translated_message = translator(msgid)
-            return translated_message
 
-        # Contextual translation function
-        if has_contextual_form and not has_plural_form:
+        elif has_contextual_form and has_plural_form:
+            # Reserved for contextual and plural translation function,
+            # which is not yet implemented.
+            raise ValueError("Unimplemented.")
+
+        elif has_contextual_form:
             (msgctx, msgtxt) = msgid
             translator = lang.gettext if six.PY3 else lang.ugettext
 
@@ -126,31 +130,42 @@
             translated_message = translator(msg_with_ctx)
 
             if CONTEXT_SEPARATOR in translated_message:
-                # Translation not found
+                # Translation not found, use the original text
                 translated_message = msgtxt
 
-            return translated_message
-
-        # Plural translation function
-        if not has_contextual_form and has_plural_form:
+        elif has_plural_form:
             (msgsingle, msgplural, msgcount) = msgid
             translator = lang.ngettext if six.PY3 else lang.ungettext
-
             translated_message = translator(msgsingle, msgplural, msgcount)
-            return translated_message
 
-        # Reserved for contextual and plural translation function
-        if has_contextual_form and has_plural_form:
-            raise ValueError("Unimplemented.")
+        return translated_message
 
-        raise TypeError("Unknown msgid type.")
+    def _safe_translate(self, translated_message, translated_params):
+        try:
+            translated_message = translated_message % translated_params
+        except (KeyError, TypeError) as err:
+            # KeyError for parameters named in the translated_message
+            # but not found in translated_params and TypeError for
+            # type strings that do not match the type of the
+            # parameter.
+            #
+            # Log the error translating the message and use the
+            # original message string so the translator's bad message
+            # catalog doesn't break the caller.
+            LOG.debug(
+                (u'Failed to insert replacement values into translated '
+                 u'message %s (Original: %r): %s'),
+                translated_message, self.msgid, err)
+            translated_message = self.msgid % translated_params
+
+        return translated_message
 
     def __mod__(self, other):
         # When we mod a Message we want the actual operation to be performed
         # by the parent class (i.e. unicode()), the only thing  we do here is
         # save the original msgid and the parameters in case of a translation
         params = self._sanitize_mod_params(other)
-        unicode_mod = super(Message, self).__mod__(params)
+        unicode_mod = self._safe_translate(six.text_type(self), params)
         modded = Message(self.msgid,
                          msgtext=unicode_mod,
                          params=params,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/oslo_i18n/tests/test_message.py 
new/oslo.i18n-2.6.0/oslo_i18n/tests/test_message.py
--- old/oslo.i18n-2.2.0/oslo_i18n/tests/test_message.py 2015-07-27 
21:56:30.000000000 +0200
+++ new/oslo.i18n-2.6.0/oslo_i18n/tests/test_message.py 2015-09-08 
17:41:03.000000000 +0200
@@ -157,6 +157,41 @@
         self.assertEqual(expected, result)
         self.assertEqual(expected, result.translate())
 
+    def test_mod_with_wrong_field_type_in_trans(self):
+        msgid = "Correct type %(arg1)s"
+        params = {'arg1': 'test1'}
+        with mock.patch('gettext.translation') as trans:
+            # Set up ugettext to return the original message with the
+            # correct format string.
+            trans.return_value.ugettext.return_value = msgid
+            # Build a message and give it some parameters.
+            result = _message.Message(msgid) % params
+            # Now set up ugettext to return the translated version of
+            # the original message, with a bad format string.
+            wrong_type = u'Wrong type %(arg1)d'
+            if six.PY3:
+                trans.return_value.gettext.return_value = wrong_type
+            else:
+                trans.return_value.ugettext.return_value = wrong_type
+            trans_result = result.translate()
+            expected = msgid % params
+            self.assertEqual(expected, trans_result)
+
+    def test_mod_with_wrong_field_type(self):
+        msgid = "Test that we handle unused args %(arg1)d"
+        params = {'arg1': 'test1'}
+
+        self.assertRaises(TypeError, lambda: _message.Message(msgid) % params)
+
+    def test_mod_with_missing_arg(self):
+        msgid = "Test that we handle missing args %(arg1)s %(arg2)s"
+        params = {'arg1': 'test1'}
+
+        e = self.assertRaises(KeyError,
+                              lambda: _message.Message(msgid) % params)
+        self.assertIn('arg2', six.text_type(e),
+                      'Missing key \'arg2\' was not flagged')
+
     def test_mod_with_integer_parameters(self):
         msgid = "Some string with params: %d"
         params = [0, 1, 10, 24124]
@@ -258,16 +293,6 @@
         # Make sure unused params still there
         self.assertEqual(result.params.keys(), params.keys())
 
-    def test_mod_with_missing_named_parameters(self):
-        msgid = ("Some string with params: %(param1)s %(param2)s"
-                 " and a missing one %(missing)s")
-        params = {'param1': 'test',
-                  'param2': 'test2'}
-
-        test_me = lambda: _message.Message(msgid) % params
-        # Just like with strings missing named parameters raise KeyError
-        self.assertRaises(KeyError, test_me)
-
     def test_add_disabled(self):
         msgid = "A message"
         test_me = lambda: _message.Message(msgid) + ' some string'
@@ -353,6 +378,59 @@
         self.assertEqual(default_translation, msg.translate('XX'))
 
     @mock.patch('gettext.translation')
+    @mock.patch('oslo_i18n._message.LOG')
+    def test_translate_message_bad_translation(self, mock_log,
+                                               mock_translation):
+        message_with_params = 'A message: %s'
+        es_translation = 'A message in Spanish: %s %s'
+        param = 'A Message param'
+
+        translations = {message_with_params: es_translation}
+        translator = fakes.FakeTranslations.translator({'es': translations})
+        mock_translation.side_effect = translator
+
+        msg = _message.Message(message_with_params)
+        msg = msg % param
+        self.assertFalse(mock_log.debug.called)
+
+        default_translation = message_with_params % param
+        self.assertEqual(default_translation, msg.translate('es'))
+        mock_log.debug.assert_called_with(('Failed to insert replacement '
+                                           'values into translated message %s '
+                                           '(Original: %r): %s'),
+                                          es_translation,
+                                          message_with_params,
+                                          mock.ANY)
+
+    @mock.patch('gettext.translation')
+    @mock.patch('locale.getdefaultlocale', return_value=('es', ''))
+    @mock.patch('oslo_i18n._message.LOG')
+    def test_translate_message_bad_default_translation(self, mock_log,
+                                                       mock_local,
+                                                       mock_translation):
+        message_with_params = 'A message: %s'
+        es_translation = 'A message in Spanish: %s %s'
+        param = 'A Message param'
+
+        translations = {message_with_params: es_translation}
+        translator = fakes.FakeTranslations.translator({'es': translations})
+        mock_translation.side_effect = translator
+
+        msg = _message.Message(message_with_params)
+        msg = msg % param
+        mock_log.debug.assert_called_with(('Failed to insert replacement '
+                                           'values into translated message %s '
+                                           '(Original: %r): %s'),
+                                          es_translation,
+                                          message_with_params,
+                                          mock.ANY)
+        mock_log.reset_mock()
+
+        default_translation = message_with_params % param
+        self.assertEqual(default_translation, msg)
+        self.assertFalse(mock_log.debug.called)
+
+    @mock.patch('gettext.translation')
     def test_translate_message_with_object_param(self, mock_translation):
         message_with_params = 'A message: %s'
         es_translation = 'A message in Spanish: %s'
@@ -516,3 +594,73 @@
         # Translation into other locales still works
         self.assertEqual(zh_translation, msg.translate('zh'))
         self.assertEqual(fr_translation, msg.translate('fr'))
+
+
+class TranslateMsgidTest(test_base.BaseTestCase):
+
+    @mock.patch('gettext.translation')
+    def test_contextual(self, translation):
+        lang = mock.Mock()
+        translation.return_value = lang
+        trans = mock.Mock()
+        trans.return_value = 'translated'
+        lang.gettext = trans
+        lang.ugettext = trans
+        result = _message.Message._translate_msgid(
+            ('context', 'message'),
+            domain='domain',
+            has_contextual_form=True,
+            has_plural_form=False,
+        )
+        self.assertEqual('translated', result)
+        trans.assert_called_with(
+            'context' + _message.CONTEXT_SEPARATOR + 'message'
+        )
+
+    @mock.patch('gettext.translation')
+    def test_contextual_untranslatable(self, translation):
+        msg_with_context = 'context' + _message.CONTEXT_SEPARATOR + 'message'
+        lang = mock.Mock()
+        translation.return_value = lang
+        trans = mock.Mock()
+        trans.return_value = msg_with_context
+        lang.gettext = trans
+        lang.ugettext = trans
+        result = _message.Message._translate_msgid(
+            ('context', 'message'),
+            domain='domain',
+            has_contextual_form=True,
+            has_plural_form=False,
+        )
+        self.assertEqual('message', result)
+        trans.assert_called_with(msg_with_context)
+
+    @mock.patch('gettext.translation')
+    def test_plural(self, translation):
+        lang = mock.Mock()
+        translation.return_value = lang
+        trans = mock.Mock()
+        trans.return_value = 'translated'
+        lang.ngettext = trans
+        lang.ungettext = trans
+        result = _message.Message._translate_msgid(
+            ('single', 'plural', -1),
+            domain='domain',
+            has_contextual_form=False,
+            has_plural_form=True,
+        )
+        self.assertEqual('translated', result)
+        trans.assert_called_with(
+            'single', 'plural', -1,
+        )
+
+    @mock.patch('gettext.translation')
+    def test_contextual_and_plural(self, translation):
+        self.assertRaises(
+            ValueError,
+            _message.Message._translate_msgid,
+            'nothing',
+            domain='domain',
+            has_contextual_form=True,
+            has_plural_form=True,
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/requirements.txt 
new/oslo.i18n-2.6.0/requirements.txt
--- old/oslo.i18n-2.2.0/requirements.txt        2015-07-27 21:56:31.000000000 
+0200
+++ new/oslo.i18n-2.6.0/requirements.txt        2015-09-08 17:41:03.000000000 
+0200
@@ -2,6 +2,6 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-pbr<2.0,>=1.3
+pbr<2.0,>=1.6
 Babel>=1.3
 six>=1.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.i18n-2.2.0/test-requirements.txt 
new/oslo.i18n-2.6.0/test-requirements.txt
--- old/oslo.i18n-2.2.0/test-requirements.txt   2015-07-27 21:56:31.000000000 
+0200
+++ new/oslo.i18n-2.6.0/test-requirements.txt   2015-09-08 17:41:03.000000000 
+0200
@@ -8,8 +8,8 @@
 oslosphinx>=2.5.0 # Apache-2.0
 
 mock>=1.2
-oslotest>=1.7.0 # Apache-2.0
+oslotest>=1.10.0 # Apache-2.0
 coverage>=3.6
 
 # for pre-release tests
-oslo.config>=1.11.0 # Apache-2.0
+oslo.config>=2.3.0 # Apache-2.0


Reply via email to