# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # # Translators: msgid "" msgstr "" "Project-Id-Version: Mageia\n" "POT-Creation-Date: 2022-06-13 18:28+0300\n" "PO-Revision-Date: 2020-07-10 16:45+0000\n" "Last-Translator: Rémi Verschelde \n" "Language-Team: Kurdish (http://www.transifex.com/MageiaLinux/mageia/language/" "ku/)\n" "Language: ku\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gurpm/RPMProgressDialog.pm:47 #, c-format msgid "Distribution Upgrade" msgstr "" #: ../gurpm/RPMProgressDialog.pm:47 #, c-format msgid "Packages installation" msgstr "" #: ../gurpm/RPMProgressDialog.pm:128 #, c-format msgid "Please wait..." msgstr "" #: ../gurpm/RPMProgressDialog.pm:291 #, c-format msgid "Verifying package signatures..." msgstr "" #: ../gurpm/RPMProgressDialog.pm:310 ../urpm/install.pm:108 #, c-format msgid "Preparing..." msgstr "" #: ../gurpm/RPMProgressDialog.pm:314 #, c-format msgid "Removing package `%s' ..." msgstr "" #: ../gurpm/RPMProgressDialog.pm:317 #, c-format msgid "Installing package `%s' (%s/%s)..." msgstr "" #: ../gurpm/RPMProgressDialog.pm:346 #, c-format msgid "Downloading package `%s'..." msgstr "" #: ../gurpm/RPMProgressDialog.pm:350 ../gurpmi:127 #, c-format msgid "Cancel" msgstr "Betal" #: ../gurpm/RPMProgressDialog.pm:360 ../urpm.pm:454 ../urpm/download.pm:882 #: ../urpm/get_pkgs.pm:277 ../urpm/media.pm:1153 ../urpm/media.pm:1686 #: ../urpm/media.pm:1837 #, c-format msgid "...retrieving failed: %s" msgstr "" #: ../gurpmi:50 #, c-format msgid "RPM installation" msgstr "" #: ../gurpmi:64 #, c-format msgid "Error: unable to find file %s, will cancel operation" msgstr "" #: ../gurpmi:65 ../gurpmi2:174 ../gurpmi2:203 #, c-format msgid "_Ok" msgstr "" #: ../gurpmi:85 #, c-format msgid "" "You have selected a source package:\n" "\n" "%s\n" "\n" "You probably didn't want to install it on your computer (installing it would " "allow you to make modifications to its sourcecode then compile it).\n" "\n" "What would you like to do?" msgstr "" #: ../gurpmi:93 ../gurpmi:104 #, c-format msgid "" "You are about to install the following software packages on your computer:\n" "\n" "%s\n" "\n" "Proceed?" msgstr "" #: ../gurpmi:99 #, c-format msgid "" "You are about to install the following software package on your computer:\n" "\n" "%s\n" "\n" "You may prefer to just save it. What is your choice?" msgstr "" #: ../gurpmi:117 #, c-format msgid "_Install" msgstr "" #: ../gurpmi:118 #, c-format msgid "_Save" msgstr "" #: ../gurpmi:119 ../gurpmi2:174 #, c-format msgid "_Cancel" msgstr "" #: ../gurpmi:127 #, c-format msgid "Choose location to save file" msgstr "" #: ../gurpmi:127 ../gurpmi2:120 #, c-format msgid "Ok" msgstr "Dibe" #: ../gurpmi.pm:56 #, c-format msgid "Options:" msgstr "" #: ../gurpmi.pm:57 ../urpme:42 ../urpmf:30 ../urpmi:67 ../urpmi.addmedia:56 #: ../urpmi.removemedia:40 ../urpmi.update:33 ../urpmq:41 #, c-format msgid " --help - print this help message.\n" msgstr "" #: ../gurpmi.pm:58 ../urpmi:74 #, c-format msgid "" " --auto - non-interactive mode, assume default answers to " "questions.\n" msgstr "" #: ../gurpmi.pm:59 ../urpmi:75 ../urpmq:48 #, c-format msgid "" " --auto-select - automatically select packages to upgrade the system.\n" msgstr "" #: ../gurpmi.pm:60 ../urpme:46 ../urpmi:100 ../urpmq:64 #, c-format msgid "" " --force - force invocation even if some packages do not exist.\n" msgstr "" #: ../gurpmi.pm:61 ../urpmi:131 #, c-format msgid "" " --verify-rpm - verify rpm signature before installation\n" " (--no-verify-rpm disables it, default is enabled).\n" msgstr "" #: ../gurpmi.pm:63 ../urpmf:36 ../urpmi:68 ../urpmq:43 #, c-format msgid " --media - use only the given media, separated by comma.\n" msgstr "" #: ../gurpmi.pm:64 ../urpmi:147 #, c-format msgid " -p - allow search in provides to find package.\n" msgstr "" #: ../gurpmi.pm:65 ../urpmi:148 #, c-format msgid " -P - do not search in provides to find package.\n" msgstr "" #: ../gurpmi.pm:66 ../urpmi:107 ../urpmq:67 #, c-format msgid " --root - use another root for rpm installation.\n" msgstr "" #: ../gurpmi.pm:67 ../urpmi:133 #, c-format msgid "" " --test - only verify if the installation can be achieved " "correctly.\n" msgstr "" #: ../gurpmi.pm:68 ../urpmi:71 #, c-format msgid "" " --searchmedia - use only the given media to search requested packages.\n" msgstr "" #: ../gurpmi.pm:115 #, c-format msgid "No packages specified" msgstr "" #: ../gurpmi2:47 #, c-format msgid "Must be root" msgstr "" #: ../gurpmi2:77 #, c-format msgid "Preparing packages installation..." msgstr "" #: ../gurpmi2:92 ../urpmi:506 #, c-format msgid "" "Some requested packages cannot be installed:\n" "%s" msgstr "" #: ../gurpmi2:100 #, c-format msgid "" "Some requested packages cannot be installed:\n" "%s\n" "Continue installation anyway?" msgstr "" #: ../gurpmi2:120 ../gurpmi2:386 #, c-format msgid "Warning" msgstr "Li bala we" #: ../gurpmi2:170 #, c-format msgid " (to upgrade)" msgstr "" #: ../gurpmi2:171 #, c-format msgid " (to install)" msgstr "" #: ../gurpmi2:174 #, c-format msgid "Package choice" msgstr "" #: ../gurpmi2:175 #, c-format msgid "One of the following packages is needed:" msgstr "" #: ../gurpmi2:204 #, c-format msgid "_Abort" msgstr "" #: ../gurpmi2:239 #, c-format msgid "" "The following packages have to be removed for others to be upgraded:\n" "%s\n" "Continue installation anyway?" msgstr "" #: ../gurpmi2:250 ../urpmi:617 #, c-format msgid "%s of additional disk space will be used." msgstr "" #: ../gurpmi2:251 ../urpmi:618 #, c-format msgid "%s of disk space will be freed." msgstr "" #: ../gurpmi2:252 ../urpmi:619 #, c-format msgid "%s of packages will be retrieved." msgstr "" #: ../gurpmi2:253 ../urpmi:620 #, c-format msgid "Proceed with the installation of one package?" msgid_plural "Proceed with the installation of the %d packages?" msgstr[0] "" msgstr[1] "" #: ../gurpmi2:259 ../urpmi:608 #, c-format msgid "" "To satisfy dependencies, the following package is going to be installed:" msgstr "" #: ../gurpmi2:260 ../urpmi:609 #, c-format msgid "" "To satisfy dependencies, the following packages are going to be installed:" msgstr "" #: ../gurpmi2:270 ../urpm/main_loop.pm:468 #, c-format msgid "unable to get source packages, aborting" msgstr "" #: ../gurpmi2:287 ../urpmi:636 #, c-format msgid "Please insert the medium named \"%s\"" msgstr "" #: ../gurpmi2:307 #, c-format msgid "An error occurred:" msgstr "" #: ../gurpmi2:319 #, c-format msgid "_Done" msgstr "" #: ../gurpmi2:336 ../urpm/main_loop.pm:82 #, c-format msgid "" "Installation failed, some files are missing:\n" "%s" msgstr "" #: ../gurpmi2:339 #, c-format msgid "You may want to update your urpmi database." msgstr "" #: ../gurpmi2:343 ../urpm/main_loop.pm:289 ../urpm/main_loop.pm:583 #, c-format msgid "Installation failed:" msgstr "" #: ../gurpmi2:348 #, c-format msgid "The package(s) are already installed" msgstr "" #: ../gurpmi2:350 #, c-format msgid "Installation finished" msgstr "" #: ../gurpmi2:363 ../urpmi:694 #, c-format msgid "restarting urpmi" msgstr "" #: ../gurpmi2:386 #, c-format msgid "No" msgstr "Na" #: ../gurpmi2:386 #, c-format msgid "Yes" msgstr "Erê" #: ../rpm-find-leaves:15 #, c-format msgid "" "usage: %s [options]\n" "where [options] are from\n" msgstr "" #: ../rpm-find-leaves:17 #, c-format msgid " -h|--help - print this help message.\n" msgstr "" #: ../rpm-find-leaves:18 #, c-format msgid " --root - use the given root instead of /\n" msgstr "" #: ../rpm-find-leaves:19 #, c-format msgid " -g [group] - restrict results to specified group.\n" msgstr "" #: ../rpm-find-leaves:20 #, c-format msgid " defaults to %s.\n" msgstr "" #: ../rpm-find-leaves:21 #, c-format msgid " -f - output rpm full name (NVRA)\n" msgstr "" #: ../rurpmi:12 ../urpmi:266 #, c-format msgid "Only superuser is allowed to install packages" msgstr "" #: ../rurpmi:19 #, c-format msgid "Running urpmi in restricted mode..." msgstr "" #: ../urpm.pm:22 #, c-format msgid "While some packages may have been installed, there were failures.\n" msgstr "" #: ../urpm.pm:195 #, c-format msgid "fail to create directory %s" msgstr "" #: ../urpm.pm:196 #, c-format msgid "invalid owner for directory %s" msgstr "" #: ../urpm.pm:239 #, c-format msgid "Can not download packages into %s" msgstr "" #: ../urpm.pm:255 #, c-format msgid "Environment directory %s does not exist" msgstr "" #: ../urpm.pm:256 ../urpmf:244 ../urpmq:163 #, c-format msgid "using specific environment on %s\n" msgstr "" #: ../urpm.pm:424 #, c-format msgid "unable to open rpmdb" msgstr "" #: ../urpm.pm:443 #, c-format msgid "invalid rpm file name [%s]" msgstr "" #: ../urpm.pm:449 #, c-format msgid "retrieving rpm file [%s] ..." msgstr "" #: ../urpm.pm:451 ../urpm/get_pkgs.pm:275 #, c-format msgid "...retrieving done" msgstr "" #: ../urpm.pm:459 #, c-format msgid "unable to access rpm file [%s]" msgstr "" #: ../urpm.pm:464 #, c-format msgid "unable to parse spec file %s [%s]" msgstr "" #: ../urpm.pm:472 #, c-format msgid "unable to register rpm file" msgstr "" #: ../urpm.pm:474 #, c-format msgid "Incompatible architecture for rpm [%s]" msgstr "" #: ../urpm.pm:478 #, c-format msgid "error registering local packages" msgstr "" #: ../urpm.pm:590 #, c-format msgid "This operation is forbidden while running in restricted mode" msgstr "" #: ../urpm/args.pm:157 ../urpm/args.pm:166 #, c-format msgid "bad proxy declaration on command line\n" msgstr "" #: ../urpm/args.pm:321 #, c-format msgid "urpmq: cannot read rpm file \"%s\"\n" msgstr "" #: ../urpm/args.pm:390 #, c-format msgid "unexpected expression %s" msgstr "" #: ../urpm/args.pm:391 #, c-format msgid "missing expression before %s" msgstr "" #: ../urpm/args.pm:397 #, c-format msgid "unexpected expression %s (suggestion: use -a or -o ?)" msgstr "" #: ../urpm/args.pm:401 #, c-format msgid "no expression to close" msgstr "" #: ../urpm/args.pm:410 #, c-format msgid "by default urpmf awaits a regexp. you should use option \"--literal\"" msgstr "" #: ../urpm/args.pm:484 #, c-format msgid "chroot directory doesn't exist" msgstr "" #: ../urpm/args.pm:507 #, c-format msgid "Can't use %s without %s" msgstr "" #: ../urpm/args.pm:510 ../urpm/args.pm:513 ../urpmq:155 #, c-format msgid "Can't use %s with %s" msgstr "" #: ../urpm/args.pm:521 #, c-format msgid "Too many arguments\n" msgstr "" #: ../urpm/args.pm:529 #, c-format msgid "" "%s version %s\n" "%s\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "usage:\n" msgstr "" #: ../urpm/args.pm:535 #, c-format msgid "Copyright (C) %s by %s" msgstr "" #: ../urpm/bug_report.pm:67 ../urpmi:256 #, c-format msgid "Copying failed" msgstr "" #: ../urpm/cdrom.pm:79 #, c-format msgid "" "You must mount CD-ROM yourself (or install perl-Hal-Cdroms to have it done " "automatically)" msgstr "" #: ../urpm/cdrom.pm:81 #, c-format msgid "Udisks daemon (udisks-daemon) is not running or not ready" msgstr "" #: ../urpm/cdrom.pm:173 ../urpm/cdrom.pm:178 #, c-format msgid "medium \"%s\" is not available" msgstr "" #: ../urpm/cdrom.pm:217 #, c-format msgid "unable to read rpm file [%s] from medium \"%s\"" msgstr "" #: ../urpm/cfg.pm:73 #, c-format msgid "syntax error in config file at line %s" msgstr "" #: ../urpm/cfg.pm:106 #, c-format msgid "unable to read config file [%s]" msgstr "" #: ../urpm/cfg.pm:132 #, c-format msgid "medium `%s' is defined twice, aborting" msgstr "" #: ../urpm/cfg.pm:248 ../urpm/media.pm:560 #, c-format msgid "unable to write config file [%s]" msgstr "" #: ../urpm/download.pm:95 #, c-format msgid "%s is not available, falling back on %s" msgstr "" #: ../urpm/download.pm:171 #, c-format msgid "can not read proxy settings (not enough rights to read %s)" msgstr "" #: ../urpm/download.pm:201 #, c-format msgid "Please enter your credentials for accessing proxy\n" msgstr "" #: ../urpm/download.pm:202 #, c-format msgid "User name:" msgstr "Nave bikarhêner:" #: ../urpm/download.pm:202 #, c-format msgid "Password:" msgstr "şîfre:" #: ../urpm/download.pm:288 #, c-format msgid "Unknown webfetch `%s' !!!\n" msgstr "" #: ../urpm/download.pm:296 #, c-format msgid "%s failed: exited with signal %d" msgstr "" #: ../urpm/download.pm:297 #, c-format msgid "%s failed: exited with %d" msgstr "" #: ../urpm/download.pm:331 #, c-format msgid "copy failed" msgstr "" #: ../urpm/download.pm:337 #, c-format msgid "wget is missing\n" msgstr "" #: ../urpm/download.pm:404 #, c-format msgid "curl is missing\n" msgstr "" #: ../urpm/download.pm:539 #, c-format msgid "curl failed: download canceled\n" msgstr "" #: ../urpm/download.pm:574 #, c-format msgid "rsync is missing\n" msgstr "" #: ../urpm/download.pm:642 #, c-format msgid "ssh is missing\n" msgstr "" #: ../urpm/download.pm:661 #, c-format msgid "prozilla is missing\n" msgstr "" #: ../urpm/download.pm:677 #, c-format msgid "Couldn't execute prozilla\n" msgstr "" #: ../urpm/download.pm:687 #, c-format msgid "aria2 is missing\n" msgstr "" #: ../urpm/download.pm:736 #, c-format msgid "Failed to download %s" msgstr "" #: ../urpm/download.pm:854 #, c-format msgid " %s%% of %s completed, ETA = %s, speed = %s" msgstr "" #: ../urpm/download.pm:855 #, c-format msgid " %s%% completed, speed = %s" msgstr "" #: ../urpm/download.pm:940 #, c-format msgid "retrieving %s" msgstr "" #: ../urpm/download.pm:958 #, c-format msgid "retrieved %s" msgstr "" #: ../urpm/download.pm:1021 #, c-format msgid "unknown protocol defined for %s" msgstr "" #: ../urpm/download.pm:1035 #, c-format msgid "no webfetch found, supported webfetch are: %s\n" msgstr "" #: ../urpm/download.pm:1050 #, c-format msgid "unable to handle protocol: %s" msgstr "" #: ../urpm/get_pkgs.pm:28 #, c-format msgid "cleaning %s and %s" msgstr "" #: ../urpm/get_pkgs.pm:140 #, c-format msgid "package %s is not found." msgstr "" #: ../urpm/get_pkgs.pm:268 #, c-format msgid "retrieving rpm files from medium \"%s\"..." msgstr "" #: ../urpm/install.pm:116 ../urpme:164 #, c-format msgid "removing %s" msgstr "" #: ../urpm/install.pm:217 #, c-format msgid "unable to extract rpm from delta-rpm package %s" msgstr "" #: ../urpm/install.pm:245 #, c-format msgid "unable to install package %s" msgstr "" #: ../urpm/install.pm:248 #, c-format msgid "removing bad rpm (%s) from %s" msgstr "" #: ../urpm/install.pm:249 ../urpm/install.pm:397 #, c-format msgid "removing %s failed: %s" msgstr "" #: ../urpm/install.pm:298 #, c-format msgid "removing package %s" msgstr "" #: ../urpm/install.pm:362 #, c-format msgid "" "created transaction for installing on %s (remove=%d, install=%d, upgrade=%d)" msgstr "" #: ../urpm/install.pm:365 #, c-format msgid "unable to create transaction" msgstr "" #: ../urpm/install.pm:395 #, c-format msgid "removing installed rpms (%s) from %s" msgstr "" #: ../urpm/install.pm:404 #, c-format msgid "More information on package %s" msgstr "" #: ../urpm/ldap.pm:41 #, c-format msgid "Cannot create ldap cache directory" msgstr "" #: ../urpm/ldap.pm:47 #, c-format msgid "Cannot write cache file for ldap\n" msgstr "" #: ../urpm/ldap.pm:176 #, c-format msgid "No server defined, missing uri or host" msgstr "" #: ../urpm/ldap.pm:177 #, c-format msgid "No base defined" msgstr "" #: ../urpm/ldap.pm:187 ../urpm/ldap.pm:190 #, c-format msgid "Cannot connect to ldap uri:" msgstr "" #: ../urpm/lock.pm:111 #, c-format msgid "%s database is locked, process %d is already using it" msgstr "" #: ../urpm/lock.pm:113 #, c-format msgid "%s database is locked (another program is already using it)" msgstr "" #: ../urpm/lock.pm:127 #, c-format msgid "%s database is locked. Waiting..." msgstr "" #: ../urpm/lock.pm:128 #, c-format msgid "aborting" msgstr "" #: ../urpm/main_loop.pm:58 #, c-format msgid "Retry?" msgstr "" #: ../urpm/main_loop.pm:85 #, c-format msgid "You may need to update your urpmi database." msgstr "" #: ../urpm/main_loop.pm:89 #, c-format msgid "" "Installation failed, bad rpms:\n" "%s" msgstr "" #: ../urpm/main_loop.pm:108 #, c-format msgid "" "There is not enough space on your filesystem to download all packages (%s " "needed, %s available).\n" "Are you sure you want to continue?" msgstr "" #: ../urpm/main_loop.pm:138 #, c-format msgid "The following package has bad signature" msgstr "" #: ../urpm/main_loop.pm:139 #, c-format msgid "The following packages have bad signatures" msgstr "" #: ../urpm/main_loop.pm:140 #, c-format msgid "Do you want to continue installation ?" msgstr "" #: ../urpm/main_loop.pm:155 ../urpm/main_loop.pm:184 ../urpm/main_loop.pm:291 #: ../urpm/main_loop.pm:299 #, c-format msgid "Installation failed" msgstr "Saz kirin bi ser neket." #: ../urpm/main_loop.pm:159 #, c-format msgid "removing installed rpms (%s)" msgstr "" #: ../urpm/main_loop.pm:185 #, c-format msgid "Try to continue anyway?" msgstr "" #: ../urpm/main_loop.pm:237 #, c-format msgid "installing %s from %s" msgstr "" #: ../urpm/main_loop.pm:239 #, c-format msgid "installing %s" msgstr "" #: ../urpm/main_loop.pm:246 #, c-format msgid "distributing %s" msgstr "" #: ../urpm/main_loop.pm:292 #, c-format msgid "Try installation without checking dependencies?" msgstr "" #: ../urpm/main_loop.pm:300 #, c-format msgid "Try harder to install (--force)?" msgstr "" #: ../urpm/main_loop.pm:593 #, c-format msgid "Packages are up to date" msgstr "" #: ../urpm/main_loop.pm:604 ../urpm/parallel.pm:340 #, c-format msgid "Installation is possible" msgstr "" #: ../urpm/md5sum.pm:55 #, c-format msgid "warning: md5sum for %s unavailable in MD5SUM file" msgstr "" #: ../urpm/media.pm:267 #, c-format msgid "virtual medium \"%s\" should have a clear url, medium ignored" msgstr "" #: ../urpm/media.pm:269 #, c-format msgid "unable to access list file of \"%s\", medium ignored" msgstr "" #: ../urpm/media.pm:272 #, c-format msgid "unable to access synthesis file of \"%s\", medium ignored" msgstr "" #: ../urpm/media.pm:298 #, c-format msgid "trying to override existing medium \"%s\", skipping" msgstr "" #: ../urpm/media.pm:514 #, c-format msgid "failed to migrate removable device, ignoring media" msgstr "" #: ../urpm/media.pm:563 #, c-format msgid "wrote config file [%s]" msgstr "" #: ../urpm/media.pm:654 #, c-format msgid "Can't use parallel mode with use-distrib mode" msgstr "" #: ../urpm/media.pm:662 #, c-format msgid "using associated media for parallel mode: %s" msgstr "" #: ../urpm/media.pm:678 #, c-format msgid "" "--synthesis cannot be used with --media, --excludemedia, --sortmedia, --" "update, --use-distrib or --parallel" msgstr "" #: ../urpm/media.pm:793 #, c-format msgid "ignoring non-free medium `%s'" msgstr "" #: ../urpm/media.pm:803 #, c-format msgid "un-ignoring non-free medium `%s' b/c nonfree packages are installed" msgstr "" #: ../urpm/media.pm:807 #, c-format msgid "un-ignoring tainted medium `%s' b/c tainted packages are installed" msgstr "" #: ../urpm/media.pm:816 #, c-format msgid "" "un-ignoring 32bit medium `%s' b/c 32-bit packages are installed or system is " "32-bit EFI" msgstr "" #: ../urpm/media.pm:844 #, c-format msgid "Search start: %s end: %s" msgstr "" #: ../urpm/media.pm:861 #, c-format msgid "skipping package %s" msgstr "" #: ../urpm/media.pm:877 #, c-format msgid "would install instead of upgrade package %s" msgstr "" #: ../urpm/media.pm:960 #, c-format msgid "medium \"%s\" already exists" msgstr "" #: ../urpm/media.pm:1008 #, c-format msgid "(ignored by default)" msgstr "" #: ../urpm/media.pm:1014 #, c-format msgid "adding medium \"%s\" before remote medium \"%s\"" msgstr "" #: ../urpm/media.pm:1020 #, c-format msgid "adding medium \"%s\"" msgstr "" #: ../urpm/media.pm:1044 #, c-format msgid "failed to copy media.cfg to %s (%d)" msgstr "" #: ../urpm/media.pm:1119 #, c-format msgid "directory %s does not exist" msgstr "" #: ../urpm/media.pm:1127 #, c-format msgid "this location doesn't seem to contain any distribution" msgstr "" #: ../urpm/media.pm:1151 #, c-format msgid "unable to parse media.cfg" msgstr "" #: ../urpm/media.pm:1154 #, c-format msgid "unable to access the distribution medium (no media.cfg file found)" msgstr "" #: ../urpm/media.pm:1188 #, c-format msgid "skipping non compatible media `%s' (for %s)" msgstr "" #: ../urpm/media.pm:1246 #, c-format msgid "retrieving media.cfg file..." msgstr "" #: ../urpm/media.pm:1289 #, c-format msgid "trying to select nonexistent medium \"%s\"" msgstr "" #: ../urpm/media.pm:1292 #, c-format msgid "selecting multiple media: %s" msgstr "" #: ../urpm/media.pm:1351 #, c-format msgid "removing medium \"%s\"" msgstr "" #: ../urpm/media.pm:1442 #, c-format msgid "reconfiguring urpmi for media \"%s\"" msgstr "" #: ../urpm/media.pm:1476 #, c-format msgid "...reconfiguration failed" msgstr "" #: ../urpm/media.pm:1482 #, c-format msgid "reconfiguration done" msgstr "" #: ../urpm/media.pm:1498 #, c-format msgid "Error generating names file: dependency %d not found" msgstr "" #: ../urpm/media.pm:1519 #, c-format msgid "medium \"%s\" is up-to-date" msgstr "" #: ../urpm/media.pm:1530 #, c-format msgid "examining synthesis file [%s]" msgstr "" #: ../urpm/media.pm:1550 #, c-format msgid "problem reading synthesis file of medium \"%s\"" msgstr "" #: ../urpm/media.pm:1563 ../urpm/media.pm:1658 #, c-format msgid "copying [%s] for medium \"%s\"..." msgstr "" #: ../urpm/media.pm:1565 ../urpm/media.pm:1635 ../urpm/media.pm:1888 #, c-format msgid "...copying failed" msgstr "" #: ../urpm/media.pm:1631 #, c-format msgid "copying description file of \"%s\"..." msgstr "" #: ../urpm/media.pm:1633 ../urpm/media.pm:1662 #, c-format msgid "...copying done" msgstr "" #: ../urpm/media.pm:1664 #, c-format msgid "copy of [%s] failed (file is suspiciously small)" msgstr "" #: ../urpm/media.pm:1712 #, c-format msgid "computing md5sum of retrieved source synthesis" msgstr "" #: ../urpm/media.pm:1714 ../urpm/media.pm:2197 #, c-format msgid "retrieval of [%s] failed (md5sum mismatch)" msgstr "" #: ../urpm/media.pm:1729 #, c-format msgid "genhdlist2 failed on %s" msgstr "" #: ../urpm/media.pm:1739 #, c-format msgid "comparing %s and %s" msgstr "" #: ../urpm/media.pm:1769 #, c-format msgid "invalid hdlist file %s for medium \"%s\"" msgstr "" #: ../urpm/media.pm:1795 #, c-format msgid "copying MD5SUM file of \"%s\"..." msgstr "" #: ../urpm/media.pm:1835 #, c-format msgid "invalid MD5SUM file (downloaded from %s)" msgstr "" #: ../urpm/media.pm:1838 #, c-format msgid "no metadata found for medium \"%s\"" msgstr "" #: ../urpm/media.pm:1870 #, c-format msgid "retrieving source synthesis of \"%s\"..." msgstr "" #: ../urpm/media.pm:1936 #, c-format msgid "examining pubkey file of \"%s\"..." msgstr "" #: ../urpm/media.pm:1948 #, c-format msgid "...imported key %s from pubkey file of \"%s\"" msgstr "" #: ../urpm/media.pm:1952 #, c-format msgid "unable to import pubkey file of \"%s\"" msgstr "" #: ../urpm/media.pm:1993 #, c-format msgid "no synthesis file found for medium \"%s\"" msgstr "" #: ../urpm/media.pm:2026 #, c-format msgid "updated medium \"%s\"" msgstr "" #: ../urpm/media.pm:2191 #, c-format msgid "retrieval of [%s] failed" msgstr "" #: ../urpm/mirrors.pm:33 ../urpm/mirrors.pm:59 #, c-format msgid "trying again with mirror %s" msgstr "" #: ../urpm/mirrors.pm:111 #, c-format msgid "Could not find a mirror from mirrorlist %s" msgstr "" #: ../urpm/mirrors.pm:259 #, c-format msgid "found geolocalisation %s %.2f %.2f from timezone %s" msgstr "" #: ../urpm/mirrors.pm:320 #, c-format msgid "getting mirror list from %s" msgstr "" #: ../urpm/msg.pm:116 ../urpmi:492 ../urpmi:510 ../urpmi:628 #, c-format msgid "Nn" msgstr "" #. -PO: Add here the keys which might be pressed in the "Yes"-case. #: ../urpm/msg.pm:117 ../urpme:38 ../urpmi.addmedia:135 #, c-format msgid "Yy" msgstr "" #: ../urpm/msg.pm:153 ../urpme:158 ../urpmi.addmedia:138 #, c-format msgid " (y/N) " msgstr "" #: ../urpm/msg.pm:182 #, c-format msgid "Sorry, bad choice, try again\n" msgstr "" #: ../urpm/msg.pm:220 #, c-format msgid "Package" msgstr "" #: ../urpm/msg.pm:220 #, c-format msgid "Version" msgstr "" #: ../urpm/msg.pm:220 #, c-format msgid "Release" msgstr "" #: ../urpm/msg.pm:220 #, c-format msgid "Arch" msgstr "" #: ../urpm/msg.pm:229 #, c-format msgid "(recommended)" msgstr "" #: ../urpm/msg.pm:244 #, c-format msgid "medium \"%s\"" msgstr "" #: ../urpm/msg.pm:244 #, c-format msgid "command line" msgstr "" #: ../urpm/msg.pm:273 #, c-format msgid "B" msgstr "" #: ../urpm/msg.pm:273 #, c-format msgid "KB" msgstr "" #: ../urpm/msg.pm:273 #, c-format msgid "MB" msgstr "" #: ../urpm/msg.pm:273 #, c-format msgid "GB" msgstr "" #: ../urpm/msg.pm:273 ../urpm/msg.pm:282 #, c-format msgid "TB" msgstr "" #: ../urpm/orphans.pm:84 #, c-format msgid "Marking %s as manually installed, it won't be auto-orphaned" msgstr "" #: ../urpm/orphans.pm:613 #, c-format msgid "" "The following package:\n" "%s\n" "is now orphaned." msgid_plural "" "The following packages:\n" "%s\n" "are now orphaned." msgstr[0] "" msgstr[1] "" #: ../urpm/orphans.pm:616 #, c-format msgid "You may wish to remove it." msgid_plural "You may wish to remove them." msgstr[0] "" msgstr[1] "" #: ../urpm/orphans.pm:633 #, c-format msgid "" "The following package:\n" "%s\n" "is now orphaned, if you wish to remove it, you can use \"urpme --auto-orphans" "\"" msgid_plural "" "The following packages:\n" "%s\n" "are now orphaned, if you wish to remove them, you can use \"urpme --auto-" "orphans\"" msgstr[0] "" msgstr[1] "" #: ../urpm/parallel.pm:31 #, c-format msgid "unable to parse \"%s\" in file [%s]" msgstr "" #: ../urpm/parallel.pm:40 #, c-format msgid "examining parallel handler in file [%s]" msgstr "" #: ../urpm/parallel.pm:51 #, c-format msgid "found parallel handler for nodes: %s" msgstr "" #: ../urpm/parallel.pm:55 #, c-format msgid "unable to use parallel option \"%s\"" msgstr "" #: ../urpm/parallel.pm:120 #, c-format msgid "on node %s" msgstr "" #: ../urpm/parallel.pm:335 #, c-format msgid "Installation failed on node %s" msgstr "" #: ../urpm/parallel_ka_run.pm:57 #, c-format msgid "rshp failed, maybe a node is unreacheable" msgstr "" #: ../urpm/parallel_ka_run.pm:79 #, c-format msgid "mput failed, maybe a node is unreacheable" msgstr "" #: ../urpm/parallel_ssh.pm:25 #, c-format msgid "scp failed on host %s (%d)" msgstr "" #: ../urpm/parallel_ssh.pm:37 #, c-format msgid "cp failed on host %s (%d)" msgstr "" #: ../urpm/parallel_ssh.pm:84 #, c-format msgid "" "%s failed on host %s (maybe it does not have a good version of urpmi?) (exit " "code: %d)" msgstr "" #: ../urpm/removable.pm:45 #, c-format msgid "unable to access medium \"%s\"." msgstr "" #: ../urpm/removable.pm:85 ../urpm/removable.pm:100 #, c-format msgid "mounting %s" msgstr "" #: ../urpm/removable.pm:112 #, c-format msgid "unmounting %s" msgstr "" #: ../urpm/select.pm:44 #, c-format msgid "urpmi was restarted, and the list of priority packages did not change" msgstr "" #: ../urpm/select.pm:46 #, c-format msgid "" "urpmi was restarted, and the list of priority packages did change: %s vs %s" msgstr "" #: ../urpm/select.pm:219 #, c-format msgid "No package named %s" msgstr "" #: ../urpm/select.pm:221 ../urpme:112 #, c-format msgid "The following packages contain %s: %s" msgstr "" #: ../urpm/select.pm:223 #, c-format msgid "You should use \"-a\" to use all of them" msgstr "" #: ../urpm/select.pm:371 #, c-format msgid "found package(s) %s in urpmi db, but none are installed" msgstr "" #: ../urpm/select.pm:606 #, c-format msgid "Package %s is already installed" msgstr "" #: ../urpm/select.pm:607 #, c-format msgid "Packages %s are already installed" msgstr "" #: ../urpm/select.pm:624 ../urpm/select.pm:711 #, c-format msgid "due to conflicts with %s" msgstr "" #: ../urpm/select.pm:625 ../urpm/select.pm:705 #, c-format msgid "due to unsatisfied %s" msgstr "" #: ../urpm/select.pm:631 #, c-format msgid "trying to promote %s" msgstr "" #: ../urpm/select.pm:632 #, c-format msgid "in order to keep %s" msgstr "" #: ../urpm/select.pm:673 #, c-format msgid "" "The following package has to be removed for others to be upgraded:\n" "%s" msgstr "" #: ../urpm/select.pm:674 #, c-format msgid "" "The following packages have to be removed for others to be upgraded:\n" "%s" msgstr "" #: ../urpm/select.pm:701 #, c-format msgid "in order to install %s" msgstr "" #: ../urpm/select.pm:707 #, c-format msgid "due to missing %s" msgstr "" #: ../urpm/signature.pm:61 #, c-format msgid "Invalid signature (%s)" msgstr "" #: ../urpm/signature.pm:76 #, c-format msgid "SECURITY: The following package is _NOT_ signed (%s): %s" msgstr "" #: ../urpm/signature.pm:82 #, c-format msgid "SECURITY: NOT checking package \"%s\" (due to configuration)" msgstr "" #: ../urpm/signature.pm:101 #, c-format msgid "Invalid Key ID (%s)" msgstr "" #: ../urpm/signature.pm:103 #, c-format msgid "Missing signature (%s)" msgstr "" #: ../urpm/signature.pm:106 #, c-format msgid "SECURITY: Medium \"%s\" has no key (%s)!" msgstr "" #: ../urpm/signature.pm:108 #, c-format msgid "Medium without key (%s)" msgstr "" #: ../urpm/sys.pm:198 #, c-format msgid "system" msgstr "" #: ../urpm/sys.pm:235 #, c-format msgid "You should restart your computer for %s" msgstr "" #: ../urpm/sys.pm:237 #, c-format msgid "You should restart your session for %s" msgstr "" #: ../urpm/sys.pm:239 #, c-format msgid "You should restart %s for %s" msgstr "" #: ../urpm/sys.pm:428 #, c-format msgid "Can't write file" msgstr "" #: ../urpm/sys.pm:428 #, c-format msgid "Can't open file" msgstr "" #: ../urpm/sys.pm:441 #, c-format msgid "Can't move file %s to %s" msgstr "" #: ../urpme:43 #, c-format msgid " --auto - automatically select a package in choices.\n" msgstr "" #: ../urpme:44 #, c-format msgid " --auto-orphans - remove orphans\n" msgstr "" #: ../urpme:45 #, c-format msgid " --test - verify if the removal can be achieved correctly.\n" msgstr "" #: ../urpme:47 ../urpmi:106 ../urpmq:66 #, c-format msgid " --parallel - distributed urpmi across machines of alias.\n" msgstr "" #: ../urpme:48 #, c-format msgid " --root - use another root for rpm removal.\n" msgstr "" #: ../urpme:49 ../urpmf:35 ../urpmi:108 ../urpmi.addmedia:74 #: ../urpmi.removemedia:45 ../urpmi.update:49 ../urpmq:68 #, c-format msgid " --urpmi-root - use another root for urpmi db & rpm installation.\n" msgstr "" #: ../urpme:50 ../urpmi:96 #, c-format msgid " --justdb - update only the rpm db, not the filesystem.\n" msgstr "" #: ../urpme:51 #, c-format msgid " --noscripts - do not execute package scriptlet(s).\n" msgstr "" #: ../urpme:52 #, c-format msgid "" " --use-distrib - configure urpme on the fly from a distrib tree, useful\n" " to (un)install a chroot with --root option.\n" msgstr "" #: ../urpme:54 ../urpmi:150 ../urpmq:87 #, c-format msgid " --verbose, -v - verbose mode.\n" msgstr "" #: ../urpme:55 #, c-format msgid " -a - select all packages matching expression.\n" msgstr "" #: ../urpme:70 #, c-format msgid "Only superuser is allowed to remove packages" msgstr "" #: ../urpme:103 #, c-format msgid "unknown packages" msgstr "" #: ../urpme:103 #, c-format msgid "unknown package" msgstr "" #: ../urpme:118 #, c-format msgid "Removing the following package will break your system:" msgid_plural "Removing the following packages will break your system:" msgstr[0] "" msgstr[1] "" #: ../urpme:123 #, c-format msgid "Nothing to remove" msgstr "" #: ../urpme:140 #, c-format msgid "No orphans to remove" msgstr "" #: ../urpme:146 #, c-format msgid "To satisfy dependencies, the following package will be removed" msgid_plural "" "To satisfy dependencies, the following %d packages will be removed" msgstr[0] "" msgstr[1] "" #: ../urpme:151 #, c-format msgid "(orphan package)" msgid_plural "(orphan packages)" msgstr[0] "" msgstr[1] "" #: ../urpme:158 #, c-format msgid "Remove %d package?" msgid_plural "Remove %d packages?" msgstr[0] "" msgstr[1] "" #: ../urpme:163 #, c-format msgid "testing removal of %s" msgstr "" #: ../urpme:180 #, c-format msgid "Removal failed" msgstr "" #: ../urpme:182 #, c-format msgid "Removal is possible" msgstr "" #: ../urpmf:31 #, c-format msgid " --version - print this tool's version number.\n" msgstr "" #: ../urpmf:32 ../urpmi:130 ../urpmq:78 #, c-format msgid " --env - use specific environment (typically a bug report).\n" msgstr "" #: ../urpmf:33 ../urpmi:69 ../urpmq:45 #, c-format msgid " --excludemedia - do not use the given media, separated by comma.\n" msgstr "" #: ../urpmf:34 #, c-format msgid "" " --literal, -l - don't match patterns, use argument as a literal string.\n" msgstr "" #: ../urpmf:37 ../urpmi:72 ../urpmq:46 #, c-format msgid "" " --sortmedia - sort media according to substrings separated by comma.\n" msgstr "" #: ../urpmf:38 #, c-format msgid " --use-distrib - use the given path to access media\n" msgstr "" #: ../urpmf:39 ../urpmi:73 ../urpmq:47 #, c-format msgid " --synthesis - use the given synthesis instead of urpmi db.\n" msgstr "" #: ../urpmf:40 #, c-format msgid " --uniq - do not print identical lines twice.\n" msgstr "" #: ../urpmf:41 ../urpmi:70 ../urpmq:42 #, c-format msgid " --update - use only update media.\n" msgstr "" #: ../urpmf:42 #, c-format msgid " --verbose - verbose mode.\n" msgstr "" #: ../urpmf:43 #, c-format msgid " -i - ignore case distinctions in patterns.\n" msgstr "" #: ../urpmf:44 #, c-format msgid " -I - honor case distinctions in patterns (default).\n" msgstr "" #: ../urpmf:45 #, c-format msgid " -F - change field separator (defaults to ':').\n" msgstr "" #: ../urpmf:46 #, c-format msgid "Pattern expressions:\n" msgstr "" #: ../urpmf:47 #, c-format msgid " text - any text is parsed as a regexp, unless -l is used.\n" msgstr "" #: ../urpmf:48 #, c-format msgid " -e - include perl code directly as perl -e.\n" msgstr "" #: ../urpmf:49 #, c-format msgid " -a - binary AND operator.\n" msgstr "" #: ../urpmf:50 #, c-format msgid " -o - binary OR operator.\n" msgstr "" #: ../urpmf:51 #, c-format msgid " ! - unary NOT.\n" msgstr "" #: ../urpmf:52 #, c-format msgid " ( ) - left and right parentheses.\n" msgstr "" #: ../urpmf:53 #, c-format msgid "List of tags:\n" msgstr "" #: ../urpmf:54 #, c-format msgid " --qf - specify a printf-like output format\n" msgstr "" #: ../urpmf:55 #, c-format msgid " example: '%%name:%%files'\n" msgstr "" #: ../urpmf:56 #, c-format msgid " --arch - architecture\n" msgstr "" #: ../urpmf:57 #, c-format msgid " --buildhost - build host\n" msgstr "" #: ../urpmf:58 #, c-format msgid " --buildtime - build time\n" msgstr "" #: ../urpmf:59 #, c-format msgid " --conffiles - configuration files\n" msgstr "" #: ../urpmf:60 #, c-format msgid " --conflicts - conflict tags\n" msgstr "" #: ../urpmf:61 #, c-format msgid " --description - package description\n" msgstr "" #: ../urpmf:62 #, c-format msgid " --distribution - distribution\n" msgstr "" #: ../urpmf:63 #, c-format msgid " --epoch - epoch\n" msgstr "" #: ../urpmf:64 #, c-format msgid " --filename - filename of the package\n" msgstr "" #: ../urpmf:65 #, c-format msgid " --files - list of files contained in the package\n" msgstr "" #: ../urpmf:66 #, c-format msgid " --group - group\n" msgstr "" #: ../urpmf:67 #, c-format msgid " --license - license\n" msgstr "" #: ../urpmf:68 #, c-format msgid " --name - package name\n" msgstr "" #: ../urpmf:69 #, c-format msgid " --obsoletes - obsoletes tags\n" msgstr "" #: ../urpmf:70 #, c-format msgid " --packager - packager\n" msgstr "" #: ../urpmf:71 #, c-format msgid " --provides - provides tags\n" msgstr "" #: ../urpmf:72 #, c-format msgid " --requires - requires tags\n" msgstr "" #: ../urpmf:73 #, c-format msgid " --size - installed size\n" msgstr "" #: ../urpmf:74 #, c-format msgid " --sourcerpm - source rpm name\n" msgstr "" #: ../urpmf:75 #, c-format msgid " --recommends - recommends tags\n" msgstr "" #: ../urpmf:76 #, c-format msgid " --summary - summary\n" msgstr "" #: ../urpmf:77 #, c-format msgid " --url - url\n" msgstr "" #: ../urpmf:78 #, c-format msgid " --vendor - vendor\n" msgstr "" #: ../urpmf:79 #, c-format msgid " -m - the media in which the package was found\n" msgstr "" #: ../urpmf:80 ../urpmq:97 #, c-format msgid " -f - print version, release and arch with name.\n" msgstr "" #: ../urpmf:149 #, c-format msgid "unterminated expression (%s)" msgstr "" #: ../urpmf:194 #, c-format msgid "Incorrect format: you may use only one multi-valued tag" msgstr "" #: ../urpmf:287 #, c-format msgid "no hdlist available for medium \"%s\"" msgstr "" #: ../urpmf:294 #, c-format msgid "no synthesis available for medium \"%s\"" msgstr "" #: ../urpmf:303 #, c-format msgid "no xml-info available for medium \"%s\"" msgstr "" #: ../urpmi:76 #, c-format msgid " --auto-update - update media then upgrade the system.\n" msgstr "" #: ../urpmi:77 #, c-format msgid " --no-md5sum - disable MD5SUM file checking.\n" msgstr "" #: ../urpmi:78 #, c-format msgid " --force-key - force update of gpg key.\n" msgstr "" #: ../urpmi:79 #, c-format msgid " --auto-orphans - remove orphans without asking\n" msgstr "" #: ../urpmi:80 ../urpmq:52 #, c-format msgid " --no-recommends - do not auto select \"recommended\" packages.\n" msgstr "" #: ../urpmi:81 #, c-format msgid "" " --no-uninstall - never ask to uninstall a package, abort the " "installation.\n" msgstr "" #: ../urpmi:82 #, c-format msgid " --no-install - don't install packages (only download)\n" msgstr "" #: ../urpmi:83 ../urpmq:54 #, c-format msgid "" " --keep - keep existing packages if possible, reject requested\n" " packages that lead to removals.\n" msgstr "" #: ../urpmi:85 #, c-format msgid "" " --split-level - split in small transaction if more than given packages\n" " are going to be installed or upgraded,\n" " default is %d.\n" msgstr "" #: ../urpmi:89 #, c-format msgid " --split-length - small transaction length, default is %d.\n" msgstr "" #: ../urpmi:91 #, c-format msgid " --fuzzy, -y - impose fuzzy search.\n" msgstr "" #: ../urpmi:92 #, c-format msgid " --buildrequires - install the buildrequires of the packages\n" msgstr "" #: ../urpmi:93 #, c-format msgid " --install-src - install only source package (no binaries).\n" msgstr "" #: ../urpmi:94 #, c-format msgid " --clean - remove rpm from cache before anything else.\n" msgstr "" #: ../urpmi:95 #, c-format msgid " --noclean - don't clean rpms from cache.\n" msgstr "" #: ../urpmi:97 #, c-format msgid "" " --downgrade - downgrade a package from the version currently installed\n" " to the previously highest version\n" msgstr "" #: ../urpmi:99 #, c-format msgid "" " --replacepkgs - force installing packages which are already installed.\n" msgstr "" #: ../urpmi:101 #, c-format msgid "" " --allow-nodeps - allow asking user to install packages without\n" " dependencies checking.\n" msgstr "" #: ../urpmi:103 #, c-format msgid "" " --allow-force - allow asking user to install packages without\n" " dependencies checking and integrity.\n" msgstr "" #: ../urpmi:105 #, c-format msgid " --allow-recommends - auto select \"recommended\" packages.\n" msgstr "" #: ../urpmi:109 #, c-format msgid "" " --use-distrib - configure urpmi on the fly from a distrib tree, useful\n" " to install a chroot with --root option.\n" msgstr "" #: ../urpmi:111 ../urpmi.addmedia:61 ../urpmi.update:38 #, c-format msgid " --metalink - generate and use a local metalink.\n" msgstr "" #: ../urpmi:112 #, c-format msgid "" " --download-all - download all needed packages before trying to install " "them\n" msgstr "" #: ../urpmi:113 #, c-format msgid "" " --downloader - program to use to retrieve distant files. \n" " known programs: %s\n" msgstr "" #: ../urpmi:116 #, c-format msgid " --curl-options - additional options to pass to curl\n" msgstr "" #: ../urpmi:117 #, c-format msgid " --rsync-options - additional options to pass to rsync\n" msgstr "" #: ../urpmi:118 #, c-format msgid " --wget-options - additional options to pass to wget\n" msgstr "" #: ../urpmi:119 #, c-format msgid " --prozilla-options - additional options to pass to prozilla\n" msgstr "" #: ../urpmi:120 #, c-format msgid " --aria2-options - additional options to pass to aria2\n" msgstr "" #: ../urpmi:121 ../urpmi.addmedia:62 ../urpmi.update:39 #, c-format msgid " --limit-rate - limit the download speed.\n" msgstr "" #: ../urpmi:122 #, c-format msgid "" " --resume - resume transfer of partially-downloaded files\n" " (--no-resume disables it, default is disabled).\n" msgstr "" #: ../urpmi:124 ../urpmi.addmedia:63 ../urpmi.update:40 ../urpmq:74 #, c-format msgid "" " --proxy - use specified HTTP proxy, the port number is assumed\n" " to be 1080 by default (format is ).\n" msgstr "" #: ../urpmi:126 ../urpmi.addmedia:65 ../urpmi.update:42 ../urpmq:76 #, c-format msgid "" " --proxy-user - specify user and password to use for proxy\n" " authentication (format is ).\n" msgstr "" #: ../urpmi:128 #, c-format msgid "" " --bug - output a bug report in directory indicated by\n" " next arg.\n" msgstr "" #: ../urpmi:134 #, c-format msgid " --excludepath - exclude path separated by comma.\n" msgstr "" #: ../urpmi:135 #, c-format msgid " --excludedocs - exclude doc files.\n" msgstr "" #: ../urpmi:136 #, c-format msgid " --ignoresize - don't verify disk space before installation.\n" msgstr "" #<?php /** * * This file is part of the phpBB Forum Software package. * * @copyright (c) phpBB Limited <https://www.phpbb.com> * @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ /** * @ignore */ if (!defined('IN_PHPBB')) { exit; } /** * Code from pear.php.net, Text_Diff-1.1.0 package * http://pear.php.net/package/Text_Diff/ * * Modified by phpBB Limited to meet our coding standards * and being able to integrate into phpBB * * General API for generating and formatting diffs - the differences between * two sequences of strings. * * Copyright 2004 Geoffrey T. Dairiki <dairiki@dairiki.org> * Copyright 2004-2008 The Horde Project (http://www.horde.org/) * * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> */ class diff { /** * Array of changes. * @var array */ var $_edits; /** * Computes diffs between sequences of strings. * * @param array &$from_content An array of strings. Typically these are lines from a file. * @param array &$to_content An array of strings. * @param bool $preserve_cr If true, \r is replaced by a new line in the diff output */ function diff(&$from_content, &$to_content, $preserve_cr = true) { $diff_engine = new diff_engine(); $this->_edits = $diff_engine->diff($from_content, $to_content, $preserve_cr); } /** * Returns the array of differences. */ function get_diff() { return $this->_edits; } /** * returns the number of new (added) lines in a given diff. * * @since Text_Diff 1.1.0 * * @return integer The number of new lines */ function count_added_lines() { $count = 0; for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if (is_a($edit, 'diff_op_add') || is_a($edit, 'diff_op_change')) { $count += $edit->nfinal(); } } return $count; } /** * Returns the number of deleted (removed) lines in a given diff. * * @since Text_Diff 1.1.0 * * @return integer The number of deleted lines */ function count_deleted_lines() { $count = 0; for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if (is_a($edit, 'diff_op_delete') || is_a($edit, 'diff_op_change')) { $count += $edit->norig(); } } return $count; } /** * Computes a reversed diff. * * Example: * <code> * $diff = new diff($lines1, $lines2); * $rev = $diff->reverse(); * </code> * * @return diff A Diff object representing the inverse of the original diff. * Note that we purposely don't return a reference here, since * this essentially is a clone() method. */ function reverse() { if (version_compare(zend_version(), '2', '>')) { $rev = clone($this); } else { $rev = $this; } $rev->_edits = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; $rev->_edits[] = $edit->reverse(); } return $rev; } /** * Checks for an empty diff. * * @return boolean True if two sequences were identical. */ function is_empty() { for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; // skip diff_op_copy if (is_a($edit, 'diff_op_copy')) { continue; } if (is_a($edit, 'diff_op_delete') || is_a($edit, 'diff_op_add')) { $orig = $edit->orig; $final = $edit->final; // We can simplify one case where the array is usually supposed to be empty... if (sizeof($orig) == 1 && trim($orig[0]) === '') $orig = array(); if (sizeof($final) == 1 && trim($final[0]) === '') $final = array(); if (!$orig && !$final) { continue; } return false; } return false; } return true; } /** * Computes the length of the Longest Common Subsequence (LCS). * * This is mostly for diagnostic purposes. * * @return integer The length of the LCS. */ function lcs() { $lcs = 0; for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if (is_a($edit, 'diff_op_copy')) { $lcs += sizeof($edit->orig); } } return $lcs; } /** * Gets the original set of lines. * * This reconstructs the $from_lines parameter passed to the constructor. * * @return array The original sequence of strings. */ function get_original() { $lines = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->orig) { array_splice($lines, sizeof($lines), 0, $edit->orig); } } return $lines; } /** * Gets the final set of lines. * * This reconstructs the $to_lines parameter passed to the constructor. * * @return array The sequence of strings. */ function get_final() { $lines = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->final) { array_splice($lines, sizeof($lines), 0, $edit->final); } } return $lines; } /** * Removes trailing newlines from a line of text. This is meant to be used with array_walk(). * * @param string &$line The line to trim. * @param integer $key The index of the line in the array. Not used. */ function trim_newlines(&$line, $key) { $line = str_replace(array("\n", "\r"), '', $line); } /** * Checks a diff for validity. * * This is here only for debugging purposes. */ function _check($from_lines, $to_lines) { if (serialize($from_lines) != serialize($this->get_original())) { trigger_error("[diff] Reconstructed original doesn't match", E_USER_ERROR); } if (serialize($to_lines) != serialize($this->get_final())) { trigger_error("[diff] Reconstructed final doesn't match", E_USER_ERROR); } $rev = $this->reverse(); if (serialize($to_lines) != serialize($rev->get_original())) { trigger_error("[diff] Reversed original doesn't match", E_USER_ERROR); } if (serialize($from_lines) != serialize($rev->get_final())) { trigger_error("[diff] Reversed final doesn't match", E_USER_ERROR); } $prevtype = null; for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($prevtype == get_class($edit)) { trigger_error("[diff] Edit sequence is non-optimal", E_USER_ERROR); } $prevtype = get_class($edit); } return true; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> */ class mapped_diff extends diff { /** * Computes a diff between sequences of strings. * * This can be used to compute things like case-insensitve diffs, or diffs * which ignore changes in white-space. * * @param array $from_lines An array of strings. * @param array $to_lines An array of strings. * @param array $mapped_from_lines This array should have the same size number of elements as $from_lines. * The elements in $mapped_from_lines and $mapped_to_lines are what is actually * compared when computing the diff. * @param array $mapped_to_lines This array should have the same number of elements as $to_lines. */ function mapped_diff(&$from_lines, &$to_lines, &$mapped_from_lines, &$mapped_to_lines) { if (sizeof($from_lines) != sizeof($mapped_from_lines) || sizeof($to_lines) != sizeof($mapped_to_lines)) { return false; } parent::diff($mapped_from_lines, $mapped_to_lines); $xi = $yi = 0; for ($i = 0; $i < sizeof($this->_edits); $i++) { $orig = &$this->_edits[$i]->orig; if (is_array($orig)) { $orig = array_slice($from_lines, $xi, sizeof($orig)); $xi += sizeof($orig); } $final = &$this->_edits[$i]->final; if (is_array($final)) { $final = array_slice($to_lines, $yi, sizeof($final)); $yi += sizeof($final); } } } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff_op { var $orig; var $final; function &reverse() { trigger_error('[diff] Abstract method', E_USER_ERROR); } function norig() { return ($this->orig) ? sizeof($this->orig) : 0; } function nfinal() { return ($this->final) ? sizeof($this->final) : 0; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff_op_copy extends diff_op { function diff_op_copy($orig, $final = false) { if (!is_array($final)) { $final = $orig; } $this->orig = $orig; $this->final = $final; } function &reverse() { $reverse = new diff_op_copy($this->final, $this->orig); return $reverse; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff_op_delete extends diff_op { function diff_op_delete($lines) { $this->orig = $lines; $this->final = false; } function &reverse() { $reverse = new diff_op_add($this->orig); return $reverse; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff_op_add extends diff_op { function diff_op_add($lines) { $this->final = $lines; $this->orig = false; } function &reverse() { $reverse = new diff_op_delete($this->final); return $reverse; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff_op_change extends diff_op { function diff_op_change($orig, $final) { $this->orig = $orig; $this->final = $final; } function &reverse() { $reverse = new diff_op_change($this->final, $this->orig); return $reverse; } } /** * A class for computing three way diffs. * * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> */ class diff3 extends diff { /** * Conflict counter. * @var integer */ var $_conflicting_blocks = 0; /** * Computes diff between 3 sequences of strings. * * @param array &$orig The original lines to use. * @param array &$final1 The first version to compare to. * @param array &$final2 The second version to compare to. * @param bool $preserve_cr If true, \r\n and bare \r are replaced by a new line * in the diff output */ function diff3(&$orig, &$final1, &$final2, $preserve_cr = true) { $diff_engine = new diff_engine(); $diff_1 = $diff_engine->diff($orig, $final1, $preserve_cr); $diff_2 = $diff_engine->diff($orig, $final2, $preserve_cr); unset($diff_engine); $this->_edits = $this->_diff3($diff_1, $diff_2); } /** * Return number of conflicts */ function get_num_conflicts() { $conflicts = 0; for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->is_conflict()) { $conflicts++; } } return $conflicts; } /** * Get conflicts content for download. This is generally a merged file, but preserving conflicts and adding explanations to it. * A user could then go through this file, search for the conflicts and changes the code accordingly. * * @param string $label1 the cvs file version/label from the original set of lines * @param string $label2 the cvs file version/label from the new set of lines * @param string $label_sep the explanation between label1 and label2 - more of a helper for the user * * @return mixed the merged output */ function get_conflicts_content($label1 = 'CURRENT_FILE', $label2 = 'NEW_FILE', $label_sep = 'DIFF_SEP_EXPLAIN') { global $user; $label1 = (!empty($user->lang[$label1])) ? $user->lang[$label1] : $label1; $label2 = (!empty($user->lang[$label2])) ? $user->lang[$label2] : $label2; $label_sep = (!empty($user->lang[$label_sep])) ? $user->lang[$label_sep] : $label_sep; $lines = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->is_conflict()) { // Start conflict label $label_start = array('<<<<<<< ' . $label1); $label_mid = array('======= ' . $label_sep); $label_end = array('>>>>>>> ' . $label2); $lines = array_merge($lines, $label_start, $edit->final1, $label_mid, $edit->final2, $label_end); $this->_conflicting_blocks++; } else { $lines = array_merge($lines, $edit->merged()); } } return $lines; } /** * Return merged output (used by the renderer) * * @return mixed the merged output */ function merged_output() { return $this->get_conflicts_content(); } /** * Merge the output and use the new file code for conflicts */ function merged_new_output() { $lines = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->is_conflict()) { $lines = array_merge($lines, $edit->final2); } else { $lines = array_merge($lines, $edit->merged()); } } return $lines; } /** * Merge the output and use the original file code for conflicts */ function merged_orig_output() { $lines = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->is_conflict()) { $lines = array_merge($lines, $edit->final1); } else { $lines = array_merge($lines, $edit->merged()); } } return $lines; } /** * Get conflicting block(s) */ function get_conflicts() { $conflicts = array(); for ($i = 0, $size = sizeof($this->_edits); $i < $size; $i++) { $edit = $this->_edits[$i]; if ($edit->is_conflict()) { $conflicts[] = array($edit->final1, $edit->final2); } } return $conflicts; } /** * @access private */ function _diff3(&$edits1, &$edits2) { $edits = array(); $bb = new diff3_block_builder(); $e1 = current($edits1); $e2 = current($edits2); while ($e1 || $e2) { if ($e1 && $e2 && is_a($e1, 'diff_op_copy') && is_a($e2, 'diff_op_copy')) { // We have copy blocks from both diffs. This is the (only) time we want to emit a diff3 copy block. // Flush current diff3 diff block, if any. if ($edit = $bb->finish()) { $edits[] = $edit; } $ncopy = min($e1->norig(), $e2->norig()); $edits[] = new diff3_op_copy(array_slice($e1->orig, 0, $ncopy)); if ($e1->norig() > $ncopy) { array_splice($e1->orig, 0, $ncopy); array_splice($e1->final, 0, $ncopy); } else { $e1 = next($edits1); } if ($e2->norig() > $ncopy) { array_splice($e2->orig, 0, $ncopy); array_splice($e2->final, 0, $ncopy); } else { $e2 = next($edits2); } } else { if ($e1 && $e2) { if ($e1->orig && $e2->orig) { $norig = min($e1->norig(), $e2->norig()); $orig = array_splice($e1->orig, 0, $norig); array_splice($e2->orig, 0, $norig); $bb->input($orig); } else { $norig = 0; } if (is_a($e1, 'diff_op_copy')) { $bb->out1(array_splice($e1->final, 0, $norig)); } if (is_a($e2, 'diff_op_copy')) { $bb->out2(array_splice($e2->final, 0, $norig)); } } if ($e1 && ! $e1->orig) { $bb->out1($e1->final); $e1 = next($edits1); } if ($e2 && ! $e2->orig) { $bb->out2($e2->final); $e2 = next($edits2); } } } if ($edit = $bb->finish()) { $edits[] = $edit; } return $edits; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff3_op { function diff3_op($orig = false, $final1 = false, $final2 = false) { $this->orig = $orig ? $orig : array(); $this->final1 = $final1 ? $final1 : array(); $this->final2 = $final2 ? $final2 : array(); } function merged() { if (!isset($this->_merged)) { // Prepare the arrays before we compare them. ;) $this->solve_prepare(); if ($this->final1 === $this->final2) { $this->_merged = &$this->final1; } else if ($this->final1 === $this->orig) { $this->_merged = &$this->final2; } else if ($this->final2 === $this->orig) { $this->_merged = &$this->final1; } else { // The following tries to aggressively solve conflicts... $this->_merged = false; $this->solve_conflict(); } } return $this->_merged; } function is_conflict() { return ($this->merged() === false) ? true : false; } /** * Function to prepare the arrays for comparing - we want to skip over newline changes * @author acydburn */ function solve_prepare() { // We can simplify one case where the array is usually supposed to be empty... if (sizeof($this->orig) == 1 && trim($this->orig[0]) === '') $this->orig = array(); if (sizeof($this->final1) == 1 && trim($this->final1[0]) === '') $this->final1 = array(); if (sizeof($this->final2) == 1 && trim($this->final2[0]) === '') $this->final2 = array(); // Now we only can have the case where the only difference between arrays are newlines, so compare all cases // First, some strings we can compare... $orig = $final1 = $final2 = ''; foreach ($this->orig as $null => $line) $orig .= trim($line); foreach ($this->final1 as $null => $line) $final1 .= trim($line); foreach ($this->final2 as $null => $line) $final2 .= trim($line); // final1 === final2 if ($final1 === $final2) { // We preserve the part which will be used in the merge later $this->final2 = $this->final1; } // final1 === orig else if ($final1 === $orig) { // Here it does not really matter what we choose, but we will use the new code $this->orig = $this->final1; } // final2 === orig else if ($final2 === $orig) { // Here it does not really matter too (final1 will be used), but we will use the new code $this->orig = $this->final2; } } /** * Find code portions from $orig in $final1 and use $final2 as merged instance if provided * @author acydburn */ function _compare_conflict_seq($orig, $final1, $final2 = false) { $result = array('merge_found' => false, 'merge' => array()); $_orig = &$this->$orig; $_final1 = &$this->$final1; // Ok, we basically search for $orig in $final1 $compare_seq = sizeof($_orig); // Go through the conflict code for ($i = 0, $j = 0, $size = sizeof($_final1); $i < $size; $i++, $j = $i) { $line = $_final1[$i]; $skip = 0; for ($x = 0; $x < $compare_seq; $x++) { // Try to skip all matching lines if (trim($line) === trim($_orig[$x])) { $line = (++$j < $size) ? $_final1[$j] : $line; $skip++; } } if ($skip === $compare_seq) { $result['merge_found'] = true; if ($final2 !== false) { $result['merge'] = array_merge($result['merge'], $this->$final2); } $i += ($skip - 1); } else if ($final2 !== false) { $result['merge'][] = $line; } } return $result; } /** * Tries to solve conflicts aggressively based on typical "assumptions" * @author acydburn */ function solve_conflict() { $this->_merged = false; // CASE ONE: orig changed into final2, but modified/unknown code in final1. // IF orig is found "as is" in final1 we replace the code directly in final1 and populate this as final2/merge if (sizeof($this->orig) && sizeof($this->final2)) { $result = $this->_compare_conflict_seq('orig', 'final1', 'final2'); if ($result['merge_found']) { $this->final2 = $result['merge']; $this->_merged = &$this->final2; return; } $result = $this->_compare_conflict_seq('final2', 'final1'); if ($result['merge_found']) { $this->_merged = &$this->final1; return; } // Try to solve $Id$ issues. ;) if (sizeof($this->orig) == 1 && sizeof($this->final1) == 1 && sizeof($this->final2) == 1) { $match = '#^' . preg_quote('* @version $Id: ', '#') . '[a-z\._\- ]+[0-9]+ [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9\:Z]+ [a-z0-9_\- ]+\$$#'; if (preg_match($match, $this->orig[0]) && preg_match($match, $this->final1[0]) && preg_match($match, $this->final2[0])) { $this->_merged = &$this->final2; return; } } $second_run = false; // Try to solve issues where the only reason why the above did not work is a newline being removed in the final1 code but exist in the orig/final2 code if (trim($this->orig[0]) === '' && trim($this->final2[0]) === '') { unset($this->orig[0], $this->final2[0]); $this->orig = array_values($this->orig); $this->final2 = array_values($this->final2); $second_run = true; } // The same is true for a line at the end. ;) if (sizeof($this->orig) && sizeof($this->final2) && sizeof($this->orig) === sizeof($this->final2) && trim($this->orig[sizeof($this->orig)-1]) === '' && trim($this->final2[sizeof($this->final2)-1]) === '') { unset($this->orig[sizeof($this->orig)-1], $this->final2[sizeof($this->final2)-1]); $this->orig = array_values($this->orig); $this->final2 = array_values($this->final2); $second_run = true; } if ($second_run) { $result = $this->_compare_conflict_seq('orig', 'final1', 'final2'); if ($result['merge_found']) { $this->final2 = $result['merge']; $this->_merged = &$this->final2; return; } $result = $this->_compare_conflict_seq('final2', 'final1'); if ($result['merge_found']) { $this->_merged = &$this->final1; return; } } return; } // CASE TWO: Added lines from orig to final2 but final1 had added lines too. Just merge them. if (!sizeof($this->orig) && $this->final1 !== $this->final2 && sizeof($this->final1) && sizeof($this->final2)) { $result = $this->_compare_conflict_seq('final2', 'final1'); if ($result['merge_found']) { $this->final2 = $this->final1; $this->_merged = &$this->final1; } else { $result = $this->_compare_conflict_seq('final1', 'final2'); if (!$result['merge_found']) { $this->final2 = array_merge($this->final1, $this->final2); $this->_merged = &$this->final2; } else { $this->final2 = $this->final1; $this->_merged = &$this->final1; } } return; } // CASE THREE: Removed lines (orig has the to-remove line(s), but final1 has additional lines which does not need to be removed). Just remove orig from final1 and then use final1 as final2/merge if (!sizeof($this->final2) && sizeof($this->orig) && sizeof($this->final1) && $this->orig !== $this->final1) { $result = $this->_compare_conflict_seq('orig', 'final1'); if (!$result['merge_found']) { return; } // First of all, try to find the code in orig in final1. ;) $compare_seq = sizeof($this->orig); $begin = $end = -1; $j = 0; for ($i = 0, $size = sizeof($this->final1); $i < $size; $i++) { $line = $this->final1[$i]; if (trim($line) === trim($this->orig[$j])) { // Mark begin if ($begin === -1) { $begin = $i; } // End is always $i, the last found line $end = $i; if (isset($this->orig[$j+1])) { $j++; } } } if ($begin !== -1 && $begin + ($compare_seq - 1) == $end) { foreach ($this->final1 as $i => $line) { if ($i < $begin || $i > $end) { $merged[] = $line; } } $this->final2 = $merged; $this->_merged = &$this->final2; } return; } return; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff3_op_copy extends diff3_op { function diff3_op_copy($lines = false) { $this->orig = $lines ? $lines : array(); $this->final1 = &$this->orig; $this->final2 = &$this->orig; } function merged() { return $this->orig; } function is_conflict() { return false; } } /** * @package diff * @author Geoffrey T. Dairiki <dairiki@dairiki.org> * * @access private */ class diff3_block_builder { function diff3_block_builder() { $this->_init(); } function input($lines) { if ($lines) { $this->_append($this->orig, $lines); } } function out1($lines) { if ($lines) { $this->_append($this->final1, $lines); } } function out2($lines) { if ($lines) { $this->_append($this->final2, $lines); } } function is_empty() { return !$this->orig && !$this->final1 && !$this->final2; } function finish() { if ($this->is_empty()) { return false; } else { $edit = new diff3_op($this->orig, $this->final1, $this->final2); $this->_init(); return $edit; } } function _init() { $this->orig = $this->final1 = $this->final2 = array(); } function _append(&$array, $lines) { array_splice($array, sizeof($array), 0, $lines); } }