From 3325f37f6dee522318c88fa8bd39f9d809db6748 Mon Sep 17 00:00:00 2001 From: Seth Vidal Date: Apr 14 2008 17:08:45 +0000 Subject: more fixes from Jantill and Timlau for all sorta of the unicode/translation insanity --- diff --git a/yum-big-head.patch b/yum-big-head.patch index 3629df0..57b23d9 100644 --- a/yum-big-head.patch +++ b/yum-big-head.patch @@ -1,3 +1,15 @@ +diff --git a/Makefile b/Makefile +index 48b7333..f9e8d76 100644 +--- a/Makefile ++++ b/Makefile +@@ -46,6 +46,7 @@ doccheck: + + test: + @nosetests -i ".*test" test ++ @test/check-po-yes-no.py + + check: test + diff --git a/callback.py b/callback.py index e147b05..4d75a08 100644 --- a/callback.py @@ -12,10 +24,10 @@ index e147b05..4d75a08 100644 class RPMInstallCallback: diff --git a/cli.py b/cli.py -index 741fcc7..f4c044f 100644 +index 741fcc7..0454c9a 100644 --- a/cli.py +++ b/cli.py -@@ -40,7 +40,7 @@ import rpmUtils.arch +@@ -40,11 +40,13 @@ import rpmUtils.arch from rpmUtils.arch import isMultiLibArch import rpmUtils.miscutils from yum.packages import parsePackages, YumLocalPackage @@ -24,7 +36,13 @@ index 741fcc7..f4c044f 100644 from yum.rpmtrans import RPMTransaction import signal import yumcommands -@@ -381,7 +381,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput): + ++from yum.misc import to_unicode ++ + def sigquit(signum, frame): + """ SIGQUIT handler for the yum cli. """ + print >> sys.stderr, "Quit signal sent - exiting immediately" +@@ -381,7 +383,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput): tt_st = time.time() self.verbose_logger.log(yum.logginglevels.INFO_2, _('Running Transaction Test')) @@ -33,8 +51,68 @@ index 741fcc7..f4c044f 100644 self.tsInfo.probFilterFlags.append(rpm.RPMPROB_FILTER_DISKSPACE) +@@ -682,6 +684,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput): + + searchlist = ['name', 'summary', 'description', 'url'] + dups = self.conf.showdupesfromrepos ++ args = map(to_unicode, args) + matching = self.searchGenerator(searchlist, args, + showdups=dups, keys=True) + +@@ -896,11 +899,11 @@ class YumBaseCli(yum.YumBase, output.YumOutput): + + def usage(self): + ''' Print out command line usage ''' +- self.optparser.print_help() ++ sys.stdout.write(self.optparser.format_help()) + + def shellUsage(self): + ''' Print out the shell usage ''' +- self.optparser.print_usage() ++ sys.stdout.write(self.optparser.get_usage()) + + def _installable(self, pkg, ematch=False): + +@@ -1088,6 +1091,10 @@ class YumOptionParser(OptionParser): + root = '/' + return root + ++ def _wrapOptParseUsage(self, opt, value, parser, *args, **kwargs): ++ self.base.usage() ++ self.exit() ++ + def _addYumBasicOptions(self): + def repo_optcb(optobj, opt, value, parser): + '''Callback for the enablerepo and disablerepo option. +@@ -1098,7 +1105,16 @@ class YumOptionParser(OptionParser): + dest = eval('parser.values.%s' % optobj.dest) + dest.append((opt, value)) + +- ++ ++ # Note that we can't use the default action="help" because of the ++ # fact that print_help() unconditionally does .encode() ... which is ++ # bad on unicode input. ++ self.conflict_handler = "resolve" ++ self.add_option("-h", "--help", action="callback", ++ callback=self._wrapOptParseUsage, ++ help=_("show this help message and exit")) ++ self.conflict_handler = "error" ++ + self.add_option("-t", "--tolerant", action="store_true", + help=_("be tolerant of errors")) + self.add_option("-C", dest="cacheonly", action="store_true", +@@ -1119,7 +1135,7 @@ class YumOptionParser(OptionParser): + self.add_option("-q", "--quiet", dest="quiet", action="store_true", + help=_("quiet operation")) + self.add_option("-v", "--verbose", dest="verbose", action="store_true", +- help="verbose operation") ++ help=_("verbose operation")) + self.add_option("-y", dest="assumeyes", action="store_true", + help=_("answer yes for all questions")) + self.add_option("--version", action="store_true", diff --git a/output.py b/output.py -index 532a06e..4d835a8 100644 +index 532a06e..3ef850d 100644 --- a/output.py +++ b/output.py @@ -23,13 +23,13 @@ import logging @@ -62,7 +140,29 @@ index 532a06e..4d835a8 100644 keylen = len(key) cols = self.term.columns nxt = ' ' * (keylen - 2) + ': ' -@@ -747,7 +747,7 @@ class YumCliRPMCallBack(RPMBaseCallback): +@@ -266,7 +266,7 @@ class YumOutput: + return ret + + def fmtSection(self, name, fill='='): +- name = str(name) ++ name = to_str(name) + cols = self.term.columns - 2 + name_len = len(name) + if name_len >= (cols - 4): +@@ -349,9 +349,11 @@ class YumOutput: + + while True: + try: +- choice = raw_input(_('Is this ok [y/N]: ').encode("utf-8")) ++ choice = raw_input(_('Is this ok [y/N]: ')) + except UnicodeEncodeError: + raise ++ except UnicodeDecodeError: ++ raise + except: + choice = '' + choice = choice.lower() +@@ -747,7 +749,7 @@ class YumCliRPMCallBack(RPMBaseCallback): fmt = self._makefmt(percent, ts_current, ts_total) msg = fmt % (process, pkgname) if msg != self.lastmsg: @@ -71,7 +171,7 @@ index 532a06e..4d835a8 100644 sys.stdout.flush() self.lastmsg = msg if te_current == te_total: -@@ -755,7 +755,7 @@ class YumCliRPMCallBack(RPMBaseCallback): +@@ -755,7 +757,7 @@ class YumCliRPMCallBack(RPMBaseCallback): def scriptout(self, package, msgs): if msgs: @@ -3334,91 +3434,1324 @@ index 60a8c1b..288f0fe 100644 "incorrectes pour ce paquetage.\n" "Vérifiez que les URL des clés pour ce dépôt soient correctes." --#: ../yum/__init__.py:2619 -+#: ../yum/__init__.py:2653 - msgid "Import of key(s) didn't help, wrong key(s)?" - msgstr "L'import de la (des) clé(s) n'a pas résolu le problème, mauvaise(s) clé(s) ?" +-#: ../yum/__init__.py:2619 ++#: ../yum/__init__.py:2653 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "L'import de la (des) clé(s) n'a pas résolu le problème, mauvaise(s) clé(s) ?" + +-#: ../yum/__init__.py:2693 ++#: ../yum/__init__.py:2727 + msgid "Unable to find a suitable mirror." + msgstr "Impossible de trouver un miroir adapté." + +-#: ../yum/__init__.py:2695 ++#: ../yum/__init__.py:2729 + msgid "Errors were encountered while downloading packages." + msgstr "Des erreurs ont été rencontrée durant le téléchargement des paquetages." + +-#: ../yum/__init__.py:2760 ++#: ../yum/__init__.py:2794 + msgid "Test Transaction Errors: " + msgstr "Erreurs de la transaction de test : " + + #. Mostly copied from YumOutput._outKeyValFill() +-#: ../yum/plugins.py:195 ++#: ../yum/plugins.py:197 + msgid "Loaded plugins: " + msgstr "Modules complémentaires chargés : " + +-#: ../yum/plugins.py:206 ++#: ../yum/plugins.py:208 + #, python-format + msgid "No plugin match for: %s" + msgstr "Aucun plugin correspondant pour : %s" + +-#: ../yum/plugins.py:219 ++#: ../yum/plugins.py:221 + #, python-format + msgid "\"%s\" plugin is disabled" + msgstr "le module complémentaire « %s » est désactivé" + +-#: ../yum/plugins.py:231 ++#: ../yum/plugins.py:233 + #, python-format + msgid "Plugin \"%s\" doesn't specify required API version" + msgstr "Le module complémentaire « %s » ne spécifie pas la version de l'API requise" + +-#: ../yum/plugins.py:235 ++#: ../yum/plugins.py:237 + #, python-format + msgid "Plugin \"%s\" requires API %s. Supported API is %s." + msgstr "Le module complémentaire « %s » requiert l'API %s. L'API supportée est %s." + +-#: ../yum/plugins.py:264 ++#: ../yum/plugins.py:266 + #, python-format + msgid "Loading \"%s\" plugin" + msgstr "Chargement du module complémentaire « %s »" + +-#: ../yum/plugins.py:271 ++#: ../yum/plugins.py:273 + #, python-format + msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" + msgstr "" + "Au moins deux modules complémentaires avec le même nom « %s » existent dans " + "le chemin de recherche des modules complémentaires" + +-#: ../yum/plugins.py:291 ++#: ../yum/plugins.py:293 + #, python-format + msgid "Configuration file %s not found" + msgstr "Fichier de configuration %s non trouvé" + + #. for + #. Configuration files for the plugin not found +-#: ../yum/plugins.py:294 ++#: ../yum/plugins.py:296 + #, python-format + msgid "Unable to find configuration file for plugin %s" + msgstr "" + "Impossible de trouver le fichier de configuration pour le module " + "complémentaire %s" + +-#: ../yum/plugins.py:448 ++#: ../yum/plugins.py:450 + msgid "registration of commands not supported" + msgstr "enregistrement de commandes non supporté" + +diff --git a/po/pt_BR.po b/po/pt_BR.po +index 638315c..4f17e03 100644 +--- a/po/pt_BR.po ++++ b/po/pt_BR.po +@@ -7,7 +7,7 @@ msgstr "" + "Project-Id-Version: Yum\n" + "Report-Msgid-Bugs-To: \n" + "POT-Creation-Date: 2008-03-25 11:29+0100\n" +-"PO-Revision-Date: 2008-03-22 01:02-0300\n" ++"PO-Revision-Date: 2008-04-12 00:41-0300\n" + "Last-Translator: Igor Pires Soares \n" + "Language-Team: Brazilian Portuguese \n" + "MIME-Version: 1.0\n" +@@ -17,7 +17,8 @@ msgstr "" + "X-Poedit-Language: Portuguese\n" + "X-Poedit-Country: BRAZIL\n" + +-#: ../callback.py:48 ../output.py:512 ++#: ../callback.py:48 ++#: ../output.py:512 + msgid "Updating" + msgstr "Atualizando" + +@@ -25,15 +26,20 @@ msgstr "Atualizando" + msgid "Erasing" + msgstr "Apagando" + +-#: ../callback.py:50 ../callback.py:51 ../callback.py:53 ../output.py:511 ++#: ../callback.py:50 ++#: ../callback.py:51 ++#: ../callback.py:53 ++#: ../output.py:511 + msgid "Installing" + msgstr "Instalando" + +-#: ../callback.py:52 ../callback.py:58 ++#: ../callback.py:52 ++#: ../callback.py:58 + msgid "Obsoleted" + msgstr "Obsoletos" + +-#: ../callback.py:54 ../output.py:558 ++#: ../callback.py:54 ++#: ../output.py:558 + msgid "Updated" + msgstr "Atualizados" + +@@ -41,7 +47,10 @@ msgstr "Atualizados" + msgid "Erased" + msgstr "Removidos" + +-#: ../callback.py:56 ../callback.py:57 ../callback.py:59 ../output.py:556 ++#: ../callback.py:56 ++#: ../callback.py:57 ++#: ../callback.py:59 ++#: ../output.py:556 + msgid "Installed" + msgstr "Instalados" + +@@ -63,7 +72,8 @@ msgstr "Erro: estado de saída inválido: %s de %s" + msgid "Erased: %s" + msgstr "Removidos: %s" + +-#: ../callback.py:217 ../output.py:513 ++#: ../callback.py:217 ++#: ../output.py:513 + msgid "Removing" + msgstr "Removendo" + +@@ -84,12 +94,15 @@ msgstr "Configurando repositórios" + msgid "Reading repository metadata in from local files" + msgstr "Lendo metadados do repositório a partir dos arquivos locais" + +-#: ../cli.py:183 ../utils.py:72 ++#: ../cli.py:183 ++#: ../utils.py:72 + #, python-format + msgid "Config Error: %s" + msgstr "Erro de Configuração: %s" + +-#: ../cli.py:186 ../cli.py:1068 ../utils.py:75 ++#: ../cli.py:186 ++#: ../cli.py:1068 ++#: ../utils.py:75 + #, python-format + msgid "Options Error: %s" + msgstr "Erro nas Opções: %s" +@@ -133,15 +146,18 @@ msgstr "Baixando Pacotes:" + msgid "Error Downloading Packages:\n" + msgstr "Erro ao Baixar Pacotes:\n" + +-#: ../cli.py:370 ../yum/__init__.py:2746 ++#: ../cli.py:370 ++#: ../yum/__init__.py:2746 + msgid "Running rpm_check_debug" + msgstr "Executando o rpm_check_debug" + +-#: ../cli.py:373 ../yum/__init__.py:2749 ++#: ../cli.py:373 ++#: ../yum/__init__.py:2749 + msgid "ERROR with rpm_check_debug vs depsolve:" + msgstr "Erro com o rpm_check_debug vs depsolve:" + +-#: ../cli.py:377 ../yum/__init__.py:2751 ++#: ../cli.py:377 ++#: ../yum/__init__.py:2751 + msgid "Please report this error in bugzilla" + msgstr "Por favor, reporte esse erro ao bugzilla" + +@@ -170,8 +186,7 @@ msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." + msgstr "" +-"Recusa de importação automática das chaves ao executar de forma não " +-"assistida.\n" ++"Recusa de importação automática das chaves ao executar de forma não assistida.\n" + "Use \"-y\" para sobrescrever." + + #: ../cli.py:491 +@@ -183,15 +198,22 @@ msgstr "Analisando argumentos da instalação de pacotes" + msgid "No package %s available." + msgstr "Nenhum pacote %s disponível." + +-#: ../cli.py:505 ../cli.py:623 ../yumcommands.py:748 ++#: ../cli.py:505 ++#: ../cli.py:623 ++#: ../yumcommands.py:748 + msgid "Package(s) to install" + msgstr "Pacotes a serem instalados" + +-#: ../cli.py:506 ../cli.py:624 ../yumcommands.py:146 ../yumcommands.py:749 ++#: ../cli.py:506 ++#: ../cli.py:624 ++#: ../yumcommands.py:146 ++#: ../yumcommands.py:749 + msgid "Nothing to do" + msgstr "Nada a ser feito" + +-#: ../cli.py:536 ../yum/__init__.py:2232 ../yum/__init__.py:2311 ++#: ../cli.py:536 ++#: ../yum/__init__.py:2232 ++#: ../yum/__init__.py:2311 + #: ../yum/__init__.py:2340 + #, python-format + msgid "Not Updating Package that is already obsoleted: %s.%s %s:%s-%s" +@@ -226,13 +248,12 @@ msgstr "Nenhum Pacote Fornecido" + + #: ../cli.py:654 + msgid "Matching packages for package list to user args" +-msgstr "" +-"Resultado dos pacotes para a lista de pacotes dos argumentos do usuário" ++msgstr "Resultado dos pacotes para a lista de pacotes dos argumentos do usuário" + + #: ../cli.py:701 +-#, fuzzy, python-format ++#, python-format + msgid "Warning: No matches found for: %s" +-msgstr "Apagar: Nenhum resultado para %s" ++msgstr "Aviso: Nenhum resultado para: %s" + + #: ../cli.py:704 + msgid "No Matches found" +@@ -264,9 +285,8 @@ msgid "Cleaning up database cache" + msgstr "Limpando cache do banco de dados" + + #: ../cli.py:783 +-#, fuzzy + msgid "Cleaning up expire-cache metadata" +-msgstr "Limpando metadados em xml" ++msgstr "Limpando metadados expirados do cache" + + #: ../cli.py:786 + msgid "Cleaning up plugins" +@@ -284,16 +304,16 @@ msgstr "Grupos Disponíveis:" + msgid "Done" + msgstr "Concluído" + +-#: ../cli.py:829 ../cli.py:841 ../cli.py:847 ++#: ../cli.py:829 ++#: ../cli.py:841 ++#: ../cli.py:847 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "Aviso: O grupo %s não existe." + + #: ../cli.py:853 + msgid "No packages in any requested group available to install or update" +-msgstr "" +-"Nenhum pacote disponível para instalação ou atualização nos grupos " +-"requisitados" ++msgstr "Nenhum pacote disponível para instalação ou atualização nos grupos requisitados" + + #: ../cli.py:855 + #, python-format +@@ -328,8 +348,7 @@ msgstr "Descartando pacote não comparável %s.%s" + #: ../cli.py:952 + #, python-format + msgid "No other %s installed, adding to list for potential install" +-msgstr "" +-"Nenhum outro %s instalado, adicionado à lista para potencial instalação" ++msgstr "Nenhum outro %s instalado, adicionado à lista para potencial instalação" + + #: ../cli.py:971 + #, python-format +@@ -358,7 +377,7 @@ msgstr "nível de depuração na saída" + + #: ../cli.py:1113 + msgid "show duplicates, in repos, in list/search commands" +-msgstr "" ++msgstr "mostrar duplicados em repos e em comandos de pesquisa/listagem" + + #: ../cli.py:1115 + msgid "error output level" +@@ -394,9 +413,7 @@ msgstr "excluir pacote(s) por nome ou glob" + + #: ../cli.py:1138 + msgid "disable exclude from main, for a repo or for everything" +-msgstr "" +-"desabilitar a exclusão a partir do principal, para um repositório ou para " +-"tudo" ++msgstr "desabilitar a exclusão a partir do principal, para um repositório ou para tudo" + + #: ../cli.py:1141 + msgid "enable obsoletes processing during updates" +@@ -478,7 +495,7 @@ msgstr "Nome : %s" + #: ../output.py:294 + #, python-format + msgid "Arch : %s" +-msgstr "Arquitetura : %s" ++msgstr "Arq. : %s" + + #: ../output.py:296 + #, python-format +@@ -530,23 +547,25 @@ msgstr "Descrição: " + + #: ../output.py:351 + msgid "Is this ok [y/N]: " +-msgstr "Está ok? [y = Sim / N = Não]:" ++msgstr "Correto? [s/N]:" + +-#: ../output.py:357 ../output.py:360 ++#: ../output.py:357 ++#: ../output.py:360 + msgid "y" +-msgstr "" ++msgstr "s" + + #: ../output.py:357 + msgid "n" +-msgstr "" ++msgstr "n" + +-#: ../output.py:357 ../output.py:360 ++#: ../output.py:357 ++#: ../output.py:360 + msgid "yes" +-msgstr "" ++msgstr "sim" + + #: ../output.py:357 + msgid "no" +-msgstr "" ++msgstr "não" + + #: ../output.py:367 + #, python-format +@@ -620,7 +639,7 @@ msgstr "Pacote" + + #: ../output.py:507 + msgid "Arch" +-msgstr "Arquitetura" ++msgstr "Arq." + + #: ../output.py:507 + msgid "Version" +@@ -674,7 +693,7 @@ msgstr "" + + #: ../output.py:554 + msgid "Removed" +-msgstr "Removido(s)" ++msgstr "Removidos" + + #: ../output.py:555 + msgid "Dependency Removed" +@@ -696,12 +715,10 @@ msgstr "Substituído(s)" + #, python-format + msgid "" + "\n" +-" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s " +-"seconds to exit.\n" ++" Current download cancelled, %sinterrupt (ctrl-c) again%s within %s%s%s seconds to exit.\n" + msgstr "" + "\n" +-" Download atual cancelado, interrupção %s, (ctrl-c) novamente %s com %s%s%s " +-"segundos até sair.\n" ++" Download atual cancelado, interrupção %s, (ctrl-c) novamente %s com %s%s%s segundos até sair.\n" + + #: ../output.py:628 + msgid "user interrupt" +@@ -709,19 +726,19 @@ msgstr "interrupção pelo usuário" + + #: ../output.py:639 + msgid "installed" +-msgstr "instalados" ++msgstr "instalado" + + #: ../output.py:640 + msgid "updated" +-msgstr "atualizados" ++msgstr "atualizado" + + #: ../output.py:641 + msgid "obsoleted" +-msgstr "obsoleto(s)" ++msgstr "obsoleto" + + #: ../output.py:642 + msgid "erased" +-msgstr "removidos" ++msgstr "removido" + + #: ../output.py:646 + #, python-format +@@ -730,7 +747,7 @@ msgstr "---> Pacote %s.%s %s:%s-%s definido para ser %s" + + #: ../output.py:653 + msgid "--> Running transaction check" +-msgstr "--> Executando verificação de transação" ++msgstr "--> Executando verificação da transação" + + #: ../output.py:658 + msgid "--> Restarting Dependency Resolution with new changes." +@@ -757,9 +774,7 @@ msgstr "--> Processando Conflito: %s conflita com %s" + + #: ../output.py:682 + msgid "--> Populating transaction set with selected packages. Please wait." +-msgstr "" +-"--> Construindo conjunto de transações com os pacotes selecionados. Por " +-"favor aguarde." ++msgstr "--> Construindo conjunto de transações com os pacotes selecionados. Por favor aguarde." + + #: ../output.py:686 + #, python-format +@@ -774,8 +789,7 @@ msgstr "Você precisa ser root para executar este comando." + msgid "" + "\n" + "You have enabled checking of packages via GPG keys. This is a good thing. \n" +-"However, you do not have any GPG public keys installed. You need to " +-"download\n" ++"However, you do not have any GPG public keys installed. You need to download\n" + "the keys for packages you wish to install and install them.\n" + "You can do that by running the command:\n" + " rpm --import public.gpg.key\n" +@@ -788,10 +802,8 @@ msgid "" + "For more information contact your distribution or package provider.\n" + msgstr "" + "\n" +-"Você habilitou a verificação de pacotes através de chaves GPG. Isso é uma " +-"boa coisa.\n" +-"Entretanto, você não tem nenhuma chave GPG pública instalada. Você precisa " +-"baixar\n" ++"Você habilitou a verificação de pacotes através de chaves GPG. Isso é uma boa coisa.\n" ++"Entretanto, você não tem nenhuma chave GPG pública instalada. Você precisa baixar\n" + "e instalar essas chaves para os pacotes que deseja instalar.\n" + "Você pode fazer isso executando o comando:\n" + " rpm --import public.gpg.key\n" +@@ -801,8 +813,7 @@ msgstr "" + " do repositório, a url da chave que você gostaria de usar\n" + "para ele e o yum irá instalá-la para você.\n" + "\n" +-"Para mais informações contate o fornecedor da sua distribuição ou do " +-"pacote.\n" ++"Para mais informações contate o fornecedor da sua distribuição ou do pacote.\n" + + #: ../yumcommands.py:63 + #, python-format +@@ -889,7 +900,8 @@ msgstr "Pacotes Extras" + msgid "Updated Packages" + msgstr "Pacotes Atualizados" + +-#: ../yumcommands.py:221 ../yumcommands.py:225 ++#: ../yumcommands.py:221 ++#: ../yumcommands.py:225 + msgid "Obsoleting Packages" + msgstr "Tornando Pacotes Obsoletos" + +@@ -1095,18 +1107,17 @@ msgstr "" + "Saindo por um Pipe Defeituoso" + + #: ../yummain.py:105 +-msgid "" +-"Another app is currently holding the yum lock; waiting for it to exit..." +-msgstr "" +-"Outra aplicação está retendo o bloqueio do yum; esperando por ele para " +-"sair..." ++msgid "Another app is currently holding the yum lock; waiting for it to exit..." ++msgstr "Outra aplicação está retendo o bloqueio do yum; esperando por ele para sair..." + +-#: ../yummain.py:132 ../yummain.py:171 ++#: ../yummain.py:132 ++#: ../yummain.py:171 + #, python-format + msgid "Error: %s" + msgstr "Error: %s" + +-#: ../yummain.py:142 ../yummain.py:178 ++#: ../yummain.py:142 ++#: ../yummain.py:178 + #, python-format + msgid "Unknown Error(s): Exit Code: %d:" + msgstr "Erro(s) Desconhecido(s): Código de Saída: %d:" +@@ -1126,7 +1137,7 @@ msgstr "" + + #: ../yummain.py:198 + msgid "Complete!" +-msgstr "Completo!" ++msgstr "Concluído!" + + #: ../yummain.py:245 + msgid "" +@@ -1144,8 +1155,7 @@ msgstr "doTsSetup() será removida em uma futura versão do Yum.\n" + + #: ../yum/depsolve.py:95 + msgid "Setting up TransactionSets before config class is up" +-msgstr "" +-"Configurando TransactionSets antes da ativação da classe de configuração" ++msgstr "Configurando TransactionSets antes da ativação da classe de configuração" + + #: ../yum/depsolve.py:136 + #, python-format +@@ -1172,7 +1182,8 @@ msgstr "%s encontrado para solicitar o %s" + msgid "Member: %s" + msgstr "Membro: %s" + +-#: ../yum/depsolve.py:233 ../yum/depsolve.py:696 ++#: ../yum/depsolve.py:233 ++#: ../yum/depsolve.py:696 + #, python-format + msgid "%s converted to install" + msgstr "%s convertido para instalar" +@@ -1234,8 +1245,7 @@ msgstr "TSINFO: Atualizando %s para resolver a dependência." + #: ../yum/depsolve.py:378 + #, python-format + msgid "Cannot find an update path for dep for: %s" +-msgstr "" +-"Não foi possível encontrar um caminho de atualização para a dep. para: %s" ++msgstr "Não foi possível encontrar um caminho de atualização para a dep. para: %s" + + #: ../yum/depsolve.py:388 + #, python-format +@@ -1256,10 +1266,10 @@ msgstr "O pacote de solução em potencial %s tem uma instância mais nova no ct + #: ../yum/depsolve.py:460 + #, python-format + msgid "Potential resolving package %s has newer instance installed." +-msgstr "" +-"O pacote de solução em potencial %s tem uma instância mais nova instalada." ++msgstr "O pacote de solução em potencial %s tem uma instância mais nova instalada." + +-#: ../yum/depsolve.py:468 ../yum/depsolve.py:527 ++#: ../yum/depsolve.py:468 ++#: ../yum/depsolve.py:527 + #, python-format + msgid "Missing Dependency: %s is needed by package %s" + msgstr "Dependência Faltando: %s é requerido pelo pacote %s" +@@ -1271,9 +1281,8 @@ msgstr "%s já está no ct, pulando esse" + + #: ../yum/depsolve.py:510 + #, python-format +-msgid "" +-"Failure finding best provider of %s for %s, exceeded maximum loop length" +-msgstr "" ++msgid "Failure finding best provider of %s for %s, exceeded maximum loop length" ++msgstr "Falha ao encontrar o melhor fornecedor de %s para %s, tamanho máximo do loop excedido" + + #: ../yum/depsolve.py:537 + #, python-format +@@ -1285,11 +1294,13 @@ msgstr "TSINFO: Marcando %s como uma atualização para o %s" + msgid "TSINFO: Marking %s as install for %s" + msgstr "TSINFO: Marcando %s como uma instalação para o %s" + +-#: ../yum/depsolve.py:635 ../yum/depsolve.py:714 ++#: ../yum/depsolve.py:635 ++#: ../yum/depsolve.py:714 + msgid "Success - empty transaction" + msgstr "Sucesso - transação vazia" + +-#: ../yum/depsolve.py:673 ../yum/depsolve.py:686 ++#: ../yum/depsolve.py:673 ++#: ../yum/depsolve.py:686 + msgid "Restarting Loop" + msgstr "Reiniciando o Loop" + +@@ -1319,52 +1330,59 @@ msgstr "procurando por %s como um requerimento do %s" + #: ../yum/depsolve.py:933 + #, python-format + msgid "Comparing best: %s to po: %s" +-msgstr "" ++msgstr "Comparando melhor: %s para po: %s" + + #: ../yum/depsolve.py:937 + #, python-format + msgid "Same: best %s == po: %s" +-msgstr "" ++msgstr "Igual: melhor %s == po: %s" + +-#: ../yum/depsolve.py:952 ../yum/depsolve.py:963 ++#: ../yum/depsolve.py:952 ++#: ../yum/depsolve.py:963 + #, python-format + msgid "best %s obsoletes po: %s" +-msgstr "" ++msgstr "melhor %s torna po obsoleto: %s" + + #: ../yum/depsolve.py:955 + #, python-format + msgid "po %s obsoletes best: %s" +-msgstr "" ++msgstr "po %s torna melhor obsoleto: %s" + +-#: ../yum/depsolve.py:972 ../yum/depsolve.py:979 ../yum/depsolve.py:1036 +-#, fuzzy, python-format ++#: ../yum/depsolve.py:972 ++#: ../yum/depsolve.py:979 ++#: ../yum/depsolve.py:1036 ++#, python-format + msgid "better arch in po %s" +-msgstr "pesquisando pelo pacote %s" ++msgstr "melhor arquitetura no po %s" + +-#: ../yum/depsolve.py:988 ../yum/depsolve.py:1010 ++#: ../yum/depsolve.py:988 ++#: ../yum/depsolve.py:1010 + #, python-format + msgid "po %s shares a sourcerpm with %s" +-msgstr "" ++msgstr "po %s compartilha um sourcerpm com %s" + +-#: ../yum/depsolve.py:992 ../yum/depsolve.py:1015 ++#: ../yum/depsolve.py:992 ++#: ../yum/depsolve.py:1015 + #, python-format + msgid "best %s shares a sourcerpm with %s" +-msgstr "" ++msgstr "melhor %s compartilha um sourcerpm com %s" + +-#: ../yum/depsolve.py:999 ../yum/depsolve.py:1020 ++#: ../yum/depsolve.py:999 ++#: ../yum/depsolve.py:1020 + #, python-format + msgid "po %s shares more of the name prefix with %s" +-msgstr "" ++msgstr "po %s compartilha mais do prefixo do nome com %s" + +-#: ../yum/depsolve.py:1003 ../yum/depsolve.py:1029 ++#: ../yum/depsolve.py:1003 ++#: ../yum/depsolve.py:1029 + #, python-format + msgid "po %s has a shorter name than best %s" +-msgstr "" ++msgstr "po %s tem um nome mais curto do que o melhor %s" + + #: ../yum/depsolve.py:1025 + #, python-format + msgid "bestpkg %s shares more of the name prefix with %s" +-msgstr "" ++msgstr "bestpkg %s compartilha mais do prefixo do nome com %s" + + #: ../yum/__init__.py:119 + msgid "doConfigSetup() will go away in a future version of Yum.\n" +@@ -1515,7 +1533,8 @@ msgstr "Não foi possível verificar se o PID %s está ativo" + msgid "Existing lock %s: another copy is running as pid %s." + msgstr "Bloqueio existente em %s: outra cópia está em execução com o pid %s." + +-#: ../yum/__init__.py:970 ../yum/__init__.py:977 ++#: ../yum/__init__.py:970 ++#: ../yum/__init__.py:977 + msgid "Package does not match intended download" + msgstr "O pacote não corresponde ao download pretendido" + +@@ -1530,8 +1549,7 @@ msgstr "O pacote não corresponde à soma de verificação" + #: ../yum/__init__.py:1036 + #, python-format + msgid "package fails checksum but caching is enabled for %s" +-msgstr "" +-"o pacote falhou na soma de verificação mas o cache está habilitado para o %s" ++msgstr "o pacote falhou na soma de verificação mas o cache está habilitado para o %s" + + #: ../yum/__init__.py:1042 + #, python-format +@@ -1549,11 +1567,8 @@ msgstr "O cabeçalho não está completo." + + #: ../yum/__init__.py:1134 + #, python-format +-msgid "" +-"Header not in local cache and caching-only mode enabled. Cannot download %s" +-msgstr "" +-"O cabeçalho não está no cache local e o modo de somente cache está " +-"habilitado. Não foi possível baixar o %s." ++msgid "Header not in local cache and caching-only mode enabled. Cannot download %s" ++msgstr "O cabeçalho não está no cache local e o modo de somente cache está habilitado. Não foi possível baixar o %s." --#: ../yum/__init__.py:2693 -+#: ../yum/__init__.py:2727 - msgid "Unable to find a suitable mirror." - msgstr "Impossible de trouver un miroir adapté." + #: ../yum/__init__.py:1189 + #, python-format +@@ -1611,12 +1626,8 @@ msgid "Nothing matches %s.%s %s:%s-%s from update" + msgstr "Nada corresponde ao %s.%s %s:%s-%s a partir da atualização" --#: ../yum/__init__.py:2695 -+#: ../yum/__init__.py:2729 - msgid "Errors were encountered while downloading packages." - msgstr "Des erreurs ont été rencontrée durant le téléchargement des paquetages." + #: ../yum/__init__.py:1543 +-msgid "" +-"searchPackages() will go away in a future version of " +-"Yum. Use searchGenerator() instead. \n" +-msgstr "" +-"searchPackages() será removida em uma futura versão do Yum. Ao invés disso, " +-"use a searchGenerator().\n" ++msgid "searchPackages() will go away in a future version of Yum. Use searchGenerator() instead. \n" ++msgstr "searchPackages() será removida em uma futura versão do Yum. Ao invés disso, use a searchGenerator().\n" --#: ../yum/__init__.py:2760 -+#: ../yum/__init__.py:2794 - msgid "Test Transaction Errors: " - msgstr "Erreurs de la transaction de test : " + #: ../yum/__init__.py:1580 + #, python-format +@@ -1641,13 +1652,18 @@ msgstr "pesquisando nas entradas dos fornecimentos" + msgid "Provides-match: %s" + msgstr "Fornecimento combina com: %s" - #. Mostly copied from YumOutput._outKeyValFill() --#: ../yum/plugins.py:195 -+#: ../yum/plugins.py:197 - msgid "Loaded plugins: " - msgstr "Modules complémentaires chargés : " +-#: ../yum/__init__.py:1702 ../yum/__init__.py:1720 ../yum/__init__.py:1748 +-#: ../yum/__init__.py:1753 ../yum/__init__.py:1808 ../yum/__init__.py:1812 ++#: ../yum/__init__.py:1702 ++#: ../yum/__init__.py:1720 ++#: ../yum/__init__.py:1748 ++#: ../yum/__init__.py:1753 ++#: ../yum/__init__.py:1808 ++#: ../yum/__init__.py:1812 + #, python-format + msgid "No Group named %s exists" + msgstr "Não existe nenhum grupo de nome %s" --#: ../yum/plugins.py:206 -+#: ../yum/plugins.py:208 +-#: ../yum/__init__.py:1731 ../yum/__init__.py:1824 ++#: ../yum/__init__.py:1731 ++#: ../yum/__init__.py:1824 #, python-format - msgid "No plugin match for: %s" - msgstr "Aucun plugin correspondant pour : %s" + msgid "package %s was not marked in group %s" + msgstr "o pacote %s não foi marcado no grupo %s" +@@ -1667,15 +1683,18 @@ msgstr "Nenhum pacote de nome %s disponível para ser instalado" + msgid "Package tuple %s could not be found in packagesack" + msgstr "A tupla %s do pacote não pôde ser encontrada no packagesack" --#: ../yum/plugins.py:219 -+#: ../yum/plugins.py:221 +-#: ../yum/__init__.py:1917 ../yum/__init__.py:1960 ++#: ../yum/__init__.py:1917 ++#: ../yum/__init__.py:1960 + msgid "Invalid versioned dependency string, try quoting it." + msgstr "String de dependência versionada inválida, tente citá-la." + +-#: ../yum/__init__.py:1919 ../yum/__init__.py:1962 ++#: ../yum/__init__.py:1919 ++#: ../yum/__init__.py:1962 + msgid "Invalid version flag" + msgstr "Sinalizador de versão inválido" + +-#: ../yum/__init__.py:1934 ../yum/__init__.py:1938 ++#: ../yum/__init__.py:1934 ++#: ../yum/__init__.py:1938 #, python-format - msgid "\"%s\" plugin is disabled" - msgstr "le module complémentaire « %s » est désactivé" + msgid "No Package found for %s" + msgstr "Nenhum pacote encontrado para %s" +@@ -1694,7 +1713,8 @@ msgstr "Nada especificado para instalar" + msgid "Checking for virtual provide or file-provide for %s" + msgstr "Verificando por fornecimento virtual ou de arquivo para %s" --#: ../yum/plugins.py:231 -+#: ../yum/plugins.py:233 +-#: ../yum/__init__.py:2091 ../yum/__init__.py:2380 ++#: ../yum/__init__.py:2091 ++#: ../yum/__init__.py:2380 #, python-format - msgid "Plugin \"%s\" doesn't specify required API version" - msgstr "Le module complémentaire « %s » ne spécifie pas la version de l'API requise" + msgid "No Match for argument: %s" + msgstr "Nenhuma correspondência para o argumento: %s" +@@ -1716,9 +1736,9 @@ msgid "Package %s already installed and latest version" + msgstr "O pacote %s já está instalado em sua última versão" --#: ../yum/plugins.py:235 -+#: ../yum/plugins.py:237 + #: ../yum/__init__.py:2178 +-#, fuzzy, python-format ++#, python-format + msgid "Package matching %s already installed. Checking for update." +-msgstr "O pacote %s já está instalado, ignorando" ++msgstr "O pacote %s já está instalado. Verificando por uma atualização." + + #. update everything (the easy case) + #: ../yum/__init__.py:2220 +@@ -1751,12 +1771,8 @@ msgstr "Examinando %s: %s" + + #: ../yum/__init__.py:2436 #, python-format - msgid "Plugin \"%s\" requires API %s. Supported API is %s." - msgstr "Le module complémentaire « %s » requiert l'API %s. L'API supportée est %s." +-msgid "" +-"Package %s not installed, cannot update it. Run yum install to install it " +-"instead." +-msgstr "" +-"O pacote %s não está instalado, não é possível atualizá-lo. Execute o yum " +-"install para instalá-lo." ++msgid "Package %s not installed, cannot update it. Run yum install to install it instead." ++msgstr "O pacote %s não está instalado, não é possível atualizá-lo. Execute o yum install para instalá-lo." --#: ../yum/plugins.py:264 -+#: ../yum/plugins.py:266 + #: ../yum/__init__.py:2468 #, python-format - msgid "Loading \"%s\" plugin" - msgstr "Chargement du module complémentaire « %s »" +@@ -1783,9 +1799,9 @@ msgid "Problem in reinstall: no package matched to remove" + msgstr "Problema na reinstalação: nenhum pacote encontrado para remoção" --#: ../yum/plugins.py:271 -+#: ../yum/plugins.py:273 + #: ../yum/__init__.py:2515 +-#, fuzzy, python-format ++#, python-format + msgid "Package %s is allowed multiple installs, skipping" +-msgstr "O pacote %s já está instalado, ignorando" ++msgstr "O pacote %s permite múltiplas instalações, ignorando" + + #: ../yum/__init__.py:2522 + msgid "Problem in reinstall: no package matched to install" +@@ -1831,14 +1847,11 @@ msgstr "Chave importada com sucesso" + #: ../yum/__init__.py:2624 #, python-format - msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" + msgid "" +-"The GPG keys listed for the \"%s\" repository are already installed but they " +-"are not correct for this package.\n" ++"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n" + "Check that the correct key URLs are configured for this repository." msgstr "" - "Au moins deux modules complémentaires avec le même nom « %s » existent dans " - "le chemin de recherche des modules complémentaires" +-"As chaves GPG listadas para o repositório \"%s\" já estão instaladas, mas " +-"não estão corretas para este pacote.\n" +-"Verifique se as URLs corretas das chaves estão configuradas para esse " +-"repositório." ++"As chaves GPG listadas para o repositório \"%s\" já estão instaladas, mas não estão corretas para este pacote.\n" ++"Verifique se as URLs corretas das chaves estão configuradas para esse repositório." + + #: ../yum/__init__.py:2633 + msgid "Import of key(s) didn't help, wrong key(s)?" +@@ -1859,12 +1872,12 @@ msgstr "Erros do Teste de Transação:" + #. Mostly copied from YumOutput._outKeyValFill() + #: ../yum/plugins.py:195 + msgid "Loaded plugins: " +-msgstr "Plugins carregados:" ++msgstr "Plugins carregados: " --#: ../yum/plugins.py:291 -+#: ../yum/plugins.py:293 + #: ../yum/plugins.py:206 +-#, fuzzy, python-format ++#, python-format + msgid "No plugin match for: %s" +-msgstr "Apagar: Nenhum resultado para %s" ++msgstr "Nenhum plugin correspondente com: %s" + + #: ../yum/plugins.py:219 #, python-format - msgid "Configuration file %s not found" - msgstr "Fichier de configuration %s non trouvé" +@@ -1888,10 +1901,8 @@ msgstr "Carregando o plugin \"%s\"" - #. for - #. Configuration files for the plugin not found --#: ../yum/plugins.py:294 -+#: ../yum/plugins.py:296 + #: ../yum/plugins.py:271 #, python-format - msgid "Unable to find configuration file for plugin %s" - msgstr "" - "Impossible de trouver le fichier de configuration pour le module " - "complémentaire %s" +-msgid "" +-"Two or more plugins with the name \"%s\" exist in the plugin search path" +-msgstr "" +-"Dois ou mais plugins com o nome \"%s\" existem no caminho de pesquisa plugins" ++msgid "Two or more plugins with the name \"%s\" exist in the plugin search path" ++msgstr "Dois ou mais plugins com o nome \"%s\" existem no caminho de pesquisa plugins" --#: ../yum/plugins.py:448 -+#: ../yum/plugins.py:450 - msgid "registration of commands not supported" - msgstr "enregistrement de commandes non supporté" + #: ../yum/plugins.py:291 + #, python-format +@@ -1921,16 +1932,16 @@ msgstr "O RPM %s não passou na verificação md5" + #: ../rpmUtils/oldUtils.py:144 + msgid "Could not open RPM database for reading. Perhaps it is already in use?" +-msgstr "" +-"Não foi possível abrir o banco de dados RPM para leitura. Talvez por que ele " +-"já esteja em uso?" ++msgstr "Não foi possível abrir o banco de dados RPM para leitura. Talvez por que ele já esteja em uso?" + + #: ../rpmUtils/oldUtils.py:174 + msgid "Got an empty Header, something has gone wrong" + msgstr "Um cabeçalho vazio foi obtido, algo deu errado" + +-#: ../rpmUtils/oldUtils.py:244 ../rpmUtils/oldUtils.py:251 +-#: ../rpmUtils/oldUtils.py:254 ../rpmUtils/oldUtils.py:257 ++#: ../rpmUtils/oldUtils.py:244 ++#: ../rpmUtils/oldUtils.py:251 ++#: ../rpmUtils/oldUtils.py:254 ++#: ../rpmUtils/oldUtils.py:257 + #, python-format + msgid "Damaged Header %s" + msgstr "Cabeçalho %s Danificado" +@@ -1942,37 +1953,26 @@ msgstr "Erro ao abrir o rpm %s - erro %s" + + #~ msgid "Looking for Obsoletes for %s" + #~ msgstr "Localizando Obsoletos para %s" +- + #~ msgid "unable to find newer package for %s" + #~ msgstr "não foi possível encontrar um pacote mais recente para o %s" +- + #~ msgid "TSINFO: Updating %s to resolve conflict." + #~ msgstr "TSINFO: Atualizando o %s para resolver o conflito." +- + #~ msgid "%s conflicts: %s" + #~ msgstr "%s conflita com: %s" +- + #~ msgid "%s conflicts with %s" + #~ msgstr "%s conflita com %s" +- + #~ msgid "Package %s needs %s, this is not available." + #~ msgstr "O pacote %s necessita do %s, que não está disponível." +- + #~ msgid "Package %s conflicts with %s." + #~ msgstr "O pacote %s conflita com %s." +- + #~ msgid "Running \"%s\" handler for \"%s\" plugin" + #~ msgstr "Executando o manipulador \"%s\" para o plugin \"%s\"" +- + #~ msgid "Directory of rpms must exist" + #~ msgstr "O diretório de rpms precisa existir" +- + #~ msgid "Error accessing URL: %s" + #~ msgstr "Erro ao acessar a URL: %s" +- + #~ msgid "No Packages installed not included in a repository" + #~ msgstr "Nenhum pacote instalado não incluído em um repositório" +- + #~ msgid "" + #~ "\n" + #~ " Total: %d\n" +@@ -1983,13 +1983,10 @@ msgstr "Erro ao abrir o rpm %s - erro %s" + #~ " Total: %d\n" + #~ " Usado: %d\n" + #~ " Src: %d" +- + #~ msgid "Error restoring the backup of lilo.conf The backup was:\n" + #~ msgstr "Erro ao restaurar o backup do lilo.conf. O backup era:\n" +- + #~ msgid "Looking in available packages for a providing package" + #~ msgstr "Procurando pelo pacote fornecido nos pacotes disponíveis" +- + #~ msgid "" + #~ "retrygrab() failed for:\n" + #~ " %s%s\n" +@@ -1998,16 +1995,12 @@ msgstr "Erro ao abrir o rpm %s - erro %s" + #~ "retrygrab() falhou para:\n" + #~ " %s%s\n" + #~ " Executando método de recuperação" +- + #~ msgid "I will install/upgrade these to satisfy the dependencies:" + #~ msgstr "Eu irei instalar/atualizar isto para satisfazer as dependências:" +- + #~ msgid "Cannot delete %s - check perms" + #~ msgstr "Não foi possível remover %s - verifique as permissões" +- + #~ msgid "Need a provides to match" + #~ msgstr "É necessário fornecer uma informação para corresponder" +- + #~ msgid "" + #~ "lilo options that are not supported by yum are used in the default lilo." + #~ "conf. This file will not be modified. The options include:\n" +@@ -2015,13 +2008,10 @@ msgstr "Erro ao abrir o rpm %s - erro %s" + #~ "opções do lilo que não são suportadas pelo yum estão sendo utilizadas no " + #~ "arquivo lilo.conf padrão. Este arquivo não será modificado. Dentre as " + #~ "opções estão:\n" +- + #~ msgid "Error getting file %s" + #~ msgstr "Erro ao obter arquivo %s" +- + #~ msgid "%s is not writable" + #~ msgstr "%s não é gravável" +- + #~ msgid "" + #~ "\n" + #~ "Already found tuple: %s %s:\n" +@@ -2030,117 +2020,86 @@ msgstr "Erro ao abrir o rpm %s - erro %s" + #~ "\n" + #~ "Tupla já encontrada: %s %s:\n" + #~ "%s " +- + #~ msgid "errors found" + #~ msgstr "erros encontrados" +- + #~ msgid "Unable to determine boot loader." + #~ msgstr "Não foi possível determinar o gerenciador de inicialização." +- + #~ msgid "getting %s" + #~ msgstr "obtendo %s" +- + #~ msgid "Error Reading Header on %s" + #~ msgstr "Erro ao Ler Cabeçalho em %s" +- + #~ msgid "Error accessing File: %s" + #~ msgstr "Erro ao acessar arquivo: %s" +- + #~ msgid "You're not root, we can't install things" + #~ msgstr "Você não é root, nós não podemos instalar coisas" +- + #~ msgid "Cannot find any conf file." + #~ msgstr "Não foi possível encontrar um arquivo de configuração." +- + #~ msgid "Local file does not exist: %s" + #~ msgstr "O arquivo local não existe: %s" +- + #~ msgid "using ftp, http[s], or file for servers, Aborting - %s" + #~ msgstr "usando ftp, http[s] ou arquivos para servidores. Abortando - %s" +- + #~ msgid "Found %s." + #~ msgstr "%s encontrado." +- + #~ msgid "Transaction(s) Complete" + #~ msgstr "Transação Completa" +- + #~ msgid "IOError: %s" + #~ msgstr "IOError (Erro E/S): %s" +- + #~ msgid "Cleaning packages and old headers" + #~ msgstr "Limpando pacotes e cabeçalhos antigos" +- + #~ msgid "" + #~ "Cannot download %s in caching only mode or when running as non-root user." + #~ msgstr "" + #~ "Não é possível baixar %s no modo \"somente cache\" ou quando estiver " + #~ "executando com um usuário não root." +- + #~ msgid "" + #~ "Error: You may want to run yum clean or remove the file: \n" + #~ " %s" + #~ msgstr "" + #~ "Erro: Você pode querer executar a limpeza do yum ou remover o arquivo: \n" + #~ " %s" +- + #~ msgid "Error reading lilo.conf: The messages was:\n" + #~ msgstr "Erro ao ler o lilo.conf: A mensagem foi:\n" +- + #~ msgid "No groups provided or accessible on any server." + #~ msgstr "Nenhum grupo fornecido ou acessível em nenhum servidor." +- + #~ msgid "%s results returned" + #~ msgstr "%s resultados retornados" +- + #~ msgid "Error moving %s to %s, fatal" + #~ msgstr "Erro ao mover %s para %s, fatal" +- + #~ msgid "" + #~ "\n" + #~ "ignoring bad rpm: %s" + #~ msgstr "" + #~ "\n" + #~ "ignorando rpm defeituoso: %s" +- + #~ msgid "[erase: %s]" + #~ msgstr "[remover: %s]" +- + #~ msgid "%s is not a dir" + #~ msgstr "%s não é um diretório" +- + #~ msgid "Best version for %s is %s:%s-%s" + #~ msgstr "A melhor versão para %s é %s:%s-%s" +- + #~ msgid "[deps: %s]" + #~ msgstr "[deps: %s]" +- + #~ msgid "" + #~ "\n" + #~ "ignoring srpm: %s" + #~ msgstr "" + #~ "\n" + #~ "ignorando srpm: %s" +- + #~ msgid "Checking deps %d/%d complete" + #~ msgstr "Checando dependências, %d/%d completo" +- + #~ msgid "" + #~ "Errors within the dir(s):\n" + #~ " %s" + #~ msgstr "" + #~ "Erro dentro do(s) diretório(s):\n" + #~ " %s" +- + #~ msgid "Please run yum in non-caching mode to correct this header." + #~ msgstr "" + #~ "Por favor, execute o yum no modo sem cache para corrigir este cabeçalho." +- + #~ msgid "Error installing lilo.conf The message was:\n" + #~ msgstr "Erro ao instalar o lilo.conf. A mensagem foi:\n" +- + #~ msgid "Error: Untrusted GPG key on %s" + #~ msgstr "Erro: Chave GPG não confiável em %s" +- + #~ msgid "" + #~ "\n" + #~ "\n" +@@ -2151,69 +2110,50 @@ msgstr "Erro ao abrir o rpm %s - erro %s" + #~ "\n" + #~ "Problema com a assinatura gpg ou com o md5sum em %s\n" + #~ "\n" +- + #~ msgid "No Packages Available for Update or Install" + #~ msgstr "Nenhum Pacote Disponível para Atualização ou Instalação" +- + #~ msgid "Found best arch for install only pkg %s" + #~ msgstr "Encontre a melhor arquitetura para instalar apenas o pacote %s" +- + #~ msgid "I will do the following:" + #~ msgstr "Eu farei o seguinte:" +- + #~ msgid "Bad URL: %s" + #~ msgstr "URL Inválida: %s" +- + #~ msgid "NonMatching RPM version, %s, removing." + #~ msgstr "Versão do RPM não coincide, %s, removendo." +- + #~ msgid "I will erase these to satisfy the dependencies:" + #~ msgstr "Eu irei apagar isto para satisfazer as dependências:" +- + #~ msgid "HTTP Error (%s): %s" + #~ msgstr "Erro HTTP (%s): %s" +- + #~ msgid "Please ask your sysadmin to update the headers on this system." + #~ msgstr "" + #~ "Por favor, peça ao administrador do seu sistema para atualizar os " + #~ "cabeçalhos." +- + #~ msgid "Putting back old headers" + #~ msgstr "Recolocando cabeçalhos antigos" +- + #~ msgid "CacheDir: %s" + #~ msgstr "CacheDir (diretório de cache): %s" +- + #~ msgid "Completing update for %s - %d/%d" + #~ msgstr "Completando atualização para %s - %d/%d" +- + #~ msgid "" + #~ "Error: You may need to disable gpg checking to install this package\n" + #~ msgstr "" + #~ "Erro: Talvez seja necessário desabilitar a verificação gpg para instalar " + #~ "este pacote\n" +- + #~ msgid "Options Error: no commands found" + #~ msgstr "Erro nas opções: nenhum comando encontrado" +- + #~ msgid "Unable to run grubby correctly: the message was:\n" + #~ msgstr "Não foi possível executar o grubby corretamente: a mensagem foi:\n" +- + #~ msgid "IOError - # %s - %s" + #~ msgstr "IOError (Erro E/S) - # %s - %s" +- + #~ msgid "Kernel Updated/Installed, checking for bootloader" + #~ msgstr "" + #~ "Kernel atualizado/instalado, verificando gerenciador de inicialização" +- + #~ msgid "Need to pass a list of pkgs to install" + #~ msgstr "É necessário passar uma lista de pacotes para instalar" +- + #~ msgid "Insufficient server config - no servers found. Aborting." + #~ msgstr "" + #~ "Configuração de servidor insuficiente - nenhum servidor encontrado. " + #~ "Abortando." +- + #~ msgid "" + #~ "\n" + #~ " Usage: yum [options] >sys.stderr, """\ ++ERROR: Can't find all the msg id's in %s ++is_this_ok %s ++yes %s ++y %s ++no %s ++n %s ++""" % (fname, ++ is_this_ok is None, ++ yes is None, ++ y is None, ++ no is None, ++ n is None) ++ sys.exit(1) ++ if (is_this_ok != yes or ++ is_this_ok != y or ++ is_this_ok != no or ++ is_this_ok != n): ++ print >>sys.stderr, """\ ++ERROR: yes/no translations don't match in: %s ++is_this_ok %5s: %s\ ++yes %5s: %s\ ++y %5s: %s\ ++no %5s: %s\ ++n %5s: %s\ ++""" % (fname, ++ is_this_ok, sis_this_ok, yes, syes, y, sy, no, sno, n, sn) +diff --git a/test/depsolvetests.py b/test/depsolvetests.py +index 17cb537..fd25836 100644 +--- a/test/depsolvetests.py ++++ b/test/depsolvetests.py +@@ -2,6 +2,8 @@ import unittest + from testbase import * + from rpmUtils import arch + ++import rpmUtils.arch ++ + class DepsolveTests(DepsolveTests): + def testEmpty(self): + po = FakePackage('zsh', '1', '1', None, 'i386') +@@ -327,7 +329,10 @@ class DepsolveTests(DepsolveTests): + self.xsack.addPackage(xpo64) + + self.assertEquals('ok', *self.resolveCode()) +- self.assertResult((po, xpo)) ++ if rpmUtils.arch.getBestArch() == 'x86_64': ++ self.assertResult((po, xpo64)) ++ else: ++ self.assertResult((po, xpo)) + + def testUpdateSinglePackage(self): + ipo = FakePackage('zsh', '1', '1', None, 'i386') +diff --git a/test/simpleupdatetests.py b/test/simpleupdatetests.py +index 485de54..fe4f414 100644 +--- a/test/simpleupdatetests.py ++++ b/test/simpleupdatetests.py +@@ -1,5 +1,7 @@ + from testbase import * + ++import rpmUtils.arch ++ + class SimpleUpdateTests(OperationsTests): + + """This test suite runs three different type of tests - for all possible +@@ -94,11 +96,22 @@ class SimpleUpdateTests(OperationsTests): + self.assertResult((p.update_x86_64,), (p.update_i386,)) # ? + else: + self.assertResult((p.update_i386, p.update_x86_64)) ++ def testUpdatenoarchToMultilibForDependencyRev(self): ++ p = self.pkgs ++ res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_x86_64, p.update_i386, p.requires_update]) ++ self.assert_(res=='ok', msg) ++ if rpmUtils.arch.getBestArch() == 'x86_64': ++ self.assertResult((p.update_x86_64, p.requires_update)) ++ else: ++ self.assertResult((p.update_i386, p.requires_update)) + def testUpdatenoarchToMultilibForDependency(self): + p = self.pkgs + res, msg = self.runOperation(['install', 'zsh-utils'], [p.installed_noarch], [p.update_i386, p.update_x86_64, p.requires_update]) + self.assert_(res=='ok', msg) +- self.assertResult((p.update_x86_64, p.requires_update), (p.update_i386,)) ++ if rpmUtils.arch.getBestArch() == 'x86_64': ++ self.assertResult((p.update_x86_64, p.requires_update)) ++ else: ++ self.assertResult((p.update_i386, p.requires_update)) + def testUpdatenoarchToMultilibForDependency2(self): + p = self.pkgs + res, msg = self.runOperation(['update', 'bar'], [p.required, p.installed_noarch], +diff --git a/test/yum-release-i18n-test.sh b/test/yum-release-i18n-test.sh +new file mode 100755 +index 0000000..8faa387 +--- /dev/null ++++ b/test/yum-release-i18n-test.sh +@@ -0,0 +1,135 @@ ++#!/bin/bash -e ++ ++####################################################### ++### Settings ########################################## ++####################################################### ++ ++# Change to true, to not perform the "root" commands ++SUDO_CMD=sudo ++ ++# Do we want full info/list output (takes a while, and outputs a _lot_) ++FULL_PKG_OUTPUT=false ++ ++# Do we want to play with the livna repo. includes install/remove ++LIVNA=true ++ ++# Pkg to add/remove/etc. from livna ++PKG_LIVNA=amule ++ ++# Pkg that doesn't exist ++PKG_BAD=pkg-no-exist-kthx-bai-OMGWTFBBQ ++ ++# Run tests the "fail", like installing packages for which we don't have the ++# key. If you run these you need to look to see what the output is. ++# FIXME: need a more automated way to see if we are getting Unicode*Error ++RUN_FAILURES=true ++ ++beg_hdr=" ++===============================================================================" ++end_hdr="\ ++------------------------------------------------------------------------------- ++" ++ ++I18N="C \ ++ da_DA da_DA.UTF-8 \ ++ de_DE de_DE.UTF-8 \ ++ fr_FR fr_FR.UTF-8 \ ++ it_IT it_IT.UTF-8 \ ++ ms_MS ms_MS.UTF-8 \ ++ nb_NB nb_NB.UTF-8 \ ++ pl_PL pl_PL.UTF-8 \ ++ pt_PT pt_PT.UTF-8 \ ++ pt_BR pt_BR.UTF-8 \ ++ ru_RU ru_RU.UTF-8 \ ++ sr_SR sr_SR.UTF-8 sr_SR@latin sr_SR@latin.UTF-8 \ ++ en_US en_US.UTF-8 \ ++ BAD_LOCALE" ++ ++cmd() ++{ ++ echo $beg_hdr ++ echo "Doing: LANG=$lang yum --enablerepo=development $@" ++ echo $end_hdr ++ LANG=$lang yum --enablerepo=development $@ ++} ++scmd() ++{ ++ echo $beg_hdr ++ echo "Doing: LANG=$lang $SUDO_CMD yum $@" ++ echo $end_hdr ++ LANG=$lang $SUDO_CMD yum $@ ++} ++lcmd() ++{ ++ $LIVNA && echo $beg_hdr ++ $LIVNA && echo "Doing: LANG=$lang yum --enablerepo=livna $@" ++ $LIVNA && echo $end_hdr ++ $LIVNA && LANG=$lang yum --enablerepo=livna $@ ++} ++lscmd() ++{ ++ $LIVNA && echo $beg_hdr ++ $LIVNA && echo "Doing: LANG=$lang $SUDO_CMD yum --enablerepo=livna $@" ++ $LIVNA && echo $end_hdr ++ $LIVNA && LANG=$lang $SUDO_CMD yum --enablerepo=livna $@ ++} ++ ++tst() ++{ ++ # Using ¶ because it doesn't match anything ++ cmd search fedora linux ® $PKG_BAD ¶ ++ cmd search fedora linux ® $PKG_BAD ¶ | cat ++ ++ cmd list afflib libselinux linux $PKG_BAD ¶ ++ cmd list afflib libselinux linux $PKG_BAD ¶ | cat ++ cmd info afflib libselinux linux $PKG_BAD ¶ ++ cmd info afflib libselinux linux $PKG_BAD ¶ | cat ++ ++ $FULL_PKG_OUTPUT && cmd list ++ $FULL_PKG_OUTPUT && cmd list | cat ++ $FULL_PKG_OUTPUT && cmd info ++ $FULL_PKG_OUTPUT && cmd info | cat ++ ++ # This always fails, so we need to "look" if it does so with an encoding ++ # problem or the real one ++ ($RUN_FAILURES && cmd help) || true ++ $RUN_FAILURES && sleep 3 ++ # This always fails, so we need to "look" if it does so with an encoding ++ # problem or the real one ++ ($RUN_FAILURES && (cmd help | cat)) || true ++ $RUN_FAILURES && sleep 3 ++ for i in install remove check-update update list info provides; do ++ cmd help $i ++ cmd help $i | cat ++ done ++ cmd --help ++ cmd --help | cat ++ # This always fails, so we need to "look" if it does so with an encoding ++ # problem or the real one ++ ($RUN_FAILURES && cmd) || true ++ $RUN_FAILURES && sleep 3 ++ # This always fails, so we need to "look" if it does so with an encoding ++ # problem or the real one ++ ($RUN_FAILURES && (cmd | cat)) || true ++ $RUN_FAILURES && sleep 3 ++ ++ scmd install bash ++ scmd install $PKG_BAD ++ scmd remove $PKG_BAD ++ ++ # Test livna, missing keys and install/remove ++ $LIVNA && $SUDO_CMD mv /etc/pki/rpm-gpg/RPM-GPG-KEY-livna . ++ ($LIVNA && $SUDO_CMD rpm -e gpg-pubkey-a109b1ec-3f6e28d5) || true ++ # This always fails, so we need to "look" if it does so with an encoding ++ # problem or the real one ++ ($RUN_FAILURES && lscmd install $PKG_LIVNA) || true ++ $RUN_FAILURES && $LIVNA && sleep 1 ++ $LIVNA && $SUDO_CMD mv RPM-GPG-KEY-livna /etc/pki/rpm-gpg/ ++ lscmd install -y $PKG_LIVNA ++ lscmd remove -y $PKG_LIVNA ++} ++ ++ ++for lang in $I18N; do ++ tst ++done diff --git a/utils.py b/utils.py index 9f5f4a1..82534cf 100644 --- a/utils.py @@ -7292,7 +8917,7 @@ index 9f5f4a1..82534cf 100644 import yum.plugins as plugins diff --git a/yum/__init__.py b/yum/__init__.py -index 270f79f..bef88cb 100644 +index 270f79f..7bf6ff3 100644 --- a/yum/__init__.py +++ b/yum/__init__.py @@ -63,7 +63,7 @@ warnings.simplefilter("ignore", Errors.YumFutureDeprecationWarning) @@ -7304,17 +8929,18 @@ index 270f79f..bef88cb 100644 from misc import to_unicode import string -@@ -176,6 +176,9 @@ class YumBase(depsolve.Depsolve): - startupconf.pluginconfpath,disabled_plugins) +@@ -162,7 +162,9 @@ class YumBase(depsolve.Depsolve): + fn = '/etc/yum.conf' - self._conf = config.readMainConfig(startupconf) -+ if self._conf.gaftonmode: + startupconf = config.readStartupConfig(fn, root) +- ++ if startupconf.gaftonmode: + import __builtin__ + __builtin__.__dict__['_'] = i18n.dummy_wrapper - - # run the postconfig plugin hook - self.plugins.run('postconfig') -@@ -759,11 +762,19 @@ class YumBase(depsolve.Depsolve): + + if debuglevel != None: + startupconf.debuglevel = debuglevel +@@ -759,11 +761,19 @@ class YumBase(depsolve.Depsolve): def runTransaction(self, cb): """takes an rpm callback object, performs the transaction""" @@ -7335,6 +8961,15 @@ index 270f79f..bef88cb 100644 raise Errors.YumBaseError, errstring if not self.conf.keepcache: +@@ -2619,7 +2629,7 @@ class YumBase(depsolve.Depsolve): + rawkey = urlgrabber.urlread(keyurl, limit=9999) + except urlgrabber.grabber.URLGrabError, e: + raise Errors.YumBaseError(_('GPG key retrieval failed: ') + +- str(e)) ++ unicode(e)) + + # Parse the key + try: diff --git a/yum/config.py b/yum/config.py index ea7c158..fecdfe3 100644 --- a/yum/config.py @@ -7397,10 +9032,10 @@ index f735edd..84c4882 100644 + import __builtin__ + __builtin__.__dict__['_'] = dummy_wrapper diff --git a/yum/misc.py b/yum/misc.py -index 44f85d4..bc3186f 100644 +index 44f85d4..a7090c9 100644 --- a/yum/misc.py +++ b/yum/misc.py -@@ -20,11 +20,27 @@ import gpgme +@@ -20,11 +20,29 @@ import gpgme from Errors import MiscError @@ -7425,12 +9060,14 @@ index 44f85d4..bc3186f 100644 + return store.setdefault(value, value) + +def unshare_data(): ++ global _share_data_store ++ global _share_data_store_u + _share_data_store = {} + _share_data_store_u = {} _re_compiled_glob_match = None def re_glob(s): -@@ -515,11 +531,26 @@ def find_ts_remaining(timestamp, yumlibpath='/var/lib/yum'): +@@ -515,11 +533,26 @@ def find_ts_remaining(timestamp, yumlibpath='/var/lib/yum'): return to_complete_items @@ -7473,9 +9110,18 @@ index 0a7f57a..99c2740 100644 import fnmatch diff --git a/yum/rpmsack.py b/yum/rpmsack.py -index c6bcbc0..8f47bab 100644 +index c6bcbc0..aa5f445 100644 --- a/yum/rpmsack.py +++ b/yum/rpmsack.py +@@ -28,7 +28,7 @@ from packageSack import PackageSackBase + import fnmatch + import re + +-from misc import to_unicode ++from misc import to_unicode_maybe + + class RPMInstalledPackage(YumInstalledPackage): + @@ -123,7 +123,7 @@ class RPMDBPackageSack(PackageSackBase): self._simple_pkgtup_list = [] self._get_pro_cache = {} @@ -7485,6 +9131,24 @@ index c6bcbc0..8f47bab 100644 self._cache = { 'provides' : { }, 'requires' : { }, +@@ -255,7 +255,7 @@ class RPMDBPackageSack(PackageSackBase): + + @staticmethod + def _compile_patterns(patterns): +- if patterns is None: ++ if not patterns: + return None + ret = [] + for pat in patterns: +@@ -298,7 +298,7 @@ class RPMDBPackageSack(PackageSackBase): + count = 0 + for s in searchstrings: + for field in fields: +- value = to_unicode(hdr[field]) ++ value = to_unicode_maybe(hdr[field]) + if value and value.lower().find(s) != -1: + count += 1 + break @@ -514,7 +514,9 @@ class RPMDBPackageSack(PackageSackBase): # would this ever be a ListType? elif type(version) in (types.TupleType, types.ListType): @@ -7536,10 +9200,10 @@ index 0afcf66..9dce44f 100644 import operator diff --git a/yummain.py b/yummain.py -index 8fc518d..281fc91 100755 +index 8fc518d..9421d02 100755 --- a/yummain.py +++ b/yummain.py -@@ -27,13 +27,13 @@ import time # test purposes only +@@ -27,15 +27,27 @@ import time # test purposes only from yum import Errors from yum import plugins from yum import logginglevels @@ -7551,7 +9215,62 @@ index 8fc518d..281fc91 100755 def main(args): """This does all the real work""" - if not sys.stdout.isatty(): ++ ++ # This test needs to be before locale.getpreferredencoding() as that ++ # does setlocale(LC_CTYPE, "") ++ try: ++ locale.setlocale(locale.LC_ALL, '') ++ except locale.Error, e: ++ # default to C locale if we get a failure. ++ print >> sys.stderr, 'Failed to set locale, defaulting to C' ++ os.environ['LC_ALL'] = 'C' ++ locale.setlocale(locale.LC_ALL, 'C') ++ + if True: # not sys.stdout.isatty(): import codecs sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout) - ++ sys.stdout.errors = 'replace' + + def exUserCancel(): + logger.critical(_('\n\nExiting on user cancel')) +@@ -60,7 +72,7 @@ def main(args): + return 1 + + def exFatal(e): +- logger.critical('\n\n%s', str(e)) ++ logger.critical('\n\n%s', unicode(e)) + if unlock(): return 200 + return 1 + +@@ -75,13 +87,6 @@ def main(args): + logger = logging.getLogger("yum.main") + verbose_logger = logging.getLogger("yum.verbose.main") + +- try: +- locale.setlocale(locale.LC_ALL, '') +- except locale.Error, e: +- # default to C locale if we get a failure. +- print >> sys.stderr, 'Failed to set locale, defaulting to C' +- locale.setlocale(locale.LC_ALL, 'C') +- + # our core object for the cli + base = cli.YumBaseCli() + +@@ -113,7 +118,7 @@ def main(args): + return exPluginExit(e) + except Errors.YumBaseError, e: + result = 1 +- resultmsgs = [str(e)] ++ resultmsgs = [unicode(e)] + except KeyboardInterrupt: + return exUserCancel() + except IOError, e: +@@ -154,7 +159,7 @@ def main(args): + return exPluginExit(e) + except Errors.YumBaseError, e: + result = 1 +- resultmsgs = [str(e)] ++ resultmsgs = [unicode(e)] + except KeyboardInterrupt: + return exUserCancel() + except IOError, e: diff --git a/yum.spec b/yum.spec index 5e8f3aa..1a53d5e 100644 --- a/yum.spec +++ b/yum.spec @@ -3,7 +3,7 @@ Summary: RPM installer/updater Name: yum Version: 3.2.14 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv2+ Group: System Environment/Base Source0: http://linux.duke.edu/projects/yum/download/3.2/%{name}-%{version}.tar.gz