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":