diff --git a/client/text_query.py b/client/text_query.py index 864e58940..fd1115dd3 100644 --- a/client/text_query.py +++ b/client/text_query.py @@ -17,7 +17,7 @@ from entropy.output import darkgreen, darkred, red, blue, \ print_warning, teal from entropy.exceptions import DependenciesNotRemovable from entropy.misc import Lifo -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.cli import show_dependencies_legend, print_package_info, \ graph_packages, revgraph_packages import entropy.dep @@ -239,7 +239,7 @@ def search_repository_packages(packages, entropy_client, entropy_repository): toc = [] toc.append(("%s:" % (blue(_("Keyword")),), purple(package))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - len(pkg_ids), brown(P_("entry", "entries", len(pkg_ids))),))) + len(pkg_ids), brown(ngettext("entry", "entries", len(pkg_ids))),))) print_table(toc) if (not pkg_data) and (not etpUi['quiet']): @@ -305,7 +305,7 @@ def search_belongs(files, entropy_client, entropy_repository, toc = [] toc.append(("%s:" % (blue(_("Keyword")),), purple(xfile))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - len(result), brown(P_("entry", "entries", len(result))),))) + len(result), brown(ngettext("entry", "entries", len(result))),))) print_table(toc) return 0 @@ -427,7 +427,7 @@ def search_reverse_dependencies(atoms, entropy_client, entropy_repository): toc.append(("%s:" % (blue(_("Found")),), "%s %s %s" % ( len(search_results), - brown(P_("entry", "entries", len(search_results))), where,))) + brown(ngettext("entry", "entries", len(search_results))), where,))) print_table(toc) @@ -490,7 +490,7 @@ def search_required_libraries(libraries, entropy_client, entropy_repository): toc = [] toc.append(("%s:" % (blue(_("Library")),), purple(library))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - len(results), brown(P_("package", "packages", len(results))),))) + len(results), brown(ngettext("package", "packages", len(results))),))) print_table(toc) return 0 @@ -767,7 +767,7 @@ def search_removal_dependencies(packages, entropy_client, entropy_repository, toc.append(("%s:" % (blue(_("Keywords")),), purple(', '.join(packages)))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - atomscounter, brown(P_("entry", "entries", atomscounter)),))) + atomscounter, brown(ngettext("entry", "entries", atomscounter)),))) print_table(toc) return 0 @@ -885,7 +885,7 @@ def search_package(packages, entropy_client, get_results = False, purple(', '.join(packages)))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( len(search_data), - brown(P_("entry", "entries", len(search_data))),))) + brown(ngettext("entry", "entries", len(search_data))),))) print_table(toc) return 0 @@ -929,7 +929,7 @@ def search_mimetype(mimetypes, entropy_client, installed = False, toc = [] toc.append(("%s:" % (blue(_("Keyword")),), purple(mimetype))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - len(matches), brown(P_("entry", "entries", len(matches))),))) + len(matches), brown(ngettext("entry", "entries", len(matches))),))) print_table(toc) if not etpUi['quiet'] and not found: @@ -995,7 +995,7 @@ def match_package(packages, entropy_client, multi_match = False, toc.append(("%s:" % (blue(_("Keyword")),), purple(package))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( len(matches), - brown(P_("entry", "entries", len(matches))),))) + brown(ngettext("entry", "entries", len(matches))),))) print_table(toc) if not etpUi['quiet'] and not found and not get_results: @@ -1040,7 +1040,7 @@ def search_slotted_packages(slots, entropy_client): toc.append(("%s:" % (blue(_("Keyword")),), purple(slot))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( len(results), - brown(P_("entry", "entries", len(results))),))) + brown(ngettext("entry", "entries", len(results))),))) print_table(toc) if not etpUi['quiet'] and not found: @@ -1081,7 +1081,7 @@ def search_package_sets(items, entropy_client): toc = [] toc.append(("%s:" % (blue(_("Keyword")),), purple(item))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - matchNumber, brown(P_("entry", "entries", matchNumber)),))) + matchNumber, brown(ngettext("entry", "entries", matchNumber)),))) print_table(toc) if not etpUi['quiet'] and not found: @@ -1121,7 +1121,7 @@ def search_tagged_packages(tags, entropy_client): toc.append(("%s:" % (blue(_("Keyword")),), purple(tag))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( len(results), - brown(P_("entry", "entries", len(results))),))) + brown(ngettext("entry", "entries", len(results))),))) print_table(toc) if not etpUi['quiet'] and not found: @@ -1151,7 +1151,7 @@ def search_rev_packages(revisions, entropy_client): toc = [] toc.append(("%s:" % (blue(_("Keyword")),), purple(revision))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - len(results), brown(P_("entry", "entries", len(results))),))) + len(results), brown(ngettext("entry", "entries", len(results))),))) print_table(toc) if not etpUi['quiet'] and not found: @@ -1196,7 +1196,7 @@ def search_licenses(licenses, entropy_client): toc.append(("%s:" % (blue(_("Keyword")),), purple(mylicense))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( len(results), - brown(P_("entry", "entries", len(results))),))) + brown(ngettext("entry", "entries", len(results))),))) print_table(toc) if not etpUi['quiet'] and not found: @@ -1252,7 +1252,7 @@ def search_descriptions(descriptions, entropy_client, entropy_repository): toc = [] toc.append(("%s:" % (blue(_("Keyword")),), purple(desc))) toc.append(("%s:" % (blue(_("Found")),), "%s %s" % ( - len(pkg_ids), brown(P_("entry", "entries", len(pkg_ids))),))) + len(pkg_ids), brown(ngettext("entry", "entries", len(pkg_ids))),))) print_table(toc) return found diff --git a/client/text_ui.py b/client/text_ui.py index b0c20a1b7..d9d0b6e60 100644 --- a/client/text_ui.py +++ b/client/text_ui.py @@ -30,7 +30,7 @@ from entropy.output import red, blue, brown, darkred, bold, darkgreen, bold, \ readtext, print_generic from entropy.client.interfaces import Client from entropy.client.interfaces.package import Package as ClientPkg -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.services.client import WebService from entropy.cli import countdown, enlightenatom, get_entropy_webservice @@ -315,7 +315,7 @@ def show_config_files_to_update(entropy_client): if len(scandata) > 0: # strict check if not etpUi['quiet']: - mytxt = P_("There is %s configuration file needing update", + mytxt = ngettext("There is %s configuration file needing update", "There are %s configuration files needing update", len(scandata)) % len(scandata) print_warning(darkgreen(mytxt)) @@ -1135,7 +1135,7 @@ def _fetch_packages(entropy_client, run_queue, downdata, multifetch = 1, xterm_header = "equo ("+_("fetch")+") :: "+str(fetchqueue)+" of "+mytotalqueue+" ::" print_info(red(" :: ")+bold("(")+blue(str(fetchqueue))+"/"+ \ red(mytotalqueue)+bold(") ")+">>> "+darkgreen(str(len(matches)))+" "+ \ - P_("package", "packages", len(matches))) + ngettext("package", "packages", len(matches))) rc = Package.run(xterm_header = xterm_header) if rc != 0: diff --git a/lib/entropy/client/interfaces/package.py b/lib/entropy/client/interfaces/package.py index 76c7dda8b..3e3f1024b 100644 --- a/lib/entropy/client/interfaces/package.py +++ b/lib/entropy/client/interfaces/package.py @@ -22,7 +22,7 @@ from entropy.const import etpConst, etpUi, const_setup_perms, \ const_isunicode, const_convert_to_unicode, const_debug_write, \ const_convert_to_rawstring from entropy.exceptions import PermissionDenied, SPMError -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.output import brown, blue, bold, darkgreen, \ darkblue, red, purple, darkred, teal from entropy.client.interfaces.client import Client @@ -2981,7 +2981,7 @@ class Package: mytxt = "%s: %s %s" % ( blue(_("Downloading")), darkred(str(m_fetch_len)), - P_("archive", "archives", m_fetch_len), + ngettext("archive", "archives", m_fetch_len), ) self._entropy.output( @@ -3496,7 +3496,7 @@ class Package: def do_multi_fetch(): m_fetch_len = len(self.pkgmeta['multi_fetch_list']) / 2 self._xterm_title += ' %s: %s %s' % (_("Multi Fetching"), - m_fetch_len, P_("package", "packages", m_fetch_len),) + m_fetch_len, ngettext("package", "packages", m_fetch_len),) self._entropy.set_title(self._xterm_title) return self._multi_fetch_step() @@ -3516,7 +3516,7 @@ class Package: def do_multi_checksum(): m_checksum_len = len(self.pkgmeta['multi_checksum_list']) self._xterm_title += ' %s: %s %s' % (_("Multi Verification"), - m_checksum_len, P_("package", "packages", m_checksum_len),) + m_checksum_len, ngettext("package", "packages", m_checksum_len),) self._entropy.set_title(self._xterm_title) return self._multi_checksum_step() diff --git a/lib/entropy/client/interfaces/repository.py b/lib/entropy/client/interfaces/repository.py index 3dfcdf5b2..b5b2dae42 100644 --- a/lib/entropy/client/interfaces/repository.py +++ b/lib/entropy/client/interfaces/repository.py @@ -15,7 +15,7 @@ import sys import subprocess from entropy.const import const_debug_write, etpConst -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.exceptions import RepositoryError, PermissionDenied from entropy.output import blue, darkred, red, darkgreen, bold, purple, teal, \ brown @@ -189,9 +189,9 @@ class Repository: human_size = entropy.tools.bytes_into_human(pkgs_size) mytxt = "%s: %s %s %s." % ( teal("Packages"), - purple(P_("there is", "there are", number_of_pkgs)), + purple(ngettext("there is", "there are", number_of_pkgs)), brown(str(number_of_pkgs)), - purple(P_("package file that could be removed", + purple(ngettext("package file that could be removed", "package files that could be removed", number_of_pkgs)), ) diff --git a/lib/entropy/fetchers.py b/lib/entropy/fetchers.py index a7005e454..10d901a93 100644 --- a/lib/entropy/fetchers.py +++ b/lib/entropy/fetchers.py @@ -38,7 +38,7 @@ from entropy.const import etpConst, const_isfileobj, const_debug_write from entropy.output import TextInterface, darkblue, darkred, purple, blue, \ brown, darkgreen, red -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.misc import ParallelTask from entropy.core.settings.base import SystemSettings @@ -1067,7 +1067,7 @@ class MultipleUrlFetcher(TextInterface): "%s: %s %s" % ( darkblue(_("Aggregated download")), darkred(str(len(pl))), - darkblue(P_("item", "items", len(pl))), + darkblue(ngettext("item", "items", len(pl))), ), importance = 0, level = "info", diff --git a/lib/entropy/i18n.py b/lib/entropy/i18n.py index 846d6d7a3..33acf1225 100644 --- a/lib/entropy/i18n.py +++ b/lib/entropy/i18n.py @@ -28,6 +28,7 @@ if _LOCALE_FULL: _LOCALE = _LOCALE.lower() try: + import __builtin__ import gettext localedir = "/usr/share/locale" # support for ENV TEXTDOMAINDIR @@ -40,8 +41,8 @@ try: kwargs['unicode'] = True gettext.install('entropy', **kwargs) # do not use gettext.gettext because it returns str instead of unicode - _ = _ - P_ = ngettext + _ = __builtin__.__dict__['_'] + ngettext = __builtin__.__dict__['ngettext'] except (ImportError, OSError,): def _(raw_string): @@ -57,7 +58,7 @@ except (ImportError, OSError,): """ return raw_string - def P_(singular, plural, n): + def ngettext(singular, plural, n): """ Plural aware version of _(). Fallback function in case gettext is not available, same syntax as gettext.ngettext. diff --git a/magneto/src/magneto/core/interfaces.py b/magneto/src/magneto/core/interfaces.py index db8c3f663..4bfc879de 100644 --- a/magneto/src/magneto/core/interfaces.py +++ b/magneto/src/magneto/core/interfaces.py @@ -23,7 +23,7 @@ from entropy.output import nocolor from entropy.client.interfaces import Client from entropy.const import etpConst import entropy.tools -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext # Magneto imports from magneto.core import config @@ -221,14 +221,14 @@ class MagnetoCore(MagnetoCoreUI): upd_len = len(updates) if upd_len: - self.update_tooltip(P_("There is %s update available", + self.update_tooltip(ngettext("There is %s update available", "There are %s updates available", upd_len) % (upd_len,) ) self.set_state("CRITICAL") self.show_alert( _("Sabayon updates available"), - P_("There is %s update available", + ngettext("There is %s update available", "There are %s updates available", upd_len) % (upd_len,), urgency = "critical", diff --git a/server/eit/commands/branch.py b/server/eit/commands/branch.py index faf132dad..6125c5984 100644 --- a/server/eit/commands/branch.py +++ b/server/eit/commands/branch.py @@ -13,7 +13,7 @@ import os import sys import argparse -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.output import bold, purple, darkgreen, blue, teal import entropy.tools @@ -144,7 +144,7 @@ over just use the *--no-copy* switch. entropy_server.output( "%s %s %s: %s" % ( len(pkglist), - darkgreen(P_("package", "packages", len(pkglist))), + darkgreen(ngettext("package", "packages", len(pkglist))), blue(_("would be copied to branch")), bold(self._to_branch), ), diff --git a/sulfur/src/sulfur/__init__.py b/sulfur/src/sulfur/__init__.py index 35e426cf6..36e1d8e5c 100644 --- a/sulfur/src/sulfur/__init__.py +++ b/sulfur/src/sulfur/__init__.py @@ -44,7 +44,7 @@ import entropy.tools from entropy.const import etpConst, const_get_stringtype, \ initconfig_entropy_constants, const_convert_to_unicode, \ const_debug_write -from entropy.i18n import _, P_ +from entropy.i18n import _, ngettext from entropy.misc import ParallelTask from entropy.cache import EntropyCacher, MtimePingus from entropy.output import print_generic @@ -1931,7 +1931,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin): empty = True self.set_status_ticker("%s: %s %s" % ( - _("Showing"), len(allpkgs), P_("item", "items", len(allpkgs)),)) + _("Showing"), len(allpkgs), ngettext("item", "items", len(allpkgs)),)) show_pkgsets = False if action == "pkgsets":