diff -Nru language-selector-0.76/dbus_backend/ls-dbus-backend language-selector-0.77/dbus_backend/ls-dbus-backend --- language-selector-0.76/dbus_backend/ls-dbus-backend 2012-03-26 18:56:14.000000000 +0000 +++ language-selector-0.77/dbus_backend/ls-dbus-backend 2012-03-27 06:01:34.000000000 +0000 @@ -96,7 +96,7 @@ return False conffiles = ["/etc/default/locale", "/etc/environment"] macr = LanguageSelector.macros.LangpackMacros(self._datadir, sysFormats) - for var in 'LC_NUMERIC', 'LC_TIME', 'LC_MONETARY', 'LC_PAPER', \ + for var in 'LC_NUMERIC', 'LC_TIME', 'LC_MONETARY', 'LC_PAPER', 'LC_IDENTIFICATION', \ 'LC_NAME', 'LC_ADDRESS', 'LC_TELEPHONE', 'LC_MEASUREMENT': findString = "%s=" % var setString = "%s=\"%s\"\n" % (var, macr["SYSLOCALE"]) diff -Nru language-selector-0.76/dbus_backend/lsd.py language-selector-0.77/dbus_backend/lsd.py --- language-selector-0.76/dbus_backend/lsd.py 2012-03-26 18:56:14.000000000 +0000 +++ language-selector-0.77/dbus_backend/lsd.py 2012-03-27 06:01:34.000000000 +0000 @@ -96,7 +96,7 @@ return False conffiles = ["/etc/default/locale", "/etc/environment"] macr = LanguageSelector.macros.LangpackMacros(self._datadir, sysFormats) - for var in 'LC_NUMERIC', 'LC_TIME', 'LC_MONETARY', 'LC_PAPER', \ + for var in 'LC_NUMERIC', 'LC_TIME', 'LC_MONETARY', 'LC_PAPER', 'LC_IDENTIFICATION', \ 'LC_NAME', 'LC_ADDRESS', 'LC_TELEPHONE', 'LC_MEASUREMENT': findString = "%s=" % var setString = "%s=\"%s\"\n" % (var, macr["SYSLOCALE"]) diff -Nru language-selector-0.76/debian/changelog language-selector-0.77/debian/changelog --- language-selector-0.76/debian/changelog 2012-03-27 05:20:18.000000000 +0000 +++ language-selector-0.77/debian/changelog 2012-03-30 10:42:15.000000000 +0000 @@ -1,3 +1,17 @@ +language-selector (0.77) precise; urgency=low + + * dbus_backend/ls-dbus-backend: Set LC_IDENTIFICATION as well, to comply + with what Ubiquity does. (LP: #926207) + * tests/test_language_support_pkgs.py: Fix + test_by_package_and_locale_noinstalled() for current pkg_depends: gedit + does not need aspell any more, use abiword as trigger package. + * language_support_pkgs.py, _expand_pkg_pattern(): Special-case "zh-han[st]" + values for the locale. These are not actual locales, but e. g. Ubiquity + assumes this works. So let these mean "zh_CN" and "zh_TW" respectively. + Add a test case to tests/test_language_support_pkgs.py. (LP: #963460) + + -- Martin Pitt Fri, 30 Mar 2012 12:42:15 +0200 + language-selector (0.76) precise; urgency=low * Add conffile upgrade handling for ko-kr conffiles dropped since lucid. diff -Nru language-selector-0.76/language_support_pkgs.py language-selector-0.77/language_support_pkgs.py --- language-selector-0.76/language_support_pkgs.py 2012-03-26 18:56:14.000000000 +0000 +++ language-selector-0.77/language_support_pkgs.py 2012-03-27 06:27:05.000000000 +0000 @@ -178,6 +178,13 @@ def _expand_pkg_pattern(klass, pattern, locale): '''Return all possible suffixes for given pattern and locale''' + # people might call this with the pseudo-locales "zh-han[st]", support + # these as well; we can only guess the country here. + if locale == 'zh-hans': + locale = 'zh_CN' + elif locale == 'zh-hant': + locale = 'zh_TW' + locale = locale.split('.', 1)[0].lower() variant = None country = None diff -Nru language-selector-0.76/tests/test_language_support_pkgs.py language-selector-0.77/tests/test_language_support_pkgs.py --- language-selector-0.76/tests/test_language_support_pkgs.py 2012-03-26 18:56:14.000000000 +0000 +++ language-selector-0.77/tests/test_language_support_pkgs.py 2012-03-27 06:25:54.000000000 +0000 @@ -129,7 +129,7 @@ self.assertEqual(result, ['wbritish']) result = ls.by_package_and_locale('firefox', 'en_GB.UTF-8', False) self.assertEqual(result, []) - result = ls.by_package_and_locale('gedit', 'en_GB.UTF-8', False) + result = ls.by_package_and_locale('abiword', 'en_GB.UTF-8', False) self.assertEqual(result, ['aspell-en']) # if we specify a country, do not give us stuff for other countries @@ -164,6 +164,32 @@ # no duplicated items in result list self.assertEqual(sorted(set(result)), sorted(result)) + def test_by_locale_zh(self): + '''by_locale() for Chinese''' + + ls = self._fake_apt_language_support(['libreoffice-common', 'firefox', + 'ibus'], ['libreoffice-l10n-zh-cn', 'libreoffice-l10n-zh-tw', + 'ibus-sunpinyin', 'ibus-chewing', 'firefox-locale-zh-hans', + 'firefox-locale-zh-hant']) + + result = set(ls.by_locale('zh_CN', True)) + self.assertEqual(result, set(['libreoffice-l10n-zh-cn', + 'ibus-sunpinyin', 'firefox-locale-zh-hans'])) + + # accepts both variants of specifying the locale; this is not + # originally supposed to work, but some programs assume it does + result = set(ls.by_locale('zh-hans', True)) + self.assertEqual(result, set(['libreoffice-l10n-zh-cn', + 'ibus-sunpinyin', 'firefox-locale-zh-hans'])) + + result = set(ls.by_locale('zh_TW', True)) + self.assertEqual(result, set(['libreoffice-l10n-zh-tw', + 'ibus-chewing', 'firefox-locale-zh-hant'])) + + result = set(ls.by_locale('zh-hant', True)) + self.assertEqual(result, set(['libreoffice-l10n-zh-tw', + 'ibus-chewing', 'firefox-locale-zh-hant'])) + def test_by_locale_noinstalled(self): '''by_locale() without installed packages'''