mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Merge branch 'master' into maint
This commit is contained in:
commit
fdd932ff8d
94 changed files with 6819 additions and 2306 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -1,10 +1,9 @@
|
||||||
conf/config
|
|
||||||
dummy-data.sql*
|
dummy-data.sql*
|
||||||
po/*.mo
|
po/*.mo
|
||||||
po/*.po~
|
po/*.po~
|
||||||
po/POTFILES
|
po/POTFILES
|
||||||
scripts/git-integration/__pycache__/
|
|
||||||
scripts/git-integration/templates/
|
|
||||||
web/locale/*/
|
web/locale/*/
|
||||||
aur.git/
|
aur.git/
|
||||||
git-interface/git-auth.sh
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
test/test-results/
|
||||||
|
|
35
INSTALL
35
INSTALL
|
@ -4,7 +4,7 @@ Setup on Arch Linux
|
||||||
1) Clone the AUR project:
|
1) Clone the AUR project:
|
||||||
|
|
||||||
$ cd /srv/http/
|
$ cd /srv/http/
|
||||||
$ git clone git://projects.archlinux.org/aurweb.git
|
$ git clone git://git.archlinux.org/aurweb.git
|
||||||
|
|
||||||
2) Setup a web server with PHP and MySQL. Configure the web server to redirect
|
2) Setup a web server with PHP and MySQL. Configure the web server to redirect
|
||||||
all URLs to /index.php/foo/bar/. The following block can be used with nginx:
|
all URLs to /index.php/foo/bar/. The following block can be used with nginx:
|
||||||
|
@ -30,46 +30,43 @@ Setup on Arch Linux
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
3) Copy conf/config.proto to conf/config and adjust the configuration (pay
|
3) Copy conf/config.proto to /etc/aurweb/config and adjust the configuration
|
||||||
attention to disable_http_login, enable_maintenance and aur_location).
|
(pay attention to disable_http_login, enable_maintenance and aur_location).
|
||||||
|
|
||||||
4) Create a new MySQL database and a user and import the AUR SQL schema:
|
4) Create a new MySQL database and a user and import the AUR SQL schema:
|
||||||
|
|
||||||
$ mysql -uaur -p AUR </srv/http/aurweb/schema/aur-schema.sql
|
$ mysql -uaur -p AUR </srv/http/aurweb/schema/aur-schema.sql
|
||||||
|
|
||||||
5) Create a new user:
|
5) Install Python modules and dependencies:
|
||||||
|
|
||||||
|
# pacman -S python-mysql-connector python-pygit2 python-srcinfo
|
||||||
|
# python3 setup.py install
|
||||||
|
|
||||||
|
6) Create a new user:
|
||||||
|
|
||||||
# useradd -U -d /srv/http/aurweb -c 'AUR user' aur
|
# useradd -U -d /srv/http/aurweb -c 'AUR user' aur
|
||||||
|
|
||||||
6) Initialize the Git repository:
|
7) Initialize the Git repository:
|
||||||
|
|
||||||
# mkdir /srv/http/aurweb/aur.git/
|
# mkdir /srv/http/aurweb/aur.git/
|
||||||
# cd /srv/http/aurweb/aur.git/
|
# cd /srv/http/aurweb/aur.git/
|
||||||
# git init --bare
|
# git init --bare
|
||||||
# git config --local transfer.hideRefs '^refs/'
|
# git config --local transfer.hideRefs '^refs/'
|
||||||
# git config --local transfer.hideRefs '!refs/'
|
# git config --local --add transfer.hideRefs '!refs/'
|
||||||
# ln -s ../../git-interface/git-update.py hooks/update
|
# git config --local --add transfer.hideRefs '!HEAD'
|
||||||
|
# ln -s /usr/local/bin/aurweb-git-update hooks/update
|
||||||
# chown -R aur .
|
# chown -R aur .
|
||||||
|
|
||||||
7) Install needed Python modules:
|
8) Configure sshd(8) for the AUR. Add the following lines at the end of your
|
||||||
|
|
||||||
# pacman -S python-mysql-connector python-pygit2 python-srcinfo
|
|
||||||
|
|
||||||
8) Install the git-auth wrapper script:
|
|
||||||
|
|
||||||
# cd /srv/http/aurweb/git-interface/
|
|
||||||
# make && make install
|
|
||||||
|
|
||||||
9) Configure sshd(8) for the AUR. Add the following lines at the end of your
|
|
||||||
sshd_config(5) and restart the sshd. Note that OpenSSH 6.9 or newer is
|
sshd_config(5) and restart the sshd. Note that OpenSSH 6.9 or newer is
|
||||||
needed!
|
needed!
|
||||||
|
|
||||||
Match User aur
|
Match User aur
|
||||||
PasswordAuthentication no
|
PasswordAuthentication no
|
||||||
AuthorizedKeysCommand /usr/local/bin/aur-git-auth "%t" "%k"
|
AuthorizedKeysCommand /usr/local/bin/aurweb-git-auth "%t" "%k"
|
||||||
AuthorizedKeysCommandUser aur
|
AuthorizedKeysCommandUser aur
|
||||||
|
|
||||||
10) If you want to enable smart HTTP support with nginx and fcgiwrap, you can
|
9) If you want to enable smart HTTP support with nginx and fcgiwrap, you can
|
||||||
use the following directives:
|
use the following directives:
|
||||||
|
|
||||||
location ~ "^/([a-z0-9][a-z0-9.+_-]*?)(\.git)?/(git-(receive|upload)-pack|HEAD|info/refs|objects/(info/(http-)?alternates|packs)|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))$" {
|
location ~ "^/([a-z0-9][a-z0-9.+_-]*?)(\.git)?/(git-(receive|upload)-pack|HEAD|info/refs|objects/(info/(http-)?alternates|packs)|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))$" {
|
||||||
|
|
51
README
51
README
|
@ -1,40 +1,45 @@
|
||||||
aurweb
|
aurweb
|
||||||
======
|
======
|
||||||
|
|
||||||
aurweb is a framework for hosting the Arch User Repository (AUR), a collection
|
aurweb is a hosting platform for the Arch User Repository (AUR), a collection
|
||||||
of packaging scripts that are created and submitted by the Arch Linux
|
of packaging scripts that are created and submitted by the Arch Linux
|
||||||
community. The scripts contained in the repository (PKGBUILDs) can be built
|
community. The scripts contained in the repository can be built using `makepkg`
|
||||||
using makepkg and installed via the Arch Linux package manager pacman. The
|
and installed using the Arch Linux package manager `pacman`.
|
||||||
aurweb project aims to provide the necessary web interface, database schema,
|
|
||||||
and scripts for a multi-lingual community-driven repository.
|
|
||||||
|
|
||||||
Functionality
|
The aurweb project includes
|
||||||
-------------
|
|
||||||
|
|
||||||
* Users may submit source packages that contain a PKGBUILD.
|
* A web interface to search for packaging scripts and display package details.
|
||||||
* User accounts with varying permission levels (User, Trusted User, Developer).
|
* A SSH/Git interface to submit and update packages and package meta data.
|
||||||
* Ability to search for specific submitted packages.
|
* Community features such as comments, votes, package flagging and requests.
|
||||||
* Display package information by parsing meta-data provided with the packages.
|
* Editing/deletion of packages and accounts by Trusted Users and Developers.
|
||||||
* Users can make comments on package information page.
|
|
||||||
* Mark packages as out-of-date.
|
|
||||||
* Vote for well-done and popular user submitted packages.
|
|
||||||
* Trusted User and Developer can search for and modify accounts.
|
|
||||||
* Area for Trusted Users to post AUR-related proposals and vote on them.
|
* Area for Trusted Users to post AUR-related proposals and vote on them.
|
||||||
|
|
||||||
Directory Layout
|
Directory Layout
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
aurweb::
|
||||||
|
aurweb Python modules.
|
||||||
|
|
||||||
|
conf::
|
||||||
|
Configuration and configuration templates.
|
||||||
|
|
||||||
doc::
|
doc::
|
||||||
aurweb documentation.
|
Project documentation.
|
||||||
|
|
||||||
po::
|
po::
|
||||||
Translation files for strings in the aurweb interface.
|
Translation files for strings in the aurweb interface.
|
||||||
|
|
||||||
scripts::
|
schema::
|
||||||
aurblup package blacklist tool. Scripts for AUR maintenance.
|
Schema for the SQL database. Script for dummy data generation.
|
||||||
|
|
||||||
support::
|
scripts::
|
||||||
Schema for SQL database. Script for dummy data generation.
|
Scripts for AUR maintenance.
|
||||||
|
|
||||||
|
test::
|
||||||
|
Test suite and test cases.
|
||||||
|
|
||||||
|
upgrading::
|
||||||
|
Instructions for upgrading setups from one release to another.
|
||||||
|
|
||||||
web::
|
web::
|
||||||
Web interface for the AUR.
|
Web interface for the AUR.
|
||||||
|
@ -42,10 +47,10 @@ web::
|
||||||
Links
|
Links
|
||||||
-----
|
-----
|
||||||
|
|
||||||
* The repository is hosted at git://projects.archlinux.org/aurweb.git -- see
|
* The repository is hosted at git://git.archlinux.org/aurweb.git -- see
|
||||||
doc/CodingGuidelines for information on submitting patches.
|
doc/CodingGuidelines for information on the patch submission process.
|
||||||
|
|
||||||
* Discovered bugs can be submitted to the aurweb bug tracker:
|
* Bugs can (and should) be submitted to the aurweb bug tracker:
|
||||||
https://bugs.archlinux.org/index.php?project=2
|
https://bugs.archlinux.org/index.php?project=2
|
||||||
|
|
||||||
* Questions, comments, and patches related to aurweb can be sent to the AUR
|
* Questions, comments, and patches related to aurweb can be sent to the AUR
|
||||||
|
|
0
aurweb/__init__.py
Normal file
0
aurweb/__init__.py
Normal file
30
aurweb/config.py
Normal file
30
aurweb/config.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import configparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
_parser = None
|
||||||
|
|
||||||
|
|
||||||
|
def _get_parser():
|
||||||
|
global _parser
|
||||||
|
|
||||||
|
if not _parser:
|
||||||
|
_parser = configparser.RawConfigParser()
|
||||||
|
if 'AUR_CONFIG' in os.environ:
|
||||||
|
path = os.environ.get('AUR_CONFIG')
|
||||||
|
else:
|
||||||
|
path = "/etc/aurweb/config"
|
||||||
|
_parser.read(path)
|
||||||
|
|
||||||
|
return _parser
|
||||||
|
|
||||||
|
|
||||||
|
def get(section, option):
|
||||||
|
return _get_parser().get(section, option)
|
||||||
|
|
||||||
|
|
||||||
|
def getboolean(section, option):
|
||||||
|
return _get_parser().getboolean(section, option)
|
||||||
|
|
||||||
|
|
||||||
|
def getint(section, option):
|
||||||
|
return _get_parser().getint(section, option)
|
51
aurweb/db.py
Normal file
51
aurweb/db.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import mysql.connector
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
|
||||||
|
|
||||||
|
class Connection:
|
||||||
|
_conn = None
|
||||||
|
_paramstyle = None
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
aur_db_backend = aurweb.config.get('database', 'backend')
|
||||||
|
|
||||||
|
if aur_db_backend == 'mysql':
|
||||||
|
aur_db_host = aurweb.config.get('database', 'host')
|
||||||
|
aur_db_name = aurweb.config.get('database', 'name')
|
||||||
|
aur_db_user = aurweb.config.get('database', 'user')
|
||||||
|
aur_db_pass = aurweb.config.get('database', 'password')
|
||||||
|
aur_db_socket = aurweb.config.get('database', 'socket')
|
||||||
|
self._conn = mysql.connector.connect(host=aur_db_host,
|
||||||
|
user=aur_db_user,
|
||||||
|
passwd=aur_db_pass,
|
||||||
|
db=aur_db_name,
|
||||||
|
unix_socket=aur_db_socket,
|
||||||
|
buffered=True)
|
||||||
|
self._paramstyle = mysql.connector.paramstyle
|
||||||
|
elif aur_db_backend == 'sqlite':
|
||||||
|
aur_db_name = aurweb.config.get('database', 'name')
|
||||||
|
self._conn = sqlite3.connect(aur_db_name)
|
||||||
|
self._paramstyle = sqlite3.paramstyle
|
||||||
|
else:
|
||||||
|
raise ValueError('unsupported database backend')
|
||||||
|
|
||||||
|
def execute(self, query, params=()):
|
||||||
|
if self._paramstyle in ('format', 'pyformat'):
|
||||||
|
query = query.replace('%', '%%').replace('?', '%s')
|
||||||
|
elif self._paramstyle == 'qmark':
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise ValueError('unsupported paramstyle')
|
||||||
|
|
||||||
|
cur = self._conn.cursor()
|
||||||
|
cur.execute(query, params)
|
||||||
|
|
||||||
|
return cur
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
self._conn.commit()
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self._conn.close()
|
0
aurweb/git/__init__.py
Normal file
0
aurweb/git/__init__.py
Normal file
62
aurweb/git/auth.py
Executable file
62
aurweb/git/auth.py
Executable file
|
@ -0,0 +1,62 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import shlex
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
|
||||||
|
def format_command(env_vars, command, ssh_opts, ssh_key):
|
||||||
|
environment = ''
|
||||||
|
for key, var in env_vars.items():
|
||||||
|
environment += '{}={} '.format(key, shlex.quote(var))
|
||||||
|
|
||||||
|
command = shlex.quote(command)
|
||||||
|
command = '{}{}'.format(environment, command)
|
||||||
|
|
||||||
|
# The command is being substituted into an authorized_keys line below,
|
||||||
|
# so we need to escape the double quotes.
|
||||||
|
command = command.replace('"', '\\"')
|
||||||
|
msg = 'command="{}",{} {}'.format(command, ssh_opts, ssh_key)
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
valid_keytypes = aurweb.config.get('auth', 'valid-keytypes').split()
|
||||||
|
username_regex = aurweb.config.get('auth', 'username-regex')
|
||||||
|
git_serve_cmd = aurweb.config.get('auth', 'git-serve-cmd')
|
||||||
|
ssh_opts = aurweb.config.get('auth', 'ssh-options')
|
||||||
|
|
||||||
|
keytype = sys.argv[1]
|
||||||
|
keytext = sys.argv[2]
|
||||||
|
if keytype not in valid_keytypes:
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT Users.Username, Users.AccountTypeID FROM Users "
|
||||||
|
"INNER JOIN SSHPubKeys ON SSHPubKeys.UserID = Users.ID "
|
||||||
|
"WHERE SSHPubKeys.PubKey = ? AND Users.Suspended = 0",
|
||||||
|
(keytype + " " + keytext,))
|
||||||
|
|
||||||
|
row = cur.fetchone()
|
||||||
|
if not row or cur.fetchone():
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
user, account_type = row
|
||||||
|
if not re.match(username_regex, user):
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
env_vars = {
|
||||||
|
'AUR_USER': user,
|
||||||
|
'AUR_PRIVILEGED': '1' if account_type > 1 else '0',
|
||||||
|
}
|
||||||
|
key = keytype + ' ' + keytext
|
||||||
|
|
||||||
|
print(format_command(env_vars, git_serve_cmd, ssh_opts, key))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
451
aurweb/git/serve.py
Executable file
451
aurweb/git/serve.py
Executable file
|
@ -0,0 +1,451 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import shlex
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
notify_cmd = aurweb.config.get('notifications', 'notify-cmd')
|
||||||
|
|
||||||
|
repo_path = aurweb.config.get('serve', 'repo-path')
|
||||||
|
repo_regex = aurweb.config.get('serve', 'repo-regex')
|
||||||
|
git_shell_cmd = aurweb.config.get('serve', 'git-shell-cmd')
|
||||||
|
git_update_cmd = aurweb.config.get('serve', 'git-update-cmd')
|
||||||
|
ssh_cmdline = aurweb.config.get('serve', 'ssh-cmdline')
|
||||||
|
|
||||||
|
enable_maintenance = aurweb.config.getboolean('options', 'enable-maintenance')
|
||||||
|
maintenance_exc = aurweb.config.get('options', 'maintenance-exceptions').split()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_from_name(pkgbase):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
cur = conn.execute("SELECT ID FROM PackageBases WHERE Name = ?", [pkgbase])
|
||||||
|
|
||||||
|
row = cur.fetchone()
|
||||||
|
return row[0] if row else None
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_exists(pkgbase):
|
||||||
|
return pkgbase_from_name(pkgbase) is not None
|
||||||
|
|
||||||
|
|
||||||
|
def list_repos(user):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT Name, PackagerUID FROM PackageBases " +
|
||||||
|
"WHERE MaintainerUID = ?", [userid])
|
||||||
|
for row in cur:
|
||||||
|
print((' ' if row[1] else '*') + row[0])
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def create_pkgbase(pkgbase, user):
|
||||||
|
if not re.match(repo_regex, pkgbase):
|
||||||
|
die('{:s}: invalid repository name: {:s}'.format(action, pkgbase))
|
||||||
|
if pkgbase_exists(pkgbase):
|
||||||
|
die('{:s}: package base already exists: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
now = int(time.time())
|
||||||
|
cur = conn.execute("INSERT INTO PackageBases (Name, SubmittedTS, " +
|
||||||
|
"ModifiedTS, SubmitterUID, MaintainerUID) VALUES " +
|
||||||
|
"(?, ?, ?, ?, ?)", [pkgbase, now, now, userid, userid])
|
||||||
|
pkgbase_id = cur.lastrowid
|
||||||
|
|
||||||
|
cur = conn.execute("INSERT INTO PackageNotifications " +
|
||||||
|
"(PackageBaseID, UserID) VALUES (?, ?)",
|
||||||
|
[pkgbase_id, userid])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_adopt(pkgbase, user, privileged):
|
||||||
|
pkgbase_id = pkgbase_from_name(pkgbase)
|
||||||
|
if not pkgbase_id:
|
||||||
|
die('{:s}: package base not found: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT ID FROM PackageBases WHERE ID = ? AND " +
|
||||||
|
"MaintainerUID IS NULL", [pkgbase_id])
|
||||||
|
if not privileged and not cur.fetchone():
|
||||||
|
die('{:s}: permission denied: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
cur = conn.execute("UPDATE PackageBases SET MaintainerUID = ? " +
|
||||||
|
"WHERE ID = ?", [userid, pkgbase_id])
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT COUNT(*) FROM PackageNotifications WHERE " +
|
||||||
|
"PackageBaseID = ? AND UserID = ?",
|
||||||
|
[pkgbase_id, userid])
|
||||||
|
if cur.fetchone()[0] == 0:
|
||||||
|
cur = conn.execute("INSERT INTO PackageNotifications " +
|
||||||
|
"(PackageBaseID, UserID) VALUES (?, ?)",
|
||||||
|
[pkgbase_id, userid])
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
subprocess.Popen((notify_cmd, 'adopt', str(pkgbase_id), str(userid)))
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_get_comaintainers(pkgbase):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT UserName FROM PackageComaintainers " +
|
||||||
|
"INNER JOIN Users " +
|
||||||
|
"ON Users.ID = PackageComaintainers.UsersID " +
|
||||||
|
"INNER JOIN PackageBases " +
|
||||||
|
"ON PackageBases.ID = PackageComaintainers.PackageBaseID " +
|
||||||
|
"WHERE PackageBases.Name = ? " +
|
||||||
|
"ORDER BY Priority ASC", [pkgbase])
|
||||||
|
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_set_comaintainers(pkgbase, userlist, user, privileged):
|
||||||
|
pkgbase_id = pkgbase_from_name(pkgbase)
|
||||||
|
if not pkgbase_id:
|
||||||
|
die('{:s}: package base not found: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
if not privileged and not pkgbase_has_full_access(pkgbase, user):
|
||||||
|
die('{:s}: permission denied: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
userlist_old = set(pkgbase_get_comaintainers(pkgbase))
|
||||||
|
|
||||||
|
uids_old = set()
|
||||||
|
for olduser in userlist_old:
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?",
|
||||||
|
[olduser])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
uids_old.add(userid)
|
||||||
|
|
||||||
|
uids_new = set()
|
||||||
|
for newuser in userlist:
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?",
|
||||||
|
[newuser])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
uids_new.add(userid)
|
||||||
|
|
||||||
|
uids_add = uids_new - uids_old
|
||||||
|
uids_rem = uids_old - uids_new
|
||||||
|
|
||||||
|
i = 1
|
||||||
|
for userid in uids_new:
|
||||||
|
if userid in uids_add:
|
||||||
|
cur = conn.execute("INSERT INTO PackageComaintainers " +
|
||||||
|
"(PackageBaseID, UsersID, Priority) " +
|
||||||
|
"VALUES (?, ?, ?)", [pkgbase_id, userid, i])
|
||||||
|
subprocess.Popen((notify_cmd, 'comaintainer-add', str(pkgbase_id),
|
||||||
|
str(userid)))
|
||||||
|
else:
|
||||||
|
cur = conn.execute("UPDATE PackageComaintainers " +
|
||||||
|
"SET Priority = ? " +
|
||||||
|
"WHERE PackageBaseID = ? AND UsersID = ?",
|
||||||
|
[i, pkgbase_id, userid])
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
for userid in uids_rem:
|
||||||
|
cur = conn.execute("DELETE FROM PackageComaintainers " +
|
||||||
|
"WHERE PackageBaseID = ? AND UsersID = ?",
|
||||||
|
[pkgbase_id, userid])
|
||||||
|
subprocess.Popen((notify_cmd, 'comaintainer-remove',
|
||||||
|
str(pkgbase_id), str(userid)))
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgreq_by_pkgbase(pkgbase_id, reqtype):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT PackageRequests.ID FROM PackageRequests " +
|
||||||
|
"INNER JOIN RequestTypes ON " +
|
||||||
|
"RequestTypes.ID = PackageRequests.ReqTypeID " +
|
||||||
|
"WHERE PackageRequests.Status = 0 " +
|
||||||
|
"AND PackageRequests.PackageBaseID = ?" +
|
||||||
|
"AND RequestTypes.Name = ?", [pkgbase_id, reqtype])
|
||||||
|
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def pkgreq_close(reqid, reason, comments, autoclose=False):
|
||||||
|
statusmap = {'accepted': 2, 'rejected': 3}
|
||||||
|
if reason not in statusmap:
|
||||||
|
die('{:s}: invalid reason: {:s}'.format(action, reason))
|
||||||
|
status = statusmap[reason]
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
if autoclose:
|
||||||
|
userid = 0
|
||||||
|
else:
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
conn.execute("UPDATE PackageRequests SET Status = ?, ClosureComment = ? " +
|
||||||
|
"WHERE ID = ?", [status, comments, reqid])
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
subprocess.Popen((notify_cmd, 'request-close', str(userid), str(reqid),
|
||||||
|
reason)).wait()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_disown(pkgbase, user, privileged):
|
||||||
|
pkgbase_id = pkgbase_from_name(pkgbase)
|
||||||
|
if not pkgbase_id:
|
||||||
|
die('{:s}: package base not found: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
initialized_by_owner = pkgbase_has_full_access(pkgbase, user)
|
||||||
|
if not privileged and not initialized_by_owner:
|
||||||
|
die('{:s}: permission denied: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
# TODO: Support disowning package bases via package request.
|
||||||
|
|
||||||
|
# Scan through pending orphan requests and close them.
|
||||||
|
comment = 'The user {:s} disowned the package.'.format(user)
|
||||||
|
for reqid in pkgreq_by_pkgbase(pkgbase_id, 'orphan'):
|
||||||
|
pkgreq_close(reqid, 'accepted', comment, True)
|
||||||
|
|
||||||
|
comaintainers = []
|
||||||
|
new_maintainer_userid = None
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
# Make the first co-maintainer the new maintainer, unless the action was
|
||||||
|
# enforced by a Trusted User.
|
||||||
|
if initialized_by_owner:
|
||||||
|
comaintainers = pkgbase_get_comaintainers(pkgbase)
|
||||||
|
if len(comaintainers) > 0:
|
||||||
|
new_maintainer = comaintainers[0]
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?",
|
||||||
|
[new_maintainer])
|
||||||
|
new_maintainer_userid = cur.fetchone()[0]
|
||||||
|
comaintainers.remove(new_maintainer)
|
||||||
|
|
||||||
|
pkgbase_set_comaintainers(pkgbase, comaintainers, user, privileged)
|
||||||
|
cur = conn.execute("UPDATE PackageBases SET MaintainerUID = ? " +
|
||||||
|
"WHERE ID = ?", [new_maintainer_userid, pkgbase_id])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
if userid == 0:
|
||||||
|
die('{:s}: unknown user: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
subprocess.Popen((notify_cmd, 'disown', str(pkgbase_id), str(userid)))
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_set_keywords(pkgbase, keywords):
|
||||||
|
pkgbase_id = pkgbase_from_name(pkgbase)
|
||||||
|
if not pkgbase_id:
|
||||||
|
die('{:s}: package base not found: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
conn.execute("DELETE FROM PackageKeywords WHERE PackageBaseID = ?",
|
||||||
|
[pkgbase_id])
|
||||||
|
for keyword in keywords:
|
||||||
|
conn.execute("INSERT INTO PackageKeywords (PackageBaseID, Keyword) " +
|
||||||
|
"VALUES (?, ?)", [pkgbase_id, keyword])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_has_write_access(pkgbase, user):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT COUNT(*) FROM PackageBases " +
|
||||||
|
"LEFT JOIN PackageComaintainers " +
|
||||||
|
"ON PackageComaintainers.PackageBaseID = PackageBases.ID " +
|
||||||
|
"INNER JOIN Users " +
|
||||||
|
"ON Users.ID = PackageBases.MaintainerUID " +
|
||||||
|
"OR PackageBases.MaintainerUID IS NULL " +
|
||||||
|
"OR Users.ID = PackageComaintainers.UsersID " +
|
||||||
|
"WHERE Name = ? AND Username = ?", [pkgbase, user])
|
||||||
|
return cur.fetchone()[0] > 0
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_has_full_access(pkgbase, user):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT COUNT(*) FROM PackageBases " +
|
||||||
|
"INNER JOIN Users " +
|
||||||
|
"ON Users.ID = PackageBases.MaintainerUID " +
|
||||||
|
"WHERE Name = ? AND Username = ?", [pkgbase, user])
|
||||||
|
return cur.fetchone()[0] > 0
|
||||||
|
|
||||||
|
|
||||||
|
def die(msg):
|
||||||
|
sys.stderr.write("{:s}\n".format(msg))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def die_with_help(msg):
|
||||||
|
die(msg + "\nTry `{:s} help` for a list of commands.".format(ssh_cmdline))
|
||||||
|
|
||||||
|
|
||||||
|
def warn(msg):
|
||||||
|
sys.stderr.write("warning: {:s}\n".format(msg))
|
||||||
|
|
||||||
|
|
||||||
|
def usage(cmds):
|
||||||
|
sys.stderr.write("Commands:\n")
|
||||||
|
colwidth = max([len(cmd) for cmd in cmds.keys()]) + 4
|
||||||
|
for key in sorted(cmds):
|
||||||
|
sys.stderr.write(" " + key.ljust(colwidth) + cmds[key] + "\n")
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
user = os.environ.get('AUR_USER')
|
||||||
|
privileged = (os.environ.get('AUR_PRIVILEGED', '0') == '1')
|
||||||
|
ssh_cmd = os.environ.get('SSH_ORIGINAL_COMMAND')
|
||||||
|
ssh_client = os.environ.get('SSH_CLIENT')
|
||||||
|
|
||||||
|
if not ssh_cmd:
|
||||||
|
die_with_help("Interactive shell is disabled.")
|
||||||
|
cmdargv = shlex.split(ssh_cmd)
|
||||||
|
action = cmdargv[0]
|
||||||
|
remote_addr = ssh_client.split(' ')[0] if ssh_client else None
|
||||||
|
|
||||||
|
if enable_maintenance:
|
||||||
|
if remote_addr not in maintenance_exc:
|
||||||
|
die("The AUR is down due to maintenance. We will be back soon.")
|
||||||
|
|
||||||
|
if action == 'git' and cmdargv[1] in ('upload-pack', 'receive-pack'):
|
||||||
|
action = action + '-' + cmdargv[1]
|
||||||
|
del cmdargv[1]
|
||||||
|
|
||||||
|
if action == 'git-upload-pack' or action == 'git-receive-pack':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing path".format(action))
|
||||||
|
|
||||||
|
path = cmdargv[1].rstrip('/')
|
||||||
|
if not path.startswith('/'):
|
||||||
|
path = '/' + path
|
||||||
|
if not path.endswith('.git'):
|
||||||
|
path = path + '.git'
|
||||||
|
pkgbase = path[1:-4]
|
||||||
|
if not re.match(repo_regex, pkgbase):
|
||||||
|
die('{:s}: invalid repository name: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
if action == 'git-receive-pack' and pkgbase_exists(pkgbase):
|
||||||
|
if not privileged and not pkgbase_has_write_access(pkgbase, user):
|
||||||
|
die('{:s}: permission denied: {:s}'.format(action, user))
|
||||||
|
|
||||||
|
os.environ["AUR_USER"] = user
|
||||||
|
os.environ["AUR_PKGBASE"] = pkgbase
|
||||||
|
os.environ["GIT_NAMESPACE"] = pkgbase
|
||||||
|
cmd = action + " '" + repo_path + "'"
|
||||||
|
os.execl(git_shell_cmd, git_shell_cmd, '-c', cmd)
|
||||||
|
elif action == 'set-keywords':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing repository name".format(action))
|
||||||
|
pkgbase_set_keywords(cmdargv[1], cmdargv[2:])
|
||||||
|
elif action == 'list-repos':
|
||||||
|
if len(cmdargv) > 1:
|
||||||
|
die_with_help("{:s}: too many arguments".format(action))
|
||||||
|
list_repos(user)
|
||||||
|
elif action == 'setup-repo':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing repository name".format(action))
|
||||||
|
if len(cmdargv) > 2:
|
||||||
|
die_with_help("{:s}: too many arguments".format(action))
|
||||||
|
warn('{:s} is deprecated. '
|
||||||
|
'Use `git push` to create new repositories.'.format(action))
|
||||||
|
create_pkgbase(cmdargv[1], user)
|
||||||
|
elif action == 'restore':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing repository name".format(action))
|
||||||
|
if len(cmdargv) > 2:
|
||||||
|
die_with_help("{:s}: too many arguments".format(action))
|
||||||
|
|
||||||
|
pkgbase = cmdargv[1]
|
||||||
|
if not re.match(repo_regex, pkgbase):
|
||||||
|
die('{:s}: invalid repository name: {:s}'.format(action, pkgbase))
|
||||||
|
|
||||||
|
if pkgbase_exists(pkgbase):
|
||||||
|
die('{:s}: package base exists: {:s}'.format(action, pkgbase))
|
||||||
|
create_pkgbase(pkgbase, user)
|
||||||
|
|
||||||
|
os.environ["AUR_USER"] = user
|
||||||
|
os.environ["AUR_PKGBASE"] = pkgbase
|
||||||
|
os.execl(git_update_cmd, git_update_cmd, 'restore')
|
||||||
|
elif action == 'adopt':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing repository name".format(action))
|
||||||
|
if len(cmdargv) > 2:
|
||||||
|
die_with_help("{:s}: too many arguments".format(action))
|
||||||
|
|
||||||
|
pkgbase = cmdargv[1]
|
||||||
|
pkgbase_adopt(pkgbase, user, privileged)
|
||||||
|
elif action == 'disown':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing repository name".format(action))
|
||||||
|
if len(cmdargv) > 2:
|
||||||
|
die_with_help("{:s}: too many arguments".format(action))
|
||||||
|
|
||||||
|
pkgbase = cmdargv[1]
|
||||||
|
pkgbase_disown(pkgbase, user, privileged)
|
||||||
|
elif action == 'set-comaintainers':
|
||||||
|
if len(cmdargv) < 2:
|
||||||
|
die_with_help("{:s}: missing repository name".format(action))
|
||||||
|
|
||||||
|
pkgbase = cmdargv[1]
|
||||||
|
userlist = cmdargv[2:]
|
||||||
|
pkgbase_set_comaintainers(pkgbase, userlist, user, privileged)
|
||||||
|
elif action == 'help':
|
||||||
|
cmds = {
|
||||||
|
"adopt <name>": "Adopt a package base.",
|
||||||
|
"disown <name>": "Disown a package base.",
|
||||||
|
"help": "Show this help message and exit.",
|
||||||
|
"list-repos": "List all your repositories.",
|
||||||
|
"restore <name>": "Restore a deleted package base.",
|
||||||
|
"set-comaintainers <name> [...]": "Set package base co-maintainers.",
|
||||||
|
"set-keywords <name> [...]": "Change package base keywords.",
|
||||||
|
"setup-repo <name>": "Create a repository (deprecated).",
|
||||||
|
"git-receive-pack": "Internal command used with Git.",
|
||||||
|
"git-upload-pack": "Internal command used with Git.",
|
||||||
|
}
|
||||||
|
usage(cmds)
|
||||||
|
else:
|
||||||
|
die_with_help("invalid command: {:s}".format(action))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
423
aurweb/git/update.py
Executable file
423
aurweb/git/update.py
Executable file
|
@ -0,0 +1,423 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pygit2
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
import srcinfo.parse
|
||||||
|
import srcinfo.utils
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
notify_cmd = aurweb.config.get('notifications', 'notify-cmd')
|
||||||
|
|
||||||
|
repo_path = aurweb.config.get('serve', 'repo-path')
|
||||||
|
repo_regex = aurweb.config.get('serve', 'repo-regex')
|
||||||
|
|
||||||
|
max_blob_size = aurweb.config.getint('update', 'max-blob-size')
|
||||||
|
|
||||||
|
|
||||||
|
def size_humanize(num):
|
||||||
|
for unit in ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB']:
|
||||||
|
if abs(num) < 2048.0:
|
||||||
|
if isinstance(num, int):
|
||||||
|
return "{}{}".format(num, unit)
|
||||||
|
else:
|
||||||
|
return "{:.2f}{}".format(num, unit)
|
||||||
|
num /= 1024.0
|
||||||
|
return "{:.2f}{}".format(num, 'YiB')
|
||||||
|
|
||||||
|
|
||||||
|
def extract_arch_fields(pkginfo, field):
|
||||||
|
values = []
|
||||||
|
|
||||||
|
if field in pkginfo:
|
||||||
|
for val in pkginfo[field]:
|
||||||
|
values.append({"value": val, "arch": None})
|
||||||
|
|
||||||
|
for arch in ['i686', 'x86_64']:
|
||||||
|
if field + '_' + arch in pkginfo:
|
||||||
|
for val in pkginfo[field + '_' + arch]:
|
||||||
|
values.append({"value": val, "arch": arch})
|
||||||
|
|
||||||
|
return values
|
||||||
|
|
||||||
|
|
||||||
|
def parse_dep(depstring):
|
||||||
|
dep, _, desc = depstring.partition(': ')
|
||||||
|
depname = re.sub(r'(<|=|>).*', '', dep)
|
||||||
|
depcond = dep[len(depname):]
|
||||||
|
|
||||||
|
if (desc):
|
||||||
|
return (depname + ': ' + desc, depcond)
|
||||||
|
else:
|
||||||
|
return (depname, depcond)
|
||||||
|
|
||||||
|
|
||||||
|
def create_pkgbase(conn, pkgbase, user):
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
userid = cur.fetchone()[0]
|
||||||
|
|
||||||
|
now = int(time.time())
|
||||||
|
cur = conn.execute("INSERT INTO PackageBases (Name, SubmittedTS, " +
|
||||||
|
"ModifiedTS, SubmitterUID, MaintainerUID) VALUES " +
|
||||||
|
"(?, ?, ?, ?, ?)", [pkgbase, now, now, userid, userid])
|
||||||
|
pkgbase_id = cur.lastrowid
|
||||||
|
|
||||||
|
cur = conn.execute("INSERT INTO PackageNotifications " +
|
||||||
|
"(PackageBaseID, UserID) VALUES (?, ?)",
|
||||||
|
[pkgbase_id, userid])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
return pkgbase_id
|
||||||
|
|
||||||
|
|
||||||
|
def save_metadata(metadata, conn, user):
|
||||||
|
# Obtain package base ID and previous maintainer.
|
||||||
|
pkgbase = metadata['pkgbase']
|
||||||
|
cur = conn.execute("SELECT ID, MaintainerUID FROM PackageBases "
|
||||||
|
"WHERE Name = ?", [pkgbase])
|
||||||
|
(pkgbase_id, maintainer_uid) = cur.fetchone()
|
||||||
|
was_orphan = not maintainer_uid
|
||||||
|
|
||||||
|
# Obtain the user ID of the new maintainer.
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
user_id = int(cur.fetchone()[0])
|
||||||
|
|
||||||
|
# Update package base details and delete current packages.
|
||||||
|
now = int(time.time())
|
||||||
|
conn.execute("UPDATE PackageBases SET ModifiedTS = ?, " +
|
||||||
|
"PackagerUID = ?, OutOfDateTS = NULL WHERE ID = ?",
|
||||||
|
[now, user_id, pkgbase_id])
|
||||||
|
conn.execute("UPDATE PackageBases SET MaintainerUID = ? " +
|
||||||
|
"WHERE ID = ? AND MaintainerUID IS NULL",
|
||||||
|
[user_id, pkgbase_id])
|
||||||
|
for table in ('Sources', 'Depends', 'Relations', 'Licenses', 'Groups'):
|
||||||
|
conn.execute("DELETE FROM Package" + table + " WHERE EXISTS (" +
|
||||||
|
"SELECT * FROM Packages " +
|
||||||
|
"WHERE Packages.PackageBaseID = ? AND " +
|
||||||
|
"Package" + table + ".PackageID = Packages.ID)",
|
||||||
|
[pkgbase_id])
|
||||||
|
conn.execute("DELETE FROM Packages WHERE PackageBaseID = ?", [pkgbase_id])
|
||||||
|
|
||||||
|
for pkgname in srcinfo.utils.get_package_names(metadata):
|
||||||
|
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
||||||
|
|
||||||
|
if 'epoch' in pkginfo and int(pkginfo['epoch']) > 0:
|
||||||
|
ver = '{:d}:{:s}-{:s}'.format(int(pkginfo['epoch']),
|
||||||
|
pkginfo['pkgver'],
|
||||||
|
pkginfo['pkgrel'])
|
||||||
|
else:
|
||||||
|
ver = '{:s}-{:s}'.format(pkginfo['pkgver'], pkginfo['pkgrel'])
|
||||||
|
|
||||||
|
for field in ('pkgdesc', 'url'):
|
||||||
|
if field not in pkginfo:
|
||||||
|
pkginfo[field] = None
|
||||||
|
|
||||||
|
# Create a new package.
|
||||||
|
cur = conn.execute("INSERT INTO Packages (PackageBaseID, Name, " +
|
||||||
|
"Version, Description, URL) " +
|
||||||
|
"VALUES (?, ?, ?, ?, ?)",
|
||||||
|
[pkgbase_id, pkginfo['pkgname'], ver,
|
||||||
|
pkginfo['pkgdesc'], pkginfo['url']])
|
||||||
|
conn.commit()
|
||||||
|
pkgid = cur.lastrowid
|
||||||
|
|
||||||
|
# Add package sources.
|
||||||
|
for source_info in extract_arch_fields(pkginfo, 'source'):
|
||||||
|
conn.execute("INSERT INTO PackageSources (PackageID, Source, " +
|
||||||
|
"SourceArch) VALUES (?, ?, ?)",
|
||||||
|
[pkgid, source_info['value'], source_info['arch']])
|
||||||
|
|
||||||
|
# Add package dependencies.
|
||||||
|
for deptype in ('depends', 'makedepends',
|
||||||
|
'checkdepends', 'optdepends'):
|
||||||
|
cur = conn.execute("SELECT ID FROM DependencyTypes WHERE Name = ?",
|
||||||
|
[deptype])
|
||||||
|
deptypeid = cur.fetchone()[0]
|
||||||
|
for dep_info in extract_arch_fields(pkginfo, deptype):
|
||||||
|
depname, depcond = parse_dep(dep_info['value'])
|
||||||
|
deparch = dep_info['arch']
|
||||||
|
conn.execute("INSERT INTO PackageDepends (PackageID, " +
|
||||||
|
"DepTypeID, DepName, DepCondition, DepArch) " +
|
||||||
|
"VALUES (?, ?, ?, ?, ?)",
|
||||||
|
[pkgid, deptypeid, depname, depcond, deparch])
|
||||||
|
|
||||||
|
# Add package relations (conflicts, provides, replaces).
|
||||||
|
for reltype in ('conflicts', 'provides', 'replaces'):
|
||||||
|
cur = conn.execute("SELECT ID FROM RelationTypes WHERE Name = ?",
|
||||||
|
[reltype])
|
||||||
|
reltypeid = cur.fetchone()[0]
|
||||||
|
for rel_info in extract_arch_fields(pkginfo, reltype):
|
||||||
|
relname, relcond = parse_dep(rel_info['value'])
|
||||||
|
relarch = rel_info['arch']
|
||||||
|
conn.execute("INSERT INTO PackageRelations (PackageID, " +
|
||||||
|
"RelTypeID, RelName, RelCondition, RelArch) " +
|
||||||
|
"VALUES (?, ?, ?, ?, ?)",
|
||||||
|
[pkgid, reltypeid, relname, relcond, relarch])
|
||||||
|
|
||||||
|
# Add package licenses.
|
||||||
|
if 'license' in pkginfo:
|
||||||
|
for license in pkginfo['license']:
|
||||||
|
cur = conn.execute("SELECT ID FROM Licenses WHERE Name = ?",
|
||||||
|
[license])
|
||||||
|
row = cur.fetchone()
|
||||||
|
if row:
|
||||||
|
licenseid = row[0]
|
||||||
|
else:
|
||||||
|
cur = conn.execute("INSERT INTO Licenses (Name) " +
|
||||||
|
"VALUES (?)", [license])
|
||||||
|
conn.commit()
|
||||||
|
licenseid = cur.lastrowid
|
||||||
|
conn.execute("INSERT INTO PackageLicenses (PackageID, " +
|
||||||
|
"LicenseID) VALUES (?, ?)",
|
||||||
|
[pkgid, licenseid])
|
||||||
|
|
||||||
|
# Add package groups.
|
||||||
|
if 'groups' in pkginfo:
|
||||||
|
for group in pkginfo['groups']:
|
||||||
|
cur = conn.execute("SELECT ID FROM Groups WHERE Name = ?",
|
||||||
|
[group])
|
||||||
|
row = cur.fetchone()
|
||||||
|
if row:
|
||||||
|
groupid = row[0]
|
||||||
|
else:
|
||||||
|
cur = conn.execute("INSERT INTO Groups (Name) VALUES (?)",
|
||||||
|
[group])
|
||||||
|
conn.commit()
|
||||||
|
groupid = cur.lastrowid
|
||||||
|
conn.execute("INSERT INTO PackageGroups (PackageID, "
|
||||||
|
"GroupID) VALUES (?, ?)", [pkgid, groupid])
|
||||||
|
|
||||||
|
# Add user to notification list on adoption.
|
||||||
|
if was_orphan:
|
||||||
|
cur = conn.execute("SELECT COUNT(*) FROM PackageNotifications WHERE " +
|
||||||
|
"PackageBaseID = ? AND UserID = ?",
|
||||||
|
[pkgbase_id, user_id])
|
||||||
|
if cur.fetchone()[0] == 0:
|
||||||
|
conn.execute("INSERT INTO PackageNotifications " +
|
||||||
|
"(PackageBaseID, UserID) VALUES (?, ?)",
|
||||||
|
[pkgbase_id, user_id])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def update_notify(conn, user, pkgbase_id):
|
||||||
|
# Obtain the user ID of the new maintainer.
|
||||||
|
cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user])
|
||||||
|
user_id = int(cur.fetchone()[0])
|
||||||
|
|
||||||
|
# Execute the notification script.
|
||||||
|
subprocess.Popen((notify_cmd, 'update', str(user_id), str(pkgbase_id)))
|
||||||
|
|
||||||
|
|
||||||
|
def die(msg):
|
||||||
|
sys.stderr.write("error: {:s}\n".format(msg))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def warn(msg):
|
||||||
|
sys.stderr.write("warning: {:s}\n".format(msg))
|
||||||
|
|
||||||
|
|
||||||
|
def die_commit(msg, commit):
|
||||||
|
sys.stderr.write("error: The following error " +
|
||||||
|
"occurred when parsing commit\n")
|
||||||
|
sys.stderr.write("error: {:s}:\n".format(commit))
|
||||||
|
sys.stderr.write("error: {:s}\n".format(msg))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
repo = pygit2.Repository(repo_path)
|
||||||
|
|
||||||
|
user = os.environ.get("AUR_USER")
|
||||||
|
pkgbase = os.environ.get("AUR_PKGBASE")
|
||||||
|
privileged = (os.environ.get("AUR_PRIVILEGED", '0') == '1')
|
||||||
|
warn_or_die = warn if privileged else die
|
||||||
|
|
||||||
|
if len(sys.argv) == 2 and sys.argv[1] == "restore":
|
||||||
|
if 'refs/heads/' + pkgbase not in repo.listall_references():
|
||||||
|
die('{:s}: repository not found: {:s}'.format(sys.argv[1],
|
||||||
|
pkgbase))
|
||||||
|
refname = "refs/heads/master"
|
||||||
|
branchref = 'refs/heads/' + pkgbase
|
||||||
|
sha1_old = sha1_new = repo.lookup_reference(branchref).target
|
||||||
|
elif len(sys.argv) == 4:
|
||||||
|
refname, sha1_old, sha1_new = sys.argv[1:4]
|
||||||
|
else:
|
||||||
|
die("invalid arguments")
|
||||||
|
|
||||||
|
if refname != "refs/heads/master":
|
||||||
|
die("pushing to a branch other than master is restricted")
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
# Detect and deny non-fast-forwards.
|
||||||
|
if sha1_old != "0" * 40 and not privileged:
|
||||||
|
walker = repo.walk(sha1_old, pygit2.GIT_SORT_TOPOLOGICAL)
|
||||||
|
walker.hide(sha1_new)
|
||||||
|
if next(walker, None) is not None:
|
||||||
|
die("denying non-fast-forward (you should pull first)")
|
||||||
|
|
||||||
|
# Prepare the walker that validates new commits.
|
||||||
|
walker = repo.walk(sha1_new, pygit2.GIT_SORT_TOPOLOGICAL)
|
||||||
|
if sha1_old != "0" * 40:
|
||||||
|
walker.hide(sha1_old)
|
||||||
|
|
||||||
|
# Validate all new commits.
|
||||||
|
for commit in walker:
|
||||||
|
for fname in ('.SRCINFO', 'PKGBUILD'):
|
||||||
|
if fname not in commit.tree:
|
||||||
|
die_commit("missing {:s}".format(fname), str(commit.id))
|
||||||
|
|
||||||
|
for treeobj in commit.tree:
|
||||||
|
blob = repo[treeobj.id]
|
||||||
|
|
||||||
|
if isinstance(blob, pygit2.Tree):
|
||||||
|
die_commit("the repository must not contain subdirectories",
|
||||||
|
str(commit.id))
|
||||||
|
|
||||||
|
if not isinstance(blob, pygit2.Blob):
|
||||||
|
die_commit("not a blob object: {:s}".format(treeobj),
|
||||||
|
str(commit.id))
|
||||||
|
|
||||||
|
if blob.size > max_blob_size:
|
||||||
|
die_commit("maximum blob size ({:s}) exceeded".format(
|
||||||
|
size_humanize(max_blob_size)), str(commit.id))
|
||||||
|
|
||||||
|
metadata_raw = repo[commit.tree['.SRCINFO'].id].data.decode()
|
||||||
|
(metadata, errors) = srcinfo.parse.parse_srcinfo(metadata_raw)
|
||||||
|
if errors:
|
||||||
|
sys.stderr.write("error: The following errors occurred "
|
||||||
|
"when parsing .SRCINFO in commit\n")
|
||||||
|
sys.stderr.write("error: {:s}:\n".format(str(commit.id)))
|
||||||
|
for error in errors:
|
||||||
|
for err in error['error']:
|
||||||
|
sys.stderr.write("error: line {:d}: {:s}\n".format(
|
||||||
|
error['line'], err))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
metadata_pkgbase = metadata['pkgbase']
|
||||||
|
if not re.match(repo_regex, metadata_pkgbase):
|
||||||
|
die_commit('invalid pkgbase: {:s}'.format(metadata_pkgbase),
|
||||||
|
str(commit.id))
|
||||||
|
|
||||||
|
for pkgname in set(metadata['packages'].keys()):
|
||||||
|
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
||||||
|
|
||||||
|
for field in ('pkgver', 'pkgrel', 'pkgname'):
|
||||||
|
if field not in pkginfo:
|
||||||
|
die_commit('missing mandatory field: {:s}'.format(field),
|
||||||
|
str(commit.id))
|
||||||
|
|
||||||
|
if 'epoch' in pkginfo and not pkginfo['epoch'].isdigit():
|
||||||
|
die_commit('invalid epoch: {:s}'.format(pkginfo['epoch']),
|
||||||
|
str(commit.id))
|
||||||
|
|
||||||
|
if not re.match(r'[a-z0-9][a-z0-9\.+_-]*$', pkginfo['pkgname']):
|
||||||
|
die_commit('invalid package name: {:s}'.format(
|
||||||
|
pkginfo['pkgname']), str(commit.id))
|
||||||
|
|
||||||
|
max_len = {'pkgname': 255, 'pkgdesc': 255, 'url': 8000}
|
||||||
|
for field in max_len.keys():
|
||||||
|
if field in pkginfo and len(pkginfo[field]) > max_len[field]:
|
||||||
|
die_commit('{:s} field too long: {:s}'.format(field,
|
||||||
|
pkginfo[field]), str(commit.id))
|
||||||
|
|
||||||
|
for field in ('install', 'changelog'):
|
||||||
|
if field in pkginfo and not pkginfo[field] in commit.tree:
|
||||||
|
die_commit('missing {:s} file: {:s}'.format(field,
|
||||||
|
pkginfo[field]), str(commit.id))
|
||||||
|
|
||||||
|
for field in extract_arch_fields(pkginfo, 'source'):
|
||||||
|
fname = field['value']
|
||||||
|
if len(fname) > 8000:
|
||||||
|
die_commit('source entry too long: {:s}'.format(fname),
|
||||||
|
str(commit.id))
|
||||||
|
if "://" in fname or "lp:" in fname:
|
||||||
|
continue
|
||||||
|
if fname not in commit.tree:
|
||||||
|
die_commit('missing source file: {:s}'.format(fname),
|
||||||
|
str(commit.id))
|
||||||
|
|
||||||
|
# Display a warning if .SRCINFO is unchanged.
|
||||||
|
if sha1_old not in ("0000000000000000000000000000000000000000", sha1_new):
|
||||||
|
srcinfo_id_old = repo[sha1_old].tree['.SRCINFO'].id
|
||||||
|
srcinfo_id_new = repo[sha1_new].tree['.SRCINFO'].id
|
||||||
|
if srcinfo_id_old == srcinfo_id_new:
|
||||||
|
warn(".SRCINFO unchanged. "
|
||||||
|
"The package database will not be updated!")
|
||||||
|
|
||||||
|
# Read .SRCINFO from the HEAD commit.
|
||||||
|
metadata_raw = repo[repo[sha1_new].tree['.SRCINFO'].id].data.decode()
|
||||||
|
(metadata, errors) = srcinfo.parse.parse_srcinfo(metadata_raw)
|
||||||
|
|
||||||
|
# Ensure that the package base name matches the repository name.
|
||||||
|
metadata_pkgbase = metadata['pkgbase']
|
||||||
|
if metadata_pkgbase != pkgbase:
|
||||||
|
die('invalid pkgbase: {:s}, expected {:s}'.format(metadata_pkgbase,
|
||||||
|
pkgbase))
|
||||||
|
|
||||||
|
# Ensure that packages are neither blacklisted nor overwritten.
|
||||||
|
pkgbase = metadata['pkgbase']
|
||||||
|
cur = conn.execute("SELECT ID FROM PackageBases WHERE Name = ?", [pkgbase])
|
||||||
|
row = cur.fetchone()
|
||||||
|
pkgbase_id = row[0] if row else 0
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT Name FROM PackageBlacklist")
|
||||||
|
blacklist = [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT Name, Repo FROM OfficialProviders")
|
||||||
|
providers = dict(cur.fetchall())
|
||||||
|
|
||||||
|
for pkgname in srcinfo.utils.get_package_names(metadata):
|
||||||
|
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
||||||
|
pkgname = pkginfo['pkgname']
|
||||||
|
|
||||||
|
if pkgname in blacklist:
|
||||||
|
warn_or_die('package is blacklisted: {:s}'.format(pkgname))
|
||||||
|
if pkgname in providers:
|
||||||
|
warn_or_die('package already provided by [{:s}]: {:s}'.format(
|
||||||
|
providers[pkgname], pkgname))
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT COUNT(*) FROM Packages WHERE Name = ? " +
|
||||||
|
"AND PackageBaseID <> ?", [pkgname, pkgbase_id])
|
||||||
|
if cur.fetchone()[0] > 0:
|
||||||
|
die('cannot overwrite package: {:s}'.format(pkgname))
|
||||||
|
|
||||||
|
# Create a new package base if it does not exist yet.
|
||||||
|
if pkgbase_id == 0:
|
||||||
|
pkgbase_id = create_pkgbase(conn, pkgbase, user)
|
||||||
|
|
||||||
|
# Store package base details in the database.
|
||||||
|
save_metadata(metadata, conn, user)
|
||||||
|
|
||||||
|
# Create (or update) a branch with the name of the package base for better
|
||||||
|
# accessibility.
|
||||||
|
branchref = 'refs/heads/' + pkgbase
|
||||||
|
repo.create_reference(branchref, sha1_new, True)
|
||||||
|
|
||||||
|
# Work around a Git bug: The HEAD ref is not updated when using
|
||||||
|
# gitnamespaces. This can be removed once the bug fix is included in Git
|
||||||
|
# mainline. See
|
||||||
|
# http://git.661346.n2.nabble.com/PATCH-receive-pack-Create-a-HEAD-ref-for-ref-namespace-td7632149.html
|
||||||
|
# for details.
|
||||||
|
headref = 'refs/namespaces/' + pkgbase + '/HEAD'
|
||||||
|
repo.create_reference(headref, sha1_new, True)
|
||||||
|
|
||||||
|
# Send package update notifications.
|
||||||
|
update_notify(conn, user, pkgbase_id)
|
||||||
|
|
||||||
|
# Close the database.
|
||||||
|
cur.close()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
0
aurweb/scripts/__init__.py
Normal file
0
aurweb/scripts/__init__.py
Normal file
55
aurweb/scripts/aurblup.py
Executable file
55
aurweb/scripts/aurblup.py
Executable file
|
@ -0,0 +1,55 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import pyalpm
|
||||||
|
import re
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
db_path = aurweb.config.get('aurblup', 'db-path')
|
||||||
|
sync_dbs = aurweb.config.get('aurblup', 'sync-dbs').split(' ')
|
||||||
|
server = aurweb.config.get('aurblup', 'server')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
blacklist = set()
|
||||||
|
providers = set()
|
||||||
|
repomap = dict()
|
||||||
|
|
||||||
|
h = pyalpm.Handle("/", db_path)
|
||||||
|
for sync_db in sync_dbs:
|
||||||
|
repo = h.register_syncdb(sync_db, pyalpm.SIG_DATABASE_OPTIONAL)
|
||||||
|
repo.servers = [server.replace("%s", sync_db)]
|
||||||
|
t = h.init_transaction()
|
||||||
|
repo.update(False)
|
||||||
|
t.release()
|
||||||
|
|
||||||
|
for pkg in repo.pkgcache:
|
||||||
|
blacklist.add(pkg.name)
|
||||||
|
[blacklist.add(x) for x in pkg.replaces]
|
||||||
|
providers.add((pkg.name, pkg.name))
|
||||||
|
repomap[(pkg.name, pkg.name)] = repo.name
|
||||||
|
for provision in pkg.provides:
|
||||||
|
provisionname = re.sub(r'(<|=|>).*', '', provision)
|
||||||
|
providers.add((pkg.name, provisionname))
|
||||||
|
repomap[(pkg.name, provisionname)] = repo.name
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT Name, Provides FROM OfficialProviders")
|
||||||
|
oldproviders = set(cur.fetchall())
|
||||||
|
|
||||||
|
for pkg, provides in providers.difference(oldproviders):
|
||||||
|
repo = repomap[(pkg, provides)]
|
||||||
|
conn.execute("INSERT INTO OfficialProviders (Name, Repo, Provides) "
|
||||||
|
"VALUES (?, ?, ?)", [pkg, repo, provides])
|
||||||
|
for pkg, provides in oldproviders.difference(providers):
|
||||||
|
conn.execute("DELETE FROM OfficialProviders "
|
||||||
|
"WHERE Name = ? AND Provides = ?", [pkg, provides])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
38
aurweb/scripts/mkpkglists.py
Executable file
38
aurweb/scripts/mkpkglists.py
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import gzip
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
packagesfile = aurweb.config.get('mkpkglists', 'packagesfile')
|
||||||
|
pkgbasefile = aurweb.config.get('mkpkglists', 'pkgbasefile')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
datestr = datetime.datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT")
|
||||||
|
pkglist_header = "# AUR package list, generated on " + datestr
|
||||||
|
pkgbaselist_header = "# AUR package base list, generated on " + datestr
|
||||||
|
|
||||||
|
with gzip.open(packagesfile, "w") as f:
|
||||||
|
f.write(bytes(pkglist_header + "\n", "UTF-8"))
|
||||||
|
cur = conn.execute("SELECT Packages.Name FROM Packages " +
|
||||||
|
"INNER JOIN PackageBases " +
|
||||||
|
"ON PackageBases.ID = Packages.PackageBaseID " +
|
||||||
|
"WHERE PackageBases.PackagerUID IS NOT NULL")
|
||||||
|
f.writelines([bytes(x[0] + "\n", "UTF-8") for x in cur.fetchall()])
|
||||||
|
|
||||||
|
with gzip.open(pkgbasefile, "w") as f:
|
||||||
|
f.write(bytes(pkgbaselist_header + "\n", "UTF-8"))
|
||||||
|
cur = conn.execute("SELECT Name FROM PackageBases " +
|
||||||
|
"WHERE PackagerUID IS NOT NULL")
|
||||||
|
f.writelines([bytes(x[0] + "\n", "UTF-8") for x in cur.fetchall()])
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
455
aurweb/scripts/notify.py
Executable file
455
aurweb/scripts/notify.py
Executable file
|
@ -0,0 +1,455 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import email.mime.text
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import textwrap
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
aur_location = aurweb.config.get('options', 'aur_location')
|
||||||
|
aur_request_ml = aurweb.config.get('options', 'aur_request_ml')
|
||||||
|
|
||||||
|
sendmail = aurweb.config.get('notifications', 'sendmail')
|
||||||
|
sender = aurweb.config.get('notifications', 'sender')
|
||||||
|
reply_to = aurweb.config.get('notifications', 'reply-to')
|
||||||
|
|
||||||
|
|
||||||
|
def headers_cc(cclist):
|
||||||
|
return {'Cc': str.join(', ', cclist)}
|
||||||
|
|
||||||
|
|
||||||
|
def headers_msgid(thread_id):
|
||||||
|
return {'Message-ID': thread_id}
|
||||||
|
|
||||||
|
|
||||||
|
def headers_reply(thread_id):
|
||||||
|
return {'In-Reply-To': thread_id, 'References': thread_id}
|
||||||
|
|
||||||
|
|
||||||
|
def send_notification(to, subject, body, refs, headers={}):
|
||||||
|
wrapped = ''
|
||||||
|
for line in body.splitlines():
|
||||||
|
wrapped += textwrap.fill(line, break_long_words=False) + '\n'
|
||||||
|
if refs:
|
||||||
|
body = wrapped + '\n' + refs
|
||||||
|
else:
|
||||||
|
body = wrapped
|
||||||
|
|
||||||
|
for recipient in to:
|
||||||
|
msg = email.mime.text.MIMEText(body, 'plain', 'utf-8')
|
||||||
|
msg['Subject'] = subject
|
||||||
|
msg['From'] = sender
|
||||||
|
msg['Reply-to'] = reply_to
|
||||||
|
msg['To'] = recipient
|
||||||
|
|
||||||
|
for key, value in headers.items():
|
||||||
|
msg[key] = value
|
||||||
|
|
||||||
|
p = subprocess.Popen([sendmail, '-t', '-oi'], stdin=subprocess.PIPE)
|
||||||
|
p.communicate(msg.as_bytes())
|
||||||
|
|
||||||
|
|
||||||
|
def username_from_id(conn, uid):
|
||||||
|
cur = conn.execute('SELECT UserName FROM Users WHERE ID = ?', [uid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_from_id(conn, pkgbase_id):
|
||||||
|
cur = conn.execute('SELECT Name FROM PackageBases WHERE ID = ?',
|
||||||
|
[pkgbase_id])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def pkgbase_from_pkgreq(conn, reqid):
|
||||||
|
cur = conn.execute('SELECT PackageBaseID FROM PackageRequests ' +
|
||||||
|
'WHERE ID = ?', [reqid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_user_email(conn, uid):
|
||||||
|
cur = conn.execute('SELECT Email FROM Users WHERE ID = ?', [uid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_maintainer_email(conn, pkgbase_id):
|
||||||
|
cur = conn.execute('SELECT Users.Email FROM Users ' +
|
||||||
|
'INNER JOIN PackageBases ' +
|
||||||
|
'ON PackageBases.MaintainerUID = Users.ID WHERE ' +
|
||||||
|
'PackageBases.ID = ?', [pkgbase_id])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_recipients(conn, pkgbase_id, uid):
|
||||||
|
cur = conn.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
||||||
|
'INNER JOIN PackageNotifications ' +
|
||||||
|
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
||||||
|
'PackageNotifications.UserID != ? AND ' +
|
||||||
|
'PackageNotifications.PackageBaseID = ?',
|
||||||
|
[uid, pkgbase_id])
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_comment_recipients(conn, pkgbase_id, uid):
|
||||||
|
cur = conn.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
||||||
|
'INNER JOIN PackageNotifications ' +
|
||||||
|
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
||||||
|
'Users.CommentNotify = 1 AND ' +
|
||||||
|
'PackageNotifications.UserID != ? AND ' +
|
||||||
|
'PackageNotifications.PackageBaseID = ?',
|
||||||
|
[uid, pkgbase_id])
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_update_recipients(conn, pkgbase_id, uid):
|
||||||
|
cur = conn.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
||||||
|
'INNER JOIN PackageNotifications ' +
|
||||||
|
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
||||||
|
'Users.UpdateNotify = 1 AND ' +
|
||||||
|
'PackageNotifications.UserID != ? AND ' +
|
||||||
|
'PackageNotifications.PackageBaseID = ?',
|
||||||
|
[uid, pkgbase_id])
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_ownership_recipients(conn, pkgbase_id, uid):
|
||||||
|
cur = conn.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
||||||
|
'INNER JOIN PackageNotifications ' +
|
||||||
|
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
||||||
|
'Users.OwnershipNotify = 1 AND ' +
|
||||||
|
'PackageNotifications.UserID != ? AND ' +
|
||||||
|
'PackageNotifications.PackageBaseID = ?',
|
||||||
|
[uid, pkgbase_id])
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_request_recipients(conn, reqid):
|
||||||
|
cur = conn.execute('SELECT DISTINCT Users.Email FROM PackageRequests ' +
|
||||||
|
'INNER JOIN PackageBases ' +
|
||||||
|
'ON PackageBases.ID = PackageRequests.PackageBaseID ' +
|
||||||
|
'INNER JOIN Users ' +
|
||||||
|
'ON Users.ID = PackageRequests.UsersID ' +
|
||||||
|
'OR Users.ID = PackageBases.MaintainerUID ' +
|
||||||
|
'WHERE PackageRequests.ID = ?', [reqid])
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_tu_vote_reminder_recipients(conn, vote_id):
|
||||||
|
cur = conn.execute('SELECT Users.Email FROM Users ' +
|
||||||
|
'WHERE AccountTypeID = 2 ' +
|
||||||
|
'EXCEPT SELECT Users.Email FROM Users ' +
|
||||||
|
'INNER JOIN TU_Votes ' +
|
||||||
|
'ON TU_Votes.UserID = Users.ID ' +
|
||||||
|
'WHERE TU_Votes.VoteID = ?', [vote_id])
|
||||||
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
|
def get_comment(conn, comment_id):
|
||||||
|
cur = conn.execute('SELECT Comments FROM PackageComments WHERE ID = ?',
|
||||||
|
[comment_id])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_flagger_comment(conn, pkgbase_id):
|
||||||
|
cur = conn.execute('SELECT FlaggerComment FROM PackageBases WHERE ID = ?',
|
||||||
|
[pkgbase_id])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_request_comment(conn, reqid):
|
||||||
|
cur = conn.execute('SELECT Comments FROM PackageRequests WHERE ID = ?',
|
||||||
|
[reqid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def get_request_closure_comment(conn, reqid):
|
||||||
|
cur = conn.execute('SELECT ClosureComment FROM PackageRequests ' +
|
||||||
|
'WHERE ID = ?', [reqid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def send_resetkey(conn, uid):
|
||||||
|
cur = conn.execute('SELECT UserName, Email, ResetKey FROM Users ' +
|
||||||
|
'WHERE ID = ?', [uid])
|
||||||
|
username, to, resetkey = cur.fetchone()
|
||||||
|
|
||||||
|
subject = 'AUR Password Reset'
|
||||||
|
body = 'A password reset request was submitted for the account %s ' \
|
||||||
|
'associated with your email address. If you wish to reset your ' \
|
||||||
|
'password follow the link [1] below, otherwise ignore this ' \
|
||||||
|
'message and nothing will happen.' % (username)
|
||||||
|
refs = '[1] ' + aur_location + '/passreset/?resetkey=' + resetkey
|
||||||
|
|
||||||
|
send_notification([to], subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def welcome(conn, uid):
|
||||||
|
cur = conn.execute('SELECT UserName, Email, ResetKey FROM Users ' +
|
||||||
|
'WHERE ID = ?', [uid])
|
||||||
|
username, to, resetkey = cur.fetchone()
|
||||||
|
|
||||||
|
subject = 'Welcome to the Arch User Repository'
|
||||||
|
body = 'Welcome to the Arch User Repository! In order to set an initial ' \
|
||||||
|
'password for your new account, please click the link [1] below. ' \
|
||||||
|
'If the link does not work, try copying and pasting it into your ' \
|
||||||
|
'browser.'
|
||||||
|
refs = '[1] ' + aur_location + '/passreset/?resetkey=' + resetkey
|
||||||
|
|
||||||
|
send_notification([to], subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def comment(conn, uid, pkgbase_id, comment_id):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = get_comment_recipients(conn, pkgbase_id, uid)
|
||||||
|
text = get_comment(conn, comment_id)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Comment for %s' % (pkgbase)
|
||||||
|
body = '%s [1] added the following comment to %s [2]:' % (user, pkgbase)
|
||||||
|
body += '\n\n' + text + '\n\n'
|
||||||
|
body += 'If you no longer wish to receive notifications about this ' \
|
||||||
|
'package, please go to the package page [2] and select "%s".' % \
|
||||||
|
('Disable notifications')
|
||||||
|
refs = '[1] ' + user_uri + '\n'
|
||||||
|
refs += '[2] ' + pkgbase_uri
|
||||||
|
thread_id = '<pkg-notifications-' + pkgbase + '@aur.archlinux.org>'
|
||||||
|
headers = headers_reply(thread_id)
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs, headers)
|
||||||
|
|
||||||
|
|
||||||
|
def update(conn, uid, pkgbase_id):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = get_update_recipients(conn, pkgbase_id, uid)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Package Update: %s' % (pkgbase)
|
||||||
|
body = '%s [1] pushed a new commit to %s [2].' % (user, pkgbase)
|
||||||
|
body += '\n\n'
|
||||||
|
body += 'If you no longer wish to receive notifications about this ' \
|
||||||
|
'package, please go to the package page [2] and select "%s".' % \
|
||||||
|
('Disable notifications')
|
||||||
|
refs = '[1] ' + user_uri + '\n'
|
||||||
|
refs += '[2] ' + pkgbase_uri
|
||||||
|
thread_id = '<pkg-notifications-' + pkgbase + '@aur.archlinux.org>'
|
||||||
|
headers = headers_reply(thread_id)
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs, headers)
|
||||||
|
|
||||||
|
|
||||||
|
def flag(conn, uid, pkgbase_id):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = [get_maintainer_email(conn, pkgbase_id)]
|
||||||
|
text = get_flagger_comment(conn, pkgbase_id)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Out-of-date Notification for %s' % (pkgbase)
|
||||||
|
body = 'Your package %s [1] has been flagged out-of-date by %s [2]:' % \
|
||||||
|
(pkgbase, user)
|
||||||
|
body += '\n\n' + text
|
||||||
|
refs = '[1] ' + pkgbase_uri + '\n'
|
||||||
|
refs += '[2] ' + user_uri
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def adopt(conn, pkgbase_id, uid):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = get_ownership_recipients(conn, pkgbase_id, uid)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Ownership Notification for %s' % (pkgbase)
|
||||||
|
body = 'The package %s [1] was adopted by %s [2].' % (pkgbase, user)
|
||||||
|
refs = '[1] ' + pkgbase_uri + '\n'
|
||||||
|
refs += '[2] ' + user_uri
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def disown(conn, pkgbase_id, uid):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = get_ownership_recipients(conn, pkgbase_id, uid)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Ownership Notification for %s' % (pkgbase)
|
||||||
|
body = 'The package %s [1] was disowned by %s [2].' % (pkgbase, user)
|
||||||
|
refs = '[1] ' + pkgbase_uri + '\n'
|
||||||
|
refs += '[2] ' + user_uri
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def comaintainer_add(conn, pkgbase_id, uid):
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = [get_user_email(conn, uid)]
|
||||||
|
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Co-Maintainer Notification for %s' % (pkgbase)
|
||||||
|
body = 'You were added to the co-maintainer list of %s [1].' % (pkgbase)
|
||||||
|
refs = '[1] ' + pkgbase_uri + '\n'
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def comaintainer_remove(conn, pkgbase_id, uid):
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = [get_user_email(conn, uid)]
|
||||||
|
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Co-Maintainer Notification for %s' % (pkgbase)
|
||||||
|
body = ('You were removed from the co-maintainer list of %s [1].' %
|
||||||
|
(pkgbase))
|
||||||
|
refs = '[1] ' + pkgbase_uri + '\n'
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def delete(conn, uid, old_pkgbase_id, new_pkgbase_id=None):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
old_pkgbase = pkgbase_from_id(conn, old_pkgbase_id)
|
||||||
|
if new_pkgbase_id:
|
||||||
|
new_pkgbase = pkgbase_from_id(conn, new_pkgbase_id)
|
||||||
|
to = get_recipients(conn, old_pkgbase_id, uid)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + old_pkgbase + '/'
|
||||||
|
|
||||||
|
subject = 'AUR Package deleted: %s' % (old_pkgbase)
|
||||||
|
if new_pkgbase_id:
|
||||||
|
new_pkgbase_uri = aur_location + '/pkgbase/' + new_pkgbase + '/'
|
||||||
|
body = '%s [1] merged %s [2] into %s [3].\n\n' \
|
||||||
|
'If you no longer wish receive notifications about the new ' \
|
||||||
|
'package, please go to [3] and click "%s".' %\
|
||||||
|
(user, old_pkgbase, new_pkgbase, 'Disable notifications')
|
||||||
|
refs = '[1] ' + user_uri + '\n'
|
||||||
|
refs += '[2] ' + pkgbase_uri + '\n'
|
||||||
|
refs += '[3] ' + new_pkgbase_uri
|
||||||
|
else:
|
||||||
|
body = '%s [1] deleted %s [2].\n\n' \
|
||||||
|
'You will no longer receive notifications about this ' \
|
||||||
|
'package.' % (user, old_pkgbase)
|
||||||
|
refs = '[1] ' + user_uri + '\n'
|
||||||
|
refs += '[2] ' + pkgbase_uri
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def request_open(conn, uid, reqid, reqtype, pkgbase_id, merge_into=None):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
pkgbase = pkgbase_from_id(conn, pkgbase_id)
|
||||||
|
to = [aur_request_ml]
|
||||||
|
cc = get_request_recipients(conn, reqid)
|
||||||
|
text = get_request_comment(conn, reqid)
|
||||||
|
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
subject = '[PRQ#%d] %s Request for %s' % \
|
||||||
|
(int(reqid), reqtype.title(), pkgbase)
|
||||||
|
if merge_into:
|
||||||
|
merge_into_uri = aur_location + '/pkgbase/' + merge_into + '/'
|
||||||
|
body = '%s [1] filed a request to merge %s [2] into %s [3]:' % \
|
||||||
|
(user, pkgbase, merge_into)
|
||||||
|
body += '\n\n' + text
|
||||||
|
refs = '[1] ' + user_uri + '\n'
|
||||||
|
refs += '[2] ' + pkgbase_uri + '\n'
|
||||||
|
refs += '[3] ' + merge_into_uri
|
||||||
|
else:
|
||||||
|
body = '%s [1] filed a %s request for %s [2]:' % \
|
||||||
|
(user, reqtype, pkgbase)
|
||||||
|
body += '\n\n' + text
|
||||||
|
refs = '[1] ' + user_uri + '\n'
|
||||||
|
refs += '[2] ' + pkgbase_uri + '\n'
|
||||||
|
thread_id = '<pkg-request-' + reqid + '@aur.archlinux.org>'
|
||||||
|
# Use a deterministic Message-ID for the first email referencing a request.
|
||||||
|
headers = headers_msgid(thread_id)
|
||||||
|
headers.update(headers_cc(cc))
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs, headers)
|
||||||
|
|
||||||
|
|
||||||
|
def request_close(conn, uid, reqid, reason):
|
||||||
|
to = [aur_request_ml]
|
||||||
|
cc = get_request_recipients(conn, reqid)
|
||||||
|
text = get_request_closure_comment(conn, reqid)
|
||||||
|
|
||||||
|
subject = '[PRQ#%d] Request %s' % (int(reqid), reason.title())
|
||||||
|
if int(uid):
|
||||||
|
user = username_from_id(conn, uid)
|
||||||
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
body = 'Request #%d has been %s by %s [1]' % (int(reqid), reason, user)
|
||||||
|
refs = '[1] ' + user_uri
|
||||||
|
else:
|
||||||
|
body = 'Request #%d has been %s automatically by the Arch User ' \
|
||||||
|
'Repository package request system' % (int(reqid), reason)
|
||||||
|
refs = None
|
||||||
|
if text.strip() == '':
|
||||||
|
body += '.'
|
||||||
|
else:
|
||||||
|
body += ':\n\n' + text
|
||||||
|
thread_id = '<pkg-request-' + reqid + '@aur.archlinux.org>'
|
||||||
|
headers = headers_reply(thread_id)
|
||||||
|
headers.update(headers_cc(cc))
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs, headers)
|
||||||
|
|
||||||
|
|
||||||
|
def tu_vote_reminder(conn, vote_id):
|
||||||
|
to = get_tu_vote_reminder_recipients(conn, vote_id)
|
||||||
|
|
||||||
|
vote_uri = aur_location + '/tu/?id=' + vote_id
|
||||||
|
|
||||||
|
subject = 'TU Vote Reminder: Proposal %d' % (int(vote_id))
|
||||||
|
body = 'Please remember to cast your vote on proposal %d [1]. ' \
|
||||||
|
'The voting period ends in less than 48 hours.' % (int(vote_id))
|
||||||
|
refs = '[1] ' + vote_uri
|
||||||
|
|
||||||
|
send_notification(to, subject, body, refs)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
action = sys.argv[1]
|
||||||
|
action_map = {
|
||||||
|
'send-resetkey': send_resetkey,
|
||||||
|
'welcome': welcome,
|
||||||
|
'comment': comment,
|
||||||
|
'update': update,
|
||||||
|
'flag': flag,
|
||||||
|
'adopt': adopt,
|
||||||
|
'disown': disown,
|
||||||
|
'comaintainer-add': comaintainer_add,
|
||||||
|
'comaintainer-remove': comaintainer_remove,
|
||||||
|
'delete': delete,
|
||||||
|
'request-open': request_open,
|
||||||
|
'request-close': request_close,
|
||||||
|
'tu-vote-reminder': tu_vote_reminder,
|
||||||
|
}
|
||||||
|
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
action_map[action](conn, *sys.argv[2:])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
20
aurweb/scripts/pkgmaint.py
Executable file
20
aurweb/scripts/pkgmaint.py
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
limit_to = int(time.time()) - 86400
|
||||||
|
conn.execute("DELETE FROM PackageBases WHERE " +
|
||||||
|
"SubmittedTS < ? AND PackagerUID IS NULL", [limit_to])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
26
aurweb/scripts/popupdate.py
Executable file
26
aurweb/scripts/popupdate.py
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
conn.execute("UPDATE PackageBases SET NumVotes = (" +
|
||||||
|
"SELECT COUNT(*) FROM PackageVotes " +
|
||||||
|
"WHERE PackageVotes.PackageBaseID = PackageBases.ID)")
|
||||||
|
|
||||||
|
now = int(time.time())
|
||||||
|
conn.execute("UPDATE PackageBases SET Popularity = (" +
|
||||||
|
"SELECT COALESCE(SUM(POWER(0.98, (? - VoteTS) / 86400)), 0.0) " +
|
||||||
|
"FROM PackageVotes WHERE PackageVotes.PackageBaseID = " +
|
||||||
|
"PackageBases.ID AND NOT VoteTS IS NULL)", [now])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
28
aurweb/scripts/tuvotereminder.py
Executable file
28
aurweb/scripts/tuvotereminder.py
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import time
|
||||||
|
|
||||||
|
import aurweb.config
|
||||||
|
import aurweb.db
|
||||||
|
|
||||||
|
notify_cmd = aurweb.config.get('notifications', 'notify-cmd')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
now = int(time.time())
|
||||||
|
filter_from = now + 500
|
||||||
|
filter_to = now + 172800
|
||||||
|
|
||||||
|
cur = conn.execute("SELECT ID FROM TU_VoteInfo " +
|
||||||
|
"WHERE End >= ? AND End <= ?",
|
||||||
|
[filter_from, filter_to])
|
||||||
|
|
||||||
|
for vote_id in [row[0] for row in cur.fetchall()]:
|
||||||
|
subprocess.Popen((notify_cmd, 'tu-vote-reminder', str(vote_id))).wait()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -1,5 +1,5 @@
|
||||||
[database]
|
[database]
|
||||||
dsn_prefix = mysql
|
backend = mysql
|
||||||
host = localhost
|
host = localhost
|
||||||
socket = /var/run/mysqld/mysqld.sock
|
socket = /var/run/mysqld/mysqld.sock
|
||||||
name = AUR
|
name = AUR
|
||||||
|
@ -46,17 +46,24 @@ RSA = SHA256:Ju+yWiMb/2O+gKQ9RJCDqvRg7l+Q95KFAeqM5sr6l2s
|
||||||
[auth]
|
[auth]
|
||||||
valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
|
valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
|
||||||
username-regex = [a-zA-Z0-9]+[.\-_]?[a-zA-Z0-9]+$
|
username-regex = [a-zA-Z0-9]+[.\-_]?[a-zA-Z0-9]+$
|
||||||
git-serve-cmd = /srv/http/aurweb/git-interface/git-serve.py
|
git-serve-cmd = /usr/local/bin/aurweb-git-serve
|
||||||
ssh-options = no-port-forwarding,no-X11-forwarding,no-pty
|
ssh-options = restrict
|
||||||
|
|
||||||
[serve]
|
[serve]
|
||||||
repo-path = /srv/http/aurweb/aur.git/
|
repo-path = /srv/http/aurweb/aur.git/
|
||||||
repo-regex = [a-z0-9][a-z0-9.+_-]*$
|
repo-regex = [a-z0-9][a-z0-9.+_-]*$
|
||||||
git-shell-cmd = /usr/bin/git-shell
|
git-shell-cmd = /usr/bin/git-shell
|
||||||
git-update-cmd = /srv/http/aurweb/git-interface/git-update.py
|
git-update-cmd = /usr/local/bin/aurweb-git-update
|
||||||
ssh-cmdline = ssh aur@aur.archlinux.org
|
ssh-cmdline = ssh aur@aur.archlinux.org
|
||||||
|
|
||||||
|
[update]
|
||||||
|
max-blob-size = 256000
|
||||||
|
|
||||||
[aurblup]
|
[aurblup]
|
||||||
db-path = /srv/http/aurweb/aurblup/
|
db-path = /srv/http/aurweb/aurblup/
|
||||||
sync-dbs = core extra community multilib testing community-testing
|
sync-dbs = core extra community multilib testing community-testing
|
||||||
servers = ftp://mirrors.kernel.org/archlinux/%s/os/x86_64
|
server = ftp://mirrors.kernel.org/archlinux/%s/os/x86_64
|
||||||
|
|
||||||
|
[mkpkglists]
|
||||||
|
packagesfile = /srv/http/aurweb/web/html/packages.gz
|
||||||
|
pkgbasefile = /srv/http/aurweb/web/html/pkgbase.gz
|
||||||
|
|
|
@ -22,15 +22,15 @@ Authentication: git-auth
|
||||||
Pushing to package repositories is possible via SSH. In order to access the SSH
|
Pushing to package repositories is possible via SSH. In order to access the SSH
|
||||||
interface, users first need to add an SSH public key to their account using the
|
interface, users first need to add an SSH public key to their account using the
|
||||||
web interface. Authentication is performed by the git-auth
|
web interface. Authentication is performed by the git-auth
|
||||||
AuthorizedKeysCommand script (see sshd_config(5) for details) that looks up the
|
AuthorizedKeysCommand script (see sshd_config(5) for details) which looks up
|
||||||
public key in the AUR user table. Using this concept of "virtual users", there
|
the public key in the AUR user table. Using this concept of "virtual users",
|
||||||
is no need to create separate UNIX accounts for each registered AUR user.
|
there is no need to create separate UNIX accounts for each registered AUR user.
|
||||||
|
|
||||||
If the public key is found, the corresponding authorized_keys line is printed
|
If the public key is found, the corresponding authorized_keys line is printed
|
||||||
to stdout. If the public key does not exist, the login is denied. The
|
to stdout. If the public key does not exist, the login is denied. The
|
||||||
authorized_keys line also contains a forced command such that authenticated
|
authorized_keys line also contains a forced command such that authenticated
|
||||||
users cannot access anything on the server except for the aurweb SSH interface.
|
users cannot access anything on the server except for the aurweb SSH interface.
|
||||||
The forced command can be configured in the aurweb configuration file and
|
The forced command can be configured in the aurweb configuration file and it
|
||||||
usually points to the git-serve program.
|
usually points to the git-serve program.
|
||||||
|
|
||||||
The INSTALL file in the top-level directory contains detailed instructions on
|
The INSTALL file in the top-level directory contains detailed instructions on
|
||||||
|
@ -43,17 +43,18 @@ The git-serve command, the "aurweb shell", provides different subcommands:
|
||||||
|
|
||||||
* The help command shows a list of available commands.
|
* The help command shows a list of available commands.
|
||||||
* The list-repos command lists all repositories of the authenticated user.
|
* The list-repos command lists all repositories of the authenticated user.
|
||||||
|
* The set-keywords command modifies the keywords assigned to a package base.
|
||||||
* The setup-repo command can be used to create a new repository.
|
* The setup-repo command can be used to create a new repository.
|
||||||
* The restore command can be used to restore a deleted package base.
|
* The restore command can be used to restore a deleted package base.
|
||||||
* The git-{receive,upload}-pack commands are redirected to git-shell(1).
|
* The git-{receive,upload}-pack commands are redirected to git-shell(1).
|
||||||
|
|
||||||
The requested command is extracted from the SSH_ORIGINAL_COMMAND environment
|
The command is extracted from the SSH_ORIGINAL_COMMAND environment variable
|
||||||
variable which is usually set by the SSH daemon. If no command is specified,
|
which is usually set by the SSH daemon. If no command is specified, git-serve
|
||||||
git-serve displays a message that aurweb does not provide an interactive shell.
|
displays a message stating that aurweb does not provide an interactive shell.
|
||||||
|
|
||||||
When invoking git-shell(1), the git-serve command also redirects all paths to
|
When invoking git-shell(1), the git-serve command also redirects all paths to
|
||||||
the shared Git repository and sets up the GIT_NAMESPACE environment variable
|
the shared Git repository and sets up the GIT_NAMESPACE environment variable
|
||||||
such that Git updates the right namespaced branch.
|
such that Git updates the correct namespaced branch.
|
||||||
|
|
||||||
The Update Hook: git-update
|
The Update Hook: git-update
|
||||||
---------------------------
|
---------------------------
|
||||||
|
@ -62,7 +63,7 @@ The Git update hook, called git-update, performs several subtasks:
|
||||||
|
|
||||||
* Prevent from creating branches or tags other than master.
|
* Prevent from creating branches or tags other than master.
|
||||||
* Deny non-fast-forwards, except for Trusted Users and Developers.
|
* Deny non-fast-forwards, except for Trusted Users and Developers.
|
||||||
* Check each new commit (validate meta data, impose file size limits, ...)
|
* Verify each new commit (validate meta data, impose file size limits, ...)
|
||||||
* Update package base information and package information in the database.
|
* Update package base information and package information in the database.
|
||||||
* Update the named branch and the namespaced HEAD ref of the package.
|
* Update the named branch and the namespaced HEAD ref of the package.
|
||||||
|
|
||||||
|
@ -74,9 +75,8 @@ Accessing Git repositories via HTTP
|
||||||
|
|
||||||
Git repositories can also be accessed via HTTP by configuring the web server to
|
Git repositories can also be accessed via HTTP by configuring the web server to
|
||||||
forward specific requests to git-http-backend(1). Note that, since Git
|
forward specific requests to git-http-backend(1). Note that, since Git
|
||||||
namespaces are used internally, the web server also needs to rewrite URIs and
|
namespaces are used internally, the web server needs to rewrite URIs and setup
|
||||||
setup the GIT_NAMESPACE environment variable accordingly before forwarding a
|
the GIT_NAMESPACE environment variable accordingly before forwarding a request.
|
||||||
request.
|
|
||||||
|
|
||||||
An example configuration for nginx and fcgiwrap can be found in the INSTALL
|
An example configuration for nginx and fcgiwrap can be found in the INSTALL
|
||||||
instructions in the top-level directory.
|
instructions in the top-level directory.
|
||||||
|
@ -86,10 +86,11 @@ Further Configuration
|
||||||
|
|
||||||
When using Git namespaces, Git advertises refs outside the current namespace as
|
When using Git namespaces, Git advertises refs outside the current namespace as
|
||||||
so-called "have" lines. This is normally used to reduce traffic but it has the
|
so-called "have" lines. This is normally used to reduce traffic but it has the
|
||||||
opposite effect in the case of aurweb: Many essentially useless lines are
|
opposite effect in the case of aurweb: Most of the refs transferred to the
|
||||||
transferred to the Git client during `git push` operations.
|
client during `git push` operations belong to branches of other package bases
|
||||||
|
and are essentially useless.
|
||||||
|
|
||||||
In order to omit these advertisements, add the strings "^refs/" and "!refs/" to
|
In order to omit these advertisements, one can add the strings "^refs/",
|
||||||
the transfer.hideRefs configuration setting. Note that the order of these
|
"!refs/" and "!HEAD" to the transfer.hideRefs configuration setting. Note that
|
||||||
patterns is important ("^refs/" must come first) and that Git 2.7 or newer is
|
the order of these patterns is important ("^refs/" must come first) and that
|
||||||
required for them to work.
|
Git 2.7 or newer is required for them to work.
|
||||||
|
|
|
@ -21,7 +21,7 @@ strings for the translation to be usable, and it may have to be disabled.
|
||||||
|
|
||||||
1. Check out the aurweb source using git:
|
1. Check out the aurweb source using git:
|
||||||
|
|
||||||
$ git clone git://projects.archlinux.org/aurweb.git aurweb-git
|
$ git clone git://git.archlinux.org/aurweb.git aurweb-git
|
||||||
|
|
||||||
2. Go into the "po/" directory in the aurweb source and run msginit(1) to
|
2. Go into the "po/" directory in the aurweb source and run msginit(1) to
|
||||||
create a initial translation file from our translation catalog:
|
create a initial translation file from our translation catalog:
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
GIT_INTERFACE_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
|
|
||||||
|
|
||||||
include config.mk
|
|
||||||
|
|
||||||
git-auth.sh:
|
|
||||||
sed 's#%GIT_INTERFACE_DIR%#$(GIT_INTERFACE_DIR)#' <git-auth.sh.in >git-auth.sh
|
|
||||||
chmod +x git-auth.sh
|
|
||||||
|
|
||||||
install: git-auth.sh
|
|
||||||
install -Dm0755 git-auth.sh "$(DESTDIR)$(PREFIX)/bin/aur-git-auth"
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
rm -f "$(DESTDIR)$(PREFIX)/bin/aur-git-auth"
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f git-auth.sh
|
|
||||||
|
|
||||||
.PHONY: install uninstall clean
|
|
|
@ -1 +0,0 @@
|
||||||
PREFIX = /usr/local
|
|
|
@ -1,69 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import mysql.connector
|
|
||||||
import shlex
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def format_command(env_vars, command, ssh_opts, ssh_key):
|
|
||||||
environment = ''
|
|
||||||
for key, var in env_vars.items():
|
|
||||||
environment += '{}={} '.format(key, shlex.quote(var))
|
|
||||||
|
|
||||||
command = shlex.quote(command)
|
|
||||||
command = '{}{}'.format(environment, command)
|
|
||||||
|
|
||||||
# The command is being substituted into an authorized_keys line below,
|
|
||||||
# so we need to escape the double quotes.
|
|
||||||
command = command.replace('"', '\\"')
|
|
||||||
msg = 'command="{}",{} {}'.format(command, ssh_opts, ssh_key)
|
|
||||||
return msg
|
|
||||||
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
valid_keytypes = config.get('auth', 'valid-keytypes').split()
|
|
||||||
username_regex = config.get('auth', 'username-regex')
|
|
||||||
git_serve_cmd = config.get('auth', 'git-serve-cmd')
|
|
||||||
ssh_opts = config.get('auth', 'ssh-options')
|
|
||||||
|
|
||||||
keytype = sys.argv[1]
|
|
||||||
keytext = sys.argv[2]
|
|
||||||
if keytype not in valid_keytypes:
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
|
|
||||||
cur = db.cursor()
|
|
||||||
cur.execute("SELECT Users.Username, Users.AccountTypeID FROM Users " +
|
|
||||||
"INNER JOIN SSHPubKeys ON SSHPubKeys.UserID = Users.ID "
|
|
||||||
"WHERE SSHPubKeys.PubKey = %s AND Users.Suspended = 0",
|
|
||||||
(keytype + " " + keytext,))
|
|
||||||
|
|
||||||
if cur.rowcount != 1:
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
user, account_type = cur.fetchone()
|
|
||||||
if not re.match(username_regex, user):
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
env_vars = {
|
|
||||||
'AUR_USER': user,
|
|
||||||
'AUR_PRIVILEGED': '1' if account_type > 1 else '0',
|
|
||||||
}
|
|
||||||
key = keytype + ' ' + keytext
|
|
||||||
|
|
||||||
print(format_command(env_vars, git_serve_cmd, ssh_opts, key))
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
%GIT_INTERFACE_DIR%/git-auth.py "$1" "$2"
|
|
|
@ -1,217 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import shlex
|
|
||||||
import sys
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
repo_path = config.get('serve', 'repo-path')
|
|
||||||
repo_regex = config.get('serve', 'repo-regex')
|
|
||||||
git_shell_cmd = config.get('serve', 'git-shell-cmd')
|
|
||||||
git_update_cmd = config.get('serve', 'git-update-cmd')
|
|
||||||
ssh_cmdline = config.get('serve', 'ssh-cmdline')
|
|
||||||
|
|
||||||
enable_maintenance = config.getboolean('options', 'enable-maintenance')
|
|
||||||
maintenance_exc = config.get('options', 'maintenance-exceptions').split()
|
|
||||||
|
|
||||||
|
|
||||||
def pkgbase_from_name(pkgbase):
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket)
|
|
||||||
cur = db.cursor()
|
|
||||||
cur.execute("SELECT ID FROM PackageBases WHERE Name = %s", [pkgbase])
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
row = cur.fetchone()
|
|
||||||
return row[0] if row else None
|
|
||||||
|
|
||||||
|
|
||||||
def pkgbase_exists(pkgbase):
|
|
||||||
return pkgbase_from_name(pkgbase) is not None
|
|
||||||
|
|
||||||
|
|
||||||
def list_repos(user):
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
cur.execute("SELECT ID FROM Users WHERE Username = %s ", [user])
|
|
||||||
userid = cur.fetchone()[0]
|
|
||||||
if userid == 0:
|
|
||||||
die('{:s}: unknown user: {:s}'.format(action, user))
|
|
||||||
|
|
||||||
cur.execute("SELECT Name, PackagerUID FROM PackageBases " +
|
|
||||||
"WHERE MaintainerUID = %s ", [userid])
|
|
||||||
for row in cur:
|
|
||||||
print((' ' if row[1] else '*') + row[0])
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
def create_pkgbase(pkgbase, user):
|
|
||||||
if not re.match(repo_regex, pkgbase):
|
|
||||||
die('{:s}: invalid repository name: {:s}'.format(action, pkgbase))
|
|
||||||
if pkgbase_exists(pkgbase):
|
|
||||||
die('{:s}: package base already exists: {:s}'.format(action, pkgbase))
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
cur.execute("SELECT ID FROM Users WHERE Username = %s ", [user])
|
|
||||||
userid = cur.fetchone()[0]
|
|
||||||
if userid == 0:
|
|
||||||
die('{:s}: unknown user: {:s}'.format(action, user))
|
|
||||||
|
|
||||||
cur.execute("INSERT INTO PackageBases (Name, SubmittedTS, ModifiedTS, " +
|
|
||||||
"SubmitterUID, MaintainerUID) VALUES (%s, UNIX_TIMESTAMP(), " +
|
|
||||||
"UNIX_TIMESTAMP(), %s, %s)", [pkgbase, userid, userid])
|
|
||||||
pkgbase_id = cur.lastrowid
|
|
||||||
|
|
||||||
cur.execute("INSERT INTO PackageNotifications (PackageBaseID, UserID) " +
|
|
||||||
"VALUES (%s, %s)", [pkgbase_id, userid])
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
def pkgbase_set_keywords(pkgbase, keywords):
|
|
||||||
pkgbase_id = pkgbase_from_name(pkgbase)
|
|
||||||
if not pkgbase_id:
|
|
||||||
die('{:s}: package base not found: {:s}'.format(action, pkgbase))
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
cur.execute("DELETE FROM PackageKeywords WHERE PackageBaseID = %s",
|
|
||||||
[pkgbase_id])
|
|
||||||
for keyword in keywords:
|
|
||||||
cur.execute("INSERT INTO PackageKeywords (PackageBaseID, Keyword) "
|
|
||||||
"VALUES (%s, %s)", [pkgbase_id, keyword])
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
def check_permissions(pkgbase, user):
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
if os.environ.get('AUR_PRIVILEGED', '0') == '1':
|
|
||||||
return True
|
|
||||||
|
|
||||||
cur.execute("SELECT COUNT(*) FROM PackageBases " +
|
|
||||||
"LEFT JOIN PackageComaintainers " +
|
|
||||||
"ON PackageComaintainers.PackageBaseID = PackageBases.ID " +
|
|
||||||
"INNER JOIN Users ON Users.ID = PackageBases.MaintainerUID " +
|
|
||||||
"OR PackageBases.MaintainerUID IS NULL " +
|
|
||||||
"OR Users.ID = PackageComaintainers.UsersID " +
|
|
||||||
"WHERE Name = %s AND Username = %s", [pkgbase, user])
|
|
||||||
return cur.fetchone()[0] > 0
|
|
||||||
|
|
||||||
|
|
||||||
def die(msg):
|
|
||||||
sys.stderr.write("{:s}\n".format(msg))
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def die_with_help(msg):
|
|
||||||
die(msg + "\nTry `{:s} help` for a list of commands.".format(ssh_cmdline))
|
|
||||||
|
|
||||||
|
|
||||||
user = os.environ.get("AUR_USER")
|
|
||||||
cmd = os.environ.get("SSH_ORIGINAL_COMMAND")
|
|
||||||
if not cmd:
|
|
||||||
die_with_help("Interactive shell is disabled.")
|
|
||||||
cmdargv = shlex.split(cmd)
|
|
||||||
action = cmdargv[0]
|
|
||||||
|
|
||||||
if enable_maintenance:
|
|
||||||
remote_addr = os.environ["SSH_CLIENT"].split(" ")[0]
|
|
||||||
if remote_addr not in maintenance_exc:
|
|
||||||
die("The AUR is down due to maintenance. We will be back soon.")
|
|
||||||
|
|
||||||
if action == 'git-upload-pack' or action == 'git-receive-pack':
|
|
||||||
if len(cmdargv) < 2:
|
|
||||||
die_with_help("{:s}: missing path".format(action))
|
|
||||||
|
|
||||||
path = cmdargv[1].rstrip('/')
|
|
||||||
if not path.startswith('/'):
|
|
||||||
path = '/' + path
|
|
||||||
if not path.endswith('.git'):
|
|
||||||
path = path + '.git'
|
|
||||||
pkgbase = path[1:-4]
|
|
||||||
if not re.match(repo_regex, pkgbase):
|
|
||||||
die('{:s}: invalid repository name: {:s}'.format(action, pkgbase))
|
|
||||||
|
|
||||||
if not pkgbase_exists(pkgbase):
|
|
||||||
create_pkgbase(pkgbase, user)
|
|
||||||
|
|
||||||
if action == 'git-receive-pack':
|
|
||||||
if not check_permissions(pkgbase, user):
|
|
||||||
die('{:s}: permission denied: {:s}'.format(action, user))
|
|
||||||
|
|
||||||
os.environ["AUR_USER"] = user
|
|
||||||
os.environ["AUR_PKGBASE"] = pkgbase
|
|
||||||
os.environ["GIT_NAMESPACE"] = pkgbase
|
|
||||||
cmd = action + " '" + repo_path + "'"
|
|
||||||
os.execl(git_shell_cmd, git_shell_cmd, '-c', cmd)
|
|
||||||
elif action == 'set-keywords':
|
|
||||||
if len(cmdargv) < 2:
|
|
||||||
die_with_help("{:s}: missing repository name".format(action))
|
|
||||||
pkgbase_set_keywords(cmdargv[1], cmdargv[2:])
|
|
||||||
elif action == 'list-repos':
|
|
||||||
if len(cmdargv) > 1:
|
|
||||||
die_with_help("{:s}: too many arguments".format(action))
|
|
||||||
list_repos(user)
|
|
||||||
elif action == 'setup-repo':
|
|
||||||
if len(cmdargv) < 2:
|
|
||||||
die_with_help("{:s}: missing repository name".format(action))
|
|
||||||
if len(cmdargv) > 2:
|
|
||||||
die_with_help("{:s}: too many arguments".format(action))
|
|
||||||
create_pkgbase(cmdargv[1], user)
|
|
||||||
elif action == 'restore':
|
|
||||||
if len(cmdargv) < 2:
|
|
||||||
die_with_help("{:s}: missing repository name".format(action))
|
|
||||||
if len(cmdargv) > 2:
|
|
||||||
die_with_help("{:s}: too many arguments".format(action))
|
|
||||||
|
|
||||||
pkgbase = cmdargv[1]
|
|
||||||
if not re.match(repo_regex, pkgbase):
|
|
||||||
die('{:s}: invalid repository name: {:s}'.format(action, pkgbase))
|
|
||||||
|
|
||||||
if pkgbase_exists(pkgbase):
|
|
||||||
die('{:s}: package base exists: {:s}'.format(action, pkgbase))
|
|
||||||
create_pkgbase(pkgbase, user)
|
|
||||||
|
|
||||||
os.environ["AUR_USER"] = user
|
|
||||||
os.environ["AUR_PKGBASE"] = pkgbase
|
|
||||||
os.execl(git_update_cmd, git_update_cmd, 'restore')
|
|
||||||
elif action == 'help':
|
|
||||||
die("Commands:\n" +
|
|
||||||
" help Show this help message and exit.\n" +
|
|
||||||
" list-repos List all your repositories.\n" +
|
|
||||||
" restore <name> Restore a deleted package base.\n" +
|
|
||||||
" set-keywords <name> [...] Change package base keywords.\n" +
|
|
||||||
" setup-repo <name> Create an empty repository.\n" +
|
|
||||||
" git-receive-pack Internal command used with Git.\n" +
|
|
||||||
" git-upload-pack Internal command used with Git.")
|
|
||||||
else:
|
|
||||||
die_with_help("invalid command: {:s}".format(action))
|
|
|
@ -1,363 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
import pygit2
|
|
||||||
import re
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import srcinfo.parse
|
|
||||||
import srcinfo.utils
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
notify_cmd = config.get('notifications', 'notify-cmd')
|
|
||||||
|
|
||||||
repo_path = config.get('serve', 'repo-path')
|
|
||||||
repo_regex = config.get('serve', 'repo-regex')
|
|
||||||
|
|
||||||
|
|
||||||
def extract_arch_fields(pkginfo, field):
|
|
||||||
values = []
|
|
||||||
|
|
||||||
if field in pkginfo:
|
|
||||||
for val in pkginfo[field]:
|
|
||||||
values.append({"value": val, "arch": None})
|
|
||||||
|
|
||||||
for arch in ['i686', 'x86_64']:
|
|
||||||
if field + '_' + arch in pkginfo:
|
|
||||||
for val in pkginfo[field + '_' + arch]:
|
|
||||||
values.append({"value": val, "arch": arch})
|
|
||||||
|
|
||||||
return values
|
|
||||||
|
|
||||||
|
|
||||||
def parse_dep(depstring):
|
|
||||||
dep, _, desc = depstring.partition(': ')
|
|
||||||
depname = re.sub(r'(<|=|>).*', '', dep)
|
|
||||||
depcond = dep[len(depname):]
|
|
||||||
|
|
||||||
if (desc):
|
|
||||||
return (depname + ': ' + desc, depcond)
|
|
||||||
else:
|
|
||||||
return (depname, depcond)
|
|
||||||
|
|
||||||
|
|
||||||
def save_metadata(metadata, db, cur, user):
|
|
||||||
# Obtain package base ID and previous maintainer.
|
|
||||||
pkgbase = metadata['pkgbase']
|
|
||||||
cur.execute("SELECT ID, MaintainerUID FROM PackageBases "
|
|
||||||
"WHERE Name = %s", [pkgbase])
|
|
||||||
(pkgbase_id, maintainer_uid) = cur.fetchone()
|
|
||||||
was_orphan = not maintainer_uid
|
|
||||||
|
|
||||||
# Obtain the user ID of the new maintainer.
|
|
||||||
cur.execute("SELECT ID FROM Users WHERE Username = %s", [user])
|
|
||||||
user_id = int(cur.fetchone()[0])
|
|
||||||
|
|
||||||
# Update package base details and delete current packages.
|
|
||||||
cur.execute("UPDATE PackageBases SET ModifiedTS = UNIX_TIMESTAMP(), " +
|
|
||||||
"PackagerUID = %s, OutOfDateTS = NULL WHERE ID = %s",
|
|
||||||
[user_id, pkgbase_id])
|
|
||||||
cur.execute("UPDATE PackageBases SET MaintainerUID = %s " +
|
|
||||||
"WHERE ID = %s AND MaintainerUID IS NULL",
|
|
||||||
[user_id, pkgbase_id])
|
|
||||||
cur.execute("DELETE FROM Packages WHERE PackageBaseID = %s",
|
|
||||||
[pkgbase_id])
|
|
||||||
|
|
||||||
for pkgname in srcinfo.utils.get_package_names(metadata):
|
|
||||||
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
|
||||||
|
|
||||||
if 'epoch' in pkginfo and int(pkginfo['epoch']) > 0:
|
|
||||||
ver = '{:d}:{:s}-{:s}'.format(int(pkginfo['epoch']),
|
|
||||||
pkginfo['pkgver'],
|
|
||||||
pkginfo['pkgrel'])
|
|
||||||
else:
|
|
||||||
ver = '{:s}-{:s}'.format(pkginfo['pkgver'], pkginfo['pkgrel'])
|
|
||||||
|
|
||||||
for field in ('pkgdesc', 'url'):
|
|
||||||
if field not in pkginfo:
|
|
||||||
pkginfo[field] = None
|
|
||||||
|
|
||||||
# Create a new package.
|
|
||||||
cur.execute("INSERT INTO Packages (PackageBaseID, Name, " +
|
|
||||||
"Version, Description, URL) " +
|
|
||||||
"VALUES (%s, %s, %s, %s, %s)",
|
|
||||||
[pkgbase_id, pkginfo['pkgname'], ver,
|
|
||||||
pkginfo['pkgdesc'], pkginfo['url']])
|
|
||||||
db.commit()
|
|
||||||
pkgid = cur.lastrowid
|
|
||||||
|
|
||||||
# Add package sources.
|
|
||||||
for source_info in extract_arch_fields(pkginfo, 'source'):
|
|
||||||
cur.execute("INSERT INTO PackageSources (PackageID, Source, " +
|
|
||||||
"SourceArch) VALUES (%s, %s, %s)",
|
|
||||||
[pkgid, source_info['value'], source_info['arch']])
|
|
||||||
|
|
||||||
# Add package dependencies.
|
|
||||||
for deptype in ('depends', 'makedepends',
|
|
||||||
'checkdepends', 'optdepends'):
|
|
||||||
cur.execute("SELECT ID FROM DependencyTypes WHERE Name = %s",
|
|
||||||
[deptype])
|
|
||||||
deptypeid = cur.fetchone()[0]
|
|
||||||
for dep_info in extract_arch_fields(pkginfo, deptype):
|
|
||||||
depname, depcond = parse_dep(dep_info['value'])
|
|
||||||
deparch = dep_info['arch']
|
|
||||||
cur.execute("INSERT INTO PackageDepends (PackageID, " +
|
|
||||||
"DepTypeID, DepName, DepCondition, DepArch) " +
|
|
||||||
"VALUES (%s, %s, %s, %s, %s)",
|
|
||||||
[pkgid, deptypeid, depname, depcond, deparch])
|
|
||||||
|
|
||||||
# Add package relations (conflicts, provides, replaces).
|
|
||||||
for reltype in ('conflicts', 'provides', 'replaces'):
|
|
||||||
cur.execute("SELECT ID FROM RelationTypes WHERE Name = %s",
|
|
||||||
[reltype])
|
|
||||||
reltypeid = cur.fetchone()[0]
|
|
||||||
for rel_info in extract_arch_fields(pkginfo, reltype):
|
|
||||||
relname, relcond = parse_dep(rel_info['value'])
|
|
||||||
relarch = rel_info['arch']
|
|
||||||
cur.execute("INSERT INTO PackageRelations (PackageID, " +
|
|
||||||
"RelTypeID, RelName, RelCondition, RelArch) " +
|
|
||||||
"VALUES (%s, %s, %s, %s, %s)",
|
|
||||||
[pkgid, reltypeid, relname, relcond, relarch])
|
|
||||||
|
|
||||||
# Add package licenses.
|
|
||||||
if 'license' in pkginfo:
|
|
||||||
for license in pkginfo['license']:
|
|
||||||
cur.execute("SELECT ID FROM Licenses WHERE Name = %s",
|
|
||||||
[license])
|
|
||||||
if cur.rowcount == 1:
|
|
||||||
licenseid = cur.fetchone()[0]
|
|
||||||
else:
|
|
||||||
cur.execute("INSERT INTO Licenses (Name) VALUES (%s)",
|
|
||||||
[license])
|
|
||||||
db.commit()
|
|
||||||
licenseid = cur.lastrowid
|
|
||||||
cur.execute("INSERT INTO PackageLicenses (PackageID, " +
|
|
||||||
"LicenseID) VALUES (%s, %s)",
|
|
||||||
[pkgid, licenseid])
|
|
||||||
|
|
||||||
# Add package groups.
|
|
||||||
if 'groups' in pkginfo:
|
|
||||||
for group in pkginfo['groups']:
|
|
||||||
cur.execute("SELECT ID FROM Groups WHERE Name = %s",
|
|
||||||
[group])
|
|
||||||
if cur.rowcount == 1:
|
|
||||||
groupid = cur.fetchone()[0]
|
|
||||||
else:
|
|
||||||
cur.execute("INSERT INTO Groups (Name) VALUES (%s)",
|
|
||||||
[group])
|
|
||||||
db.commit()
|
|
||||||
groupid = cur.lastrowid
|
|
||||||
cur.execute("INSERT INTO PackageGroups (PackageID, "
|
|
||||||
"GroupID) VALUES (%s, %s)", [pkgid, groupid])
|
|
||||||
|
|
||||||
# Add user to notification list on adoption.
|
|
||||||
if was_orphan:
|
|
||||||
cur.execute("SELECT COUNT(*) FROM PackageNotifications WHERE " +
|
|
||||||
"PackageBaseID = %s AND UserID = %s",
|
|
||||||
[pkgbase_id, user_id])
|
|
||||||
if cur.fetchone()[0] == 0:
|
|
||||||
cur.execute("INSERT INTO PackageNotifications (PackageBaseID, UserID) " +
|
|
||||||
"VALUES (%s, %s)", [pkgbase_id, user_id])
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
|
|
||||||
def update_notify(db, cur, user, pkgbase_id):
|
|
||||||
# Obtain the user ID of the new maintainer.
|
|
||||||
cur.execute("SELECT ID FROM Users WHERE Username = %s", [user])
|
|
||||||
user_id = int(cur.fetchone()[0])
|
|
||||||
|
|
||||||
# Execute the notification script.
|
|
||||||
subprocess.Popen((notify_cmd, 'update', str(user_id), str(pkgbase_id)))
|
|
||||||
|
|
||||||
def die(msg):
|
|
||||||
sys.stderr.write("error: {:s}\n".format(msg))
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def warn(msg):
|
|
||||||
sys.stderr.write("warning: {:s}\n".format(msg))
|
|
||||||
|
|
||||||
|
|
||||||
def die_commit(msg, commit):
|
|
||||||
sys.stderr.write("error: The following error " +
|
|
||||||
"occurred when parsing commit\n")
|
|
||||||
sys.stderr.write("error: {:s}:\n".format(commit))
|
|
||||||
sys.stderr.write("error: {:s}\n".format(msg))
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
repo = pygit2.Repository(repo_path)
|
|
||||||
|
|
||||||
user = os.environ.get("AUR_USER")
|
|
||||||
pkgbase = os.environ.get("AUR_PKGBASE")
|
|
||||||
privileged = (os.environ.get("AUR_PRIVILEGED", '0') == '1')
|
|
||||||
|
|
||||||
if len(sys.argv) == 2 and sys.argv[1] == "restore":
|
|
||||||
if 'refs/heads/' + pkgbase not in repo.listall_references():
|
|
||||||
die('{:s}: repository not found: {:s}'.format(sys.argv[1], pkgbase))
|
|
||||||
refname = "refs/heads/master"
|
|
||||||
sha1_old = sha1_new = repo.lookup_reference('refs/heads/' + pkgbase).target
|
|
||||||
elif len(sys.argv) == 4:
|
|
||||||
refname, sha1_old, sha1_new = sys.argv[1:4]
|
|
||||||
else:
|
|
||||||
die("invalid arguments")
|
|
||||||
|
|
||||||
if refname != "refs/heads/master":
|
|
||||||
die("pushing to a branch other than master is restricted")
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
# Detect and deny non-fast-forwards.
|
|
||||||
if sha1_old != "0000000000000000000000000000000000000000":
|
|
||||||
walker = repo.walk(sha1_old, pygit2.GIT_SORT_TOPOLOGICAL)
|
|
||||||
walker.hide(sha1_new)
|
|
||||||
if next(walker, None) is not None:
|
|
||||||
cur.execute("SELECT AccountTypeID FROM Users WHERE UserName = %s ",
|
|
||||||
[user])
|
|
||||||
if cur.fetchone()[0] == 1:
|
|
||||||
die("denying non-fast-forward (you should pull first)")
|
|
||||||
|
|
||||||
# Prepare the walker that validates new commits.
|
|
||||||
walker = repo.walk(sha1_new, pygit2.GIT_SORT_TOPOLOGICAL)
|
|
||||||
if sha1_old != "0000000000000000000000000000000000000000":
|
|
||||||
walker.hide(sha1_old)
|
|
||||||
|
|
||||||
# Validate all new commits.
|
|
||||||
for commit in walker:
|
|
||||||
for fname in ('.SRCINFO', 'PKGBUILD'):
|
|
||||||
if fname not in commit.tree:
|
|
||||||
die_commit("missing {:s}".format(fname), str(commit.id))
|
|
||||||
|
|
||||||
for treeobj in commit.tree:
|
|
||||||
blob = repo[treeobj.id]
|
|
||||||
|
|
||||||
if isinstance(blob, pygit2.Tree):
|
|
||||||
die_commit("the repository must not contain subdirectories",
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
if not isinstance(blob, pygit2.Blob):
|
|
||||||
die_commit("not a blob object: {:s}".format(treeobj),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
if blob.size > 250000:
|
|
||||||
die_commit("maximum blob size (250kB) exceeded", str(commit.id))
|
|
||||||
|
|
||||||
metadata_raw = repo[commit.tree['.SRCINFO'].id].data.decode()
|
|
||||||
(metadata, errors) = srcinfo.parse.parse_srcinfo(metadata_raw)
|
|
||||||
if errors:
|
|
||||||
sys.stderr.write("error: The following errors occurred "
|
|
||||||
"when parsing .SRCINFO in commit\n")
|
|
||||||
sys.stderr.write("error: {:s}:\n".format(str(commit.id)))
|
|
||||||
for error in errors:
|
|
||||||
for err in error['error']:
|
|
||||||
sys.stderr.write("error: line {:d}: {:s}\n".format(error['line'], err))
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
metadata_pkgbase = metadata['pkgbase']
|
|
||||||
if not re.match(repo_regex, metadata_pkgbase):
|
|
||||||
die_commit('invalid pkgbase: {:s}'.format(metadata_pkgbase),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
for pkgname in set(metadata['packages'].keys()):
|
|
||||||
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
|
||||||
|
|
||||||
for field in ('pkgver', 'pkgrel', 'pkgname'):
|
|
||||||
if field not in pkginfo:
|
|
||||||
die_commit('missing mandatory field: {:s}'.format(field),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
if 'epoch' in pkginfo and not pkginfo['epoch'].isdigit():
|
|
||||||
die_commit('invalid epoch: {:s}'.format(pkginfo['epoch']),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
if not re.match(r'[a-z0-9][a-z0-9\.+_-]*$', pkginfo['pkgname']):
|
|
||||||
die_commit('invalid package name: {:s}'.format(pkginfo['pkgname']),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
for field in ('pkgname', 'pkgdesc', 'url'):
|
|
||||||
if field in pkginfo and len(pkginfo[field]) > 255:
|
|
||||||
die_commit('{:s} field too long: {:s}'.format(field, pkginfo[field]),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
for field in ('install', 'changelog'):
|
|
||||||
if field in pkginfo and not pkginfo[field] in commit.tree:
|
|
||||||
die_commit('missing {:s} file: {:s}'.format(field, pkginfo[field]),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
for field in extract_arch_fields(pkginfo, 'source'):
|
|
||||||
fname = field['value']
|
|
||||||
if "://" in fname or "lp:" in fname:
|
|
||||||
continue
|
|
||||||
if fname not in commit.tree:
|
|
||||||
die_commit('missing source file: {:s}'.format(fname),
|
|
||||||
str(commit.id))
|
|
||||||
|
|
||||||
|
|
||||||
# Display a warning if .SRCINFO is unchanged.
|
|
||||||
if sha1_old not in ("0000000000000000000000000000000000000000", sha1_new):
|
|
||||||
srcinfo_id_old = repo[sha1_old].tree['.SRCINFO'].id
|
|
||||||
srcinfo_id_new = repo[sha1_new].tree['.SRCINFO'].id
|
|
||||||
if srcinfo_id_old == srcinfo_id_new:
|
|
||||||
warn(".SRCINFO unchanged. The package database will not be updated!")
|
|
||||||
|
|
||||||
# Read .SRCINFO from the HEAD commit.
|
|
||||||
metadata_raw = repo[repo[sha1_new].tree['.SRCINFO'].id].data.decode()
|
|
||||||
(metadata, errors) = srcinfo.parse.parse_srcinfo(metadata_raw)
|
|
||||||
|
|
||||||
# Ensure that the package base name matches the repository name.
|
|
||||||
metadata_pkgbase = metadata['pkgbase']
|
|
||||||
if metadata_pkgbase != pkgbase:
|
|
||||||
die('invalid pkgbase: {:s}, expected {:s}'.format(metadata_pkgbase, pkgbase))
|
|
||||||
|
|
||||||
# Ensure that packages are neither blacklisted nor overwritten.
|
|
||||||
pkgbase = metadata['pkgbase']
|
|
||||||
cur.execute("SELECT ID FROM PackageBases WHERE Name = %s", [pkgbase])
|
|
||||||
pkgbase_id = cur.fetchone()[0] if cur.rowcount == 1 else 0
|
|
||||||
|
|
||||||
cur.execute("SELECT Name FROM PackageBlacklist")
|
|
||||||
blacklist = [row[0] for row in cur.fetchall()]
|
|
||||||
|
|
||||||
for pkgname in srcinfo.utils.get_package_names(metadata):
|
|
||||||
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
|
||||||
pkgname = pkginfo['pkgname']
|
|
||||||
|
|
||||||
if pkgname in blacklist and not privileged:
|
|
||||||
die('package is blacklisted: {:s}'.format(pkgname))
|
|
||||||
|
|
||||||
cur.execute("SELECT COUNT(*) FROM Packages WHERE Name = %s AND " +
|
|
||||||
"PackageBaseID <> %s", [pkgname, pkgbase_id])
|
|
||||||
if cur.fetchone()[0] > 0:
|
|
||||||
die('cannot overwrite package: {:s}'.format(pkgname))
|
|
||||||
|
|
||||||
# Store package base details in the database.
|
|
||||||
save_metadata(metadata, db, cur, user)
|
|
||||||
|
|
||||||
# Create (or update) a branch with the name of the package base for better
|
|
||||||
# accessibility.
|
|
||||||
repo.create_reference('refs/heads/' + pkgbase, sha1_new, True)
|
|
||||||
|
|
||||||
# Work around a Git bug: The HEAD ref is not updated when using gitnamespaces.
|
|
||||||
# This can be removed once the bug fix is included in Git mainline. See
|
|
||||||
# http://git.661346.n2.nabble.com/PATCH-receive-pack-Create-a-HEAD-ref-for-ref-namespace-td7632149.html
|
|
||||||
# for details.
|
|
||||||
repo.create_reference('refs/namespaces/' + pkgbase + '/HEAD', sha1_new, True)
|
|
||||||
|
|
||||||
# Send package update notifications.
|
|
||||||
update_notify(db, cur, user, pkgbase_id)
|
|
||||||
|
|
||||||
# Close the database.
|
|
||||||
db.close()
|
|
138
po/ar.po
138
po/ar.po
|
@ -4,13 +4,13 @@
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# safa1996alfulaij <safa1996alfulaij@gmail.com>, 2015
|
# safa1996alfulaij <safa1996alfulaij@gmail.com>, 2015
|
||||||
# صفا الفليج <safaalfulaij@hotmail.com>, 2015
|
# صفا الفليج <safaalfulaij@hotmail.com>, 2015-2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Arabic (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Arabic (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"ar/)\n"
|
"ar/)\n"
|
||||||
|
@ -27,6 +27,20 @@ msgstr "لم يُعثر على الصّفحة"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "آسفون، الصّفحة التي طلبتها غير موجودة."
|
msgstr "آسفون، الصّفحة التي طلبتها غير موجودة."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "ملاحظة"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "الخدمة غير متوفّرة"
|
msgstr "الخدمة غير متوفّرة"
|
||||||
|
|
||||||
|
@ -145,6 +159,7 @@ msgid ""
|
||||||
"AUR packages are user produced content. Any use of the provided files is at "
|
"AUR packages are user produced content. Any use of the provided files is at "
|
||||||
"your own risk."
|
"your own risk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"حزم ممآ هي حزم قدّمها المستخدمين. أيّ استخدام للملفّات يكون على مسؤوليّتك الخاصّة."
|
||||||
|
|
||||||
msgid "Learn more..."
|
msgid "Learn more..."
|
||||||
msgstr "اطّلع على المزيد..."
|
msgstr "اطّلع على المزيد..."
|
||||||
|
@ -228,7 +243,7 @@ msgid ""
|
||||||
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"النّقاشات العاّمة حول مستودع مستخدمي آرتش (ممآ) وبنية المستخدمين الموثوقين "
|
"النّقاشات العاّمة حول مستودع مستخدمي آرتش (ممآ) وبنية المستخدمين الموثوقين "
|
||||||
"تكون في %saur-general%s. للنّقاشات المتعلّقة بتطوير واجهة وِب ممآ، استخدم "
|
"تكون في %saur-general%s. للنّقاشات المتعلّقة بتطوير واجهة وِبّ ممآ، استخدم "
|
||||||
"قائمة %saur-dev%s البريديّة."
|
"قائمة %saur-dev%s البريديّة."
|
||||||
|
|
||||||
msgid "Bug Reporting"
|
msgid "Bug Reporting"
|
||||||
|
@ -241,6 +256,9 @@ msgid ""
|
||||||
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
||||||
"comment on the appropriate package page."
|
"comment on the appropriate package page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"إن وجدت علّة في واجهة وِبّ ممآ، فضلًا املأ تقريرًا بها في %sمتعقّب العلل%s. استخدم "
|
||||||
|
"المتعقّب للإبلاغ عن العلل في واجهة وِبّ ممآ %sفقط%s. للإبلاغ عن علل الحزم راسل "
|
||||||
|
"مديرها أو اترك تعليقًا في صفحة الحزمة المناسبة."
|
||||||
|
|
||||||
msgid "Package Search"
|
msgid "Package Search"
|
||||||
msgstr "ابحث عن حزمة"
|
msgstr "ابحث عن حزمة"
|
||||||
|
@ -429,7 +447,7 @@ msgstr "علّم الحزمة كقديمة"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to flag the package base %s%s%s and the following packages out-"
|
"Use this form to flag the package base %s%s%s and the following packages out-"
|
||||||
"of-date: "
|
"of-date: "
|
||||||
msgstr ""
|
msgstr "استخدم هذه الاستمارة لتعليم أساس الحزمة %s%s%s والحزم الآتية كقديمة:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -450,7 +468,7 @@ msgid "Flag"
|
||||||
msgstr "علّم"
|
msgstr "علّم"
|
||||||
|
|
||||||
msgid "Only registered users can flag packages out-of-date."
|
msgid "Only registered users can flag packages out-of-date."
|
||||||
msgstr ""
|
msgstr "يمكن فقط للمستخدمين المسجّلين تعليم الحزم كقديمة."
|
||||||
|
|
||||||
msgid "Package Merging"
|
msgid "Package Merging"
|
||||||
msgstr "ادمج حزمة"
|
msgstr "ادمج حزمة"
|
||||||
|
@ -606,7 +624,7 @@ msgstr "انقر وصلة الولوج أعلاه لاستخدام حسابك."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "No changes were made to the account, %s%s%s."
|
msgid "No changes were made to the account, %s%s%s."
|
||||||
msgstr "لم تتمّ أيّ تغييرات على الحساب %s%s%s."
|
msgstr "لم تجري أيّ تغييرات على الحساب %s%s%s."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The account, %s%s%s, has been successfully modified."
|
msgid "The account, %s%s%s, has been successfully modified."
|
||||||
|
@ -649,16 +667,16 @@ msgid "View account information for %s"
|
||||||
msgstr "اعرض معلومات حساب %s"
|
msgstr "اعرض معلومات حساب %s"
|
||||||
|
|
||||||
msgid "Package base ID or package base name missing."
|
msgid "Package base ID or package base name missing."
|
||||||
msgstr ""
|
msgstr "معرّف أساس الحزمة أو اسمه ناقص."
|
||||||
|
|
||||||
msgid "You are not allowed to edit this comment."
|
msgid "You are not allowed to edit this comment."
|
||||||
msgstr ""
|
msgstr "ليس مسموحًا لك بتحرير هذا التّعليق."
|
||||||
|
|
||||||
msgid "Comment does not exist."
|
msgid "Comment does not exist."
|
||||||
msgstr "التّعليق غير موجود."
|
msgstr "التّعليق غير موجود."
|
||||||
|
|
||||||
msgid "Comment cannot be empty."
|
msgid "Comment cannot be empty."
|
||||||
msgstr ""
|
msgstr "لا يمكن أن يكون التّعليق فارغًا."
|
||||||
|
|
||||||
msgid "Comment has been added."
|
msgid "Comment has been added."
|
||||||
msgstr "أُضيف التّعليق"
|
msgstr "أُضيف التّعليق"
|
||||||
|
@ -670,19 +688,19 @@ msgid "Missing comment ID."
|
||||||
msgstr "معرّف التّعليق ناقص."
|
msgstr "معرّف التّعليق ناقص."
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "لا يمكن تثبيت أكثر من 5 تعليقات."
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "ليس مسموحًا لك بتثبيت هذا التّعليق."
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr "ليس مسموحًا لك بفكّ تثبيت هذا التّعليق."
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "ثّبّت التّعليق."
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr "فُكّ تثبيت التعليق."
|
||||||
|
|
||||||
msgid "Error retrieving package details."
|
msgid "Error retrieving package details."
|
||||||
msgstr "خطأ في استرجاع تفاصيل الحزمة."
|
msgstr "خطأ في استرجاع تفاصيل الحزمة."
|
||||||
|
@ -697,7 +715,7 @@ msgid "You did not select any packages to flag."
|
||||||
msgstr "لم تحدّد أيّ حزم لتعليمها."
|
msgstr "لم تحدّد أيّ حزم لتعليمها."
|
||||||
|
|
||||||
msgid "The selected packages have not been flagged, please enter a comment."
|
msgid "The selected packages have not been flagged, please enter a comment."
|
||||||
msgstr ""
|
msgstr "لم تعلّم الحزم المحدّدة، فضلًا أدخل تعليقًا."
|
||||||
|
|
||||||
msgid "The selected packages have been flagged out-of-date."
|
msgid "The selected packages have been flagged out-of-date."
|
||||||
msgstr "عُلّمت الحزم المحدّدة كقديمة."
|
msgstr "عُلّمت الحزم المحدّدة كقديمة."
|
||||||
|
@ -777,7 +795,7 @@ msgid "Comment has been deleted."
|
||||||
msgstr "حُذف التّعليق."
|
msgstr "حُذف التّعليق."
|
||||||
|
|
||||||
msgid "Comment has been edited."
|
msgid "Comment has been edited."
|
||||||
msgstr ""
|
msgstr "حُرّر التّعليق."
|
||||||
|
|
||||||
msgid "You are not allowed to edit the keywords of this package base."
|
msgid "You are not allowed to edit the keywords of this package base."
|
||||||
msgstr "ليس مسموحًا لك بتحرير كلمات أساس الحزمة المفتاحيّة."
|
msgstr "ليس مسموحًا لك بتحرير كلمات أساس الحزمة المفتاحيّة."
|
||||||
|
@ -856,11 +874,14 @@ msgid "Email Address"
|
||||||
msgstr "البريد الإلكترونيّ"
|
msgstr "البريد الإلكترونيّ"
|
||||||
|
|
||||||
msgid "hidden"
|
msgid "hidden"
|
||||||
msgstr ""
|
msgstr "مخفيّ"
|
||||||
|
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "الاسم الحقيقيّ"
|
msgstr "الاسم الحقيقيّ"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "الرّئيسيّة"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "اسم آيآرسي المستعار"
|
msgstr "اسم آيآرسي المستعار"
|
||||||
|
|
||||||
|
@ -876,6 +897,9 @@ msgstr "غير نشط منذ"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "نشط"
|
msgstr "نشط"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "آخر ولوج"
|
msgstr "آخر ولوج"
|
||||||
|
|
||||||
|
@ -892,6 +916,10 @@ msgstr "حرّر حساب هذا المستخدم"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "انقر %sهنا%s إن أردت حذف هذا الحساب نهائيًّا."
|
msgstr "انقر %sهنا%s إن أردت حذف هذا الحساب نهائيًّا."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "مطلوب"
|
msgstr "مطلوب"
|
||||||
|
|
||||||
|
@ -910,7 +938,7 @@ msgstr "غير نشط"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please ensure you correctly entered your email address, otherwise you will "
|
"Please ensure you correctly entered your email address, otherwise you will "
|
||||||
"be locked out."
|
"be locked out."
|
||||||
msgstr ""
|
msgstr "فضلًا تأكّد من إدخال البريد الإلكترونيّ الصّحيح، وإلّا فسيُقفل الحساب."
|
||||||
|
|
||||||
msgid "Hide Email Address"
|
msgid "Hide Email Address"
|
||||||
msgstr "أخفِ عنوان البريد الإلكترونيّ"
|
msgstr "أخفِ عنوان البريد الإلكترونيّ"
|
||||||
|
@ -930,13 +958,16 @@ msgid "SSH Public Key"
|
||||||
msgstr "مفتاح SSH العموميّ"
|
msgstr "مفتاح SSH العموميّ"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "إعدادات الإخطارات"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "أخطرني بالتّعليقات الجديدة"
|
msgstr "أخطرني بالتّعليقات الجديدة"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "أخطرني بتحديثات الحزم"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "أخطرني بتغيير المُلّاك"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "حدّث"
|
msgstr "حدّث"
|
||||||
|
@ -981,22 +1012,22 @@ msgstr "احفظ"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "تعليق التّعليم كقديمة: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr "علّم %s%s%s الحزمة %s%s%s بقديمة في %s%s%s وذلك للأسباب الآتية:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "لم تُعلّم الحزمة %s%s%s كقديمة."
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "عُد إلى التّفاصيل"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr "الحقوق محفوظة %s 2004-%d فريق تطوير aurweb."
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "حزمي"
|
msgstr "حزمي"
|
||||||
|
@ -1021,7 +1052,7 @@ msgstr "ابحث في الويكي"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "معلّمة كقديمة (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "علّم الحزمة كقديمة"
|
msgstr "علّم الحزمة كقديمة"
|
||||||
|
@ -1038,6 +1069,9 @@ msgstr "صوّت لهذه الحزمة"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "عطّل الإخطارات"
|
msgstr "عطّل الإخطارات"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "فعّل الإخطارات"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "أدر المصينين المشاركين"
|
msgstr "أدر المصينين المشاركين"
|
||||||
|
|
||||||
|
@ -1092,7 +1126,7 @@ msgstr "آخر تحديث"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Edit comment for: %s"
|
msgid "Edit comment for: %s"
|
||||||
msgstr ""
|
msgstr "حرّر تعليق: %s"
|
||||||
|
|
||||||
msgid "Add Comment"
|
msgid "Add Comment"
|
||||||
msgstr "أضف تعليقًا"
|
msgstr "أضف تعليقًا"
|
||||||
|
@ -1101,7 +1135,7 @@ msgid "View all comments"
|
||||||
msgstr "اعرض كلّ التّعليقات"
|
msgstr "اعرض كلّ التّعليقات"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "التّعليقات المثبّتة"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "آخر التّعليقات"
|
msgstr "آخر التّعليقات"
|
||||||
|
@ -1137,10 +1171,10 @@ msgid "Delete comment"
|
||||||
msgstr "احذف التّعليق"
|
msgstr "احذف التّعليق"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "ثبّت التّعليق"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr "فكّ تثبيت التّعليق"
|
||||||
|
|
||||||
msgid "All comments"
|
msgid "All comments"
|
||||||
msgstr "كلّ التّعليقات"
|
msgstr "كلّ التّعليقات"
|
||||||
|
@ -1158,7 +1192,7 @@ msgid "Upstream URL"
|
||||||
msgstr "عنوان المنبع"
|
msgstr "عنوان المنبع"
|
||||||
|
|
||||||
msgid "Visit the website for"
|
msgid "Visit the website for"
|
||||||
msgstr "زُر موقع وِب"
|
msgstr "زُر موقع وِبّ"
|
||||||
|
|
||||||
msgid "Licenses"
|
msgid "Licenses"
|
||||||
msgstr "الرّخص"
|
msgstr "الرّخص"
|
||||||
|
@ -1188,9 +1222,6 @@ msgstr "المصادر"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "استخدم هذه الاستمارة لإغلاق طلب أساس الحزمة %s%s%s."
|
msgstr "استخدم هذه الاستمارة لإغلاق طلب أساس الحزمة %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "ملاحظة"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1225,6 +1256,26 @@ msgstr "يتيمة"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "ادمج مع"
|
msgstr "ادمج مع"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1249,8 +1300,14 @@ msgid "Date"
|
||||||
msgstr "التّاريخ"
|
msgstr "التّاريخ"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
msgstr[2] ""
|
||||||
|
msgstr[3] ""
|
||||||
|
msgstr[4] ""
|
||||||
|
msgstr[5] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1305,7 +1362,7 @@ msgid "Voted"
|
||||||
msgstr "مصوّت عليها"
|
msgstr "مصوّت عليها"
|
||||||
|
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr ""
|
msgstr "آخر تعديل"
|
||||||
|
|
||||||
msgid "Ascending"
|
msgid "Ascending"
|
||||||
msgstr "تصاعديًّا"
|
msgstr "تصاعديًّا"
|
||||||
|
@ -1356,9 +1413,10 @@ msgstr[5] "عُثر على %d حزمة."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "الإصدارة"
|
msgstr "الإصدارة"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
@ -1419,7 +1477,7 @@ msgid "Recent Updates"
|
||||||
msgstr "التّحديثات الأخيرة"
|
msgstr "التّحديثات الأخيرة"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "أخرى"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "إحصائيّاتي"
|
msgstr "إحصائيّاتي"
|
||||||
|
|
68
po/ast.po
68
po/ast.po
|
@ -5,13 +5,13 @@
|
||||||
# Translators:
|
# Translators:
|
||||||
# enolp <enolp@softastur.org>, 2014-2015
|
# enolp <enolp@softastur.org>, 2014-2015
|
||||||
# Ḷḷumex03 <tornes@opmbx.org>, 2014
|
# Ḷḷumex03 <tornes@opmbx.org>, 2014
|
||||||
# Pablo Roberto Francisco Lezaeta Reyes <prflr88@gmail.com>, 2014-2015
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2014-2015
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Asturian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Asturian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"ast/)\n"
|
"ast/)\n"
|
||||||
|
@ -27,6 +27,20 @@ msgstr "Nun s'alcontró la páxina"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Perdón, la páxina que pidisti nun esiste."
|
msgstr "Perdón, la páxina que pidisti nun esiste."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Nota"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Serviciu non disponible"
|
msgstr "Serviciu non disponible"
|
||||||
|
|
||||||
|
@ -847,6 +861,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nome real"
|
msgstr "Nome real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Alcuñu nel IRC"
|
msgstr "Alcuñu nel IRC"
|
||||||
|
|
||||||
|
@ -862,6 +879,9 @@ msgstr "Inactivu dende"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Activu"
|
msgstr "Activu"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -878,6 +898,10 @@ msgstr ""
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Primi %sequí%s si quies desaniciar esta cuenta dafechu."
|
msgstr "Primi %sequí%s si quies desaniciar esta cuenta dafechu."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "riquíu"
|
msgstr "riquíu"
|
||||||
|
|
||||||
|
@ -925,6 +949,9 @@ msgstr ""
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Anovar"
|
msgstr "Anovar"
|
||||||
|
|
||||||
|
@ -1025,6 +1052,9 @@ msgstr "Votar pol paquete"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Alministra comantenedores"
|
msgstr "Alministra comantenedores"
|
||||||
|
|
||||||
|
@ -1171,9 +1201,6 @@ msgstr "Fontes"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "Usa esti formulariu pa zarrar la solicitú pal paquete base %s%s%s."
|
msgstr "Usa esti formulariu pa zarrar la solicitú pal paquete base %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Nota"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1208,6 +1235,26 @@ msgstr "Güérfanu"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1228,8 +1275,10 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "Falten ~%d díes"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1327,9 +1376,10 @@ msgstr[1] "Alcontráronse %d paquetes"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versión"
|
msgstr "Versión"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
81
po/aur.pot
81
po/aur.pot
|
@ -6,9 +6,9 @@
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: AUR v4.1.1\n"
|
"Project-Id-Version: AUR v4.3.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -26,6 +26,24 @@ msgstr ""
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: html/404.php template/pkgreq_close_form.php
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: html/404.php
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: html/404.php
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: html/404.php
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: html/503.php
|
#: html/503.php
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1076,6 +1094,10 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/account_details.php template/account_edit_form.php
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: template/account_details.php template/account_edit_form.php
|
#: template/account_details.php template/account_edit_form.php
|
||||||
#: template/account_search_results.php template/search_accounts_form.php
|
#: template/account_search_results.php template/search_accounts_form.php
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
|
@ -1099,6 +1121,10 @@ msgstr ""
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/account_details.php
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: template/account_details.php
|
#: template/account_details.php
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1120,6 +1146,11 @@ msgstr ""
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/account_edit_form.php
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: template/account_edit_form.php
|
#: template/account_edit_form.php
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1172,7 +1203,7 @@ msgstr ""
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: template/account_edit_form.php template/pkgbase_actions.php
|
#: template/account_edit_form.php
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1180,6 +1211,10 @@ msgstr ""
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/account_edit_form.php
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: template/account_edit_form.php template/pkgbase_details.php
|
#: template/account_edit_form.php template/pkgbase_details.php
|
||||||
#: template/pkg_details.php
|
#: template/pkg_details.php
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
|
@ -1312,6 +1347,10 @@ msgstr ""
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/pkgbase_actions.php
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: template/pkgbase_actions.php
|
#: template/pkgbase_actions.php
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1509,10 +1548,6 @@ msgstr ""
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: template/pkgreq_close_form.php
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: template/pkgreq_close_form.php
|
#: template/pkgreq_close_form.php
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
|
@ -1556,6 +1591,29 @@ msgstr ""
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/pkgreq_form.php
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/pkgreq_form.php
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: template/pkgreq_form.php
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: template/pkgreq_results.php
|
#: template/pkgreq_results.php
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
|
@ -1582,8 +1640,10 @@ msgstr ""
|
||||||
|
|
||||||
#: template/pkgreq_results.php
|
#: template/pkgreq_results.php
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: template/pkgreq_results.php
|
#: template/pkgreq_results.php
|
||||||
#, php-format
|
#, php-format
|
||||||
|
@ -1713,9 +1773,10 @@ msgid "Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: template/pkg_search_results.php
|
#: template/pkg_search_results.php
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: template/pkg_search_results.php template/tu_details.php template/tu_list.php
|
#: template/pkg_search_results.php template/tu_details.php template/tu_list.php
|
||||||
|
|
68
po/ca.po
68
po/ca.po
|
@ -3,15 +3,15 @@
|
||||||
# This file is distributed under the same license as the AUR package.
|
# This file is distributed under the same license as the AUR package.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Adolfo Jayme Barrientos, 2014
|
# Adolfo Jayme-Barrientos, 2014
|
||||||
# Hector Mtz-Seara <hseara@gmail.com>, 2011,2013
|
# Hector Mtz-Seara <hseara@gmail.com>, 2011,2013
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Catalan (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Catalan (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"ca/)\n"
|
"ca/)\n"
|
||||||
|
@ -27,6 +27,20 @@ msgstr "No s’ha trobat la pàgina"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Ho sentim, la pàgina que ha sol·licitat no existeix."
|
msgstr "Ho sentim, la pàgina que ha sol·licitat no existeix."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -852,6 +866,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nom real"
|
msgstr "Nom real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Nom d'usuari IRC"
|
msgstr "Nom d'usuari IRC"
|
||||||
|
|
||||||
|
@ -867,6 +884,9 @@ msgstr ""
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Actiu"
|
msgstr "Actiu"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -883,6 +903,10 @@ msgstr ""
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "requerit"
|
msgstr "requerit"
|
||||||
|
|
||||||
|
@ -929,6 +953,9 @@ msgstr "Notificar comentaris nous"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Actualitza"
|
msgstr "Actualitza"
|
||||||
|
|
||||||
|
@ -1029,6 +1056,9 @@ msgstr "Vota per aquest paquet"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Deshabilitar notificacions"
|
msgstr "Deshabilitar notificacions"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1175,9 +1205,6 @@ msgstr "Fonts"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1210,6 +1237,26 @@ msgstr ""
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Combinar amb"
|
msgstr "Combinar amb"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1230,8 +1277,10 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1329,9 +1378,10 @@ msgstr[1] ""
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versió"
|
msgstr "Versió"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
69
po/cs.po
69
po/cs.po
|
@ -11,9 +11,9 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-10 09:49+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Jaroslav Lichtblau <dragonlord@seznam.cz>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Czech (http://www.transifex.com/lfleischer/aur/language/cs/)\n"
|
"Language-Team: Czech (http://www.transifex.com/lfleischer/aur/language/cs/)\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -27,6 +27,20 @@ msgstr "Stránka nenalezena"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Omlouváme se, požadovaná stránka neexistuje."
|
msgstr "Omlouváme se, požadovaná stránka neexistuje."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Služba nedostupná"
|
msgstr "Služba nedostupná"
|
||||||
|
|
||||||
|
@ -834,6 +848,9 @@ msgstr "skrytý"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Skutečné jméno"
|
msgstr "Skutečné jméno"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC přezdívka"
|
msgstr "IRC přezdívka"
|
||||||
|
|
||||||
|
@ -849,6 +866,9 @@ msgstr "Neaktivní od"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktivní"
|
msgstr "Aktivní"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Poslední přihlášení"
|
msgstr "Poslední přihlášení"
|
||||||
|
|
||||||
|
@ -865,6 +885,10 @@ msgstr "Upravit tento uživatelský účet"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "vyžadováno"
|
msgstr "vyžadováno"
|
||||||
|
|
||||||
|
@ -911,6 +935,9 @@ msgstr "Oznamovat nové komentáře"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualizovat"
|
msgstr "Aktualizovat"
|
||||||
|
|
||||||
|
@ -1011,6 +1038,9 @@ msgstr "Hlasovat pro tento balíček"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Vypnout oznámení"
|
msgstr "Vypnout oznámení"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1158,9 +1188,6 @@ msgstr "Zdroje"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1193,6 +1220,26 @@ msgstr ""
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1214,8 +1261,11 @@ msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
msgstr[2] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1315,9 +1365,10 @@ msgstr[2] "Nalezeno %d balíčků."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Verze"
|
msgstr "Verze"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
66
po/da.po
66
po/da.po
|
@ -9,8 +9,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Danish (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Danish (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"da/)\n"
|
"da/)\n"
|
||||||
|
@ -26,6 +26,20 @@ msgstr "Siden blev ikke fundet"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Beklager, den forspurgte side findes ikke."
|
msgstr "Beklager, den forspurgte side findes ikke."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Service utilgængelig"
|
msgstr "Service utilgængelig"
|
||||||
|
|
||||||
|
@ -828,6 +842,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Rigtigt navn"
|
msgstr "Rigtigt navn"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC kaldenavn"
|
msgstr "IRC kaldenavn"
|
||||||
|
|
||||||
|
@ -843,6 +860,9 @@ msgstr "Inaktiv siden"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktiv"
|
msgstr "Aktiv"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Sidste login"
|
msgstr "Sidste login"
|
||||||
|
|
||||||
|
@ -859,6 +879,10 @@ msgstr ""
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "påkrævet"
|
msgstr "påkrævet"
|
||||||
|
|
||||||
|
@ -905,6 +929,9 @@ msgstr ""
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Opdater"
|
msgstr "Opdater"
|
||||||
|
|
||||||
|
@ -1005,6 +1032,9 @@ msgstr "Stem på denne pakke"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Deaktiver notifikationer"
|
msgstr "Deaktiver notifikationer"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1151,9 +1181,6 @@ msgstr "Kilder"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1186,6 +1213,26 @@ msgstr "Forladt"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1206,8 +1253,10 @@ msgid "Date"
|
||||||
msgstr "Dato"
|
msgstr "Dato"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d dage tilbage"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1305,9 +1354,10 @@ msgstr[1] "%d pakker fundet."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Version"
|
msgstr "Version"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
88
po/de.po
88
po/de.po
|
@ -9,7 +9,7 @@
|
||||||
# FabianS_ <cadoc@gmx.de>, 2012
|
# FabianS_ <cadoc@gmx.de>, 2012
|
||||||
# go2sh <c.seitz@tu-bs.de>, 2015
|
# go2sh <c.seitz@tu-bs.de>, 2015
|
||||||
# FabianS_ <cadoc@gmx.de>, 2012
|
# FabianS_ <cadoc@gmx.de>, 2012
|
||||||
# Giuliano Schneider <gs93@gmx.net>, 2015
|
# Giuliano Schneider <gs93@gmx.net>, 2015-2016
|
||||||
# go2sh <c.seitz@tu-bs.de>, 2015
|
# go2sh <c.seitz@tu-bs.de>, 2015
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# Mark Gerlach, 2015
|
# Mark Gerlach, 2015
|
||||||
|
@ -24,8 +24,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: German (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: German (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"de/)\n"
|
"de/)\n"
|
||||||
|
@ -41,6 +41,20 @@ msgstr "Seite nicht gefunden"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Die angeforderte Seite existiert leider nicht."
|
msgstr "Die angeforderte Seite existiert leider nicht."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Anmerkung"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Dienst nicht verfügbr"
|
msgstr "Dienst nicht verfügbr"
|
||||||
|
|
||||||
|
@ -830,10 +844,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "Du wurdest von der Benachrichtigungsliste für %s entfernt."
|
msgstr "Du wurdest von der Benachrichtigungsliste für %s entfernt."
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "Du bist nicht berechtigt diesen Kommentar wiederherzustellen."
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "Kommentar wurde wiederhergestellt."
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "Du darfst diesen Kommentar nicht löschen."
|
msgstr "Du darfst diesen Kommentar nicht löschen."
|
||||||
|
@ -928,6 +942,9 @@ msgstr "versteckt"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Echter Name"
|
msgstr "Echter Name"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC-Name"
|
msgstr "IRC-Name"
|
||||||
|
|
||||||
|
@ -943,6 +960,9 @@ msgstr "Nicht aktiv seit"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktiv"
|
msgstr "Aktiv"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Letzter Login"
|
msgstr "Letzter Login"
|
||||||
|
|
||||||
|
@ -960,6 +980,10 @@ msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Klicke %shier%s, wenn du diesen Account unwiderruflich entfernen möchtest."
|
"Klicke %shier%s, wenn du diesen Account unwiderruflich entfernen möchtest."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "Notwendig"
|
msgstr "Notwendig"
|
||||||
|
|
||||||
|
@ -1010,6 +1034,9 @@ msgstr "Über neue Kommentare benachrichtigen"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualisieren"
|
msgstr "Aktualisieren"
|
||||||
|
|
||||||
|
@ -1070,7 +1097,7 @@ msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr "Copyright %s 2004-%d aurweb Development Team."
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "Meine Pakete"
|
msgstr "Meine Pakete"
|
||||||
|
@ -1095,7 +1122,7 @@ msgstr "Durchsuche Wiki"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "Als \"veraltet\" markiert (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Paket als \"veraltet\" markieren"
|
msgstr "Paket als \"veraltet\" markieren"
|
||||||
|
@ -1112,6 +1139,9 @@ msgstr "Für dieses Paket stimmen"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Benachrichtigungen deaktivieren"
|
msgstr "Benachrichtigungen deaktivieren"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Verwalte Ko-Maintainer"
|
msgstr "Verwalte Ko-Maintainer"
|
||||||
|
|
||||||
|
@ -1190,18 +1220,18 @@ msgstr "gelöscht am %s von %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "gelöscht am %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "geändert am %s von %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "geändert am %s"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "Kommentar wiederherstellen"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Kommentar löschen"
|
msgstr "Kommentar löschen"
|
||||||
|
@ -1260,9 +1290,6 @@ msgstr ""
|
||||||
"Benutze dieses Formular, um die Anfrage für die Paketbasis %s%s%s zu "
|
"Benutze dieses Formular, um die Anfrage für die Paketbasis %s%s%s zu "
|
||||||
"schließen."
|
"schließen."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Anmerkung"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1299,6 +1326,26 @@ msgstr "Verwaist"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Verschmelzen mit"
|
msgstr "Verschmelzen mit"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1319,8 +1366,10 @@ msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d Tage verbleibend"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1418,12 +1467,11 @@ msgstr[1] "%d Pakete gefunden."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Version"
|
msgstr "Version"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Beliebtheit berechnet sich als Summe aller Stimmen, wobei jede Stimme "
|
|
||||||
"mit einem Faktor von 0,98 pro Tag seit der Erstellung gewichtet wird."
|
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
|
@ -1483,7 +1531,7 @@ msgid "Recent Updates"
|
||||||
msgstr "Letzte Aktualisierungen"
|
msgstr "Letzte Aktualisierungen"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "mehr"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "Meine Statistiken"
|
msgstr "Meine Statistiken"
|
||||||
|
|
66
po/el.po
66
po/el.po
|
@ -14,8 +14,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Greek (http://www.transifex.com/lfleischer/aur/language/el/)\n"
|
"Language-Team: Greek (http://www.transifex.com/lfleischer/aur/language/el/)\n"
|
||||||
"Language: el\n"
|
"Language: el\n"
|
||||||
|
@ -30,6 +30,20 @@ msgstr "Η σελίδα δε βρέθηκε"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Μας συγχωρείτε, η σελίδα που ζητήσατε δεν υπάρχει."
|
msgstr "Μας συγχωρείτε, η σελίδα που ζητήσατε δεν υπάρχει."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -864,6 +878,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Πραγματικό 'Ονομα"
|
msgstr "Πραγματικό 'Ονομα"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Ψευδώνυμο IRC"
|
msgstr "Ψευδώνυμο IRC"
|
||||||
|
|
||||||
|
@ -879,6 +896,9 @@ msgstr "Αδρανής από"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Ενεργός"
|
msgstr "Ενεργός"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Τελευταία σύνδεση"
|
msgstr "Τελευταία σύνδεση"
|
||||||
|
|
||||||
|
@ -895,6 +915,10 @@ msgstr "Τροποποιήστε το λογαριασμό αυτού του χ
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "απαιτούμενο"
|
msgstr "απαιτούμενο"
|
||||||
|
|
||||||
|
@ -941,6 +965,9 @@ msgstr "Ειδοποίησε για νέα σχόλια"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Eνημέρωση"
|
msgstr "Eνημέρωση"
|
||||||
|
|
||||||
|
@ -1041,6 +1068,9 @@ msgstr "Ψηφίστε για αυτό το πακέτο"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Απενεργοποιήστε τις ειδοποιήσεις"
|
msgstr "Απενεργοποιήστε τις ειδοποιήσεις"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1187,9 +1217,6 @@ msgstr "Πηγές"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1222,6 +1249,26 @@ msgstr ""
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Συγχώνευση σε"
|
msgstr "Συγχώνευση σε"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1242,8 +1289,10 @@ msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1341,9 +1390,10 @@ msgstr[1] ""
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Έκδοση"
|
msgstr "Έκδοση"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
148
po/es.po
148
po/es.po
|
@ -3,20 +3,23 @@
|
||||||
# This file is distributed under the same license as the AUR package.
|
# This file is distributed under the same license as the AUR package.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Adolfo Jayme Barrientos, 2015
|
# Adolfo Jayme-Barrientos, 2015
|
||||||
# Angel Velasquez <angvp@archlinux.org>, 2011
|
# Angel Velasquez <angvp@archlinux.org>, 2011
|
||||||
# juantascon <juantascon@gmail.com>, 2011
|
# juantascon <juantascon@gmail.com>, 2011
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# neiko <neikokz+tsfx@gmail.com>, 2011
|
# neiko <neikokz+tsfx@gmail.com>, 2011
|
||||||
# Nicolás de la Torre <ndelatorre@gmail.com>, 2012
|
# Nicolás de la Torre <ndelatorre@gmail.com>, 2012
|
||||||
# Pablo Roberto Francisco Lezaeta Reyes <prflr88@gmail.com>, 2012
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2012
|
||||||
# Pablo Roberto Francisco Lezaeta Reyes <prflr88@gmail.com>, 2013-2015
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2016
|
||||||
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2013-2016
|
||||||
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2016
|
||||||
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Spanish (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Spanish (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"es/)\n"
|
"es/)\n"
|
||||||
|
@ -32,6 +35,20 @@ msgstr "Página no encontrada"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "La página solicitada no existe."
|
msgstr "La página solicitada no existe."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Nota"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Servicio no disponible"
|
msgstr "Servicio no disponible"
|
||||||
|
|
||||||
|
@ -88,7 +105,7 @@ msgid "Submit a proposal to vote on."
|
||||||
msgstr "Envía una propuesta a la cual votar."
|
msgstr "Envía una propuesta a la cual votar."
|
||||||
|
|
||||||
msgid "Applicant/TU"
|
msgid "Applicant/TU"
|
||||||
msgstr "Candidato/Usuario de confianza (TU)"
|
msgstr "Candidato/Usuario de confianza (UC)"
|
||||||
|
|
||||||
msgid "(empty if not applicable)"
|
msgid "(empty if not applicable)"
|
||||||
msgstr "(vacío si no aplica)"
|
msgstr "(vacío si no aplica)"
|
||||||
|
@ -231,7 +248,7 @@ msgstr ""
|
||||||
"detalles."
|
"detalles."
|
||||||
|
|
||||||
msgid "The following SSH fingerprints are used for the AUR:"
|
msgid "The following SSH fingerprints are used for the AUR:"
|
||||||
msgstr "Las siguientes huellas SSH están en uso para AUR."
|
msgstr "Las siguientes huellas SSH están en uso para el AUR."
|
||||||
|
|
||||||
msgid "Discussion"
|
msgid "Discussion"
|
||||||
msgstr "Debate"
|
msgstr "Debate"
|
||||||
|
@ -365,7 +382,7 @@ msgid ""
|
||||||
"message to the %saur-general%s mailing list."
|
"message to the %saur-general%s mailing list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si olvidaste la dirección de correo que usaste para registrarte, envía un "
|
"Si olvidaste la dirección de correo que usaste para registrarte, envía un "
|
||||||
"mensaje a la %slista de correo aur-general%s."
|
"mensaje a la %slista de correo general del AUR%s."
|
||||||
|
|
||||||
msgid "Enter your e-mail address:"
|
msgid "Enter your e-mail address:"
|
||||||
msgstr "Introduce tu dirección de correo:"
|
msgstr "Introduce tu dirección de correo:"
|
||||||
|
@ -457,7 +474,7 @@ msgstr ""
|
||||||
"de paquetes."
|
"de paquetes."
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr ""
|
msgstr "Marcar comentario"
|
||||||
|
|
||||||
msgid "Flag Package Out-Of-Date"
|
msgid "Flag Package Out-Of-Date"
|
||||||
msgstr "Marcado como desactualizado"
|
msgstr "Marcado como desactualizado"
|
||||||
|
@ -528,7 +545,7 @@ msgstr ""
|
||||||
"Solamente usuarios de confianza y desarrolladores pueden unir paquetes."
|
"Solamente usuarios de confianza y desarrolladores pueden unir paquetes."
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr ""
|
msgstr "Enviar solicitud"
|
||||||
|
|
||||||
msgid "Close Request"
|
msgid "Close Request"
|
||||||
msgstr "Cerrar solicitud"
|
msgstr "Cerrar solicitud"
|
||||||
|
@ -719,19 +736,19 @@ msgid "Missing comment ID."
|
||||||
msgstr "Falta el identificador del comentario."
|
msgstr "Falta el identificador del comentario."
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "No pueden fijarse más de 5 comentarios."
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "No tienes permitido fijar este comentario."
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr "No tienes permitido desfijar este comentario."
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "El comentario ha sido fijado."
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr "El comentario ha sido desfijado."
|
||||||
|
|
||||||
msgid "Error retrieving package details."
|
msgid "Error retrieving package details."
|
||||||
msgstr "Error al recuperar los detalles del paquete."
|
msgstr "Error al recuperar los detalles del paquete."
|
||||||
|
@ -816,10 +833,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "Haz sido eliminado de la lista de notificaciones de comentarios de %s."
|
msgstr "Haz sido eliminado de la lista de notificaciones de comentarios de %s."
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "No estás autorizado a restablecer este comentario."
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "El comentario se ha restablecido."
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "No estás autorizado para eliminar este comentario."
|
msgstr "No estás autorizado para eliminar este comentario."
|
||||||
|
@ -917,6 +934,9 @@ msgstr "oculto"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nombre real"
|
msgstr "Nombre real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Página principal"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Alias de IRC"
|
msgstr "Alias de IRC"
|
||||||
|
|
||||||
|
@ -932,6 +952,9 @@ msgstr "Inactivo desde"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Activo"
|
msgstr "Activo"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Última autentificación"
|
msgstr "Última autentificación"
|
||||||
|
|
||||||
|
@ -948,6 +971,10 @@ msgstr "Editar la cuenta de este usuario"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Haz clic %saquí%s si deseas eliminar permanentemente esta cuenta."
|
msgstr "Haz clic %saquí%s si deseas eliminar permanentemente esta cuenta."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "obligatorio"
|
msgstr "obligatorio"
|
||||||
|
|
||||||
|
@ -990,13 +1017,16 @@ msgid "SSH Public Key"
|
||||||
msgstr "Clave pública SSH"
|
msgstr "Clave pública SSH"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "Gestión de notificaciones"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "Notificación de nuevos comentarios"
|
msgstr "Notificación de nuevos comentarios"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "Notificar de actualizaciones de un paquete"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Notificar de cambios de propietario"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Actualizar"
|
msgstr "Actualizar"
|
||||||
|
@ -1044,22 +1074,25 @@ msgstr "Guardar"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Marcar comentario como desactualizado: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"%s%s%s se ha marcado %s%s%s como desactualizado %s%s%s por la siguiente "
|
||||||
|
"razón:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s no está marcado como desactualizado."
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "Regresar a detalles"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Derechos de autor %s 2004 - %d, equipo desarrollador de la web del AUR."
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "Mis paquetes"
|
msgstr "Mis paquetes"
|
||||||
|
@ -1084,7 +1117,7 @@ msgstr "Buscar en la wiki"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "Marcado como desactualizado (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Marcar paquete como desactualizado"
|
msgstr "Marcar paquete como desactualizado"
|
||||||
|
@ -1101,6 +1134,9 @@ msgstr "Votar por este paquete"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Deshabilitar notificaciones"
|
msgstr "Deshabilitar notificaciones"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Habilitar notificaciones"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Administrar coencargados"
|
msgstr "Administrar coencargados"
|
||||||
|
|
||||||
|
@ -1160,7 +1196,7 @@ msgid "View all comments"
|
||||||
msgstr "Ver todos los comentarios"
|
msgstr "Ver todos los comentarios"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "Comentarios fijados"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "Últimos comentarios"
|
msgstr "Últimos comentarios"
|
||||||
|
@ -1179,27 +1215,27 @@ msgstr "borrado el %s por %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "borrado el %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "editado el %s por %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "editado el %s"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "Comentario restablecido"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Eliminar comentario"
|
msgstr "Eliminar comentario"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "Comentario fijado"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr "Comentario desfijado"
|
||||||
|
|
||||||
msgid "All comments"
|
msgid "All comments"
|
||||||
msgstr "Todos los comentarios"
|
msgstr "Todos los comentarios"
|
||||||
|
@ -1248,9 +1284,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Usa este formulario para cerrar la solicitud para el paquete base %s%s%s."
|
"Usa este formulario para cerrar la solicitud para el paquete base %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Nota"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1287,6 +1320,40 @@ msgstr "Orfandad"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Unir en"
|
msgstr "Unir en"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Al enviar una solicitud de eliminación, le preguntas a un usuario de "
|
||||||
|
"confianza que elimine el paquete base. Este tipo de solicitud debe ser "
|
||||||
|
"utilizado para los duplicados, programas abandonados por el desarrollador "
|
||||||
|
"principal o encargado, así como programas ilegales e irreparablemente rotos."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Al enviar una solicitud de unión, le preguntas a un usuario de confianza que "
|
||||||
|
"elimine el paquete base y transfiera sus votos y comentarios a otro paquete "
|
||||||
|
"base. La unión de un paquete no afecta a los correspondientes repositorios "
|
||||||
|
"Git. Por tanto asegúrate de actualizar el historia Git del paquete de "
|
||||||
|
"destino tú mismo."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Al enviar una solicitud de orfandad, le preguntas a un usuario de confianza "
|
||||||
|
"que remueva la propiedad sobre el paquete base al encargado principal de "
|
||||||
|
"este. Por favor, haz esto solamente si el paquete necesita una acción de "
|
||||||
|
"mantenención, el encargado no presenta signos de actividad y ya intentaste "
|
||||||
|
"ponerte en contacto con él anteriormente."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1307,8 +1374,10 @@ msgid "Date"
|
||||||
msgstr "Fecha"
|
msgstr "Fecha"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "Aprox. %d días restantes"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d día restante"
|
||||||
|
msgstr[1] "~%d días restantes"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1406,12 +1475,13 @@ msgstr[1] "%d paquetes fueron encontrados."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versión"
|
msgstr "Versión"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La popularidad se calcula como la suma de todos los votos con cada voto "
|
"La popularidad se calcula como la suma de todos los votos y cada uno "
|
||||||
"ponderado con un factor de 0,98 por día desde la creación del paquete."
|
"ponderado con un factor de %.2f por día desde la creación del paquete."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Sí"
|
msgstr "Sí"
|
||||||
|
@ -1471,7 +1541,7 @@ msgid "Recent Updates"
|
||||||
msgstr "Actualizaciones recientes"
|
msgstr "Actualizaciones recientes"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "más"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "Mis estadísticas"
|
msgstr "Mis estadísticas"
|
||||||
|
|
153
po/es_419.po
153
po/es_419.po
|
@ -8,13 +8,16 @@
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# neiko <neikokz+tsfx@gmail.com>, 2011
|
# neiko <neikokz+tsfx@gmail.com>, 2011
|
||||||
# Nicolás de la Torre <ndelatorre@gmail.com>, 2012
|
# Nicolás de la Torre <ndelatorre@gmail.com>, 2012
|
||||||
# Pablo Roberto Francisco Lezaeta Reyes <prflr88@gmail.com>, 2012,2015
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2016
|
||||||
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2012,2015-2016
|
||||||
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2016
|
||||||
|
# Pablo Roberto “Jristz” Lezaeta Reyes <prflr88@gmail.com>, 2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Spanish (Latin America) (http://www.transifex.com/lfleischer/"
|
"Language-Team: Spanish (Latin America) (http://www.transifex.com/lfleischer/"
|
||||||
"aur/language/es_419/)\n"
|
"aur/language/es_419/)\n"
|
||||||
|
@ -30,6 +33,20 @@ msgstr "Página no encontrada"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Disculpe, la página que solicitó no existe."
|
msgstr "Disculpe, la página que solicitó no existe."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Nota"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Servicio no disponible"
|
msgstr "Servicio no disponible"
|
||||||
|
|
||||||
|
@ -86,7 +103,7 @@ msgid "Submit a proposal to vote on."
|
||||||
msgstr "Envíe una propuesta a la cual votar."
|
msgstr "Envíe una propuesta a la cual votar."
|
||||||
|
|
||||||
msgid "Applicant/TU"
|
msgid "Applicant/TU"
|
||||||
msgstr "Candidato/Usuario de confianza (TU)"
|
msgstr "Candidato/Usuario de confianza (UC)"
|
||||||
|
|
||||||
msgid "(empty if not applicable)"
|
msgid "(empty if not applicable)"
|
||||||
msgstr "(vacío si no aplica)"
|
msgstr "(vacío si no aplica)"
|
||||||
|
@ -95,13 +112,13 @@ msgid "Type"
|
||||||
msgstr "Tipo"
|
msgstr "Tipo"
|
||||||
|
|
||||||
msgid "Addition of a TU"
|
msgid "Addition of a TU"
|
||||||
msgstr "Agregar a un nuevo usuario de confianza"
|
msgstr "Agregar a un nuevo Usuario de Confianza"
|
||||||
|
|
||||||
msgid "Removal of a TU"
|
msgid "Removal of a TU"
|
||||||
msgstr "Remover a un usuario de confianza"
|
msgstr "Remover a un Usuario de Confianza"
|
||||||
|
|
||||||
msgid "Removal of a TU (undeclared inactivity)"
|
msgid "Removal of a TU (undeclared inactivity)"
|
||||||
msgstr "Remover a un usuario de confianza (no declarado inactivo)"
|
msgstr "Remover a un Usuario de Confianza (no declarado inactivo)"
|
||||||
|
|
||||||
msgid "Amendment of Bylaws"
|
msgid "Amendment of Bylaws"
|
||||||
msgstr "Enmienda a las Bylaws (Reglas de los TU)"
|
msgstr "Enmienda a las Bylaws (Reglas de los TU)"
|
||||||
|
@ -127,7 +144,7 @@ msgid ""
|
||||||
"Guidelines%s for more information."
|
"Guidelines%s for more information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"¡Bienvenido al repositorio de usuarios de Arch! Lea la %sGuía del usuario "
|
"¡Bienvenido al repositorio de usuarios de Arch! Lea la %sGuía del usuario "
|
||||||
"del AUR%s y la %sGuía del usuario de confianza del AUR%s para mayor "
|
"del AUR%s y la %sGuía del usuario de Confianza del AUR%s para mayor "
|
||||||
"información."
|
"información."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
|
@ -152,8 +169,8 @@ msgid ""
|
||||||
"AUR packages are user produced content. Any use of the provided files is at "
|
"AUR packages are user produced content. Any use of the provided files is at "
|
||||||
"your own risk."
|
"your own risk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Los paquetes en AUR son producidos por los usuarios. Cualquier uso de ellos "
|
"Los paquetes en el AUR son producidos por los usuarios. Cualquier uso de "
|
||||||
"o sus archivos es a su propio riesgo."
|
"ellos o sus archivos es a su propio riesgo."
|
||||||
|
|
||||||
msgid "Learn more..."
|
msgid "Learn more..."
|
||||||
msgstr "Aprenda más..."
|
msgstr "Aprenda más..."
|
||||||
|
@ -228,7 +245,7 @@ msgstr ""
|
||||||
"información."
|
"información."
|
||||||
|
|
||||||
msgid "The following SSH fingerprints are used for the AUR:"
|
msgid "The following SSH fingerprints are used for the AUR:"
|
||||||
msgstr "Las siguientes huellas SSH están en uso para AUR."
|
msgstr "Las siguientes huellas SSH están en uso para el AUR."
|
||||||
|
|
||||||
msgid "Discussion"
|
msgid "Discussion"
|
||||||
msgstr "Debate"
|
msgstr "Debate"
|
||||||
|
@ -453,7 +470,7 @@ msgstr ""
|
||||||
"paquetes."
|
"paquetes."
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr ""
|
msgstr "Marcar comentario"
|
||||||
|
|
||||||
msgid "Flag Package Out-Of-Date"
|
msgid "Flag Package Out-Of-Date"
|
||||||
msgstr "Marcado como desactualizado"
|
msgstr "Marcado como desactualizado"
|
||||||
|
@ -524,7 +541,7 @@ msgid "Only Trusted Users and Developers can merge packages."
|
||||||
msgstr "Solo Usuarios de Confianza y Desarrolladores pueden fusionar paquetes."
|
msgstr "Solo Usuarios de Confianza y Desarrolladores pueden fusionar paquetes."
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr ""
|
msgstr "Enviar petición"
|
||||||
|
|
||||||
msgid "Close Request"
|
msgid "Close Request"
|
||||||
msgstr "Cerrar Petición"
|
msgstr "Cerrar Petición"
|
||||||
|
@ -713,19 +730,19 @@ msgid "Missing comment ID."
|
||||||
msgstr "Falta el identificador del comentario."
|
msgstr "Falta el identificador del comentario."
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "No pueden ser anclar más de 5 comentarios."
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "No tiene permitido anclar este comentario."
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr "No tiene permitido desanclar este comentario."
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "El comentario fue anclado."
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr "El comentario fue desanclado."
|
||||||
|
|
||||||
msgid "Error retrieving package details."
|
msgid "Error retrieving package details."
|
||||||
msgstr "Error al recuperar los detalles del paquete."
|
msgstr "Error al recuperar los detalles del paquete."
|
||||||
|
@ -810,10 +827,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "Ha sido eliminado de la lista de notificaciones de comentarios de %s."
|
msgstr "Ha sido eliminado de la lista de notificaciones de comentarios de %s."
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "No está autorizado a restablecer este comentario."
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "El comentario fue restablecido."
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "No está autorizado a borrar este comentario."
|
msgstr "No está autorizado a borrar este comentario."
|
||||||
|
@ -910,6 +927,9 @@ msgstr "oculto"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nombre real"
|
msgstr "Nombre real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Página principal"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Alias de IRC"
|
msgstr "Alias de IRC"
|
||||||
|
|
||||||
|
@ -925,6 +945,9 @@ msgstr "Inactivo desde"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Activo"
|
msgstr "Activo"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Última autentificación"
|
msgstr "Última autentificación"
|
||||||
|
|
||||||
|
@ -941,6 +964,10 @@ msgstr "Editar la cuenta de este usuario"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Haga clic %saquí%s si desea borrar permanentemente esa cuenta."
|
msgstr "Haga clic %saquí%s si desea borrar permanentemente esa cuenta."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "obligatorio"
|
msgstr "obligatorio"
|
||||||
|
|
||||||
|
@ -983,13 +1010,16 @@ msgid "SSH Public Key"
|
||||||
msgstr "Clave pública SSH"
|
msgstr "Clave pública SSH"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "Configuración de notificaciones"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "Notificación de nuevos comentarios"
|
msgstr "Notificación de nuevos comentarios"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "Notificar sobre actualizaciones de un paquete"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Notificarme de cambios de propietario"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Actualizar"
|
msgstr "Actualizar"
|
||||||
|
@ -1037,22 +1067,24 @@ msgstr "Guardar"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Marcar comentario como desactualizado: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"%s%s%s fue marcado %s%s%s como desactualizado %s%s%s por la siguiente razón:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s no está marcado como desactualizado."
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "Regresar a detalles"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Derechos de autor %s 2004 - %d, equipo de desarrollo de la web del AUR."
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "Mis paquetes"
|
msgstr "Mis paquetes"
|
||||||
|
@ -1077,7 +1109,7 @@ msgstr "Buscar en la wiki"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "Marcado como desactualizado (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Marcar paquete como desactualizado"
|
msgstr "Marcar paquete como desactualizado"
|
||||||
|
@ -1094,6 +1126,9 @@ msgstr "Votar por este paquete"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Deshabilitar notificaciones"
|
msgstr "Deshabilitar notificaciones"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Habilitar notificaciones"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Administrar coencargados"
|
msgstr "Administrar coencargados"
|
||||||
|
|
||||||
|
@ -1153,7 +1188,7 @@ msgid "View all comments"
|
||||||
msgstr "Ver todos los comentarios"
|
msgstr "Ver todos los comentarios"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "Comentarios anclados"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "Últimos comentarios"
|
msgstr "Últimos comentarios"
|
||||||
|
@ -1172,27 +1207,27 @@ msgstr "borrado el %s por %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "borrado el %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "editado el %s por %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "editado el %s"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "Comentario restablecido"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Borrar comentario"
|
msgstr "Borrar comentario"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "Comentario anclado"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr "Comentario desanclado"
|
||||||
|
|
||||||
msgid "All comments"
|
msgid "All comments"
|
||||||
msgstr "Todos los comentarios"
|
msgstr "Todos los comentarios"
|
||||||
|
@ -1241,9 +1276,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Use este formulario para cerrar la petición para el paquete base %s%s%s."
|
"Use este formulario para cerrar la petición para el paquete base %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Nota"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1280,6 +1312,40 @@ msgstr "Orfandad"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Fusionar en"
|
msgstr "Fusionar en"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Al enviar una Petición de Borrado, le preguntará a un Usuario de Confianza "
|
||||||
|
"que elimine dicho paquete base. Este tipo de peticiones debe ser utilizada "
|
||||||
|
"para duplicados, programas abandonados por el desarrollador principal o "
|
||||||
|
"encargado, así como programas ilegales e irreparablemente rotos."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Al enviar una Petición de Fusión, le preguntará a un Usuario de Confianza "
|
||||||
|
"que borre el paquete base y transfiera sus votos y comentarios a otro "
|
||||||
|
"paquete base. La fusión de un paquete no afecta a los correspondientes "
|
||||||
|
"repositorios Git. Por lo tanto asegúrese de actualizar el historia Git del "
|
||||||
|
"paquete de destino uste mismo."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Al enviar una Petición de Orfandad, le preguntarás a un Usuario de Confianza "
|
||||||
|
"que le quite la propiedad sobre el paquete base al encargado principal de "
|
||||||
|
"este. Por favor, haga esto solo si el paquete necesita acciones de "
|
||||||
|
"mantenención para funcionar, el encargado no presenta da de actividad y ya "
|
||||||
|
"intentó ponerse en contacto con él anteriormente."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1300,8 +1366,10 @@ msgid "Date"
|
||||||
msgstr "Fecha"
|
msgstr "Fecha"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "Aprox. %d días restantes"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d día restante"
|
||||||
|
msgstr[1] "~%d días restantes"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1399,12 +1467,13 @@ msgstr[1] "%d paquetes fueron encontrados."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versión"
|
msgstr "Versión"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La Popularidad es calculada como la suma de todos los votos ponderados con "
|
"La Popularidad es calculada como la suma de todos los votos ponderados con "
|
||||||
"un factor de 0,98 por día desde la creación del paquete."
|
"un factor de %.2f por día desde la creación del paquete."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Sí"
|
msgstr "Sí"
|
||||||
|
@ -1464,7 +1533,7 @@ msgid "Recent Updates"
|
||||||
msgstr "Actualizaciones recientes"
|
msgstr "Actualizaciones recientes"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "más"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "Mis estadísticas"
|
msgstr "Mis estadísticas"
|
||||||
|
@ -1498,7 +1567,7 @@ msgid "Participation"
|
||||||
msgstr "Participación"
|
msgstr "Participación"
|
||||||
|
|
||||||
msgid "Last Votes by TU"
|
msgid "Last Votes by TU"
|
||||||
msgstr "Último voto del usuario de confianza"
|
msgstr "Último voto del Usuario de Confianza"
|
||||||
|
|
||||||
msgid "Last vote"
|
msgid "Last vote"
|
||||||
msgstr "Último voto"
|
msgstr "Último voto"
|
||||||
|
|
66
po/fi.po
66
po/fi.po
|
@ -9,8 +9,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Finnish (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Finnish (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"fi/)\n"
|
"fi/)\n"
|
||||||
|
@ -26,6 +26,20 @@ msgstr "Sivua ei löydy."
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Valitettavasti hakemaasi sivua ei ole olemassa."
|
msgstr "Valitettavasti hakemaasi sivua ei ole olemassa."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Palvelu ei saatavilla."
|
msgstr "Palvelu ei saatavilla."
|
||||||
|
|
||||||
|
@ -882,6 +896,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Oikea nimi"
|
msgstr "Oikea nimi"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC nikki"
|
msgstr "IRC nikki"
|
||||||
|
|
||||||
|
@ -897,6 +914,9 @@ msgstr ""
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktiivinen"
|
msgstr "Aktiivinen"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -913,6 +933,10 @@ msgstr ""
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "vaaditaan"
|
msgstr "vaaditaan"
|
||||||
|
|
||||||
|
@ -959,6 +983,9 @@ msgstr "Lähetä ilmoitus uusista kommnteista"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Päivitä"
|
msgstr "Päivitä"
|
||||||
|
|
||||||
|
@ -1059,6 +1086,9 @@ msgstr "Äännestä pakettia"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "En halua enää ilmoituksia"
|
msgstr "En halua enää ilmoituksia"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Hallitse ylläpitäjäkumppaneita"
|
msgstr "Hallitse ylläpitäjäkumppaneita"
|
||||||
|
|
||||||
|
@ -1205,9 +1235,6 @@ msgstr "Lähdetiedostot"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1240,6 +1267,26 @@ msgstr ""
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Yhdistä pakettiin"
|
msgstr "Yhdistä pakettiin"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1260,8 +1307,10 @@ msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1359,9 +1408,10 @@ msgstr[1] ""
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versio"
|
msgstr "Versio"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
87
po/fr.po
87
po/fr.po
|
@ -5,7 +5,7 @@
|
||||||
# Translators:
|
# Translators:
|
||||||
# Antoine Lubineau <antoine@lubignon.info>, 2012
|
# Antoine Lubineau <antoine@lubignon.info>, 2012
|
||||||
# Antoine Lubineau <antoine@lubignon.info>, 2012-2016
|
# Antoine Lubineau <antoine@lubignon.info>, 2012-2016
|
||||||
# Cedric Girard <girard.cedric@gmail.com>, 2011,2014
|
# Cedric Girard <girard.cedric@gmail.com>, 2011,2014,2016
|
||||||
# lordheavy <lordheavym@gmail.com>, 2011
|
# lordheavy <lordheavym@gmail.com>, 2011
|
||||||
# lordheavy <lordheavym@gmail.com>, 2013-2014
|
# lordheavy <lordheavym@gmail.com>, 2013-2014
|
||||||
# lordheavy <lordheavym@gmail.com>, 2011-2012
|
# lordheavy <lordheavym@gmail.com>, 2011-2012
|
||||||
|
@ -15,8 +15,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 21:38+0000\n"
|
"PO-Revision-Date: 2016-10-11 20:06+0000\n"
|
||||||
"Last-Translator: Antoine Lubineau <antoine@lubignon.info>\n"
|
"Last-Translator: Antoine Lubineau <antoine@lubignon.info>\n"
|
||||||
"Language-Team: French (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: French (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"fr/)\n"
|
"fr/)\n"
|
||||||
|
@ -32,6 +32,21 @@ msgstr "Page non trouvée"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Désolé, la page que vous avez demandée n’existe pas."
|
msgstr "Désolé, la page que vous avez demandée n’existe pas."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Note"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
"Les URL de clone Git ne sont pas censées être ouvertes depuis un navigateur."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "Pour cloner le dépôt Git de %s, exécutez %s."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "Cliquez %sici%s pour retourner à la page des détails de %s."
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Service indisponible"
|
msgstr "Service indisponible"
|
||||||
|
|
||||||
|
@ -536,7 +551,7 @@ msgstr ""
|
||||||
"paquets."
|
"paquets."
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr "Soumettre la demande"
|
msgstr "Soumettre une demande"
|
||||||
|
|
||||||
msgid "Close Request"
|
msgid "Close Request"
|
||||||
msgstr "Fermer la requête"
|
msgstr "Fermer la requête"
|
||||||
|
@ -931,6 +946,9 @@ msgstr "caché"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nom réel"
|
msgstr "Nom réel"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Accueil"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Pseudo IRC"
|
msgstr "Pseudo IRC"
|
||||||
|
|
||||||
|
@ -946,6 +964,9 @@ msgstr "Inactif depuis"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Actif"
|
msgstr "Actif"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Date d'enregistrement :"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Dernière connexion."
|
msgstr "Dernière connexion."
|
||||||
|
|
||||||
|
@ -962,6 +983,10 @@ msgstr "Éditer le compte de cet utilisateur."
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Cliquez %sici%s si vous voulez effacer ce compte de façon définitive."
|
msgstr "Cliquez %sici%s si vous voulez effacer ce compte de façon définitive."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Cliquer %sici%s pour obtenir les détails de l'utilisateur."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "requis"
|
msgstr "requis"
|
||||||
|
|
||||||
|
@ -1012,6 +1037,9 @@ msgstr "Avertir des nouveaux commentaires"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr "Notifications de mises à jour de paquets"
|
msgstr "Notifications de mises à jour de paquets"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Notifier des changements de propriétaire"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Mise à jour"
|
msgstr "Mise à jour"
|
||||||
|
|
||||||
|
@ -1115,6 +1143,9 @@ msgstr "Voter pour ce paquet"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Désactiver les notifications"
|
msgstr "Désactiver les notifications"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Activer les notifications"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Gérer les co-mainteneurs"
|
msgstr "Gérer les co-mainteneurs"
|
||||||
|
|
||||||
|
@ -1262,9 +1293,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Utiliser ce formulaire pour fermer la requête pour le paquet de base %s%s%s."
|
"Utiliser ce formulaire pour fermer la requête pour le paquet de base %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Note"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1301,6 +1329,40 @@ msgstr "Rendre orphelin"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Fusionner dans"
|
msgstr "Fusionner dans"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"En soumettant une requète de suppression, vous demandez à un utilisateur de "
|
||||||
|
"confiance de supprimer le paquet de base. Ce type de requète doit être "
|
||||||
|
"utilisé pour les doublons, les logiciels abandonnés par l'upstream ainsi que "
|
||||||
|
"pour les paquets illégaux ou irréparables."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"En soumettant une requète de fusion, vous demandez à un utilisateur de "
|
||||||
|
"confiance de supprimer le paquet de base et de transférer les votes et les "
|
||||||
|
"commentaires vers un autre paquet de base. Fusionner un paquet n'impacte pas "
|
||||||
|
"le dépot Git correspondant. Assurez-vous de mettre à jour l'historique Git "
|
||||||
|
"du paquet cible vous-même."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"En soumettant une requète pour rendre orphelin, vous demandez à un "
|
||||||
|
"utilisateur de confiance de retirer le mainteneur du paquet de base. Merci "
|
||||||
|
"de ne faire ceci que si le paquet nécessite l'action d'un mainteneur, que le "
|
||||||
|
"mainteneur ne répond pas et que vous avez préalablement essayé de contacter "
|
||||||
|
"le mainteneur."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1321,8 +1383,10 @@ msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d jours restants"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d jour restant"
|
||||||
|
msgstr[1] "~%d jours restants"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1420,12 +1484,13 @@ msgstr[1] "%d paquets trouvés."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Version"
|
msgstr "Version"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La popularité est calculée à partir de la somme de tous les votes, chacun "
|
"La popularité est calculée à partir de la somme de tous les votes, chacun "
|
||||||
"étant pondéré par un facteur de 0.98 par jour depuis sa création."
|
"étant pondéré par un facteur de %.2f par jour depuis sa création."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Oui"
|
msgstr "Oui"
|
||||||
|
|
67
po/hr.po
67
po/hr.po
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Croatian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Croatian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"hr/)\n"
|
"hr/)\n"
|
||||||
|
@ -26,6 +26,20 @@ msgstr ""
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -828,6 +842,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Vaše stvarno ime"
|
msgstr "Vaše stvarno ime"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Nadimak na IRC-u"
|
msgstr "Nadimak na IRC-u"
|
||||||
|
|
||||||
|
@ -843,6 +860,9 @@ msgstr ""
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktivan"
|
msgstr "Aktivan"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -859,6 +879,10 @@ msgstr ""
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "obvezno"
|
msgstr "obvezno"
|
||||||
|
|
||||||
|
@ -905,6 +929,9 @@ msgstr ""
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Ažuriraj"
|
msgstr "Ažuriraj"
|
||||||
|
|
||||||
|
@ -1005,6 +1032,9 @@ msgstr ""
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1152,9 +1182,6 @@ msgstr "Izvor"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1187,6 +1214,26 @@ msgstr ""
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1208,8 +1255,11 @@ msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
msgstr[2] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1309,9 +1359,10 @@ msgstr[2] ""
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
205
po/hu.po
205
po/hu.po
|
@ -3,15 +3,16 @@
|
||||||
# This file is distributed under the same license as the AUR package.
|
# This file is distributed under the same license as the AUR package.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# György Balló <ballogy@freestart.hu>, 2013
|
# György Balló <ballogyor@gmail.com>, 2013
|
||||||
# György Balló <ballogy@freestart.hu>, 2011,2013-2015
|
# György Balló <ballogyor@gmail.com>, 2011,2013-2016
|
||||||
|
# György Balló <ballogyor@gmail.com>, 2016
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Hungarian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Hungarian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"hu/)\n"
|
"hu/)\n"
|
||||||
|
@ -27,6 +28,20 @@ msgstr "Az oldal nem található"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Sajnálom, a megtekinteni kívánt oldal nem létezik."
|
msgstr "Sajnálom, a megtekinteni kívánt oldal nem létezik."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Megjegyzés"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Szolgáltatás nem elérhető"
|
msgstr "Szolgáltatás nem elérhető"
|
||||||
|
|
||||||
|
@ -112,7 +127,7 @@ msgid "Manage Co-maintainers"
|
||||||
msgstr "Társkarbantartók kezelése"
|
msgstr "Társkarbantartók kezelése"
|
||||||
|
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr ""
|
msgstr "Hozzászólás szerkesztése"
|
||||||
|
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Honlap"
|
msgstr "Honlap"
|
||||||
|
@ -146,6 +161,8 @@ msgid ""
|
||||||
"AUR packages are user produced content. Any use of the provided files is at "
|
"AUR packages are user produced content. Any use of the provided files is at "
|
||||||
"your own risk."
|
"your own risk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Az AUR csomagok felhasználók által készített tartalmak. A szolgáltatott "
|
||||||
|
"fájlok használata csak saját felelősségre."
|
||||||
|
|
||||||
msgid "Learn more..."
|
msgid "Learn more..."
|
||||||
msgstr "Tudj meg többet..."
|
msgstr "Tudj meg többet..."
|
||||||
|
@ -246,6 +263,11 @@ msgid ""
|
||||||
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
||||||
"comment on the appropriate package page."
|
"comment on the appropriate package page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ha találsz egy hibát az AUR webes felületén, kérünk, tölts ki egy "
|
||||||
|
"hibajelentést a %shibakövetőnkben%s. A hibakövetőt %scsak%s az AUR webes "
|
||||||
|
"felületén található hibák jelentésére használd. Csomagolási hibák "
|
||||||
|
"jelentéséhez lépj kapcsolatba a csomag fenntartójával, vagy hagyj egy "
|
||||||
|
"hozzászólást a megfelelő csomag oldalán."
|
||||||
|
|
||||||
msgid "Package Search"
|
msgid "Package Search"
|
||||||
msgstr "Csomag keresése"
|
msgstr "Csomag keresése"
|
||||||
|
@ -282,7 +304,7 @@ msgid "Enter login credentials"
|
||||||
msgstr "Bejelentkezési adatok megadása"
|
msgstr "Bejelentkezési adatok megadása"
|
||||||
|
|
||||||
msgid "User name or email address"
|
msgid "User name or email address"
|
||||||
msgstr ""
|
msgstr "Felhasználónév vagy e-mail cím"
|
||||||
|
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Jelszó"
|
msgstr "Jelszó"
|
||||||
|
@ -363,7 +385,7 @@ msgstr ""
|
||||||
|
|
||||||
msgid "Cannot find package to merge votes and comments into."
|
msgid "Cannot find package to merge votes and comments into."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nem található csomag, amelybe a szavazatok és megjegyzések beolvaszthatók "
|
"Nem található csomag, amelybe a szavazatok és hozzászólások beolvaszthatók "
|
||||||
"lennének."
|
"lennének."
|
||||||
|
|
||||||
msgid "Cannot merge a package base with itself."
|
msgid "Cannot merge a package base with itself."
|
||||||
|
@ -440,36 +462,42 @@ msgstr ""
|
||||||
"Csak megbízható felhasználók és fejlesztők tudnak megtagadni csomagokat."
|
"Csak megbízható felhasználók és fejlesztők tudnak megtagadni csomagokat."
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr ""
|
msgstr "Hozzászólás jelölése"
|
||||||
|
|
||||||
msgid "Flag Package Out-Of-Date"
|
msgid "Flag Package Out-Of-Date"
|
||||||
msgstr ""
|
msgstr "Csomag elvaultnak jelölése"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to flag the package base %s%s%s and the following packages out-"
|
"Use this form to flag the package base %s%s%s and the following packages out-"
|
||||||
"of-date: "
|
"of-date: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Használd ezt az űrlapot annak jelzésére, hogy a(z) %s%s%s alapcsomag és a "
|
||||||
|
"következő csomagok elavultak:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please do %snot%s use this form to report bugs. Use the package comments "
|
"Please do %snot%s use this form to report bugs. Use the package comments "
|
||||||
"instead."
|
"instead."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Kérünk, %sne%s használd ezt az űrlapot hibák jelentéséhez. Használd a "
|
||||||
|
"csomaghozzászólásokat helyette."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enter details on why the package is out-of-date below, preferably including "
|
"Enter details on why the package is out-of-date below, preferably including "
|
||||||
"links to the release announcement or the new release tarball."
|
"links to the release announcement or the new release tarball."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Add meg alább a részleteit, hogy miért avult el a csomag, lehetőleg "
|
||||||
|
"hivatkozásokkal a kiadási közleményre vagy az új kiadás tarballjára."
|
||||||
|
|
||||||
msgid "Comments"
|
msgid "Comments"
|
||||||
msgstr "Megjegyzések"
|
msgstr "Hozzászólások"
|
||||||
|
|
||||||
msgid "Flag"
|
msgid "Flag"
|
||||||
msgstr "Megjelölés"
|
msgstr "Megjelölés"
|
||||||
|
|
||||||
msgid "Only registered users can flag packages out-of-date."
|
msgid "Only registered users can flag packages out-of-date."
|
||||||
msgstr ""
|
msgstr "Csak regisztrált felhasználók jelölhetnek csomagokat elavultnak."
|
||||||
|
|
||||||
msgid "Package Merging"
|
msgid "Package Merging"
|
||||||
msgstr "Csomag beolvasztása"
|
msgstr "Csomag beolvasztása"
|
||||||
|
@ -507,7 +535,7 @@ msgstr ""
|
||||||
"Csak megbízható felhasználók és fejlesztők tudnak csomagokat beolvasztani."
|
"Csak megbízható felhasználók és fejlesztők tudnak csomagokat beolvasztani."
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr ""
|
msgstr "Kérelem beküldése"
|
||||||
|
|
||||||
msgid "Close Request"
|
msgid "Close Request"
|
||||||
msgstr "Kérelem lezárása"
|
msgstr "Kérelem lezárása"
|
||||||
|
@ -673,40 +701,40 @@ msgid "View account information for %s"
|
||||||
msgstr "Fiók információinak megtekintése – %s"
|
msgstr "Fiók információinak megtekintése – %s"
|
||||||
|
|
||||||
msgid "Package base ID or package base name missing."
|
msgid "Package base ID or package base name missing."
|
||||||
msgstr ""
|
msgstr "Alapcsomag-azonosító vagy alapcsomagnév hiányzik."
|
||||||
|
|
||||||
msgid "You are not allowed to edit this comment."
|
msgid "You are not allowed to edit this comment."
|
||||||
msgstr ""
|
msgstr "Nem szerkesztheted ezt a hozzászólást."
|
||||||
|
|
||||||
msgid "Comment does not exist."
|
msgid "Comment does not exist."
|
||||||
msgstr ""
|
msgstr "A hozzászólás nem létezik."
|
||||||
|
|
||||||
msgid "Comment cannot be empty."
|
msgid "Comment cannot be empty."
|
||||||
msgstr ""
|
msgstr "A hozzászólás nem lehet üres."
|
||||||
|
|
||||||
msgid "Comment has been added."
|
msgid "Comment has been added."
|
||||||
msgstr "A megjegyzés hozzáadva."
|
msgstr "A hozzászólás hozzáadva."
|
||||||
|
|
||||||
msgid "You must be logged in before you can edit package information."
|
msgid "You must be logged in before you can edit package information."
|
||||||
msgstr "A csomag információinak szerkesztéséhez be kell jelentkezned."
|
msgstr "A csomag információinak szerkesztéséhez be kell jelentkezned."
|
||||||
|
|
||||||
msgid "Missing comment ID."
|
msgid "Missing comment ID."
|
||||||
msgstr "Hiányzó megjegyzésazonosító."
|
msgstr "Hiányzó hozzászólásazonosító."
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "5-nél több hozzászólás nem rögzíthető."
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "Nem rögzítheted ezt a hozzászólást."
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr "Nem oldhatod fel ezt a hozzászólást."
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "A hozzászólás rögzítésre került."
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr "A hozzászólás feloldásra került."
|
||||||
|
|
||||||
msgid "Error retrieving package details."
|
msgid "Error retrieving package details."
|
||||||
msgstr "Hiba történt a csomag részletes információinak letöltése közben."
|
msgstr "Hiba történt a csomag részletes információinak letöltése közben."
|
||||||
|
@ -721,7 +749,7 @@ msgid "You did not select any packages to flag."
|
||||||
msgstr "Nem választottál ki egyetlen csomagot sem megjelölésre."
|
msgstr "Nem választottál ki egyetlen csomagot sem megjelölésre."
|
||||||
|
|
||||||
msgid "The selected packages have not been flagged, please enter a comment."
|
msgid "The selected packages have not been flagged, please enter a comment."
|
||||||
msgstr ""
|
msgstr "A kiválasztott csomagok nem lettek jelölve, adj meg egy megjegyzést."
|
||||||
|
|
||||||
msgid "The selected packages have been flagged out-of-date."
|
msgid "The selected packages have been flagged out-of-date."
|
||||||
msgstr "A kiválasztott csomagok elavultnak lettek jelölve."
|
msgstr "A kiválasztott csomagok elavultnak lettek jelölve."
|
||||||
|
@ -783,26 +811,26 @@ msgstr "Nem sikerült hozzáadni az értesítési listához."
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You have been added to the comment notification list for %s."
|
msgid "You have been added to the comment notification list for %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sikeresen fel lettél véve a(z) %s csomag megjegyzésértesítési listájára."
|
"Sikeresen fel lettél véve a(z) %s csomag hozzászólásértesítési listájára."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You have been removed from the comment notification list for %s."
|
msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "El lettél távolítva a(z) %s csomag megjegyzésértesítési listájáról."
|
msgstr "El lettél távolítva a(z) %s csomag hozzászólásértesítési listájáról."
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "Ennek a hozzászólásnak nem vonhatod vissza a törlését."
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "A hozzászólás törlése visszavonásra került."
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "Nem törölheted ezt a megjegyzést."
|
msgstr "Nem törölheted ezt a hozzászólást."
|
||||||
|
|
||||||
msgid "Comment has been deleted."
|
msgid "Comment has been deleted."
|
||||||
msgstr "Megjegyzés törölve."
|
msgstr "Hozzászólás törölve."
|
||||||
|
|
||||||
msgid "Comment has been edited."
|
msgid "Comment has been edited."
|
||||||
msgstr ""
|
msgstr "A hozzászólás szerkesztve lett."
|
||||||
|
|
||||||
msgid "You are not allowed to edit the keywords of this package base."
|
msgid "You are not allowed to edit the keywords of this package base."
|
||||||
msgstr "Nem szerkesztheted ennek az alapcsomagnak a kulcsszavait."
|
msgstr "Nem szerkesztheted ennek az alapcsomagnak a kulcsszavait."
|
||||||
|
@ -825,7 +853,7 @@ msgstr "Csomag részleteinek megtekintése –"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "requires %s"
|
msgid "requires %s"
|
||||||
msgstr ""
|
msgstr "igényli ezt: %s"
|
||||||
|
|
||||||
msgid "You must be logged in to file package requests."
|
msgid "You must be logged in to file package requests."
|
||||||
msgstr "Csomagkérelmek beküldéséhez be kell jelentkezned."
|
msgstr "Csomagkérelmek beküldéséhez be kell jelentkezned."
|
||||||
|
@ -834,7 +862,7 @@ msgid "Invalid name: only lowercase letters are allowed."
|
||||||
msgstr "Érvénytelen név: csak kisbetűk használata engedélyezett."
|
msgstr "Érvénytelen név: csak kisbetűk használata engedélyezett."
|
||||||
|
|
||||||
msgid "The comment field must not be empty."
|
msgid "The comment field must not be empty."
|
||||||
msgstr "A megjegyzés mező nem lehet üres."
|
msgstr "A hozászólás mező nem lehet üres."
|
||||||
|
|
||||||
msgid "Invalid request type."
|
msgid "Invalid request type."
|
||||||
msgstr "Érvénytelen kérelemtípus."
|
msgstr "Érvénytelen kérelemtípus."
|
||||||
|
@ -881,11 +909,14 @@ msgid "Email Address"
|
||||||
msgstr "E-mail cím"
|
msgstr "E-mail cím"
|
||||||
|
|
||||||
msgid "hidden"
|
msgid "hidden"
|
||||||
msgstr ""
|
msgstr "rejtett"
|
||||||
|
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Valós név"
|
msgstr "Valós név"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Honlap"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC becenév"
|
msgstr "IRC becenév"
|
||||||
|
|
||||||
|
@ -901,6 +932,9 @@ msgstr "Ezóta inaktív:"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktív"
|
msgstr "Aktív"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Regisztráció dátuma:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Legutóbbi bejelentkezés"
|
msgstr "Legutóbbi bejelentkezés"
|
||||||
|
|
||||||
|
@ -917,6 +951,10 @@ msgstr "Ezen felhasználó fiókjának szerkesztése"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Kattints %side%s, ha véglegesen törölni szeretnéd ezt a fiókot."
|
msgstr "Kattints %side%s, ha véglegesen törölni szeretnéd ezt a fiókot."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Kattints %side%s a felhasználó részleteihez."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "kötelező"
|
msgstr "kötelező"
|
||||||
|
|
||||||
|
@ -936,9 +974,11 @@ msgid ""
|
||||||
"Please ensure you correctly entered your email address, otherwise you will "
|
"Please ensure you correctly entered your email address, otherwise you will "
|
||||||
"be locked out."
|
"be locked out."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Kérünk, győződj meg arról, hogy helyesen adtad meg az e-mail címedet, "
|
||||||
|
"különben ki leszel zárva."
|
||||||
|
|
||||||
msgid "Hide Email Address"
|
msgid "Hide Email Address"
|
||||||
msgstr ""
|
msgstr "E-mail cím elrejtése"
|
||||||
|
|
||||||
msgid "Re-type password"
|
msgid "Re-type password"
|
||||||
msgstr "Megismételt jelszó"
|
msgstr "Megismételt jelszó"
|
||||||
|
@ -957,13 +997,16 @@ msgid "SSH Public Key"
|
||||||
msgstr "Nyilvános SSH kulcs"
|
msgstr "Nyilvános SSH kulcs"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "Értesítési beállítások"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "Értesítés új hozzászólásról"
|
msgstr "Értesítés új hozzászólásról"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "Értesítés csomagfrissítésekről."
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Értesítés tulajdonváltozásokról"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Frissítés"
|
msgstr "Frissítés"
|
||||||
|
@ -1010,22 +1053,24 @@ msgstr "Mentés"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Elavultnak jelölő hozzászólás: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"%s%s%s elavultnak jelölte a(z) %s%s%s csomagot ekkor: %s%s%s a következő "
|
||||||
|
"okból:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s nincs elavultnak jelölve."
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "Vissza a részletekhez"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr "Copyright %s 2004-%d aurweb fejlesztői csapat."
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "Csomagjaim"
|
msgstr "Csomagjaim"
|
||||||
|
@ -1050,7 +1095,7 @@ msgstr "Keresés wikiben"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "Elavultnak jelölve (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Csomag elavultnak jelölése"
|
msgstr "Csomag elavultnak jelölése"
|
||||||
|
@ -1067,6 +1112,9 @@ msgstr "Szavazás erre a csomagra"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Értesítések kikapcsolása"
|
msgstr "Értesítések kikapcsolása"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Értesítések engedélyezése"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Társszerkesztők kezelése"
|
msgstr "Társszerkesztők kezelése"
|
||||||
|
|
||||||
|
@ -1117,7 +1165,7 @@ msgstr "Legutóbb frissítve"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Edit comment for: %s"
|
msgid "Edit comment for: %s"
|
||||||
msgstr ""
|
msgstr "Hozzászólás szerkesztése ehhez: %s"
|
||||||
|
|
||||||
msgid "Add Comment"
|
msgid "Add Comment"
|
||||||
msgstr "Hosszászólás"
|
msgstr "Hosszászólás"
|
||||||
|
@ -1126,46 +1174,46 @@ msgid "View all comments"
|
||||||
msgstr "Összes megjegyzés megjelenítése"
|
msgstr "Összes megjegyzés megjelenítése"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "Rögzített hozzászólások"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "Legújabb hozzászólások"
|
msgstr "Legújabb hozzászólások"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s commented on %s"
|
msgid "%s commented on %s"
|
||||||
msgstr ""
|
msgstr "%s hozzászólt ekkor: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Anonymous comment on %s"
|
msgid "Anonymous comment on %s"
|
||||||
msgstr ""
|
msgstr "Névtelen hozzászólás ekkor: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s by %s"
|
msgid "deleted on %s by %s"
|
||||||
msgstr ""
|
msgstr "törölve ekkor: %s %s által"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "törölve ekkor: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "szerkesztve ekkor: %s %s által"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "szerkesztve ekkor: %s"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "Hozzászólás törlésének visszavonása"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Hozzászólás törlése"
|
msgstr "Hozzászólás törlése"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "Hozzászólás rögzítése"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr "Hozzászólás feloldása"
|
||||||
|
|
||||||
msgid "All comments"
|
msgid "All comments"
|
||||||
msgstr "Összes hozzászólás"
|
msgstr "Összes hozzászólás"
|
||||||
|
@ -1215,9 +1263,6 @@ msgstr ""
|
||||||
"Használd ezt az űrlapot a(z) %s%s%s alapcsomaggal kapcsolatos kérelem "
|
"Használd ezt az űrlapot a(z) %s%s%s alapcsomaggal kapcsolatos kérelem "
|
||||||
"lezárásához."
|
"lezárásához."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Megjegyzés"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1254,6 +1299,39 @@ msgstr "Megtagadás"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Beolvasztás ebbe:"
|
msgstr "Beolvasztás ebbe:"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Törlési kérelem beküldésével megkérsz egy megbízható felhasználót, hogy "
|
||||||
|
"törölje az alapcsomagot. Ez a típusú kérelem duplikátumok, főági fejlesztők "
|
||||||
|
"által felhagyott szoftverek, valamint illegális és helyrehozhatatlanul "
|
||||||
|
"elromlott csomagokhoz használható."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Beolvasztási kérelem beküldésével megkérsz egy megbízható felhasználót, hogy "
|
||||||
|
"törölje az alapcsomagot, és vigye át a szavazatait és hozzászólásait egy "
|
||||||
|
"másik alapcsomaghoz. Egy csomag egyesítése nem érinti a kapcsolódó Git "
|
||||||
|
"tárolókat. Győződj meg róla, hogy frissítetted magadnak a célcsomag Git "
|
||||||
|
"történetét."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Megtagadási kérelem beküldésével megkérsz egy megbízható felhasználót, hogy "
|
||||||
|
"tegye árvává az alapcsomagot. Kérünk, hogy ezt csak akkor tedd, ha a csomag "
|
||||||
|
"igényel fenntartói műveletet, a fenntartó eltűnt, és előzőleg már "
|
||||||
|
"megpróbáltad felvenni a kapcsolatot a fenntartóval."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1274,8 +1352,10 @@ msgid "Date"
|
||||||
msgstr "Dátum"
|
msgstr "Dátum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d nap van hátra"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d nap van hátra"
|
||||||
|
msgstr[1] "~%d nap van hátra"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1326,7 +1406,7 @@ msgid "Voted"
|
||||||
msgstr "Szavazva"
|
msgstr "Szavazva"
|
||||||
|
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr ""
|
msgstr "Legutóbb módosítva"
|
||||||
|
|
||||||
msgid "Ascending"
|
msgid "Ascending"
|
||||||
msgstr "Növekvő"
|
msgstr "Növekvő"
|
||||||
|
@ -1373,12 +1453,13 @@ msgstr[1] "%d csomag található."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Verzió"
|
msgstr "Verzió"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"A népszerűség az összes szavazatból kerül számításra. Minden egyes szavazat "
|
"A népszerűség az összes szavazatból kerül számításra. Minden egyes szavazat "
|
||||||
"súlyozásra kerül naponta 0,98-as faktorral a létrehozása óta."
|
"súlyozásra kerül naponta %.2f-as faktorral a létrehozása óta."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Igen"
|
msgstr "Igen"
|
||||||
|
@ -1438,7 +1519,7 @@ msgid "Recent Updates"
|
||||||
msgstr "Legutóbbi frissítések"
|
msgstr "Legutóbbi frissítések"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "több"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "Statisztikám"
|
msgstr "Statisztikám"
|
||||||
|
|
68
po/it.po
68
po/it.po
|
@ -10,8 +10,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Italian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Italian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"it/)\n"
|
"it/)\n"
|
||||||
|
@ -27,6 +27,20 @@ msgstr "Impossibile trovare la pagina"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Spiacenti, la pagina richiesta non esiste."
|
msgstr "Spiacenti, la pagina richiesta non esiste."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Nota"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Servizio non disponibile"
|
msgstr "Servizio non disponibile"
|
||||||
|
|
||||||
|
@ -915,6 +929,9 @@ msgstr "nascosto"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nome reale"
|
msgstr "Nome reale"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Nick IRC"
|
msgstr "Nick IRC"
|
||||||
|
|
||||||
|
@ -930,6 +947,9 @@ msgstr "Inattivo da"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Attivo"
|
msgstr "Attivo"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Ultimo accesso"
|
msgstr "Ultimo accesso"
|
||||||
|
|
||||||
|
@ -946,6 +966,10 @@ msgstr "Modifica l'account di quest'utente"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Clicca %squi%s se vuoi eliminare definitivamente questo account."
|
msgstr "Clicca %squi%s se vuoi eliminare definitivamente questo account."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "obbligatorio"
|
msgstr "obbligatorio"
|
||||||
|
|
||||||
|
@ -996,6 +1020,9 @@ msgstr "Notifica dei nuovi commenti"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aggiorna"
|
msgstr "Aggiorna"
|
||||||
|
|
||||||
|
@ -1098,6 +1125,9 @@ msgstr "Vota per questo pacchetto"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Disabilita le notifiche"
|
msgstr "Disabilita le notifiche"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Gestisci i co-manutentori"
|
msgstr "Gestisci i co-manutentori"
|
||||||
|
|
||||||
|
@ -1244,9 +1274,6 @@ msgstr "Sorgenti"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "Usa questo modulo per chiudere la richiesta del pacchetto base %s%s%s."
|
msgstr "Usa questo modulo per chiudere la richiesta del pacchetto base %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Nota"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1283,6 +1310,26 @@ msgstr "Abbandona"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Unisci con"
|
msgstr "Unisci con"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1303,8 +1350,10 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d giorni rimanenti"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1403,12 +1452,11 @@ msgstr[1] "Sono stati trovati %d pacchetti."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versione"
|
msgstr "Versione"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La popolarità viene calcolata come la somma di tutti i voti con ogni voto "
|
|
||||||
"ponderato con un fattore di 0,98 al giorno dalla sua creazione."
|
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Sì"
|
msgstr "Sì"
|
||||||
|
|
111
po/ja.po
111
po/ja.po
|
@ -5,13 +5,13 @@
|
||||||
# Translators:
|
# Translators:
|
||||||
# kusakata, 2013
|
# kusakata, 2013
|
||||||
# kusakata, 2013
|
# kusakata, 2013
|
||||||
# kusakata, 2013-2015
|
# kusakata, 2013-2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Japanese (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Japanese (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"ja/)\n"
|
"ja/)\n"
|
||||||
|
@ -27,6 +27,20 @@ msgstr "ページが見つかりませんでした"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "あなたがリクエストしたページは存在しませんでした。"
|
msgstr "あなたがリクエストしたページは存在しませんでした。"
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "ノート"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Service Unavailable"
|
msgstr "Service Unavailable"
|
||||||
|
|
||||||
|
@ -442,7 +456,7 @@ msgid "Only Trusted Users and Developers can disown packages."
|
||||||
msgstr "Trusted User と開発者だけがパッケージを孤児にできます。"
|
msgstr "Trusted User と開発者だけがパッケージを孤児にできます。"
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr ""
|
msgstr "コメントのフラグを立てる"
|
||||||
|
|
||||||
msgid "Flag Package Out-Of-Date"
|
msgid "Flag Package Out-Of-Date"
|
||||||
msgstr "パッケージの Out-Of-Date フラグを立てる"
|
msgstr "パッケージの Out-Of-Date フラグを立てる"
|
||||||
|
@ -798,10 +812,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "%s がコメントの通知リストから削除されました。"
|
msgstr "%s がコメントの通知リストから削除されました。"
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "このコメントを復元する権限がありません。"
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "コメントは復元されました。"
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "このコメントを削除することはできません。"
|
msgstr "このコメントを削除することはできません。"
|
||||||
|
@ -895,6 +909,9 @@ msgstr "非公開"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "本名"
|
msgstr "本名"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "ホームページ"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC ニックネーム"
|
msgstr "IRC ニックネーム"
|
||||||
|
|
||||||
|
@ -910,6 +927,9 @@ msgstr "休止開始"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "活動中"
|
msgstr "活動中"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "登録日:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "最後のログイン"
|
msgstr "最後のログイン"
|
||||||
|
|
||||||
|
@ -926,6 +946,10 @@ msgstr "このユーザーのアカウントを編集"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "このアカウントを恒久的に削除したい場合は%sこちら%sをクリック。"
|
msgstr "このアカウントを恒久的に削除したい場合は%sこちら%sをクリック。"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "ユーザーの詳細は%sこちら%sをクリック。"
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "必須"
|
msgstr "必須"
|
||||||
|
|
||||||
|
@ -968,13 +992,16 @@ msgid "SSH Public Key"
|
||||||
msgstr "SSH 公開鍵"
|
msgstr "SSH 公開鍵"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "通知設定"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "新しいコメントを通知"
|
msgstr "新しいコメントを通知"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "パッケージアップデートの通知"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "所有者の変更の通知"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "更新"
|
msgstr "更新"
|
||||||
|
@ -1021,18 +1048,19 @@ msgstr "保存"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Out-of-Date フラグが立てられたコメント: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"%s%s%s は %s%s%s を %s%s%s に以下の理由で out-of-date フラグを立てました:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s は out-of-date フラグが立てられていません。"
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "詳細に戻る"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
|
@ -1061,7 +1089,7 @@ msgstr "wiki を検索"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "out-of-date フラグが立てられています (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "パッケージの out-of-date フラグを立てる"
|
msgstr "パッケージの out-of-date フラグを立てる"
|
||||||
|
@ -1078,6 +1106,9 @@ msgstr "このパッケージに投票する"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "通知を止める"
|
msgstr "通知を止める"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "通知を有効にする"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "共同メンテナの管理"
|
msgstr "共同メンテナの管理"
|
||||||
|
|
||||||
|
@ -1155,18 +1186,18 @@ msgstr "%s によって %s に削除"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "%s に削除"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "%s に %s によって編集"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "%s に編集"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "コメントを復元"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "コメントを削除"
|
msgstr "コメントを削除"
|
||||||
|
@ -1225,9 +1256,6 @@ msgstr ""
|
||||||
"このフォームを使ってパッケージベース %s%s%s のリクエストをクローズすることが"
|
"このフォームを使ってパッケージベース %s%s%s のリクエストをクローズすることが"
|
||||||
"できます。"
|
"できます。"
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "ノート"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1264,6 +1292,38 @@ msgstr "孤児"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "マージ"
|
msgstr "マージ"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"削除リクエストを送信することで、Trusted User にパッケージベースの削除を要求で"
|
||||||
|
"きます。削除リクエストを使用するケース: パッケージの重複や、上流によってソフ"
|
||||||
|
"トウェアの開発が放棄された場合、違法なパッケージ、あるいはパッケージがどうし"
|
||||||
|
"ようもなく壊れてしまっている場合など。"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"マージリクエストを送信することで、パッケージベースを削除して\n"
|
||||||
|
"投票数とコメントを他のパッケージベースに移動することを Trusted User に要求で"
|
||||||
|
"きます。パッケージのマージは Git リポジトリに影響を与えません。マージ先のパッ"
|
||||||
|
"ケージの Git 履歴は自分で更新してください。"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"孤児リクエストを送信することで、パッケージベースの所有権が放棄されるように "
|
||||||
|
"Trusted User に要求できます。パッケージにメンテナが何らかの手を加える必要があ"
|
||||||
|
"り、現在のメンテナが行方不明で、メンテナに連絡を取ろうとしても返答がない場合"
|
||||||
|
"にのみ、リクエストを送信してください。"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1283,8 +1343,9 @@ msgid "Date"
|
||||||
msgstr "日付"
|
msgstr "日付"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "残り ~%d 日"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "残り ~%d 日"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1380,11 +1441,13 @@ msgstr[0] "パッケージが %d 個見つかりました。"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "バージョン"
|
msgstr "バージョン"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"人気度は各投票に作成日からの日数を0.98倍した全投票の合計で計算されます。"
|
"人気度は各投票にパッケージ作成日からの日数を %.2f 倍した全投票の合計で計算さ"
|
||||||
|
"れます。"
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "はい"
|
msgstr "はい"
|
||||||
|
@ -1444,7 +1507,7 @@ msgid "Recent Updates"
|
||||||
msgstr "最近のアップデート"
|
msgstr "最近のアップデート"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "詳細"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "自分の統計"
|
msgstr "自分の統計"
|
||||||
|
|
68
po/nb.po
68
po/nb.po
|
@ -6,15 +6,15 @@
|
||||||
# Alexander F Rødseth <rodseth@gmail.com>, 2015
|
# Alexander F Rødseth <rodseth@gmail.com>, 2015
|
||||||
# Alexander F Rødseth <rodseth@gmail.com>, 2011,2013-2014
|
# Alexander F Rødseth <rodseth@gmail.com>, 2011,2013-2014
|
||||||
# Harald H. <haarektrans@gmail.com>, 2015
|
# Harald H. <haarektrans@gmail.com>, 2015
|
||||||
# AdmiringWorm <kim.nordmo@gmail.com>, 2016
|
# Kim Nordmo <kim.nordmo@gmail.com>, 2016
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# Thor K. H. <nitrolinken@gmail.com>, 2016
|
# Thor K. H. <nitrolinken@gmail.com>, 2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Norwegian Bokmål (http://www.transifex.com/lfleischer/aur/"
|
"Language-Team: Norwegian Bokmål (http://www.transifex.com/lfleischer/aur/"
|
||||||
"language/nb/)\n"
|
"language/nb/)\n"
|
||||||
|
@ -30,6 +30,20 @@ msgstr "Finner ikke siden"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Den ønskede siden finnes ikke."
|
msgstr "Den ønskede siden finnes ikke."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "OBS"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Tjenesten er utilgjengelig"
|
msgstr "Tjenesten er utilgjengelig"
|
||||||
|
|
||||||
|
@ -866,6 +880,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Ekte navn"
|
msgstr "Ekte navn"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC-kallenavn"
|
msgstr "IRC-kallenavn"
|
||||||
|
|
||||||
|
@ -881,6 +898,9 @@ msgstr "Inaktiv siden"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktiv"
|
msgstr "Aktiv"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Sist logget inn"
|
msgstr "Sist logget inn"
|
||||||
|
|
||||||
|
@ -897,6 +917,10 @@ msgstr "Endre brukerkonto"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Klikk %sher%s hvis du vil slette denne kontoen, for alltid."
|
msgstr "Klikk %sher%s hvis du vil slette denne kontoen, for alltid."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "trengs"
|
msgstr "trengs"
|
||||||
|
|
||||||
|
@ -945,6 +969,9 @@ msgstr "Gi beskjed om nye kommentarer"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Oppdater"
|
msgstr "Oppdater"
|
||||||
|
|
||||||
|
@ -1045,6 +1072,9 @@ msgstr "Stem på denne pakken"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Slå av beskjeder"
|
msgstr "Slå av beskjeder"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1191,9 +1221,6 @@ msgstr "Kilder"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "Bruk dette skjemaet for å lukke forespørselen for grunnpakken %s%s%s."
|
msgstr "Bruk dette skjemaet for å lukke forespørselen for grunnpakken %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "OBS"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1230,6 +1257,26 @@ msgstr "Foreldreløs"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Flett med"
|
msgstr "Flett med"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1250,8 +1297,10 @@ msgid "Date"
|
||||||
msgstr "Dato"
|
msgstr "Dato"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d dager igjen"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1349,9 +1398,10 @@ msgstr[1] "Fant %d pakker."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versjon"
|
msgstr "Versjon"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
66
po/nl.po
66
po/nl.po
|
@ -12,8 +12,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Dutch (http://www.transifex.com/lfleischer/aur/language/nl/)\n"
|
"Language-Team: Dutch (http://www.transifex.com/lfleischer/aur/language/nl/)\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
|
@ -28,6 +28,20 @@ msgstr "De pagina kon niet worden gevonden"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Sorry, de pagina die u heeft aangevraagd bestaat niet."
|
msgstr "Sorry, de pagina die u heeft aangevraagd bestaat niet."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Notitie"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "De dienst is niet beschikbaar"
|
msgstr "De dienst is niet beschikbaar"
|
||||||
|
|
||||||
|
@ -892,6 +906,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Echte naam"
|
msgstr "Echte naam"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC Nick"
|
msgstr "IRC Nick"
|
||||||
|
|
||||||
|
@ -907,6 +924,9 @@ msgstr "Geen activiteit sinds"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Actief"
|
msgstr "Actief"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Laatste Login"
|
msgstr "Laatste Login"
|
||||||
|
|
||||||
|
@ -923,6 +943,10 @@ msgstr "Bewerk account van deze gebruiker"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Klik %shier%s als u dit account permanent wilt verwijderen."
|
msgstr "Klik %shier%s als u dit account permanent wilt verwijderen."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "verplicht"
|
msgstr "verplicht"
|
||||||
|
|
||||||
|
@ -971,6 +995,9 @@ msgstr "Notificatie bij nieuwe comment"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Update"
|
msgstr "Update"
|
||||||
|
|
||||||
|
@ -1073,6 +1100,9 @@ msgstr "Stem voor dit pakket"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Schakel notificaties uit"
|
msgstr "Schakel notificaties uit"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Beheer mede-onderhouders"
|
msgstr "Beheer mede-onderhouders"
|
||||||
|
|
||||||
|
@ -1220,9 +1250,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gebruik dit formulier om het verzoek voor basispakket %s%s%s te sluiten."
|
"Gebruik dit formulier om het verzoek voor basispakket %s%s%s te sluiten."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Notitie"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1259,6 +1286,26 @@ msgstr "Wees"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Voeg samen met"
|
msgstr "Voeg samen met"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1279,8 +1326,10 @@ msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d dagen resterend"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1378,9 +1427,10 @@ msgstr[1] "%d pakketten gevonden"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versie"
|
msgstr "Versie"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
270
po/pl.po
270
po/pl.po
|
@ -9,15 +9,16 @@
|
||||||
# Chris Warrick <kwpolska@gmail.com>, 2012
|
# Chris Warrick <kwpolska@gmail.com>, 2012
|
||||||
# Kwpolska <kwpolska@kwpolska.tk>, 2011
|
# Kwpolska <kwpolska@kwpolska.tk>, 2011
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
|
# Michal T <zorza2@gmail.com>, 2016
|
||||||
# Nuc1eoN <nucrap@hotmail.com>, 2014
|
# Nuc1eoN <nucrap@hotmail.com>, 2014
|
||||||
# Piotr Strębski <strebski@o2.pl>, 2013-2016
|
# Piotr Strębski <strebski@o2.pl>, 2013-2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-13 13:13+0000\n"
|
"PO-Revision-Date: 2016-10-12 09:11+0000\n"
|
||||||
"Last-Translator: Piotr Strębski <strebski@o2.pl>\n"
|
"Last-Translator: Michal T <zorza2@gmail.com>\n"
|
||||||
"Language-Team: Polish (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Polish (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"pl/)\n"
|
"pl/)\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
|
@ -33,6 +34,20 @@ msgstr "Nie znaleziono strony"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Przepraszamy, strona o którą prosiłeś nie istnieje."
|
msgstr "Przepraszamy, strona o którą prosiłeś nie istnieje."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Uwaga"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr "Adresy URL GIT clone nie są przeznaczone do otwierania w przeglądarce."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "Aby sklonować repozytorium GIT-a %s, uruchom %s."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "Kliknij %stutaj%s by powrócić do strony szczegółów %s."
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Usługa niedostępna"
|
msgstr "Usługa niedostępna"
|
||||||
|
|
||||||
|
@ -61,13 +76,13 @@ msgid "Use this form to search existing accounts."
|
||||||
msgstr "Przy użyciu tego formularza możesz przeszukać istniejące konta."
|
msgstr "Przy użyciu tego formularza możesz przeszukać istniejące konta."
|
||||||
|
|
||||||
msgid "You must log in to view user information."
|
msgid "You must log in to view user information."
|
||||||
msgstr "Musisz być zalogowany aby móc oglądać informacje o użytkownikach."
|
msgstr "Musisz być zalogowany, aby móc przeglądać informacje o użytkownikach."
|
||||||
|
|
||||||
msgid "Add Proposal"
|
msgid "Add Proposal"
|
||||||
msgstr "Dodaj Propozycję"
|
msgstr "Dodaj propozycję"
|
||||||
|
|
||||||
msgid "Invalid token for user action."
|
msgid "Invalid token for user action."
|
||||||
msgstr "Nieprawidłowy token dla akcji użytkownika."
|
msgstr "Nieprawidłowy token dla czynności użytkownika."
|
||||||
|
|
||||||
msgid "Username does not exist."
|
msgid "Username does not exist."
|
||||||
msgstr "Nazwa użytkownika nie istnieje."
|
msgstr "Nazwa użytkownika nie istnieje."
|
||||||
|
@ -89,10 +104,10 @@ msgid "Submit a proposal to vote on."
|
||||||
msgstr "Wyślij propozycję do głosowania."
|
msgstr "Wyślij propozycję do głosowania."
|
||||||
|
|
||||||
msgid "Applicant/TU"
|
msgid "Applicant/TU"
|
||||||
msgstr "Wnioskodawca/TU"
|
msgstr "Wnioskodawca/ZU"
|
||||||
|
|
||||||
msgid "(empty if not applicable)"
|
msgid "(empty if not applicable)"
|
||||||
msgstr "(puste jeśli nie dotyczy)"
|
msgstr "(puste, jeśli nie dotyczy)"
|
||||||
|
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Rodzaj"
|
msgstr "Rodzaj"
|
||||||
|
@ -153,6 +168,7 @@ msgid ""
|
||||||
"AUR packages are user produced content. Any use of the provided files is at "
|
"AUR packages are user produced content. Any use of the provided files is at "
|
||||||
"your own risk."
|
"your own risk."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Pakiety w AUR są tworzone przez użytkowników. Używasz ich na własne ryzyko."
|
||||||
|
|
||||||
msgid "Learn more..."
|
msgid "Learn more..."
|
||||||
msgstr "Dowiedz się więcej..."
|
msgstr "Dowiedz się więcej..."
|
||||||
|
@ -161,7 +177,7 @@ msgid "Support"
|
||||||
msgstr "Wsparcie"
|
msgstr "Wsparcie"
|
||||||
|
|
||||||
msgid "Package Requests"
|
msgid "Package Requests"
|
||||||
msgstr "Propozycje pakietu"
|
msgstr "Prośby o pakiet"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -176,9 +192,11 @@ msgid ""
|
||||||
"Request a package to be disowned, e.g. when the maintainer is inactive and "
|
"Request a package to be disowned, e.g. when the maintainer is inactive and "
|
||||||
"the package has been flagged out-of-date for a long time."
|
"the package has been flagged out-of-date for a long time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wnioskuj o wyrzeczenie własności pakietu - np. gdy zarządzający jest "
|
||||||
|
"nieaktywny i pakiet został oznaczony jako przestarzały dawno temu."
|
||||||
|
|
||||||
msgid "Deletion Request"
|
msgid "Deletion Request"
|
||||||
msgstr "Propozycja usunięcia"
|
msgstr "Prośba o usunięcie"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Request a package to be removed from the Arch User Repository. Please do not "
|
"Request a package to be removed from the Arch User Repository. Please do not "
|
||||||
|
@ -187,7 +205,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Merge Request"
|
msgid "Merge Request"
|
||||||
msgstr "Propozycja połączenia"
|
msgstr "Prośba o połączenie"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Request a package to be merged into another one. Can be used when a package "
|
"Request a package to be merged into another one. Can be used when a package "
|
||||||
|
@ -211,7 +229,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "The following SSH fingerprints are used for the AUR:"
|
msgid "The following SSH fingerprints are used for the AUR:"
|
||||||
msgstr ""
|
msgstr "Następujące odciski SSH są używane przez AUR:"
|
||||||
|
|
||||||
msgid "Discussion"
|
msgid "Discussion"
|
||||||
msgstr "Dyskusja"
|
msgstr "Dyskusja"
|
||||||
|
@ -222,6 +240,10 @@ msgid ""
|
||||||
"structure takes place on %saur-general%s. For discussion relating to the "
|
"structure takes place on %saur-general%s. For discussion relating to the "
|
||||||
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ogólna dyskusja dotycząca Repozytorium Użytkowników Arch (AUR) i struktury "
|
||||||
|
"Zaufanych Użytkowników odbywa się na %saur-general%s. Dyskusja dotycząca "
|
||||||
|
"rozwoju interfejsu webowego AUR odbywa się zaś na liście dyskusyjnej %saur-"
|
||||||
|
"dev%s."
|
||||||
|
|
||||||
msgid "Bug Reporting"
|
msgid "Bug Reporting"
|
||||||
msgstr "Zgłaszanie błędów"
|
msgstr "Zgłaszanie błędów"
|
||||||
|
@ -233,6 +255,10 @@ msgid ""
|
||||||
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
||||||
"comment on the appropriate package page."
|
"comment on the appropriate package page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Jeśli znalazłeś błąd w interfejsie webowym AUR, zgłoś go w naszym %ssystemie "
|
||||||
|
"śledzenia błędów%s. Używaj go %swyłącznie%s do zgłaszania błędów związanych "
|
||||||
|
"z interfejsem webowym AUR. Błędy powiązane z pakietami zgłaszaj ich "
|
||||||
|
"opiekunom lub zostaw komentarz pod odpowiednim pakietem."
|
||||||
|
|
||||||
msgid "Package Search"
|
msgid "Package Search"
|
||||||
msgstr "Wyszukiwanie pakietów"
|
msgstr "Wyszukiwanie pakietów"
|
||||||
|
@ -346,12 +372,13 @@ msgid ""
|
||||||
"The selected packages have not been disowned, check the confirmation "
|
"The selected packages have not been disowned, check the confirmation "
|
||||||
"checkbox."
|
"checkbox."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wybrane pakiety nie zostały porzucone, sprawdź pole wyboru potwierdzenia."
|
||||||
|
|
||||||
msgid "Cannot find package to merge votes and comments into."
|
msgid "Cannot find package to merge votes and comments into."
|
||||||
msgstr "Nie można znaleźć pakietu do scalenia głosów i komentarzy."
|
msgstr "Nie można znaleźć pakietu do scalenia głosów i komentarzy."
|
||||||
|
|
||||||
msgid "Cannot merge a package base with itself."
|
msgid "Cannot merge a package base with itself."
|
||||||
msgstr "Nie można połączyć bazowego pakietu z nim samym."
|
msgstr "Nie można połączyć bazy pakietu z nią samą."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The selected packages have not been deleted, check the confirmation checkbox."
|
"The selected packages have not been deleted, check the confirmation checkbox."
|
||||||
|
@ -395,25 +422,29 @@ msgid ""
|
||||||
"Use this form to disown the package base %s%s%s which includes the following "
|
"Use this form to disown the package base %s%s%s which includes the following "
|
||||||
"packages: "
|
"packages: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Użyj tego formularza, aby złożyć prośbę wyrzeczenie własności bazie pakietu "
|
||||||
|
"%s%s%s, która zawiera następujące pakiety:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"By selecting the checkbox, you confirm that you want to disown the package "
|
"By selecting the checkbox, you confirm that you want to disown the package "
|
||||||
"and transfer ownership to %s%s%s."
|
"and transfer ownership to %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Zaznaczając pole wyboru potwierdzasz, że chcesz porzucić pakiet i przenieść "
|
||||||
|
"własność na %s%s%s."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"By selecting the checkbox, you confirm that you want to disown the package."
|
"By selecting the checkbox, you confirm that you want to disown the package."
|
||||||
msgstr ""
|
msgstr "Zaznaczając pole wyboru potwierdzasz, że chcesz porzucić pakiet."
|
||||||
|
|
||||||
msgid "Confirm to disown the package"
|
msgid "Confirm to disown the package"
|
||||||
msgstr ""
|
msgstr "Potwierdź porzucenie pakietu"
|
||||||
|
|
||||||
msgid "Disown"
|
msgid "Disown"
|
||||||
msgstr "Porzuć"
|
msgstr "Porzuć"
|
||||||
|
|
||||||
msgid "Only Trusted Users and Developers can disown packages."
|
msgid "Only Trusted Users and Developers can disown packages."
|
||||||
msgstr ""
|
msgstr "Tylko Zaufani Użytkownicy i Programiści mogą porzucać pakiety."
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr "Oznacz komentarz"
|
msgstr "Oznacz komentarz"
|
||||||
|
@ -426,17 +457,24 @@ msgid ""
|
||||||
"Use this form to flag the package base %s%s%s and the following packages out-"
|
"Use this form to flag the package base %s%s%s and the following packages out-"
|
||||||
"of-date: "
|
"of-date: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Użyj tego formularza, aby oznaczyć bazę pakietu %s%s%s i następujące pakiety "
|
||||||
|
"jako nieaktualne:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please do %snot%s use this form to report bugs. Use the package comments "
|
"Please do %snot%s use this form to report bugs. Use the package comments "
|
||||||
"instead."
|
"instead."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Prosimy %snie%s używać tego formularza do zgłaszania błędów. Użyj do tego "
|
||||||
|
"systemu komentowania pakietu."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enter details on why the package is out-of-date below, preferably including "
|
"Enter details on why the package is out-of-date below, preferably including "
|
||||||
"links to the release announcement or the new release tarball."
|
"links to the release announcement or the new release tarball."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wprowadź poniżej szczegóły, dlaczego pakiet został oznaczony jako "
|
||||||
|
"nieaktualny, najlepiej łącznie z odnośnikiem do ogłoszenia o nowym wydaniu "
|
||||||
|
"lub do archiwum tarball nowego wydania."
|
||||||
|
|
||||||
msgid "Comments"
|
msgid "Comments"
|
||||||
msgstr "Kommentarze"
|
msgstr "Kommentarze"
|
||||||
|
@ -446,6 +484,7 @@ msgstr "Oznacz"
|
||||||
|
|
||||||
msgid "Only registered users can flag packages out-of-date."
|
msgid "Only registered users can flag packages out-of-date."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Tylko zarejestrowani użytkownicy mogą oznaczać pakiety jako nieaktualne."
|
||||||
|
|
||||||
msgid "Package Merging"
|
msgid "Package Merging"
|
||||||
msgstr "Scalanie pakietów"
|
msgstr "Scalanie pakietów"
|
||||||
|
@ -481,10 +520,10 @@ msgid "Only Trusted Users and Developers can merge packages."
|
||||||
msgstr "Tylko Zaufani Użytkownicy i Deweloperzy mogą scalać pakiety."
|
msgstr "Tylko Zaufani Użytkownicy i Deweloperzy mogą scalać pakiety."
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr "Prześlij propozycję"
|
msgstr "Prześlij prośbę"
|
||||||
|
|
||||||
msgid "Close Request"
|
msgid "Close Request"
|
||||||
msgstr "Zamknij propozycję"
|
msgstr "Zamknij prośbę"
|
||||||
|
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr "Pierwsza"
|
msgstr "Pierwsza"
|
||||||
|
@ -499,7 +538,7 @@ msgid "Last"
|
||||||
msgstr "Ostatnia"
|
msgstr "Ostatnia"
|
||||||
|
|
||||||
msgid "Requests"
|
msgid "Requests"
|
||||||
msgstr "Propozycje"
|
msgstr "Prośby"
|
||||||
|
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Zarejestruj się"
|
msgstr "Zarejestruj się"
|
||||||
|
@ -526,13 +565,13 @@ msgid "You've already voted for this proposal."
|
||||||
msgstr "Już zagłosowałeś na tą propozycję"
|
msgstr "Już zagłosowałeś na tą propozycję"
|
||||||
|
|
||||||
msgid "Vote ID not valid."
|
msgid "Vote ID not valid."
|
||||||
msgstr "ID głosowania nieprawidłowe."
|
msgstr "Nieprawidłowy identyfikator głosowania."
|
||||||
|
|
||||||
msgid "Current Votes"
|
msgid "Current Votes"
|
||||||
msgstr "Obecne Głosy"
|
msgstr "Obecne głosy"
|
||||||
|
|
||||||
msgid "Past Votes"
|
msgid "Past Votes"
|
||||||
msgstr "Poprzednie Głosy"
|
msgstr "Poprzednie głosy"
|
||||||
|
|
||||||
msgid "Voters"
|
msgid "Voters"
|
||||||
msgstr "Głosujących"
|
msgstr "Głosujących"
|
||||||
|
@ -586,7 +625,7 @@ msgstr "Adres, %s%s%s, jest już używany."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The SSH public key, %s%s%s, is already in use."
|
msgid "The SSH public key, %s%s%s, is already in use."
|
||||||
msgstr ""
|
msgstr "Publiczny klucz SSH, %s%s%s, jest już używany."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Error trying to create account, %s%s%s."
|
msgid "Error trying to create account, %s%s%s."
|
||||||
|
@ -649,16 +688,16 @@ msgid "View account information for %s"
|
||||||
msgstr "Wyświetl informacje o koncie %s"
|
msgstr "Wyświetl informacje o koncie %s"
|
||||||
|
|
||||||
msgid "Package base ID or package base name missing."
|
msgid "Package base ID or package base name missing."
|
||||||
msgstr ""
|
msgstr "Brakuje identyfikatora lub nazwy bazy pakietów."
|
||||||
|
|
||||||
msgid "You are not allowed to edit this comment."
|
msgid "You are not allowed to edit this comment."
|
||||||
msgstr ""
|
msgstr "Nie masz uprawnień do edycji tego komentarza."
|
||||||
|
|
||||||
msgid "Comment does not exist."
|
msgid "Comment does not exist."
|
||||||
msgstr ""
|
msgstr "Komentarz nie istnieje."
|
||||||
|
|
||||||
msgid "Comment cannot be empty."
|
msgid "Comment cannot be empty."
|
||||||
msgstr ""
|
msgstr "Komentarz nie może być pusty."
|
||||||
|
|
||||||
msgid "Comment has been added."
|
msgid "Comment has been added."
|
||||||
msgstr "Komentarz został dodany."
|
msgstr "Komentarz został dodany."
|
||||||
|
@ -670,19 +709,19 @@ msgid "Missing comment ID."
|
||||||
msgstr "Brakuje identyfikatora komentarza."
|
msgstr "Brakuje identyfikatora komentarza."
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "Można przypiąć nie więcej niż 5 komentarzy."
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "Nie masz uprawnień do przypięcia tego komentarza."
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr "Nie masz uprawnień do odpięcia tego komentarza."
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "Komentarz został przypięty."
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr "Komentarz został odpięty."
|
||||||
|
|
||||||
msgid "Error retrieving package details."
|
msgid "Error retrieving package details."
|
||||||
msgstr "Błąd podczas pobierania informacji o pakiecie."
|
msgstr "Błąd podczas pobierania informacji o pakiecie."
|
||||||
|
@ -698,6 +737,7 @@ msgstr "Nie wybrałeś żadnych pakietów do oznaczenia."
|
||||||
|
|
||||||
msgid "The selected packages have not been flagged, please enter a comment."
|
msgid "The selected packages have not been flagged, please enter a comment."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Zaznaczone pakiety nie zostały oznaczone, prosimy o wpisanie komentarza."
|
||||||
|
|
||||||
msgid "The selected packages have been flagged out-of-date."
|
msgid "The selected packages have been flagged out-of-date."
|
||||||
msgstr "Wybrane pakiety zostały oznaczone jako nieaktualne."
|
msgstr "Wybrane pakiety zostały oznaczone jako nieaktualne."
|
||||||
|
@ -724,7 +764,7 @@ msgid "You must be logged in before you can adopt packages."
|
||||||
msgstr "Musisz być zalogowany aby móc przejmować pakiety."
|
msgstr "Musisz być zalogowany aby móc przejmować pakiety."
|
||||||
|
|
||||||
msgid "You must be logged in before you can disown packages."
|
msgid "You must be logged in before you can disown packages."
|
||||||
msgstr "Musisz być zalogowany aby móc porzucać pakiety."
|
msgstr "Musisz być zalogowany, aby móc porzucać pakiety."
|
||||||
|
|
||||||
msgid "You did not select any packages to adopt."
|
msgid "You did not select any packages to adopt."
|
||||||
msgstr "Nie wybrałeś żadnych pakietów do przejęcia."
|
msgstr "Nie wybrałeś żadnych pakietów do przejęcia."
|
||||||
|
@ -765,10 +805,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "Zostałeś usunięty z listy powiadamiania o komentarzach dla %s."
|
msgstr "Zostałeś usunięty z listy powiadamiania o komentarzach dla %s."
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "Nie masz uprawnień do cofnięcia usunięcia tego komentarza."
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "Zostało cofnięte usunięcie komentarza."
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "Nie masz uprawnień do usunięcia tego komentarza."
|
msgstr "Nie masz uprawnień do usunięcia tego komentarza."
|
||||||
|
@ -777,33 +817,33 @@ msgid "Comment has been deleted."
|
||||||
msgstr "Komentarz został usunięty."
|
msgstr "Komentarz został usunięty."
|
||||||
|
|
||||||
msgid "Comment has been edited."
|
msgid "Comment has been edited."
|
||||||
msgstr ""
|
msgstr "Komentarz został zmodyfikowany."
|
||||||
|
|
||||||
msgid "You are not allowed to edit the keywords of this package base."
|
msgid "You are not allowed to edit the keywords of this package base."
|
||||||
msgstr ""
|
msgstr "Nie masz uprawnień, by modyfikować słowa kluczowe tej bazy pakietów."
|
||||||
|
|
||||||
msgid "The package base keywords have been updated."
|
msgid "The package base keywords have been updated."
|
||||||
msgstr ""
|
msgstr "Słowa kluczowe bazy pakietu zostały zaktualizowane."
|
||||||
|
|
||||||
msgid "You are not allowed to manage co-maintainers of this package base."
|
msgid "You are not allowed to manage co-maintainers of this package base."
|
||||||
msgstr ""
|
msgstr "Nie masz uprawnień, by zarządzać współutrzymującymi tej bazy pakietu."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Invalid user name: %s"
|
msgid "Invalid user name: %s"
|
||||||
msgstr "Niepoprawna nazwa użytkownika: %s"
|
msgstr "Niepoprawna nazwa użytkownika: %s"
|
||||||
|
|
||||||
msgid "The package base co-maintainers have been updated."
|
msgid "The package base co-maintainers have been updated."
|
||||||
msgstr ""
|
msgstr "Współutrzymujący bazy pakietu zostali zaktualizowani."
|
||||||
|
|
||||||
msgid "View packages details for"
|
msgid "View packages details for"
|
||||||
msgstr "Wyświetl informacje o pakiecie"
|
msgstr "Wyświetl informacje o pakiecie"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "requires %s"
|
msgid "requires %s"
|
||||||
msgstr ""
|
msgstr "wymaga %s"
|
||||||
|
|
||||||
msgid "You must be logged in to file package requests."
|
msgid "You must be logged in to file package requests."
|
||||||
msgstr "Musisz być zalogowanym, aby złożyć propozycje pakietu."
|
msgstr "Musisz być zalogowanym, aby złożyć prośbę o pakiet."
|
||||||
|
|
||||||
msgid "Invalid name: only lowercase letters are allowed."
|
msgid "Invalid name: only lowercase letters are allowed."
|
||||||
msgstr "Nieprawidłowa nazwa: tylko małe litery są dozwolone."
|
msgstr "Nieprawidłowa nazwa: tylko małe litery są dozwolone."
|
||||||
|
@ -812,19 +852,19 @@ msgid "The comment field must not be empty."
|
||||||
msgstr "Pole komentarzy nie może pozostać pustę."
|
msgstr "Pole komentarzy nie może pozostać pustę."
|
||||||
|
|
||||||
msgid "Invalid request type."
|
msgid "Invalid request type."
|
||||||
msgstr "Nieprawidłowy rodzaj propozycji."
|
msgstr "Nieprawidłowy rodzaj prośby."
|
||||||
|
|
||||||
msgid "Added request successfully."
|
msgid "Added request successfully."
|
||||||
msgstr "Pomyślnie dodano propozycję."
|
msgstr "Pomyślnie dodano prośbę."
|
||||||
|
|
||||||
msgid "Invalid reason."
|
msgid "Invalid reason."
|
||||||
msgstr "Nieprawidłowy powód."
|
msgstr "Nieprawidłowy powód."
|
||||||
|
|
||||||
msgid "Only TUs and developers can close requests."
|
msgid "Only TUs and developers can close requests."
|
||||||
msgstr "Tylko Zaufani Użytkownicy i Deweloperzy mogą zamykać propozycje."
|
msgstr "Tylko Zaufani Użytkownicy i programiści mogą zamykać prośby."
|
||||||
|
|
||||||
msgid "Request closed successfully."
|
msgid "Request closed successfully."
|
||||||
msgstr "Pomyślnie zamknięto propozycję."
|
msgstr "Pomyślnie zamknięto prośbę."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You can use this form to permanently delete the AUR account %s."
|
msgid "You can use this form to permanently delete the AUR account %s."
|
||||||
|
@ -856,11 +896,14 @@ msgid "Email Address"
|
||||||
msgstr "Adres e-mail"
|
msgstr "Adres e-mail"
|
||||||
|
|
||||||
msgid "hidden"
|
msgid "hidden"
|
||||||
msgstr ""
|
msgstr "ukryte"
|
||||||
|
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Imię i nazwisko"
|
msgstr "Imię i nazwisko"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Strona główna"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Nick na IRC-u"
|
msgstr "Nick na IRC-u"
|
||||||
|
|
||||||
|
@ -876,6 +919,9 @@ msgstr "Nieaktywny od"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktywne"
|
msgstr "Aktywne"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Data rejestracji:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Ostatnie logowanie"
|
msgstr "Ostatnie logowanie"
|
||||||
|
|
||||||
|
@ -890,7 +936,11 @@ msgstr "Edycja tego konta użytkownika"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Kliknij %stutaj%s jeśli chcesz nieodwracalnie usunąć to konto."
|
msgstr "Kliknij %stutaj%s, jeśli chcesz nieodwracalnie usunąć to konto."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Kliknij %stutaj%s by wyświetlić szczegóły użytkownika."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "wymagane"
|
msgstr "wymagane"
|
||||||
|
@ -911,9 +961,11 @@ msgid ""
|
||||||
"Please ensure you correctly entered your email address, otherwise you will "
|
"Please ensure you correctly entered your email address, otherwise you will "
|
||||||
"be locked out."
|
"be locked out."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Upewnij się, czy poprawnie wpisano adres e-mail, w przeciwnym razie "
|
||||||
|
"zostaniesz zablokowany."
|
||||||
|
|
||||||
msgid "Hide Email Address"
|
msgid "Hide Email Address"
|
||||||
msgstr ""
|
msgstr "Ukryj adres e-mail"
|
||||||
|
|
||||||
msgid "Re-type password"
|
msgid "Re-type password"
|
||||||
msgstr "Hasło (ponownie)"
|
msgstr "Hasło (ponownie)"
|
||||||
|
@ -925,18 +977,23 @@ msgid ""
|
||||||
"The following information is only required if you want to submit packages to "
|
"The following information is only required if you want to submit packages to "
|
||||||
"the Arch User Repository."
|
"the Arch User Repository."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Następująca informacja jest wymagana jedynie w sytuacji, gdy chcesz przesłać "
|
||||||
|
"pakiety do Repozytorium Użytkowników Arch."
|
||||||
|
|
||||||
msgid "SSH Public Key"
|
msgid "SSH Public Key"
|
||||||
msgstr "Klucz publiczny SSH"
|
msgstr "Klucz publiczny SSH"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "Ustawienia powiadomień"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "Powiadom o nowych komentarzach"
|
msgstr "Powiadom o nowych komentarzach"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "Powiadom o aktualizacjach pakietu"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Powiadom o zmianie właściciela"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualizuj"
|
msgstr "Aktualizuj"
|
||||||
|
@ -972,6 +1029,8 @@ msgstr "Brak wyników do wyświetlenia."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to add co-maintainers for %s%s%s (one user name per line):"
|
"Use this form to add co-maintainers for %s%s%s (one user name per line):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Użyj tego formularza, aby dodać współutrzymujących %s%s%s (jedna nazwa "
|
||||||
|
"użytkownika na wiersz):"
|
||||||
|
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Użytkownicy"
|
msgstr "Użytkownicy"
|
||||||
|
@ -981,22 +1040,23 @@ msgstr "Zapisz"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Komentarz do oznaczenia jako nieaktualny: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"%s%s%s oznaczył %s%s%s jako nieaktualny dnia %s%s%s z następującego powodu:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s nie jest oznaczone jako nieaktualne."
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "Powrót do szczegółów"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr "Prawa autorskie %s 2004-%d Zespół Programistów aurweb."
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "Moje pakiety"
|
msgstr "Moje pakiety"
|
||||||
|
@ -1014,14 +1074,14 @@ msgid "View Changes"
|
||||||
msgstr "Zobacz zmiany"
|
msgstr "Zobacz zmiany"
|
||||||
|
|
||||||
msgid "Download snapshot"
|
msgid "Download snapshot"
|
||||||
msgstr ""
|
msgstr "Pobierz migawkę"
|
||||||
|
|
||||||
msgid "Search wiki"
|
msgid "Search wiki"
|
||||||
msgstr "Przeszukaj wiki"
|
msgstr "Przeszukaj wiki"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "Oznaczono jako nieaktualny (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Oznacz pakiet jako nieaktualny"
|
msgstr "Oznacz pakiet jako nieaktualny"
|
||||||
|
@ -1038,15 +1098,18 @@ msgstr "Zagłosuj na ten pakiet"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Wyłącz powiadomienia"
|
msgstr "Wyłącz powiadomienia"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Włącz powiadomienia"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr "Zarządzanie współutrzymującymi"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d pending request"
|
msgid "%d pending request"
|
||||||
msgid_plural "%d pending requests"
|
msgid_plural "%d pending requests"
|
||||||
msgstr[0] "%d propozycja w toku"
|
msgstr[0] "%d prośba w toku"
|
||||||
msgstr[1] "%d propozycje w toku"
|
msgstr[1] "%d prośby w toku"
|
||||||
msgstr[2] "%d propozycji w toku"
|
msgstr[2] "%d próśb w toku"
|
||||||
|
|
||||||
msgid "Adopt Package"
|
msgid "Adopt Package"
|
||||||
msgstr "Przejmij pakiet"
|
msgstr "Przejmij pakiet"
|
||||||
|
@ -1058,10 +1121,10 @@ msgid "Package Base Details"
|
||||||
msgstr "Szczegóły bazy pakietu"
|
msgstr "Szczegóły bazy pakietu"
|
||||||
|
|
||||||
msgid "Git Clone URL"
|
msgid "Git Clone URL"
|
||||||
msgstr ""
|
msgstr "URL klonu Git"
|
||||||
|
|
||||||
msgid "read-only"
|
msgid "read-only"
|
||||||
msgstr ""
|
msgstr "tylko do odczytu"
|
||||||
|
|
||||||
msgid "Keywords"
|
msgid "Keywords"
|
||||||
msgstr "Słowa kluczowe"
|
msgstr "Słowa kluczowe"
|
||||||
|
@ -1082,14 +1145,14 @@ msgid "Popularity"
|
||||||
msgstr "Popularność"
|
msgstr "Popularność"
|
||||||
|
|
||||||
msgid "First Submitted"
|
msgid "First Submitted"
|
||||||
msgstr "Wysłany"
|
msgstr "Umieszczony"
|
||||||
|
|
||||||
msgid "Last Updated"
|
msgid "Last Updated"
|
||||||
msgstr "Ostatnia aktualizacja"
|
msgstr "Ostatnia aktualizacja"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Edit comment for: %s"
|
msgid "Edit comment for: %s"
|
||||||
msgstr ""
|
msgstr "Edycja komentarza do: %s"
|
||||||
|
|
||||||
msgid "Add Comment"
|
msgid "Add Comment"
|
||||||
msgstr "Dodaj komentarz"
|
msgstr "Dodaj komentarz"
|
||||||
|
@ -1098,46 +1161,46 @@ msgid "View all comments"
|
||||||
msgstr "Pokaż wszystkie komentarze"
|
msgstr "Pokaż wszystkie komentarze"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "Przypięte komentarze"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "Ostatnie komentarze"
|
msgstr "Ostatnie komentarze"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s commented on %s"
|
msgid "%s commented on %s"
|
||||||
msgstr ""
|
msgstr "%s skomentował dnia %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Anonymous comment on %s"
|
msgid "Anonymous comment on %s"
|
||||||
msgstr ""
|
msgstr "Anonimowy komentarz do %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s by %s"
|
msgid "deleted on %s by %s"
|
||||||
msgstr ""
|
msgstr "usunięte %s przez %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "usunięte %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "edytowane %s przez %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "edytowane %s"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "Cofnij usunięcie komentarza"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Usuń komentarz"
|
msgstr "Usuń komentarz"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "Przypnij komentarz"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr "Odepnij komentarz"
|
||||||
|
|
||||||
msgid "All comments"
|
msgid "All comments"
|
||||||
msgstr "Wszystkie komentarze"
|
msgstr "Wszystkie komentarze"
|
||||||
|
@ -1152,7 +1215,7 @@ msgid "Description"
|
||||||
msgstr "Opis"
|
msgstr "Opis"
|
||||||
|
|
||||||
msgid "Upstream URL"
|
msgid "Upstream URL"
|
||||||
msgstr "URL upstreamu"
|
msgstr "URL źródła"
|
||||||
|
|
||||||
msgid "Visit the website for"
|
msgid "Visit the website for"
|
||||||
msgstr "Odwiedź stronę pakietu"
|
msgstr "Odwiedź stronę pakietu"
|
||||||
|
@ -1183,15 +1246,14 @@ msgstr "Źródła"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr "Użyj tego formularza, aby zamknąć prośbę o bazę pakietów %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Uwaga"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Pole komentarza może zostać pozostawione pustym. Jednakże w przypadku "
|
||||||
|
"odrzucenia prośby dodanie komentarza jest wysoce polecane."
|
||||||
|
|
||||||
msgid "Reason"
|
msgid "Reason"
|
||||||
msgstr "Powód"
|
msgstr "Powód"
|
||||||
|
@ -1207,11 +1269,11 @@ msgid ""
|
||||||
"Use this form to file a request against package base %s%s%s which includes "
|
"Use this form to file a request against package base %s%s%s which includes "
|
||||||
"the following packages:"
|
"the following packages:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Użyj tego formularza, aby złożyć propozycję na bazę pakietu %s%s%s i "
|
"Użyj tego formularza, aby złożyć prośbę przeciwko bazie pakietu %s%s%s, "
|
||||||
"następujące pakiety:"
|
"która zawiera następujące pakiety:"
|
||||||
|
|
||||||
msgid "Request type"
|
msgid "Request type"
|
||||||
msgstr "Rodzaj propozycji"
|
msgstr "Rodzaj prośby"
|
||||||
|
|
||||||
msgid "Deletion"
|
msgid "Deletion"
|
||||||
msgstr "Usunięcie"
|
msgstr "Usunięcie"
|
||||||
|
@ -1222,12 +1284,32 @@ msgstr "Bez opiekuna"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Scal z"
|
msgstr "Scal z"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
msgstr[0] "%d propozycje znaleziono"
|
msgstr[0] "%d prośba odnaleziona."
|
||||||
msgstr[1] "%d propozycje znaleziono."
|
msgstr[1] "%d prośby odnalezione."
|
||||||
msgstr[2] "%d propozycji znaleziono."
|
msgstr[2] "%d próśb odnaleziono."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Page %d of %d."
|
msgid "Page %d of %d."
|
||||||
|
@ -1243,8 +1325,11 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "pozostało ~%d dni"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "pozostało ~%d dzień"
|
||||||
|
msgstr[1] "pozostało ~%d dni"
|
||||||
|
msgstr[2] "pozostało ~%d dni"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1293,10 +1378,10 @@ msgid "Name"
|
||||||
msgstr "Nazwa"
|
msgstr "Nazwa"
|
||||||
|
|
||||||
msgid "Voted"
|
msgid "Voted"
|
||||||
msgstr "Głos"
|
msgstr "Zagłosowany"
|
||||||
|
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr ""
|
msgstr "Ostatnio zmienione"
|
||||||
|
|
||||||
msgid "Ascending"
|
msgid "Ascending"
|
||||||
msgstr "Rosnąco"
|
msgstr "Rosnąco"
|
||||||
|
@ -1344,9 +1429,10 @@ msgstr[2] "%d pakietów znaleziono"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Wersja"
|
msgstr "Wersja"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
@ -1407,7 +1493,7 @@ msgid "Recent Updates"
|
||||||
msgstr "Ostatnie aktualizacje"
|
msgstr "Ostatnie aktualizacje"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "więcej"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "Moje statystyki"
|
msgstr "Moje statystyki"
|
||||||
|
|
125
po/pt_BR.po
125
po/pt_BR.po
|
@ -4,8 +4,9 @@
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Albino Biasutti Neto Bino <biasuttin@gmail.com>, 2011
|
# Albino Biasutti Neto Bino <biasuttin@gmail.com>, 2011
|
||||||
|
# Fábio Nogueira <deb.user.ba@gmail.com>, 2016
|
||||||
# Rafael Fontenelle <rffontenelle@gmail.com>, 2012-2015
|
# Rafael Fontenelle <rffontenelle@gmail.com>, 2012-2015
|
||||||
# Rafael Fontenelle <rffontenelle@gmail.com>, 2011,2015
|
# Rafael Fontenelle <rffontenelle@gmail.com>, 2011,2015-2016
|
||||||
# Rafael Fontenelle <rffontenelle@gmail.com>, 2011
|
# Rafael Fontenelle <rffontenelle@gmail.com>, 2011
|
||||||
# Sandro <sandrossv@hotmail.com>, 2011
|
# Sandro <sandrossv@hotmail.com>, 2011
|
||||||
# Sandro <sandrossv@hotmail.com>, 2011
|
# Sandro <sandrossv@hotmail.com>, 2011
|
||||||
|
@ -13,8 +14,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 21:44+0000\n"
|
"PO-Revision-Date: 2016-10-08 14:05+0000\n"
|
||||||
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
|
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
|
||||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/lfleischer/aur/"
|
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/lfleischer/aur/"
|
||||||
"language/pt_BR/)\n"
|
"language/pt_BR/)\n"
|
||||||
|
@ -30,8 +31,22 @@ msgstr "Página não encontrada"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Desculpe, a página que você solicitou não existe."
|
msgstr "Desculpe, a página que você solicitou não existe."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Nota"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr "URLs de git-clone não servem para ser abertas em um navegador."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "Para clonar o repositório Git de %s, execute %s."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "Clique %saqui%s para retornar para a página de detalhes de %s."
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Serviço Indisponível"
|
msgstr "Serviço indisponível"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Don't panic! This site is down due to maintenance. We will be back soon."
|
"Don't panic! This site is down due to maintenance. We will be back soon."
|
||||||
|
@ -86,7 +101,7 @@ msgid "Submit a proposal to vote on."
|
||||||
msgstr "Enviar uma proposta para ser votada."
|
msgstr "Enviar uma proposta para ser votada."
|
||||||
|
|
||||||
msgid "Applicant/TU"
|
msgid "Applicant/TU"
|
||||||
msgstr "Requerente/TU"
|
msgstr "Requerente/UC"
|
||||||
|
|
||||||
msgid "(empty if not applicable)"
|
msgid "(empty if not applicable)"
|
||||||
msgstr "(vazio se não aplicável)"
|
msgstr "(vazio se não aplicável)"
|
||||||
|
@ -95,13 +110,13 @@ msgid "Type"
|
||||||
msgstr "Tipo"
|
msgstr "Tipo"
|
||||||
|
|
||||||
msgid "Addition of a TU"
|
msgid "Addition of a TU"
|
||||||
msgstr "Adição de um TU"
|
msgstr "Adição de um UC"
|
||||||
|
|
||||||
msgid "Removal of a TU"
|
msgid "Removal of a TU"
|
||||||
msgstr "Remoção de um TU"
|
msgstr "Remoção de um UC"
|
||||||
|
|
||||||
msgid "Removal of a TU (undeclared inactivity)"
|
msgid "Removal of a TU (undeclared inactivity)"
|
||||||
msgstr "Remoção de um TU (inatividade não declarada)"
|
msgstr "Remoção de um UC (inatividade não declarada)"
|
||||||
|
|
||||||
msgid "Amendment of Bylaws"
|
msgid "Amendment of Bylaws"
|
||||||
msgstr "Emenda ao Estatuto"
|
msgstr "Emenda ao Estatuto"
|
||||||
|
@ -127,7 +142,7 @@ msgid ""
|
||||||
"Guidelines%s for more information."
|
"Guidelines%s for more information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bem-vindo ao AUR! Por favor, leia as %sDiretrizes de Usuário do AUR%s e "
|
"Bem-vindo ao AUR! Por favor, leia as %sDiretrizes de Usuário do AUR%s e "
|
||||||
"%sDiretrizes de TU do AUR%s para mais informações."
|
"%sDiretrizes de UC do AUR%s para mais informações."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -227,7 +242,7 @@ msgstr ""
|
||||||
"detalhes."
|
"detalhes."
|
||||||
|
|
||||||
msgid "The following SSH fingerprints are used for the AUR:"
|
msgid "The following SSH fingerprints are used for the AUR:"
|
||||||
msgstr "As seguintes fingeprints SSH são usadas para o AUR:"
|
msgstr "As seguintes impressões digitais SSH são usadas para o AUR:"
|
||||||
|
|
||||||
msgid "Discussion"
|
msgid "Discussion"
|
||||||
msgstr "Discussão"
|
msgstr "Discussão"
|
||||||
|
@ -239,8 +254,9 @@ msgid ""
|
||||||
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Discussões gerais no que se refere à estrutura do Arch User Repository (AUR) "
|
"Discussões gerais no que se refere à estrutura do Arch User Repository (AUR) "
|
||||||
"e do Trusted User acontecem no %saur-general%s. Para discussão relacionada "
|
"e do Usuário Confiável acontecem no %saur-general%s. Para discussão "
|
||||||
"ao desenvolvimento do AUR web, use a lista de discussão do %saur-dev%s"
|
"relacionada ao desenvolvimento do AUR web, use a lista de discussão do %saur-"
|
||||||
|
"dev%s"
|
||||||
|
|
||||||
msgid "Bug Reporting"
|
msgid "Bug Reporting"
|
||||||
msgstr "Relatório de erros"
|
msgstr "Relatório de erros"
|
||||||
|
@ -410,7 +426,7 @@ msgid "Delete"
|
||||||
msgstr "Excluir"
|
msgstr "Excluir"
|
||||||
|
|
||||||
msgid "Only Trusted Users and Developers can delete packages."
|
msgid "Only Trusted Users and Developers can delete packages."
|
||||||
msgstr "Somente Trusted Users e Desenvolvedores podem excluir pacotes."
|
msgstr "Somente Usuários Confiáveis e Desenvolvedores podem excluir pacotes."
|
||||||
|
|
||||||
msgid "Disown Package"
|
msgid "Disown Package"
|
||||||
msgstr "Abandonar pacote"
|
msgstr "Abandonar pacote"
|
||||||
|
@ -443,7 +459,7 @@ msgid "Disown"
|
||||||
msgstr "Abandonar"
|
msgstr "Abandonar"
|
||||||
|
|
||||||
msgid "Only Trusted Users and Developers can disown packages."
|
msgid "Only Trusted Users and Developers can disown packages."
|
||||||
msgstr "Apenas Trusted Users e Desenvolvedores podem abandonar pacotes."
|
msgstr "Apenas Usuários Confiáveis e Desenvolvedores podem abandonar pacotes."
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr "Comentário da marcação"
|
msgstr "Comentário da marcação"
|
||||||
|
@ -515,7 +531,7 @@ msgid "Merge"
|
||||||
msgstr "Mesclar"
|
msgstr "Mesclar"
|
||||||
|
|
||||||
msgid "Only Trusted Users and Developers can merge packages."
|
msgid "Only Trusted Users and Developers can merge packages."
|
||||||
msgstr "Somente Trusted Users e Desenvolvedores podem mesclar pacotes."
|
msgstr "Somente Usuários Confiáveis e Desenvolvedores podem mesclar pacotes."
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr "Enviar requisição"
|
msgstr "Enviar requisição"
|
||||||
|
@ -545,7 +561,7 @@ msgid "Use this form to create an account."
|
||||||
msgstr "Utilize este formulário para criar uma conta."
|
msgstr "Utilize este formulário para criar uma conta."
|
||||||
|
|
||||||
msgid "Trusted User"
|
msgid "Trusted User"
|
||||||
msgstr "Trusted User"
|
msgstr "Usuário confiável"
|
||||||
|
|
||||||
msgid "Could not retrieve proposal details."
|
msgid "Could not retrieve proposal details."
|
||||||
msgstr "Não foi possível adquirir detalhes da proposta."
|
msgstr "Não foi possível adquirir detalhes da proposta."
|
||||||
|
@ -554,7 +570,7 @@ msgid "Voting is closed for this proposal."
|
||||||
msgstr "A votação está encerrada para esta proposta."
|
msgstr "A votação está encerrada para esta proposta."
|
||||||
|
|
||||||
msgid "Only Trusted Users are allowed to vote."
|
msgid "Only Trusted Users are allowed to vote."
|
||||||
msgstr "Apenas Trusted Users têm permissão para votar."
|
msgstr "Apenas Usuários Confiáveis têm permissão para votar."
|
||||||
|
|
||||||
msgid "You cannot vote in an proposal about you."
|
msgid "You cannot vote in an proposal about you."
|
||||||
msgstr "Você não pode votar em uma proposta sobre você."
|
msgstr "Você não pode votar em uma proposta sobre você."
|
||||||
|
@ -630,7 +646,7 @@ msgstr "Erro ao tentar criar uma conta, %s%s%s."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The account, %s%s%s, has been successfully created."
|
msgid "The account, %s%s%s, has been successfully created."
|
||||||
msgstr "A conta, %s%s%s, foi criada com sucesso."
|
msgstr "A conta %s%s%s foi criada com sucesso."
|
||||||
|
|
||||||
msgid "A password reset key has been sent to your e-mail address."
|
msgid "A password reset key has been sent to your e-mail address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -645,7 +661,7 @@ msgstr "Nenhuma alteração foi feita na conta, %s%s%s."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The account, %s%s%s, has been successfully modified."
|
msgid "The account, %s%s%s, has been successfully modified."
|
||||||
msgstr "A conta, %s%s%s, foi modificada com sucesso."
|
msgstr "A conta %s%s%s foi modificada com sucesso."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The login form is currently disabled for your IP address, probably due to "
|
"The login form is currently disabled for your IP address, probably due to "
|
||||||
|
@ -861,7 +877,7 @@ msgid "Invalid reason."
|
||||||
msgstr "Motivo inválido"
|
msgstr "Motivo inválido"
|
||||||
|
|
||||||
msgid "Only TUs and developers can close requests."
|
msgid "Only TUs and developers can close requests."
|
||||||
msgstr "Apenas TUs e desenvolvedores podem fechar requisições"
|
msgstr "Apenas UCs e desenvolvedores podem fechar requisições."
|
||||||
|
|
||||||
msgid "Request closed successfully."
|
msgid "Request closed successfully."
|
||||||
msgstr "Requisição fechada com sucesso"
|
msgstr "Requisição fechada com sucesso"
|
||||||
|
@ -892,7 +908,7 @@ msgid "Developer"
|
||||||
msgstr "Desenvolvedor"
|
msgstr "Desenvolvedor"
|
||||||
|
|
||||||
msgid "Trusted User & Developer"
|
msgid "Trusted User & Developer"
|
||||||
msgstr "Trusted User & Desenvolvedor"
|
msgstr "Usuário Confiável & Desenvolvedor"
|
||||||
|
|
||||||
msgid "Email Address"
|
msgid "Email Address"
|
||||||
msgstr "Endereço de e-mail"
|
msgstr "Endereço de e-mail"
|
||||||
|
@ -903,6 +919,9 @@ msgstr "oculto"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nome real"
|
msgstr "Nome real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Página inicial"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Apelido no IRC"
|
msgstr "Apelido no IRC"
|
||||||
|
|
||||||
|
@ -918,6 +937,9 @@ msgstr "Inativo desde"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Ativa"
|
msgstr "Ativa"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Data de registro:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Último login"
|
msgstr "Último login"
|
||||||
|
|
||||||
|
@ -934,6 +956,10 @@ msgstr "Edite a conta desse usuário"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Clique %saqui%s se você deseja excluir permanentemente esta conta."
|
msgstr "Clique %saqui%s se você deseja excluir permanentemente esta conta."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Clique %saqui%s para os detalhes do usuário."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "obrigatório"
|
msgstr "obrigatório"
|
||||||
|
|
||||||
|
@ -984,6 +1010,9 @@ msgstr "Notificar sobre novos comentários"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr "Notificar sobre atualizações de pacotes"
|
msgstr "Notificar sobre atualizações de pacotes"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Notificar sobre mudanças de mantenedor"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Atualizar"
|
msgstr "Atualizar"
|
||||||
|
|
||||||
|
@ -1087,6 +1116,9 @@ msgstr "Votar neste pacote"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Desabilitar notificações"
|
msgstr "Desabilitar notificações"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Habilitar notificações"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Gerenciar comantenedores"
|
msgstr "Gerenciar comantenedores"
|
||||||
|
|
||||||
|
@ -1234,9 +1266,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Use esse formulário para fechar a requisição para o pacote base %s%s%s."
|
"Use esse formulário para fechar a requisição para o pacote base %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Nota"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1273,6 +1302,39 @@ msgstr "Tornar órfão"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Mesclar em"
|
msgstr "Mesclar em"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Ao enviar uma requisição de exclusão, você solicita que um Trusted User "
|
||||||
|
"exclua o pacote base. Esse tipo de requisição deveria ser usada em caso de "
|
||||||
|
"duplicidade, softwares abandonados pelo upstream, assim como pacotes ilegais "
|
||||||
|
"ou irreparavelmente quebrados."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Ao enviar uma requisição de mesclagem, você solicita que um Trusted User "
|
||||||
|
"exclua o pacote base e transfira seus votos e comentários para um outro "
|
||||||
|
"pacote base. Mesclar um pacote não afeta os repositórios Git "
|
||||||
|
"correspondentes. Certifique-se de você mesmo atualizar o histórico Git do "
|
||||||
|
"pacote alvo."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Ao enviar uma requisição de tornar órfão, você pede que um Trusted User "
|
||||||
|
"abandona o pacote base. Por favor, apenas faça isto se o pacote precise de "
|
||||||
|
"ação do mantenedor, estando este ausente por muito tempo, e você já tentou - "
|
||||||
|
"e não conseguiu - contatá-lo anteriormente."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1293,8 +1355,10 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d dias restantes"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d dia restante"
|
||||||
|
msgstr[1] "~%d dias restantes"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1392,12 +1456,13 @@ msgstr[1] "%d pacotes encontrados."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versão"
|
msgstr "Versão"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Popularidade é calculada como a soma de todos os votos, sendo cada voto "
|
"Popularidade é calculada como a soma de todos os votos, sendo cada voto "
|
||||||
"pesado com um fator de 0.98 por dia desde sua criação."
|
"pesado com um fator de %.2f por dia desde sua criação."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Sim"
|
msgstr "Sim"
|
||||||
|
@ -1451,7 +1516,7 @@ msgid "Registered Users"
|
||||||
msgstr "Usuários registrados"
|
msgstr "Usuários registrados"
|
||||||
|
|
||||||
msgid "Trusted Users"
|
msgid "Trusted Users"
|
||||||
msgstr "Trusted Users"
|
msgstr "Usuários Confiáveis"
|
||||||
|
|
||||||
msgid "Recent Updates"
|
msgid "Recent Updates"
|
||||||
msgstr "Atualizações recentes"
|
msgstr "Atualizações recentes"
|
||||||
|
@ -1491,7 +1556,7 @@ msgid "Participation"
|
||||||
msgstr "Participação"
|
msgstr "Participação"
|
||||||
|
|
||||||
msgid "Last Votes by TU"
|
msgid "Last Votes by TU"
|
||||||
msgstr "Últimos votos por TU"
|
msgstr "Últimos votos por UC"
|
||||||
|
|
||||||
msgid "Last vote"
|
msgid "Last vote"
|
||||||
msgstr "Último voto"
|
msgstr "Último voto"
|
||||||
|
|
66
po/pt_PT.po
66
po/pt_PT.po
|
@ -12,8 +12,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/lfleischer/"
|
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/lfleischer/"
|
||||||
"aur/language/pt_PT/)\n"
|
"aur/language/pt_PT/)\n"
|
||||||
|
@ -29,6 +29,20 @@ msgstr "Página Não Encontrada"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "As nossas desculpas, a página que pediu não existe."
|
msgstr "As nossas desculpas, a página que pediu não existe."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Serviço não disponível"
|
msgstr "Serviço não disponível"
|
||||||
|
|
||||||
|
@ -876,6 +890,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nome real"
|
msgstr "Nome real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Nick IRC"
|
msgstr "Nick IRC"
|
||||||
|
|
||||||
|
@ -891,6 +908,9 @@ msgstr "Inativo desde"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Activo"
|
msgstr "Activo"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Última sessão"
|
msgstr "Última sessão"
|
||||||
|
|
||||||
|
@ -907,6 +927,10 @@ msgstr "Editar a conta deste utilizador"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "necessário"
|
msgstr "necessário"
|
||||||
|
|
||||||
|
@ -953,6 +977,9 @@ msgstr "Notificar-me sobre novos comentários"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Actualizar"
|
msgstr "Actualizar"
|
||||||
|
|
||||||
|
@ -1053,6 +1080,9 @@ msgstr "Votar neste pacote"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Desativar notificações"
|
msgstr "Desativar notificações"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1199,9 +1229,6 @@ msgstr "Fontes"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1236,6 +1263,26 @@ msgstr "Orfão"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Juntar em"
|
msgstr "Juntar em"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1256,8 +1303,10 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr ""
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1355,9 +1404,10 @@ msgstr[1] "%d pacotes encontrados."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versão"
|
msgstr "Versão"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
67
po/ro.po
67
po/ro.po
|
@ -10,8 +10,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Romanian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Romanian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"ro/)\n"
|
"ro/)\n"
|
||||||
|
@ -28,6 +28,20 @@ msgstr "Pagina nu a fost găsită"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Din păcate, pagina solicitată nu există."
|
msgstr "Din păcate, pagina solicitată nu există."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Notă"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -858,6 +872,9 @@ msgstr ""
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Nume real"
|
msgstr "Nume real"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Pseudonim IRC"
|
msgstr "Pseudonim IRC"
|
||||||
|
|
||||||
|
@ -873,6 +890,9 @@ msgstr "Inactiv din"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Activ"
|
msgstr "Activ"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Ultima autentificare"
|
msgstr "Ultima autentificare"
|
||||||
|
|
||||||
|
@ -889,6 +909,10 @@ msgstr "Modifică contul acestui utilizator"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Clic %saici%s dacă dorești să ștergi definitiv acest cont."
|
msgstr "Clic %saici%s dacă dorești să ștergi definitiv acest cont."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "cerut"
|
msgstr "cerut"
|
||||||
|
|
||||||
|
@ -935,6 +959,9 @@ msgstr "Notifică pentru comentarii noi"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Actualizare"
|
msgstr "Actualizare"
|
||||||
|
|
||||||
|
@ -1035,6 +1062,9 @@ msgstr "Votează acest pachet"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Dezactivează notificări"
|
msgstr "Dezactivează notificări"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1184,9 +1214,6 @@ msgstr ""
|
||||||
"Folosește acest formular pentru a închide cererea pentru pachetul de bază %s"
|
"Folosește acest formular pentru a închide cererea pentru pachetul de bază %s"
|
||||||
"%s%s."
|
"%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Notă"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1223,6 +1250,26 @@ msgstr "Orfan"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Fuzionează"
|
msgstr "Fuzionează"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1244,8 +1291,11 @@ msgid "Date"
|
||||||
msgstr "Data"
|
msgstr "Data"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d zile rămase"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
msgstr[2] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1345,9 +1395,10 @@ msgstr[2] "%d de pachete găsite"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Versiune"
|
msgstr "Versiune"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
|
127
po/ru.po
127
po/ru.po
|
@ -9,14 +9,15 @@
|
||||||
# Kyrylo Silin <curacaothe@gmail.com>, 2011
|
# Kyrylo Silin <curacaothe@gmail.com>, 2011
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# Rustam Tsurik <rustam.tsurik@gmail.com>, 2013
|
# Rustam Tsurik <rustam.tsurik@gmail.com>, 2013
|
||||||
# Sergey Shepelev <temotor@gmail.com>, 2014
|
# Sergey Shepelev <temotor@gmail.com>, 2014,2016
|
||||||
|
# Аскольд <HaskuldNihil@protonmail.com>, 2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-11 08:38+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Evgeniy Alekseev <darkarcanis@mail.ru>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Russian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Russian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"ru/)\n"
|
"ru/)\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
|
@ -33,6 +34,20 @@ msgstr "Страница не найдена"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Извините, запрошенная страница не существует."
|
msgstr "Извините, запрошенная страница не существует."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Примечание"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Сервис недоступен"
|
msgstr "Сервис недоступен"
|
||||||
|
|
||||||
|
@ -342,7 +357,7 @@ msgid "Check your e-mail for the confirmation link."
|
||||||
msgstr "Проверьте свою электронную почту на наличие ссылки подтверждения."
|
msgstr "Проверьте свою электронную почту на наличие ссылки подтверждения."
|
||||||
|
|
||||||
msgid "Your password has been reset successfully."
|
msgid "Your password has been reset successfully."
|
||||||
msgstr "Ваш пароль был успешно переустановлен."
|
msgstr "Ваш пароль успешно сброшен."
|
||||||
|
|
||||||
msgid "Confirm your e-mail address:"
|
msgid "Confirm your e-mail address:"
|
||||||
msgstr "Подтвердите адрес своей электронной почты:"
|
msgstr "Подтвердите адрес своей электронной почты:"
|
||||||
|
@ -373,7 +388,7 @@ msgid ""
|
||||||
msgstr "Выбранные пакеты будут брошены."
|
msgstr "Выбранные пакеты будут брошены."
|
||||||
|
|
||||||
msgid "Cannot find package to merge votes and comments into."
|
msgid "Cannot find package to merge votes and comments into."
|
||||||
msgstr "Не могу найти пакет для объединения с ним голосов и комментариев."
|
msgstr "Не могу найти пакет для объединения голосов и комментариев."
|
||||||
|
|
||||||
msgid "Cannot merge a package base with itself."
|
msgid "Cannot merge a package base with itself."
|
||||||
msgstr "Невозможно объединить группу пакетов с самой собой."
|
msgstr "Невозможно объединить группу пакетов с самой собой."
|
||||||
|
@ -591,7 +606,7 @@ msgid "Start and end with a letter or number"
|
||||||
msgstr "Начинаются и заканчиваются цифрой или буквой"
|
msgstr "Начинаются и заканчиваются цифрой или буквой"
|
||||||
|
|
||||||
msgid "Can contain only one period, underscore or hyphen."
|
msgid "Can contain only one period, underscore or hyphen."
|
||||||
msgstr "Может содержать только одну запятую, подчёркивание или тире."
|
msgstr "Может содержать только одну точку, подчёркивание или тире."
|
||||||
|
|
||||||
msgid "The email address is invalid."
|
msgid "The email address is invalid."
|
||||||
msgstr "Неправильный адрес электронной почты."
|
msgstr "Неправильный адрес электронной почты."
|
||||||
|
@ -610,7 +625,7 @@ msgstr "Язык пока не поддерживается."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The username, %s%s%s, is already in use."
|
msgid "The username, %s%s%s, is already in use."
|
||||||
msgstr "Имя пользователя, %s%s%s, уже используется."
|
msgstr "Имя %s%s%s уже занято."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The address, %s%s%s, is already in use."
|
msgid "The address, %s%s%s, is already in use."
|
||||||
|
@ -632,7 +647,7 @@ msgid "A password reset key has been sent to your e-mail address."
|
||||||
msgstr "Ключ для смены пароля был отправлен на ваш электронный адрес."
|
msgstr "Ключ для смены пароля был отправлен на ваш электронный адрес."
|
||||||
|
|
||||||
msgid "Click on the Login link above to use your account."
|
msgid "Click on the Login link above to use your account."
|
||||||
msgstr "Нажмите на ссылку для входа вверху чтобы зайти."
|
msgstr "Нажмите на ссылку Войти выше."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "No changes were made to the account, %s%s%s."
|
msgid "No changes were made to the account, %s%s%s."
|
||||||
|
@ -722,7 +737,7 @@ msgid "Package details could not be found."
|
||||||
msgstr "Не найдена информация о пакете."
|
msgstr "Не найдена информация о пакете."
|
||||||
|
|
||||||
msgid "You must be logged in before you can flag packages."
|
msgid "You must be logged in before you can flag packages."
|
||||||
msgstr "Вы должны войти прежде чем расставлять флажки на пакеты."
|
msgstr "Вы должны войти чтобы ставить флажки на пакеты."
|
||||||
|
|
||||||
msgid "You did not select any packages to flag."
|
msgid "You did not select any packages to flag."
|
||||||
msgstr "Вы не выбрали ни одного пакета для пометки."
|
msgstr "Вы не выбрали ни одного пакета для пометки."
|
||||||
|
@ -734,7 +749,7 @@ msgid "The selected packages have been flagged out-of-date."
|
||||||
msgstr "Выбранные пакеты помечены как устаревшие."
|
msgstr "Выбранные пакеты помечены как устаревшие."
|
||||||
|
|
||||||
msgid "You must be logged in before you can unflag packages."
|
msgid "You must be logged in before you can unflag packages."
|
||||||
msgstr "Вы должны войти прежде чем снимать флажки."
|
msgstr "Вы должны войти чтобы снимать флажки."
|
||||||
|
|
||||||
msgid "You did not select any packages to unflag."
|
msgid "You did not select any packages to unflag."
|
||||||
msgstr "Вы не выбрали ни одного пакета для снятия пометки."
|
msgstr "Вы не выбрали ни одного пакета для снятия пометки."
|
||||||
|
@ -752,10 +767,10 @@ msgid "The selected packages have been deleted."
|
||||||
msgstr "Выбранные пакеты удалены."
|
msgstr "Выбранные пакеты удалены."
|
||||||
|
|
||||||
msgid "You must be logged in before you can adopt packages."
|
msgid "You must be logged in before you can adopt packages."
|
||||||
msgstr "Вы должны войти прежде чем усыновлять пакеты."
|
msgstr "Вы должны войти чтобы усыновлять пакеты."
|
||||||
|
|
||||||
msgid "You must be logged in before you can disown packages."
|
msgid "You must be logged in before you can disown packages."
|
||||||
msgstr "Вы должны войти прежде чем бросать пакеты."
|
msgstr "Вы должны войти чтобы бросать пакеты."
|
||||||
|
|
||||||
msgid "You did not select any packages to adopt."
|
msgid "You did not select any packages to adopt."
|
||||||
msgstr "Вы не выбрали ни одного пакета для усыновления."
|
msgstr "Вы не выбрали ни одного пакета для усыновления."
|
||||||
|
@ -770,10 +785,10 @@ msgid "The selected packages have been disowned."
|
||||||
msgstr "Выбранные пакеты брошены."
|
msgstr "Выбранные пакеты брошены."
|
||||||
|
|
||||||
msgid "You must be logged in before you can vote for packages."
|
msgid "You must be logged in before you can vote for packages."
|
||||||
msgstr "Вы должны войти прежде чем голосовать."
|
msgstr "Вы должны войти чтобы голосовать."
|
||||||
|
|
||||||
msgid "You must be logged in before you can un-vote for packages."
|
msgid "You must be logged in before you can un-vote for packages."
|
||||||
msgstr "Вы должны войти прежде чем снимать голос с пакета."
|
msgstr "Вы должны войти чтобы снимать голос с пакета."
|
||||||
|
|
||||||
msgid "You did not select any packages to vote for."
|
msgid "You did not select any packages to vote for."
|
||||||
msgstr "Вы не выбрали ни одного пакета для голосования."
|
msgstr "Вы не выбрали ни одного пакета для голосования."
|
||||||
|
@ -837,7 +852,7 @@ msgid "You must be logged in to file package requests."
|
||||||
msgstr "Вы должны войти, чтобы отправить запрос по пакету."
|
msgstr "Вы должны войти, чтобы отправить запрос по пакету."
|
||||||
|
|
||||||
msgid "Invalid name: only lowercase letters are allowed."
|
msgid "Invalid name: only lowercase letters are allowed."
|
||||||
msgstr "Неверное имя: только нижний регистр допустим."
|
msgstr "Неверное имя: допустим только нижний регистр."
|
||||||
|
|
||||||
msgid "The comment field must not be empty."
|
msgid "The comment field must not be empty."
|
||||||
msgstr "Поле комментариев должно быть заполнено."
|
msgstr "Поле комментариев должно быть заполнено."
|
||||||
|
@ -894,6 +909,9 @@ msgstr "скрыто"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Настоящее имя"
|
msgstr "Настоящее имя"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Домашняя страница"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC Ник"
|
msgstr "IRC Ник"
|
||||||
|
|
||||||
|
@ -909,6 +927,9 @@ msgstr "Неактивен с"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Активный"
|
msgstr "Активный"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Последний вход"
|
msgstr "Последний вход"
|
||||||
|
|
||||||
|
@ -925,6 +946,10 @@ msgstr "Отредактировать этот аккаунт"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Нажмите %sздесь%s, если Вы хотите удалить данный аккаунт насовсем."
|
msgstr "Нажмите %sздесь%s, если Вы хотите удалить данный аккаунт насовсем."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "необходимо"
|
msgstr "необходимо"
|
||||||
|
|
||||||
|
@ -959,7 +984,9 @@ msgstr "Язык"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The following information is only required if you want to submit packages to "
|
"The following information is only required if you want to submit packages to "
|
||||||
"the Arch User Repository."
|
"the Arch User Repository."
|
||||||
msgstr "Только следующая необходима, если вы хотите загрузить пакеты в AUR."
|
msgstr ""
|
||||||
|
"Следующая информация необходима, только если вы хотите загружать пакеты в "
|
||||||
|
"AUR."
|
||||||
|
|
||||||
msgid "SSH Public Key"
|
msgid "SSH Public Key"
|
||||||
msgstr "Публичный SSH ключ"
|
msgstr "Публичный SSH ключ"
|
||||||
|
@ -973,6 +1000,9 @@ msgstr "Уведомлять о новых комментариях"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr "Уведомлять об обновлении пакета"
|
msgstr "Уведомлять об обновлении пакета"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Уведомлять об измененях собственности"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Обновить"
|
msgstr "Обновить"
|
||||||
|
|
||||||
|
@ -1007,8 +1037,8 @@ msgstr "Больше нет результатов."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to add co-maintainers for %s%s%s (one user name per line):"
|
"Use this form to add co-maintainers for %s%s%s (one user name per line):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Используйте данную форму, чтобы добавить сопровождающих для %s%s%s "
|
"Используйте данную форму, чтобы добавить сопровождающих для %s%s%s (одно имя "
|
||||||
"(используйте одно имя на строку):"
|
"на строку):"
|
||||||
|
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Пользователи"
|
msgstr "Пользователи"
|
||||||
|
@ -1058,7 +1088,7 @@ msgstr "Искать в Wiki"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr "Отмечет устаревшим (%s)"
|
msgstr "Отмечен устаревшим (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Пометить пакет как устаревший"
|
msgstr "Пометить пакет как устаревший"
|
||||||
|
@ -1075,6 +1105,9 @@ msgstr "Проголосовать за пакет"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Выключить уведомления"
|
msgstr "Выключить уведомления"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Включить уведомления"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Управление сопровождающими"
|
msgstr "Управление сопровождающими"
|
||||||
|
|
||||||
|
@ -1223,9 +1256,6 @@ msgstr "Исходники"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "Используйте эту форму, чтобы закрыть запрос о группе пакетов %s%s%s."
|
msgstr "Используйте эту форму, чтобы закрыть запрос о группе пакетов %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Примечание"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1262,6 +1292,37 @@ msgstr "Сделать сиротой"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Объединить с"
|
msgstr "Объединить с"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Отправляя запрос удаления, Вы просите Доверенного Пользователя удалить "
|
||||||
|
"основной пакет. Этот тип запроса должен использоваться для дубликатов, "
|
||||||
|
"заброшенных, а также незаконных и безнадёжно сломанных пакетов."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Отправляя запрос на слияние, Вы просите Доверенного Пользователя удалить "
|
||||||
|
"основной пакет, переместить голоса и комментарии к другому основному пакету. "
|
||||||
|
"Слияние пакета не влияет на соответствующие Git репозитории. Обновите Git "
|
||||||
|
"историю целевого пакета самостоятельно."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Отправляя сиротский запрос, Вы просите Доверенного Пользователя бросить "
|
||||||
|
"основной пакет. Пожалуйста, делайте это, только если пакет нуждается в "
|
||||||
|
"действиях обслуживающего, который недоступен и вы уже пытались связаться с "
|
||||||
|
"ним ранее."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1284,8 +1345,12 @@ msgid "Date"
|
||||||
msgstr "Дата"
|
msgstr "Дата"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "осталось ~%d дней"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
msgstr[2] ""
|
||||||
|
msgstr[3] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1387,19 +1452,17 @@ msgstr[3] "Найдено %d пакетов."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Версия"
|
msgstr "Версия"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Популярность считается, как сумма всех голосов, где каждый голос взвешен с "
|
|
||||||
"коэффициентом 0.98 за каждый день разницы между днем голосования и днем "
|
|
||||||
"загрузки пакета."
|
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Да"
|
msgstr "Да"
|
||||||
|
|
||||||
msgid "orphan"
|
msgid "orphan"
|
||||||
msgstr "сирота"
|
msgstr "брошеный"
|
||||||
|
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Действия"
|
msgstr "Действия"
|
||||||
|
@ -1429,7 +1492,7 @@ msgid "Statistics"
|
||||||
msgstr "Статистика"
|
msgstr "Статистика"
|
||||||
|
|
||||||
msgid "Orphan Packages"
|
msgid "Orphan Packages"
|
||||||
msgstr "Пакеты-сироты"
|
msgstr "Брошеные пакеты"
|
||||||
|
|
||||||
msgid "Packages added in the past 7 days"
|
msgid "Packages added in the past 7 days"
|
||||||
msgstr "Пакеты, добавленные за прошедшие 7 дней"
|
msgstr "Пакеты, добавленные за прошедшие 7 дней"
|
||||||
|
@ -1459,7 +1522,7 @@ msgid "My Statistics"
|
||||||
msgstr "Моя статистика"
|
msgstr "Моя статистика"
|
||||||
|
|
||||||
msgid "Proposal Details"
|
msgid "Proposal Details"
|
||||||
msgstr "Подробнее о предложении"
|
msgstr "Подробности предложения"
|
||||||
|
|
||||||
msgid "This vote is still running."
|
msgid "This vote is still running."
|
||||||
msgstr "Голосование продолжается."
|
msgstr "Голосование продолжается."
|
||||||
|
|
69
po/sk.po
69
po/sk.po
|
@ -9,8 +9,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Slovak (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Slovak (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"sk/)\n"
|
"sk/)\n"
|
||||||
|
@ -26,6 +26,20 @@ msgstr "Stránka nebola nájdená"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Mrzí nás to, ale stránka, ktorú ste zadali, neexistuje."
|
msgstr "Mrzí nás to, ale stránka, ktorú ste zadali, neexistuje."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Poznámka"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Služba nie je dostupná"
|
msgstr "Služba nie je dostupná"
|
||||||
|
|
||||||
|
@ -887,6 +901,9 @@ msgstr "skrytý"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Skutočné meno"
|
msgstr "Skutočné meno"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC prezývka"
|
msgstr "IRC prezývka"
|
||||||
|
|
||||||
|
@ -902,6 +919,9 @@ msgstr "Neaktívny od"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktívny"
|
msgstr "Aktívny"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Posledné prihlásenie"
|
msgstr "Posledné prihlásenie"
|
||||||
|
|
||||||
|
@ -918,6 +938,10 @@ msgstr "Editovať účet tohto užívateľa"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Kliknite %ssem%s ak chcete natrvalo vymazať tento účet."
|
msgstr "Kliknite %ssem%s ak chcete natrvalo vymazať tento účet."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "povinný"
|
msgstr "povinný"
|
||||||
|
|
||||||
|
@ -967,6 +991,9 @@ msgstr "Upozorni na nové komentáre"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualizácia"
|
msgstr "Aktualizácia"
|
||||||
|
|
||||||
|
@ -1069,6 +1096,9 @@ msgstr "Hlasuj za tento balíček"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Vypni upozornenia"
|
msgstr "Vypni upozornenia"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Manažovať spolupracovníkov"
|
msgstr "Manažovať spolupracovníkov"
|
||||||
|
|
||||||
|
@ -1217,9 +1247,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Použite tento formulár pre zatvorenie požiadavky na základňu balíčka %s%s%s."
|
"Použite tento formulár pre zatvorenie požiadavky na základňu balíčka %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Poznámka"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1256,6 +1283,26 @@ msgstr "Vyvlastniť"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Zlúčiť do"
|
msgstr "Zlúčiť do"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1277,8 +1324,11 @@ msgid "Date"
|
||||||
msgstr "Dátum"
|
msgstr "Dátum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d dní ostáva"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
msgstr[2] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1378,12 +1428,11 @@ msgstr[2] "%d nájdených balíčkov."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Verzia"
|
msgstr "Verzia"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Popularita sa počíta ako suma všetkých hlasov, pričom každý hlas je násobený "
|
|
||||||
"váhovým faktorom 0.98 za deň od dátumu vzniku."
|
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Áno"
|
msgstr "Áno"
|
||||||
|
|
84
po/sr.po
84
po/sr.po
|
@ -10,8 +10,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-11 01:46+0000\n"
|
"PO-Revision-Date: 2016-10-11 14:07+0000\n"
|
||||||
"Last-Translator: Slobodan Terzić <githzerai06@gmail.com>\n"
|
"Last-Translator: Slobodan Terzić <githzerai06@gmail.com>\n"
|
||||||
"Language-Team: Serbian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Serbian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"sr/)\n"
|
"sr/)\n"
|
||||||
|
@ -28,6 +28,20 @@ msgstr "Stranica nije nađena"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Stranica koju ste zahtevali ne postoji."
|
msgstr "Stranica koju ste zahtevali ne postoji."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Beleška"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr "URL-ovi za Git kloniranje nisu namenjeni za otvaranje u pregledaču."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "Da bi klonirali git riznicu %s, pokrenite %s."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "Kliknite %sovde%s da bi se vratili na stranicu o %s."
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Servis nije dostupan"
|
msgstr "Servis nije dostupan"
|
||||||
|
|
||||||
|
@ -880,6 +894,9 @@ msgstr "skrivena"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Pravo ime"
|
msgstr "Pravo ime"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Domaća stranica"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC nadimak"
|
msgstr "IRC nadimak"
|
||||||
|
|
||||||
|
@ -895,6 +912,9 @@ msgstr "Neaktivan od"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktivan"
|
msgstr "Aktivan"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Datum registracije:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Poslednje prijavljivanje"
|
msgstr "Poslednje prijavljivanje"
|
||||||
|
|
||||||
|
@ -911,6 +931,10 @@ msgstr "Uređivanje naloga ovog korisnika"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Kliknite %sovde%s ako želite trajno brisanje ovog naloga."
|
msgstr "Kliknite %sovde%s ako želite trajno brisanje ovog naloga."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Kliknite %sovde%s za podatke o korisniku."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "neophodno"
|
msgstr "neophodno"
|
||||||
|
|
||||||
|
@ -961,6 +985,9 @@ msgstr "Obavesti o novim komentarima"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr "Obavesti o nadogradnjama paketa"
|
msgstr "Obavesti o nadogradnjama paketa"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Obavesti o promenama vlasništva"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Ažuriraj"
|
msgstr "Ažuriraj"
|
||||||
|
|
||||||
|
@ -1063,6 +1090,9 @@ msgstr "Glasajte za paket"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Ugasi obaveštenja"
|
msgstr "Ugasi obaveštenja"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Uključi obaveštenja"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Upravljanje koodržavaocima"
|
msgstr "Upravljanje koodržavaocima"
|
||||||
|
|
||||||
|
@ -1130,7 +1160,7 @@ msgstr "Poslednji komentari"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s commented on %s"
|
msgid "%s commented on %s"
|
||||||
msgstr "%s postavi komentar za %s"
|
msgstr "%s postavi komentar %s u"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Anonymous comment on %s"
|
msgid "Anonymous comment on %s"
|
||||||
|
@ -1210,9 +1240,6 @@ msgstr "Izvori"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "Ovim formularom zatvarate zahteve za osnovu paketa %s%s%s."
|
msgstr "Ovim formularom zatvarate zahteve za osnovu paketa %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Beleška"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1249,6 +1276,37 @@ msgstr "Siročić"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Stopi sa"
|
msgstr "Stopi sa"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Podnošenjem zahteva za brisanje tražili ste of poverljivog korisnika da "
|
||||||
|
"obriše bazu paketa. Ovaj tip zahteva treba koristiti za duplikate, uzvodno "
|
||||||
|
"napišten softver, kao i nelegalne ili nepopravljivo pokvarene pakete."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Podnošenjem zahteva za spajanje tražili ste of poverljivog korisnika da "
|
||||||
|
"obriše bazu paketa i spoji njene glasove sa drugom bazom paketa. Spajanje "
|
||||||
|
"paketa ne utiče na pripadajuće Git riznice. Postarajte se sami da ažurirate "
|
||||||
|
"Git istorijat ciljanog paketa."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Podnošenjem zahteva za odricanje tražili ste od poverljivog korisnika da "
|
||||||
|
"izvrži odricanje od baze paketa. Molimo da ovo tražite samo ukoliko paket "
|
||||||
|
"zahteva održavanje, a održavalac je nedosupan i već ste pokušali da ga "
|
||||||
|
"kontaktirate."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1270,8 +1328,11 @@ msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "Preostalo dana: ~%d"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "Preostaje još ~%d dan"
|
||||||
|
msgstr[1] "Preostaje još ~%d dana"
|
||||||
|
msgstr[2] "Preostaje još ~%d dana"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1371,12 +1432,13 @@ msgstr[2] "Nađeno %d paketa."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Verzija"
|
msgstr "Verzija"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Popularnost se izračunava kao suma svih glasova, gde glas ima faktor težine "
|
"Popularnost se izračunava kao suma svih glasova, gde svaki glas ima teži "
|
||||||
"0,98 za svaki dan od njegovog nastanka."
|
"%.2f po danu od kada je dat."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Da"
|
msgstr "Da"
|
||||||
|
|
154
po/tr.po
154
po/tr.po
|
@ -9,14 +9,15 @@
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# Samed Beyribey <ras0ir@eventualis.org>, 2012
|
# Samed Beyribey <ras0ir@eventualis.org>, 2012
|
||||||
# Samed Beyribey <samed@ozguryazilim.com.tr>, 2012
|
# Samed Beyribey <samed@ozguryazilim.com.tr>, 2012
|
||||||
|
# Serpil Acar <acarserpil89@gmail.com>, 2016
|
||||||
# Atilla Öntaş <tarakbumba@gmail.com>, 2012
|
# Atilla Öntaş <tarakbumba@gmail.com>, 2012
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-09 05:38+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Serpil Acar <acarserpil89@gmail.com>\n"
|
||||||
"Language-Team: Turkish (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Turkish (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"tr/)\n"
|
"tr/)\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
|
@ -31,6 +32,20 @@ msgstr "Sayfa Bulunamadı"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "Üzgünüz, talep ettiğiniz sayfa bulunamadı."
|
msgstr "Üzgünüz, talep ettiğiniz sayfa bulunamadı."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Not"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr "Git clone linkleri bir tarayıcıda açılamazlar."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "%s'in Git deposunu kopyalamak için, %s komutunu çalıştırın."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "Detaylar sayfasına %s geri dönmek için %sburaya%s tıklayınız."
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Hizmete Erişilemiyor"
|
msgstr "Hizmete Erişilemiyor"
|
||||||
|
|
||||||
|
@ -290,7 +305,7 @@ msgid "Enter login credentials"
|
||||||
msgstr "Giriş bilgilerinizi doldurun"
|
msgstr "Giriş bilgilerinizi doldurun"
|
||||||
|
|
||||||
msgid "User name or email address"
|
msgid "User name or email address"
|
||||||
msgstr ""
|
msgstr "Kullanıcı adı veya e-posta adresi"
|
||||||
|
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Parola"
|
msgstr "Parola"
|
||||||
|
@ -443,10 +458,10 @@ msgstr ""
|
||||||
"bırakabilir."
|
"bırakabilir."
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr ""
|
msgstr "Yorumu İşaretle"
|
||||||
|
|
||||||
msgid "Flag Package Out-Of-Date"
|
msgid "Flag Package Out-Of-Date"
|
||||||
msgstr ""
|
msgstr "Paketi güncel değil olarak işaretle"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -464,6 +479,8 @@ msgid ""
|
||||||
"Enter details on why the package is out-of-date below, preferably including "
|
"Enter details on why the package is out-of-date below, preferably including "
|
||||||
"links to the release announcement or the new release tarball."
|
"links to the release announcement or the new release tarball."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Paketin neden güncel olmadığıyla ilgili detayları aşağıya girin, tercihen "
|
||||||
|
"sürüm bildirilerinin veya yeni tarball sürümünün linklerini dahil ederek."
|
||||||
|
|
||||||
msgid "Comments"
|
msgid "Comments"
|
||||||
msgstr "Yorumlar"
|
msgstr "Yorumlar"
|
||||||
|
@ -473,6 +490,7 @@ msgstr "İşaretle"
|
||||||
|
|
||||||
msgid "Only registered users can flag packages out-of-date."
|
msgid "Only registered users can flag packages out-of-date."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Sadece kayıtlı kullanıcılar paketleri güncel değil olarak işaretleyebilir."
|
||||||
|
|
||||||
msgid "Package Merging"
|
msgid "Package Merging"
|
||||||
msgstr "Paket birleştirme"
|
msgstr "Paket birleştirme"
|
||||||
|
@ -673,16 +691,16 @@ msgid "View account information for %s"
|
||||||
msgstr "%s için hesap bilgilerini görüntüle"
|
msgstr "%s için hesap bilgilerini görüntüle"
|
||||||
|
|
||||||
msgid "Package base ID or package base name missing."
|
msgid "Package base ID or package base name missing."
|
||||||
msgstr ""
|
msgstr "Paket ID'si veya paket ismi eksik."
|
||||||
|
|
||||||
msgid "You are not allowed to edit this comment."
|
msgid "You are not allowed to edit this comment."
|
||||||
msgstr ""
|
msgstr "Bu yorumu düzenlemek için yetkiniz yok."
|
||||||
|
|
||||||
msgid "Comment does not exist."
|
msgid "Comment does not exist."
|
||||||
msgstr ""
|
msgstr "Yorum bulunamadı."
|
||||||
|
|
||||||
msgid "Comment cannot be empty."
|
msgid "Comment cannot be empty."
|
||||||
msgstr ""
|
msgstr "Yorum boş olamaz."
|
||||||
|
|
||||||
msgid "Comment has been added."
|
msgid "Comment has been added."
|
||||||
msgstr "Yorum eklendi."
|
msgstr "Yorum eklendi."
|
||||||
|
@ -694,16 +712,16 @@ msgid "Missing comment ID."
|
||||||
msgstr "Yorum kimliği bulunamadı."
|
msgstr "Yorum kimliği bulunamadı."
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "5 taneden fazla yorum iğnelenemez."
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "Bu yorumu iğnelemek için yetkiniz yok."
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "Yorum iğnelendi."
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -721,7 +739,7 @@ msgid "You did not select any packages to flag."
|
||||||
msgstr "İşaretlenecek paketleri seçmediniz."
|
msgstr "İşaretlenecek paketleri seçmediniz."
|
||||||
|
|
||||||
msgid "The selected packages have not been flagged, please enter a comment."
|
msgid "The selected packages have not been flagged, please enter a comment."
|
||||||
msgstr ""
|
msgstr "Seçilen paketler işaretlenmedi, lütfen bir yorum giriniz."
|
||||||
|
|
||||||
msgid "The selected packages have been flagged out-of-date."
|
msgid "The selected packages have been flagged out-of-date."
|
||||||
msgstr "Seçilen paketler güncelliğini yitirmiş olarak işaretlendi."
|
msgstr "Seçilen paketler güncelliğini yitirmiş olarak işaretlendi."
|
||||||
|
@ -789,10 +807,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "%s bildirim listesinden başarıyla çıktınız."
|
msgstr "%s bildirim listesinden başarıyla çıktınız."
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "Bu silinmiş yorumu geri almak için yetkili değilsiniz."
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "Yorum silindi."
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "Bu yorumu silme yetkiniz yok."
|
msgstr "Bu yorumu silme yetkiniz yok."
|
||||||
|
@ -801,7 +819,7 @@ msgid "Comment has been deleted."
|
||||||
msgstr "Yorum silindi."
|
msgstr "Yorum silindi."
|
||||||
|
|
||||||
msgid "Comment has been edited."
|
msgid "Comment has been edited."
|
||||||
msgstr ""
|
msgstr "Yorum düzenlendi."
|
||||||
|
|
||||||
msgid "You are not allowed to edit the keywords of this package base."
|
msgid "You are not allowed to edit the keywords of this package base."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -826,7 +844,7 @@ msgstr "Paket detaylarını görüntüle"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "requires %s"
|
msgid "requires %s"
|
||||||
msgstr ""
|
msgstr "%s'ye ihtiyaç duyuyor."
|
||||||
|
|
||||||
msgid "You must be logged in to file package requests."
|
msgid "You must be logged in to file package requests."
|
||||||
msgstr "Paket gereksinimlerinin kaydını tutmalısın."
|
msgstr "Paket gereksinimlerinin kaydını tutmalısın."
|
||||||
|
@ -882,11 +900,14 @@ msgid "Email Address"
|
||||||
msgstr "E-posta adresi"
|
msgstr "E-posta adresi"
|
||||||
|
|
||||||
msgid "hidden"
|
msgid "hidden"
|
||||||
msgstr ""
|
msgstr "gizli"
|
||||||
|
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Gerçek İsim"
|
msgstr "Gerçek İsim"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Anasayfa"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC Rumuzu"
|
msgstr "IRC Rumuzu"
|
||||||
|
|
||||||
|
@ -902,6 +923,9 @@ msgstr "Şu tarihten beri etkin değil:"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Etkin"
|
msgstr "Etkin"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Kayıt tarihi:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Son giriş"
|
msgstr "Son giriş"
|
||||||
|
|
||||||
|
@ -918,6 +942,10 @@ msgstr "Bu kullanıcının hesabını düzenleyin"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Bu hesabı temelli olarak silmek istiyorsanız %sburaya%s tıklayın."
|
msgstr "Bu hesabı temelli olarak silmek istiyorsanız %sburaya%s tıklayın."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Kullanıcı detayları için %sburaya%s tıklayın."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "gerekli"
|
msgstr "gerekli"
|
||||||
|
|
||||||
|
@ -937,9 +965,11 @@ msgid ""
|
||||||
"Please ensure you correctly entered your email address, otherwise you will "
|
"Please ensure you correctly entered your email address, otherwise you will "
|
||||||
"be locked out."
|
"be locked out."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Lütfen e-posta adresinizi doğru girdiğinizden emin olun, aksi halde "
|
||||||
|
"hesabınız kilitlenecektir."
|
||||||
|
|
||||||
msgid "Hide Email Address"
|
msgid "Hide Email Address"
|
||||||
msgstr ""
|
msgstr "E-posta Adresini Gizle"
|
||||||
|
|
||||||
msgid "Re-type password"
|
msgid "Re-type password"
|
||||||
msgstr "Parolayı tekrar girin"
|
msgstr "Parolayı tekrar girin"
|
||||||
|
@ -958,13 +988,16 @@ msgid "SSH Public Key"
|
||||||
msgstr "SSH Kamu Anahtarı"
|
msgstr "SSH Kamu Anahtarı"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "Bildirim ayarları"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "Yeni yorumları bildir"
|
msgstr "Yeni yorumları bildir"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr ""
|
msgstr "Paket güncellemelerini bildir"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Sahiplik değişikliklerini bildir."
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Güncelle"
|
msgstr "Güncelle"
|
||||||
|
@ -1011,7 +1044,7 @@ msgstr "Kaydet"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Güncel olmayan olarak işaretli yorum: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
|
@ -1019,10 +1052,10 @@ msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s güncel değil olarak işaretlenmedi."
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "Detaylara Geri Dön."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
|
@ -1051,7 +1084,7 @@ msgstr "Wikide ara"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "Güncel değil olarak işaretlendi (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "Güncelliğini yitirmiş olarak işaretle"
|
msgstr "Güncelliğini yitirmiş olarak işaretle"
|
||||||
|
@ -1068,6 +1101,9 @@ msgstr "Pakete oy ver"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Bildirimleri kapat"
|
msgstr "Bildirimleri kapat"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Bildirimleri etkinleştir"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Yardımcı Bakımcıları Yönet"
|
msgstr "Yardımcı Bakımcıları Yönet"
|
||||||
|
|
||||||
|
@ -1118,7 +1154,7 @@ msgstr "Son Güncelleme"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Edit comment for: %s"
|
msgid "Edit comment for: %s"
|
||||||
msgstr ""
|
msgstr "Yorumu düzenle: %s"
|
||||||
|
|
||||||
msgid "Add Comment"
|
msgid "Add Comment"
|
||||||
msgstr "Yorum Ekle"
|
msgstr "Yorum Ekle"
|
||||||
|
@ -1127,43 +1163,43 @@ msgid "View all comments"
|
||||||
msgstr "Tüm yorumları görünüle"
|
msgstr "Tüm yorumları görünüle"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "İğnelenmiş Yorumlar"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "Son Yorumlar"
|
msgstr "Son Yorumlar"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s commented on %s"
|
msgid "%s commented on %s"
|
||||||
msgstr ""
|
msgstr "%s, %s'e yorum yaptı."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Anonymous comment on %s"
|
msgid "Anonymous comment on %s"
|
||||||
msgstr ""
|
msgstr "%s'e isimsiz yorum"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s by %s"
|
msgid "deleted on %s by %s"
|
||||||
msgstr ""
|
msgstr "%s'te, %s tarafından silindi."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "%s'te silindi."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "%s'te, %s tarafından düzenlendi"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "%s'te düzenlendi."
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "Yorumu silmeyi geri al."
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Yorumu sil"
|
msgstr "Yorumu sil"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "Yorumu iğnele"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1215,9 +1251,6 @@ msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bu formu %s%s%s paket temeli için yapılan talebi kapatmak için kullanın."
|
"Bu formu %s%s%s paket temeli için yapılan talebi kapatmak için kullanın."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Not"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1254,6 +1287,34 @@ msgstr "Öksüz"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Şununla ilişkilendir:"
|
msgstr "Şununla ilişkilendir:"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Silme talebi göndererek, Güvenilir Kullanıcıdan paketi silmesini "
|
||||||
|
"istiyorsunuz. Bu tür bir istek birden fazla olan paketlerde, geliştirilmesi "
|
||||||
|
"durdurulmuş yazılımlarda, ve aynı zamanda yasadışı ve onarılamaz bozuklukta "
|
||||||
|
"olan paketler için kullanılmalıdır."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Birleştirme talebi göndererek, Güvenilir Kullanıcıdan paketi silmesini ve bu "
|
||||||
|
"paketin oylarını ve yorumlarını diğer pakete transfer etmesini istiyorsunuz. "
|
||||||
|
"Bir paketi birleştirmek ilgili Git deposunu etkilemeyecektir. Hedef paketin "
|
||||||
|
"Git geçmişini bizzat güncellediğinizden emin olun. "
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1274,8 +1335,10 @@ msgid "Date"
|
||||||
msgstr "Tarih"
|
msgstr "Tarih"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d gün kaldı"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d gün kaldı"
|
||||||
|
msgstr[1] "~%d gün kaldı"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1326,7 +1389,7 @@ msgid "Voted"
|
||||||
msgstr "Oylanmış"
|
msgstr "Oylanmış"
|
||||||
|
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr ""
|
msgstr "Son düzenleme"
|
||||||
|
|
||||||
msgid "Ascending"
|
msgid "Ascending"
|
||||||
msgstr "Eskiden yeniye"
|
msgstr "Eskiden yeniye"
|
||||||
|
@ -1373,12 +1436,13 @@ msgstr[1] "%d adet paket bulundu."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Sürüm"
|
msgstr "Sürüm"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Beğenilirlik, oluşturulmasından itibaren günlük 0.98 oranı ile çarpılarak "
|
"Popülarite, oluşturulmasından itibaren günlük %.2f oranı ile "
|
||||||
"bulunan her oyun toplamı ile ölçülür."
|
"ağırlaştırılarak bulunan her oyun toplamı ile ölçülür."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Evet"
|
msgstr "Evet"
|
||||||
|
|
82
po/uk.po
82
po/uk.po
|
@ -12,8 +12,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 23:36+0000\n"
|
"PO-Revision-Date: 2016-10-08 15:11+0000\n"
|
||||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian (http://www.transifex.com/lfleischer/aur/language/"
|
"Language-Team: Ukrainian (http://www.transifex.com/lfleischer/aur/language/"
|
||||||
"uk/)\n"
|
"uk/)\n"
|
||||||
|
@ -30,6 +30,21 @@ msgstr "Сторінку не знайдено"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "На жаль, запитаної сторінки не існує."
|
msgstr "На жаль, запитаної сторінки не існує."
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Примітка"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr ""
|
||||||
|
"Посилання на клонування сховища Git не вдасться відкрити в переглядарці."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "Щоб клонувати сховище Git з %s, виконайте %s."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "Клацніть %sтут%s для повернення на сторінку деталей %s."
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "Сервіс недоступний"
|
msgstr "Сервіс недоступний"
|
||||||
|
|
||||||
|
@ -895,6 +910,9 @@ msgstr "приховано"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "Справжнє ім'я"
|
msgstr "Справжнє ім'я"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "Домашня сторінка"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "Псевдонім IRC"
|
msgstr "Псевдонім IRC"
|
||||||
|
|
||||||
|
@ -910,6 +928,9 @@ msgstr "Неактивний з"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Активний"
|
msgstr "Активний"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "Дата реєстрації:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "Останній вхід"
|
msgstr "Останній вхід"
|
||||||
|
|
||||||
|
@ -926,6 +947,10 @@ msgstr "Редагування рахунку цього користувача"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "Натисніть %sтут%s, якщо Ви бажаєте безповоротно вилучити цей рахунок."
|
msgstr "Натисніть %sтут%s, якщо Ви бажаєте безповоротно вилучити цей рахунок."
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "Клацніть %sтут%s для деталей про користувача."
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "обов'язково"
|
msgstr "обов'язково"
|
||||||
|
|
||||||
|
@ -976,6 +1001,9 @@ msgstr "Сповіщати про нові коментарі"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr "Повідомлення про оновлення пакунків"
|
msgstr "Повідомлення про оновлення пакунків"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "Сповіщення про зміну власника"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Оновити"
|
msgstr "Оновити"
|
||||||
|
|
||||||
|
@ -1021,7 +1049,7 @@ msgstr "Зберегти"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "Позначено як застарілий коментар: %s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
|
@ -1078,6 +1106,9 @@ msgstr "Голосувати за цей пакунок"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "Відключити сповіщення"
|
msgstr "Відключити сповіщення"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "Включити сповіщення"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "Керування Супровідниками"
|
msgstr "Керування Супровідниками"
|
||||||
|
|
||||||
|
@ -1225,9 +1256,6 @@ msgstr "Сирці"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "Використайте цю форму для закриття запиту щодо бази пакетів %s%s%s."
|
msgstr "Використайте цю форму для закриття запиту щодо бази пакетів %s%s%s."
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "Примітка"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1264,6 +1292,36 @@ msgstr "Позначити застарілим"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "Об'єднати в"
|
msgstr "Об'єднати в"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"Надсилаючи запит на вилучення, Ви просите Довіреного Користувача вилучити "
|
||||||
|
"пакунок з бази. Цей тип запиту повинен використовуватися для дублікатів, "
|
||||||
|
"неоновлюваних програм, а також нелегальних і невиправно пошкоджених пакунків."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"Надсилаючи запит на об'єднання, Ви просите Довіреного Користувача вилучити "
|
||||||
|
"пакунок і перенести всі його голосування і коментарі до іншого пакунку. "
|
||||||
|
"Об'єднання пакунку не впливає на відповідні сховища Git. Впевніться, що Ви "
|
||||||
|
"оновили самі історію Git доцільового пакунку."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"Надсилаючи запит на зречення, Ви просите Довіреного Користувача позбавити "
|
||||||
|
"пакунок власника. Робіть це, якщо пакунок потребує якоїсь дії, супровідник "
|
||||||
|
"не робить жодних дій і Ви вже попередньо намагалися зв'язатися з ним."
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1285,8 +1343,11 @@ msgid "Date"
|
||||||
msgstr "Дата"
|
msgstr "Дата"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "~%d днів залишилося"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "~%d день залишився"
|
||||||
|
msgstr[1] "~%d днів залишилося"
|
||||||
|
msgstr[2] "~%d днів залишилося"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1386,12 +1447,13 @@ msgstr[2] "Знайдено %d пакунків."
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Версія"
|
msgstr "Версія"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Популярність розраховується як сума всіх голосувань, де кожен голос береться "
|
"Популярність розраховується як сума всіх голосувань, де кожен голос береться "
|
||||||
"з ваговим коефіцієнтом 0.98 за кожен день з часу створення."
|
"з ваговим коефіцієнтом %.2f за кожен день з часу створення."
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Так"
|
msgstr "Так"
|
||||||
|
|
249
po/zh_CN.po
249
po/zh_CN.po
|
@ -3,18 +3,19 @@
|
||||||
# This file is distributed under the same license as the AUR package.
|
# This file is distributed under the same license as the AUR package.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# leonfeng <chaofeng111@gmail.com>, 2015
|
# leonfeng <chaofeng111@gmail.com>, 2015-2016
|
||||||
# dongfengweixiao <dongfengweixiao@gmail.com>, 2015
|
# dongfengweixiao <dongfengweixiao@gmail.com>, 2015
|
||||||
# Felix Yan <felixonmars@gmail.com>, 2014
|
# Felix Yan <felixonmars@gmail.com>, 2014
|
||||||
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
# Lukas Fleischer <transifex@cryptocrack.de>, 2011
|
||||||
# leonfeng <chaofeng111@gmail.com>, 2012
|
# leonfeng <chaofeng111@gmail.com>, 2012
|
||||||
# Weiwen Zhao <panda.hust@gmail.com>, 2013
|
# Weiwen Zhao <panda.hust@gmail.com>, 2013
|
||||||
|
# Xiaodong Qi <xiaodong.que+github@gmail.com>, 2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-09 20:59+0000\n"
|
"PO-Revision-Date: 2016-10-08 12:59+0000\n"
|
||||||
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
"Last-Translator: Lukas Fleischer <transifex@cryptocrack.de>\n"
|
||||||
"Language-Team: Chinese (China) (http://www.transifex.com/lfleischer/aur/"
|
"Language-Team: Chinese (China) (http://www.transifex.com/lfleischer/aur/"
|
||||||
"language/zh_CN/)\n"
|
"language/zh_CN/)\n"
|
||||||
|
@ -30,12 +31,26 @@ msgstr "页面未找到"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "请求的页面不存在。"
|
msgstr "请求的页面不存在。"
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Note"
|
||||||
|
msgstr "提示"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Service Unavailable"
|
||||||
|
msgstr "服务不可用"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Don't panic! This site is down due to maintenance. We will be back soon."
|
"Don't panic! This site is down due to maintenance. We will be back soon."
|
||||||
msgstr ""
|
msgstr "别怕!本站正在维护中,我们会回来的。"
|
||||||
|
|
||||||
msgid "Account"
|
msgid "Account"
|
||||||
msgstr "帐户"
|
msgstr "帐户"
|
||||||
|
@ -111,10 +126,10 @@ msgid "Submit"
|
||||||
msgstr "提交"
|
msgstr "提交"
|
||||||
|
|
||||||
msgid "Manage Co-maintainers"
|
msgid "Manage Co-maintainers"
|
||||||
msgstr ""
|
msgstr "管理共同维护者"
|
||||||
|
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr ""
|
msgstr "编辑评论"
|
||||||
|
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "首页"
|
msgstr "首页"
|
||||||
|
@ -145,56 +160,64 @@ msgstr "免责声明"
|
||||||
msgid ""
|
msgid ""
|
||||||
"AUR packages are user produced content. Any use of the provided files is at "
|
"AUR packages are user produced content. Any use of the provided files is at "
|
||||||
"your own risk."
|
"your own risk."
|
||||||
msgstr ""
|
msgstr "AUR 包为用户产生的内容。使用它们造成的后果自负。"
|
||||||
|
|
||||||
msgid "Learn more..."
|
msgid "Learn more..."
|
||||||
msgstr ""
|
msgstr "了解更多..."
|
||||||
|
|
||||||
msgid "Support"
|
msgid "Support"
|
||||||
msgstr ""
|
msgstr "支持"
|
||||||
|
|
||||||
msgid "Package Requests"
|
msgid "Package Requests"
|
||||||
msgstr ""
|
msgstr "软件包请求"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"There are three types of requests that can be filed in the %sPackage Actions"
|
"There are three types of requests that can be filed in the %sPackage Actions"
|
||||||
"%s box on the package details page:"
|
"%s box on the package details page:"
|
||||||
msgstr ""
|
msgstr "在软件包详情页面上有三种可以在 %s软件包操作%s 框中提交的请求:"
|
||||||
|
|
||||||
msgid "Orphan Request"
|
msgid "Orphan Request"
|
||||||
msgstr ""
|
msgstr "弃置请求"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Request a package to be disowned, e.g. when the maintainer is inactive and "
|
"Request a package to be disowned, e.g. when the maintainer is inactive and "
|
||||||
"the package has been flagged out-of-date for a long time."
|
"the package has been flagged out-of-date for a long time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"请求标记这个软件包为无主的,比如维护者不活跃而且这个软件包已经被标记为过时很"
|
||||||
|
"久了。"
|
||||||
|
|
||||||
msgid "Deletion Request"
|
msgid "Deletion Request"
|
||||||
msgstr ""
|
msgstr "删除请求"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Request a package to be removed from the Arch User Repository. Please do not "
|
"Request a package to be removed from the Arch User Repository. Please do not "
|
||||||
"use this if a package is broken and can be fixed easily. Instead, contact "
|
"use this if a package is broken and can be fixed easily. Instead, contact "
|
||||||
"the package maintainer and file orphan request if necessary."
|
"the package maintainer and file orphan request if necessary."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"请求软件包从 AUR 中移除。如果这个包虽然损坏了但是可以被轻易地修好,请不要进行"
|
||||||
|
"此操作,您应该联系包的维护者或者有必要的情况下发送 orphan request。"
|
||||||
|
|
||||||
msgid "Merge Request"
|
msgid "Merge Request"
|
||||||
msgstr ""
|
msgstr "合并请求"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Request a package to be merged into another one. Can be used when a package "
|
"Request a package to be merged into another one. Can be used when a package "
|
||||||
"needs to be renamed or replaced by a split package."
|
"needs to be renamed or replaced by a split package."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"请求一个软件包被合并到另一个中。在一个包需要被重命名或者被分离成多个包的情况"
|
||||||
|
"下使用。"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to discuss a request, you can use the %saur-requests%s mailing "
|
"If you want to discuss a request, you can use the %saur-requests%s mailing "
|
||||||
"list. However, please do not use that list to file requests."
|
"list. However, please do not use that list to file requests."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"如果你想讨论一个请求,你可以在 %saur-requests%s 邮件列表上发送消息。然而,不"
|
||||||
|
"要在那里发送请求。"
|
||||||
|
|
||||||
msgid "Submitting Packages"
|
msgid "Submitting Packages"
|
||||||
msgstr ""
|
msgstr "提交软件包"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -202,9 +225,11 @@ msgid ""
|
||||||
"packages%s section of the Arch User Repository ArchWiki page for more "
|
"packages%s section of the Arch User Repository ArchWiki page for more "
|
||||||
"details."
|
"details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"现在请使用 Git over SSH 来向 AUR 提交软件包。如果想知道更多,请查看 Arch "
|
||||||
|
"Wiki 上的 Arch User Repository (简体中文) 页面中 %s提交软件包%s 章节。"
|
||||||
|
|
||||||
msgid "The following SSH fingerprints are used for the AUR:"
|
msgid "The following SSH fingerprints are used for the AUR:"
|
||||||
msgstr ""
|
msgstr "AUR 使用以下 SSH 指纹:"
|
||||||
|
|
||||||
msgid "Discussion"
|
msgid "Discussion"
|
||||||
msgstr "邮件列表"
|
msgstr "邮件列表"
|
||||||
|
@ -215,6 +240,8 @@ msgid ""
|
||||||
"structure takes place on %saur-general%s. For discussion relating to the "
|
"structure takes place on %saur-general%s. For discussion relating to the "
|
||||||
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
"development of the AUR web interface, use the %saur-dev%s mailing list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"与 Arch 用户仓库(AUR)或者受信用户结构相关的一般讨论在 %saur-general%s 邮件"
|
||||||
|
"列表。若是与 AUR web 页面开发相关的讨论,请使用 %saur-dev%s 邮件列表。"
|
||||||
|
|
||||||
msgid "Bug Reporting"
|
msgid "Bug Reporting"
|
||||||
msgstr "Bug 报告"
|
msgstr "Bug 报告"
|
||||||
|
@ -226,6 +253,9 @@ msgid ""
|
||||||
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
"%sonly%s. To report packaging bugs contact the package maintainer or leave a "
|
||||||
"comment on the appropriate package page."
|
"comment on the appropriate package page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"如果你在 AUR web 页面中发现了一个 Bug,请提交到我们的 %sBug 追踪系统%s。请%s"
|
||||||
|
"仅仅%s使用追踪系统报告 AUR 自身的 Bug。如果想要报告打包方面的 Bug,请联系相应"
|
||||||
|
"的包维护者,或者在相应的软件包页面中留下一条评论。"
|
||||||
|
|
||||||
msgid "Package Search"
|
msgid "Package Search"
|
||||||
msgstr "软件包搜索"
|
msgstr "软件包搜索"
|
||||||
|
@ -262,7 +292,7 @@ msgid "Enter login credentials"
|
||||||
msgstr "输入账户信息"
|
msgstr "输入账户信息"
|
||||||
|
|
||||||
msgid "User name or email address"
|
msgid "User name or email address"
|
||||||
msgstr ""
|
msgstr "用户名或 E-mail"
|
||||||
|
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "密码"
|
msgstr "密码"
|
||||||
|
@ -334,7 +364,7 @@ msgstr "输入您的邮箱地址:"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The selected packages have not been disowned, check the confirmation "
|
"The selected packages have not been disowned, check the confirmation "
|
||||||
"checkbox."
|
"checkbox."
|
||||||
msgstr ""
|
msgstr "选中的软件包未被弃置,请检查确认复选框。"
|
||||||
|
|
||||||
msgid "Cannot find package to merge votes and comments into."
|
msgid "Cannot find package to merge votes and comments into."
|
||||||
msgstr "找不到合并投票与评论的目标包。"
|
msgstr "找不到合并投票与评论的目标包。"
|
||||||
|
@ -380,49 +410,51 @@ msgstr "弃置软件包"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to disown the package base %s%s%s which includes the following "
|
"Use this form to disown the package base %s%s%s which includes the following "
|
||||||
"packages: "
|
"packages: "
|
||||||
msgstr ""
|
msgstr "使用这个表格来弃置包基础 %s%s%s,其中包括下列软件包:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"By selecting the checkbox, you confirm that you want to disown the package "
|
"By selecting the checkbox, you confirm that you want to disown the package "
|
||||||
"and transfer ownership to %s%s%s."
|
"and transfer ownership to %s%s%s."
|
||||||
msgstr ""
|
msgstr "通过选中复选框,您将确认您将弃置这个包并将其所有权转移给 %s%s%s。"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"By selecting the checkbox, you confirm that you want to disown the package."
|
"By selecting the checkbox, you confirm that you want to disown the package."
|
||||||
msgstr ""
|
msgstr "通过选中复选框,您将确认您将弃置这个包。"
|
||||||
|
|
||||||
msgid "Confirm to disown the package"
|
msgid "Confirm to disown the package"
|
||||||
msgstr ""
|
msgstr "继续以弃置包"
|
||||||
|
|
||||||
msgid "Disown"
|
msgid "Disown"
|
||||||
msgstr "弃置"
|
msgstr "弃置"
|
||||||
|
|
||||||
msgid "Only Trusted Users and Developers can disown packages."
|
msgid "Only Trusted Users and Developers can disown packages."
|
||||||
msgstr ""
|
msgstr "只有受信用户和开发人员能弃置软件包。"
|
||||||
|
|
||||||
msgid "Flag Comment"
|
msgid "Flag Comment"
|
||||||
msgstr ""
|
msgstr "标记评论"
|
||||||
|
|
||||||
msgid "Flag Package Out-Of-Date"
|
msgid "Flag Package Out-Of-Date"
|
||||||
msgstr ""
|
msgstr "将软件包标记为过期"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to flag the package base %s%s%s and the following packages out-"
|
"Use this form to flag the package base %s%s%s and the following packages out-"
|
||||||
"of-date: "
|
"of-date: "
|
||||||
msgstr ""
|
msgstr "使用这个表单将包基础 %s%s%s 和以下包标记为已过期 :"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please do %snot%s use this form to report bugs. Use the package comments "
|
"Please do %snot%s use this form to report bugs. Use the package comments "
|
||||||
"instead."
|
"instead."
|
||||||
msgstr ""
|
msgstr "请 %s不%s 要用这个表单提交问题。请您使用包评论功能。"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enter details on why the package is out-of-date below, preferably including "
|
"Enter details on why the package is out-of-date below, preferably including "
|
||||||
"links to the release announcement or the new release tarball."
|
"links to the release announcement or the new release tarball."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"在下面输入为什么这个软件包过期了,最好写一下更新日志的链接或者新版软件压缩包"
|
||||||
|
"的地址。"
|
||||||
|
|
||||||
msgid "Comments"
|
msgid "Comments"
|
||||||
msgstr "评论"
|
msgstr "评论"
|
||||||
|
@ -431,7 +463,7 @@ msgid "Flag"
|
||||||
msgstr "标记"
|
msgstr "标记"
|
||||||
|
|
||||||
msgid "Only registered users can flag packages out-of-date."
|
msgid "Only registered users can flag packages out-of-date."
|
||||||
msgstr ""
|
msgstr "只有已注册的用户才能把软件标记为已过期。"
|
||||||
|
|
||||||
msgid "Package Merging"
|
msgid "Package Merging"
|
||||||
msgstr "软件包合并"
|
msgstr "软件包合并"
|
||||||
|
@ -465,7 +497,7 @@ msgid "Only Trusted Users and Developers can merge packages."
|
||||||
msgstr "只有受信用户和开发人员才能删除软件包。"
|
msgstr "只有受信用户和开发人员才能删除软件包。"
|
||||||
|
|
||||||
msgid "Submit Request"
|
msgid "Submit Request"
|
||||||
msgstr ""
|
msgstr "提交请求"
|
||||||
|
|
||||||
msgid "Close Request"
|
msgid "Close Request"
|
||||||
msgstr "关闭请求"
|
msgstr "关闭请求"
|
||||||
|
@ -551,7 +583,7 @@ msgid "The PGP key fingerprint is invalid."
|
||||||
msgstr "PGP 密钥指纹无效。"
|
msgstr "PGP 密钥指纹无效。"
|
||||||
|
|
||||||
msgid "The SSH public key is invalid."
|
msgid "The SSH public key is invalid."
|
||||||
msgstr ""
|
msgstr "此 SSH 公钥无效。"
|
||||||
|
|
||||||
msgid "Cannot increase account permissions."
|
msgid "Cannot increase account permissions."
|
||||||
msgstr "不能提高账户权限。"
|
msgstr "不能提高账户权限。"
|
||||||
|
@ -569,7 +601,7 @@ msgstr "该地址 %s%s%s 已被使用。"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The SSH public key, %s%s%s, is already in use."
|
msgid "The SSH public key, %s%s%s, is already in use."
|
||||||
msgstr ""
|
msgstr "SSH 公钥 %s%s%s 已被使用。"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Error trying to create account, %s%s%s."
|
msgid "Error trying to create account, %s%s%s."
|
||||||
|
@ -629,16 +661,16 @@ msgid "View account information for %s"
|
||||||
msgstr "查看 %s 的账户信息"
|
msgstr "查看 %s 的账户信息"
|
||||||
|
|
||||||
msgid "Package base ID or package base name missing."
|
msgid "Package base ID or package base name missing."
|
||||||
msgstr ""
|
msgstr "缺少软件包基础 ID 或软件包名。"
|
||||||
|
|
||||||
msgid "You are not allowed to edit this comment."
|
msgid "You are not allowed to edit this comment."
|
||||||
msgstr ""
|
msgstr "你没有权限编辑评论。"
|
||||||
|
|
||||||
msgid "Comment does not exist."
|
msgid "Comment does not exist."
|
||||||
msgstr ""
|
msgstr "评论不存在。"
|
||||||
|
|
||||||
msgid "Comment cannot be empty."
|
msgid "Comment cannot be empty."
|
||||||
msgstr ""
|
msgstr "评论不能为空。"
|
||||||
|
|
||||||
msgid "Comment has been added."
|
msgid "Comment has been added."
|
||||||
msgstr "已经添加评论。"
|
msgstr "已经添加评论。"
|
||||||
|
@ -650,19 +682,19 @@ msgid "Missing comment ID."
|
||||||
msgstr "评论标识丢失。"
|
msgstr "评论标识丢失。"
|
||||||
|
|
||||||
msgid "No more than 5 comments can be pinned."
|
msgid "No more than 5 comments can be pinned."
|
||||||
msgstr ""
|
msgstr "不能同时锁定 5 条以上的评论。"
|
||||||
|
|
||||||
msgid "You are not allowed to pin this comment."
|
msgid "You are not allowed to pin this comment."
|
||||||
msgstr ""
|
msgstr "你没有权限锁定这条评论。"
|
||||||
|
|
||||||
msgid "You are not allowed to unpin this comment."
|
msgid "You are not allowed to unpin this comment."
|
||||||
msgstr ""
|
msgstr "你没有权限解锁这条评论。"
|
||||||
|
|
||||||
msgid "Comment has been pinned."
|
msgid "Comment has been pinned."
|
||||||
msgstr ""
|
msgstr "评论已锁定。"
|
||||||
|
|
||||||
msgid "Comment has been unpinned."
|
msgid "Comment has been unpinned."
|
||||||
msgstr ""
|
msgstr "评论已解锁。"
|
||||||
|
|
||||||
msgid "Error retrieving package details."
|
msgid "Error retrieving package details."
|
||||||
msgstr "获取软件包详情时发生错误。"
|
msgstr "获取软件包详情时发生错误。"
|
||||||
|
@ -677,7 +709,7 @@ msgid "You did not select any packages to flag."
|
||||||
msgstr "您没有选择要标记的软件包。"
|
msgstr "您没有选择要标记的软件包。"
|
||||||
|
|
||||||
msgid "The selected packages have not been flagged, please enter a comment."
|
msgid "The selected packages have not been flagged, please enter a comment."
|
||||||
msgstr ""
|
msgstr "选中的软件包已被标记,请输入评论。"
|
||||||
|
|
||||||
msgid "The selected packages have been flagged out-of-date."
|
msgid "The selected packages have been flagged out-of-date."
|
||||||
msgstr "选择的软件包已被标记为过期。"
|
msgstr "选择的软件包已被标记为过期。"
|
||||||
|
@ -745,10 +777,10 @@ msgid "You have been removed from the comment notification list for %s."
|
||||||
msgstr "您将不再收到 %s 的评论通知。"
|
msgstr "您将不再收到 %s 的评论通知。"
|
||||||
|
|
||||||
msgid "You are not allowed to undelete this comment."
|
msgid "You are not allowed to undelete this comment."
|
||||||
msgstr ""
|
msgstr "你没有权限恢复这条评论。"
|
||||||
|
|
||||||
msgid "Comment has been undeleted."
|
msgid "Comment has been undeleted."
|
||||||
msgstr ""
|
msgstr "评论已恢复。"
|
||||||
|
|
||||||
msgid "You are not allowed to delete this comment."
|
msgid "You are not allowed to delete this comment."
|
||||||
msgstr "您没有权限删除此评论。"
|
msgstr "您没有权限删除此评论。"
|
||||||
|
@ -757,30 +789,30 @@ msgid "Comment has been deleted."
|
||||||
msgstr "评论已被删除。"
|
msgstr "评论已被删除。"
|
||||||
|
|
||||||
msgid "Comment has been edited."
|
msgid "Comment has been edited."
|
||||||
msgstr ""
|
msgstr "评论已编辑。"
|
||||||
|
|
||||||
msgid "You are not allowed to edit the keywords of this package base."
|
msgid "You are not allowed to edit the keywords of this package base."
|
||||||
msgstr ""
|
msgstr "你没有权限编辑这个软件包基础的关键词。"
|
||||||
|
|
||||||
msgid "The package base keywords have been updated."
|
msgid "The package base keywords have been updated."
|
||||||
msgstr ""
|
msgstr "软件包基础的关键词已被更新。"
|
||||||
|
|
||||||
msgid "You are not allowed to manage co-maintainers of this package base."
|
msgid "You are not allowed to manage co-maintainers of this package base."
|
||||||
msgstr ""
|
msgstr "你没有权限管理这个软件包基础的共同管理者。"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Invalid user name: %s"
|
msgid "Invalid user name: %s"
|
||||||
msgstr ""
|
msgstr "非法用户名:%s"
|
||||||
|
|
||||||
msgid "The package base co-maintainers have been updated."
|
msgid "The package base co-maintainers have been updated."
|
||||||
msgstr ""
|
msgstr "软件包基础的共同维护者已更新。"
|
||||||
|
|
||||||
msgid "View packages details for"
|
msgid "View packages details for"
|
||||||
msgstr "查看软件包详细信息"
|
msgstr "查看软件包详细信息"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "requires %s"
|
msgid "requires %s"
|
||||||
msgstr ""
|
msgstr "需要 %s"
|
||||||
|
|
||||||
msgid "You must be logged in to file package requests."
|
msgid "You must be logged in to file package requests."
|
||||||
msgstr "登录之后才能提交软件包需求。"
|
msgstr "登录之后才能提交软件包需求。"
|
||||||
|
@ -836,11 +868,14 @@ msgid "Email Address"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
msgid "hidden"
|
msgid "hidden"
|
||||||
msgstr ""
|
msgstr "已隐藏"
|
||||||
|
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "真实名字"
|
msgstr "真实名字"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC昵称"
|
msgstr "IRC昵称"
|
||||||
|
|
||||||
|
@ -856,6 +891,9 @@ msgstr "不活跃自"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "激活"
|
msgstr "激活"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "最后登陆"
|
msgstr "最后登陆"
|
||||||
|
|
||||||
|
@ -872,6 +910,10 @@ msgstr "编辑此用户的帐号"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "如果你想要彻底删除这个帐号,请点击%s这里%s。"
|
msgstr "如果你想要彻底删除这个帐号,请点击%s这里%s。"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "必填"
|
msgstr "必填"
|
||||||
|
|
||||||
|
@ -890,10 +932,10 @@ msgstr "不活跃"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please ensure you correctly entered your email address, otherwise you will "
|
"Please ensure you correctly entered your email address, otherwise you will "
|
||||||
"be locked out."
|
"be locked out."
|
||||||
msgstr ""
|
msgstr "请确认你正确地输入了你的 E-mail,或者你将会被锁定。"
|
||||||
|
|
||||||
msgid "Hide Email Address"
|
msgid "Hide Email Address"
|
||||||
msgstr ""
|
msgstr "隐藏 E-mail"
|
||||||
|
|
||||||
msgid "Re-type password"
|
msgid "Re-type password"
|
||||||
msgstr "确认密码"
|
msgstr "确认密码"
|
||||||
|
@ -904,18 +946,21 @@ msgstr "语言"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The following information is only required if you want to submit packages to "
|
"The following information is only required if you want to submit packages to "
|
||||||
"the Arch User Repository."
|
"the Arch User Repository."
|
||||||
msgstr ""
|
msgstr "仅仅当你想要向 AUR 提交软件包时才需要填写以下信息。"
|
||||||
|
|
||||||
msgid "SSH Public Key"
|
msgid "SSH Public Key"
|
||||||
msgstr ""
|
msgstr "SSH 公钥"
|
||||||
|
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr "提醒设置"
|
||||||
|
|
||||||
msgid "Notify of new comments"
|
msgid "Notify of new comments"
|
||||||
msgstr "当有新评论的时候提醒我"
|
msgstr "当有新评论的时候提醒我"
|
||||||
|
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
|
msgstr "软件包更新提醒"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
|
@ -951,32 +996,32 @@ msgstr "没有更多的结果供显示。"
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to add co-maintainers for %s%s%s (one user name per line):"
|
"Use this form to add co-maintainers for %s%s%s (one user name per line):"
|
||||||
msgstr ""
|
msgstr "使用这个表单来添加 %s%s%s 的共同维护者(一个用户名一行):"
|
||||||
|
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr "用户"
|
||||||
|
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "保存"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged Out-of-Date Comment: %s"
|
msgid "Flagged Out-of-Date Comment: %s"
|
||||||
msgstr ""
|
msgstr "已标记为过期的评论:%s"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:"
|
||||||
msgstr ""
|
msgstr "%s%s%s 标记了 %s%s%s 为过期,在 %s%s%s,因为以下原因:"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s%s%s is not flagged out-of-date."
|
msgid "%s%s%s is not flagged out-of-date."
|
||||||
msgstr ""
|
msgstr "%s%s%s 未被标记为过期。"
|
||||||
|
|
||||||
msgid "Return to Details"
|
msgid "Return to Details"
|
||||||
msgstr ""
|
msgstr "返回详情"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Copyright %s 2004-%d aurweb Development Team."
|
msgid "Copyright %s 2004-%d aurweb Development Team."
|
||||||
msgstr ""
|
msgstr "版权所有 %s 2004-%d aurweb 开发组"
|
||||||
|
|
||||||
msgid "My Packages"
|
msgid "My Packages"
|
||||||
msgstr "我的软件包"
|
msgstr "我的软件包"
|
||||||
|
@ -991,17 +1036,17 @@ msgid "View PKGBUILD"
|
||||||
msgstr "查看 PKGBUILD"
|
msgstr "查看 PKGBUILD"
|
||||||
|
|
||||||
msgid "View Changes"
|
msgid "View Changes"
|
||||||
msgstr ""
|
msgstr "查看更改"
|
||||||
|
|
||||||
msgid "Download snapshot"
|
msgid "Download snapshot"
|
||||||
msgstr ""
|
msgstr "下载快照"
|
||||||
|
|
||||||
msgid "Search wiki"
|
msgid "Search wiki"
|
||||||
msgstr "搜索 Wiki"
|
msgstr "搜索 Wiki"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Flagged out-of-date (%s)"
|
msgid "Flagged out-of-date (%s)"
|
||||||
msgstr ""
|
msgstr "已标记为过期 (%s)"
|
||||||
|
|
||||||
msgid "Flag package out-of-date"
|
msgid "Flag package out-of-date"
|
||||||
msgstr "将软件包标记为过期"
|
msgstr "将软件包标记为过期"
|
||||||
|
@ -1018,9 +1063,12 @@ msgstr "为这个软件包投票"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "禁用通知"
|
msgstr "禁用通知"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Enable notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Manage Co-Maintainers"
|
||||||
|
msgstr "管理共同维护者"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d pending request"
|
msgid "%d pending request"
|
||||||
msgid_plural "%d pending requests"
|
msgid_plural "%d pending requests"
|
||||||
|
@ -1036,10 +1084,10 @@ msgid "Package Base Details"
|
||||||
msgstr "包基础详情"
|
msgstr "包基础详情"
|
||||||
|
|
||||||
msgid "Git Clone URL"
|
msgid "Git Clone URL"
|
||||||
msgstr ""
|
msgstr "Git 克隆地址"
|
||||||
|
|
||||||
msgid "read-only"
|
msgid "read-only"
|
||||||
msgstr ""
|
msgstr "只读"
|
||||||
|
|
||||||
msgid "Keywords"
|
msgid "Keywords"
|
||||||
msgstr "关键字"
|
msgstr "关键字"
|
||||||
|
@ -1057,7 +1105,7 @@ msgid "Votes"
|
||||||
msgstr "得票"
|
msgstr "得票"
|
||||||
|
|
||||||
msgid "Popularity"
|
msgid "Popularity"
|
||||||
msgstr ""
|
msgstr "受欢迎度"
|
||||||
|
|
||||||
msgid "First Submitted"
|
msgid "First Submitted"
|
||||||
msgstr "首次提交"
|
msgstr "首次提交"
|
||||||
|
@ -1067,7 +1115,7 @@ msgstr "最后更新"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Edit comment for: %s"
|
msgid "Edit comment for: %s"
|
||||||
msgstr ""
|
msgstr "编辑 %s 的评论"
|
||||||
|
|
||||||
msgid "Add Comment"
|
msgid "Add Comment"
|
||||||
msgstr "添加评论"
|
msgstr "添加评论"
|
||||||
|
@ -1076,46 +1124,46 @@ msgid "View all comments"
|
||||||
msgstr "查看所有评论"
|
msgstr "查看所有评论"
|
||||||
|
|
||||||
msgid "Pinned Comments"
|
msgid "Pinned Comments"
|
||||||
msgstr ""
|
msgstr "已锁定评论"
|
||||||
|
|
||||||
msgid "Latest Comments"
|
msgid "Latest Comments"
|
||||||
msgstr "最新的评论"
|
msgstr "最新的评论"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s commented on %s"
|
msgid "%s commented on %s"
|
||||||
msgstr ""
|
msgstr "%s 在 %s 发表了评论"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Anonymous comment on %s"
|
msgid "Anonymous comment on %s"
|
||||||
msgstr ""
|
msgstr "在 %s 发表的匿名评论"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s by %s"
|
msgid "deleted on %s by %s"
|
||||||
msgstr ""
|
msgstr "在 %s 被 %s 删除"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "deleted on %s"
|
msgid "deleted on %s"
|
||||||
msgstr ""
|
msgstr "在 %s 被删除"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s by %s"
|
msgid "edited on %s by %s"
|
||||||
msgstr ""
|
msgstr "在 %s 被 %s 编辑"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "edited on %s"
|
msgid "edited on %s"
|
||||||
msgstr ""
|
msgstr "在 %s 被编辑"
|
||||||
|
|
||||||
msgid "Undelete comment"
|
msgid "Undelete comment"
|
||||||
msgstr ""
|
msgstr "恢复评论"
|
||||||
|
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "删除评论"
|
msgstr "删除评论"
|
||||||
|
|
||||||
msgid "Pin comment"
|
msgid "Pin comment"
|
||||||
msgstr ""
|
msgstr "锁定评论"
|
||||||
|
|
||||||
msgid "Unpin comment"
|
msgid "Unpin comment"
|
||||||
msgstr ""
|
msgstr "解锁评论"
|
||||||
|
|
||||||
msgid "All comments"
|
msgid "All comments"
|
||||||
msgstr "全部评论"
|
msgstr "全部评论"
|
||||||
|
@ -1163,9 +1211,6 @@ msgstr "源代码:"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "使用这个表单来关闭对包基础 %s%s%s 的请求。"
|
msgstr "使用这个表单来关闭对包基础 %s%s%s 的请求。"
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "提示"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1198,6 +1243,26 @@ msgstr "弃置"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "合并到"
|
msgstr "合并到"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1217,8 +1282,9 @@ msgid "Date"
|
||||||
msgstr "日期"
|
msgstr "日期"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "剩余~%d天"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] ""
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1268,7 +1334,7 @@ msgid "Voted"
|
||||||
msgstr "已投票"
|
msgstr "已投票"
|
||||||
|
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr ""
|
msgstr "上次修改"
|
||||||
|
|
||||||
msgid "Ascending"
|
msgid "Ascending"
|
||||||
msgstr "从小到大"
|
msgstr "从小到大"
|
||||||
|
@ -1314,9 +1380,10 @@ msgstr[0] "找到了 %d 个软件包。"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "版本"
|
msgstr "版本"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
|
@ -1377,7 +1444,7 @@ msgid "Recent Updates"
|
||||||
msgstr "最新更新"
|
msgstr "最新更新"
|
||||||
|
|
||||||
msgid "more"
|
msgid "more"
|
||||||
msgstr ""
|
msgstr "更多"
|
||||||
|
|
||||||
msgid "My Statistics"
|
msgid "My Statistics"
|
||||||
msgstr "我的统计"
|
msgstr "我的统计"
|
||||||
|
|
74
po/zh_TW.po
74
po/zh_TW.po
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Arch User Repository (AUR)\n"
|
"Project-Id-Version: Arch User Repository (AUR)\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
"Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n"
|
||||||
"POT-Creation-Date: 2016-02-09 21:58+0100\n"
|
"POT-Creation-Date: 2016-10-08 14:59+0200\n"
|
||||||
"PO-Revision-Date: 2016-02-11 13:26+0000\n"
|
"PO-Revision-Date: 2016-10-09 09:21+0000\n"
|
||||||
"Last-Translator: Jeff Huang <s8321414@gmail.com>\n"
|
"Last-Translator: Jeff Huang <s8321414@gmail.com>\n"
|
||||||
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/lfleischer/aur/"
|
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/lfleischer/aur/"
|
||||||
"language/zh_TW/)\n"
|
"language/zh_TW/)\n"
|
||||||
|
@ -25,6 +25,20 @@ msgstr "頁面找不到"
|
||||||
msgid "Sorry, the page you've requested does not exist."
|
msgid "Sorry, the page you've requested does not exist."
|
||||||
msgstr "抱歉,您所請求的頁面不存在。"
|
msgstr "抱歉,您所請求的頁面不存在。"
|
||||||
|
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "注意"
|
||||||
|
|
||||||
|
msgid "Git clone URLs are not meant to be opened in a browser."
|
||||||
|
msgstr "Git clone 的網址並不代表可以在瀏覽器中開啟。"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "To clone the Git repository of %s, run %s."
|
||||||
|
msgstr "要 clone %s 的 Git 倉庫,執行 %s。"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s to return to the %s details page."
|
||||||
|
msgstr "點選 %s此處%s 以回到 %s 的詳細資訊頁面。"
|
||||||
|
|
||||||
msgid "Service Unavailable"
|
msgid "Service Unavailable"
|
||||||
msgstr "服務不可用"
|
msgstr "服務不可用"
|
||||||
|
|
||||||
|
@ -857,6 +871,9 @@ msgstr "已隱藏"
|
||||||
msgid "Real Name"
|
msgid "Real Name"
|
||||||
msgstr "真實名稱"
|
msgstr "真實名稱"
|
||||||
|
|
||||||
|
msgid "Homepage"
|
||||||
|
msgstr "首頁"
|
||||||
|
|
||||||
msgid "IRC Nick"
|
msgid "IRC Nick"
|
||||||
msgstr "IRC 暱稱"
|
msgstr "IRC 暱稱"
|
||||||
|
|
||||||
|
@ -872,6 +889,9 @@ msgstr "不活躍自"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "活躍"
|
msgstr "活躍"
|
||||||
|
|
||||||
|
msgid "Registration date:"
|
||||||
|
msgstr "註冊日期:"
|
||||||
|
|
||||||
msgid "Last Login"
|
msgid "Last Login"
|
||||||
msgstr "最後登入"
|
msgstr "最後登入"
|
||||||
|
|
||||||
|
@ -888,6 +908,10 @@ msgstr "編輯此使用者的帳號"
|
||||||
msgid "Click %shere%s if you want to permanently delete this account."
|
msgid "Click %shere%s if you want to permanently delete this account."
|
||||||
msgstr "如果您想要永久刪除此帳號,請點擊 %s這裡%s 。"
|
msgstr "如果您想要永久刪除此帳號,請點擊 %s這裡%s 。"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
|
msgid "Click %shere%s for user details."
|
||||||
|
msgstr "點選 %s此處%s 來取得使用者的詳細資訊。"
|
||||||
|
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "必填"
|
msgstr "必填"
|
||||||
|
|
||||||
|
@ -934,6 +958,9 @@ msgstr "接收新評論通知"
|
||||||
msgid "Notify of package updates"
|
msgid "Notify of package updates"
|
||||||
msgstr "通知套件更新"
|
msgstr "通知套件更新"
|
||||||
|
|
||||||
|
msgid "Notify of ownership changes"
|
||||||
|
msgstr "擁有者變更通知"
|
||||||
|
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "更新"
|
msgstr "更新"
|
||||||
|
|
||||||
|
@ -1034,6 +1061,9 @@ msgstr "為此套件投票"
|
||||||
msgid "Disable notifications"
|
msgid "Disable notifications"
|
||||||
msgstr "停用通知"
|
msgstr "停用通知"
|
||||||
|
|
||||||
|
msgid "Enable notifications"
|
||||||
|
msgstr "啟用通知"
|
||||||
|
|
||||||
msgid "Manage Co-Maintainers"
|
msgid "Manage Co-Maintainers"
|
||||||
msgstr "管理共同維護者"
|
msgstr "管理共同維護者"
|
||||||
|
|
||||||
|
@ -1179,9 +1209,6 @@ msgstr "來源"
|
||||||
msgid "Use this form to close the request for package base %s%s%s."
|
msgid "Use this form to close the request for package base %s%s%s."
|
||||||
msgstr "使用這個表單以關閉請求套件基礎 %s%s%s 。"
|
msgstr "使用這個表單以關閉請求套件基礎 %s%s%s 。"
|
||||||
|
|
||||||
msgid "Note"
|
|
||||||
msgstr "注意"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The comments field can be left empty. However, it is highly recommended to "
|
"The comments field can be left empty. However, it is highly recommended to "
|
||||||
"add a comment when rejecting a request."
|
"add a comment when rejecting a request."
|
||||||
|
@ -1214,6 +1241,33 @@ msgstr "棄置"
|
||||||
msgid "Merge into"
|
msgid "Merge into"
|
||||||
msgstr "合併到"
|
msgstr "合併到"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a deletion request, you ask a Trusted User to delete the "
|
||||||
|
"package base. This type of request should be used for duplicates, software "
|
||||||
|
"abandoned by upstream, as well as illegal and irreparably broken packages."
|
||||||
|
msgstr ""
|
||||||
|
"透過遞交刪除請求,您會請求受信使用者刪除套件基礎。這個類型的請求應該用於重"
|
||||||
|
"複、被上游放棄的軟體,以及違法與無法修復的損壞套件。"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting a merge request, you ask a Trusted User to delete the package "
|
||||||
|
"base and transfer its votes and comments to another package base. Merging a "
|
||||||
|
"package does not affect the corresponding Git repositories. Make sure you "
|
||||||
|
"update the Git history of the target package yourself."
|
||||||
|
msgstr ""
|
||||||
|
"透過遞交合併請求,您會請求受信使用者刪除套件基礎並轉移其投票數到其他的套件基"
|
||||||
|
"礎。合併一個套件不會影響相對應的 Git 倉庫。確保您可以自己更新目標套件的 Git "
|
||||||
|
"歷史。"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By submitting an orphan request, you ask a Trusted User to disown the "
|
||||||
|
"package base. Please only do this if the package needs maintainer action, "
|
||||||
|
"the maintainer is MIA and you already tried to contact the maintainer "
|
||||||
|
"previously."
|
||||||
|
msgstr ""
|
||||||
|
"透過遞交棄置請求,您會請求受信使用者棄置套件基礎。請僅在該套件需要有維護者動"
|
||||||
|
"作、維護者突然消失且您先前已經連絡過維護者時做此動作。"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d package request found."
|
msgid "%d package request found."
|
||||||
msgid_plural "%d package requests found."
|
msgid_plural "%d package requests found."
|
||||||
|
@ -1233,8 +1287,9 @@ msgid "Date"
|
||||||
msgstr "日期"
|
msgstr "日期"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d days left"
|
msgid "~%d day left"
|
||||||
msgstr "剩餘 ~%d 天"
|
msgid_plural "~%d days left"
|
||||||
|
msgstr[0] "剩餘 ~%d 天"
|
||||||
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "~%d hour left"
|
msgid "~%d hour left"
|
||||||
|
@ -1330,10 +1385,11 @@ msgstr[0] "找到 %d 個套件。"
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "版本"
|
msgstr "版本"
|
||||||
|
|
||||||
|
#, php-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Popularity is calculated as the sum of all votes with each vote being "
|
"Popularity is calculated as the sum of all votes with each vote being "
|
||||||
"weighted with a factor of 0.98 per day since its creation."
|
"weighted with a factor of %.2f per day since its creation."
|
||||||
msgstr "人氣的計算方式為,將所有票數加總,且每一票自建立以來每天乘上 0.98。"
|
msgstr "人氣的計算方式為,將所有票數加總,且每一票自建立以來每天乘上 %.2f。"
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "是"
|
msgstr "是"
|
||||||
|
|
|
@ -31,28 +31,23 @@ CREATE TABLE Users (
|
||||||
Salt CHAR(32) NOT NULL DEFAULT '',
|
Salt CHAR(32) NOT NULL DEFAULT '',
|
||||||
ResetKey CHAR(32) NOT NULL DEFAULT '',
|
ResetKey CHAR(32) NOT NULL DEFAULT '',
|
||||||
RealName VARCHAR(64) NOT NULL DEFAULT '',
|
RealName VARCHAR(64) NOT NULL DEFAULT '',
|
||||||
LangPreference VARCHAR(5) NOT NULL DEFAULT 'en',
|
LangPreference VARCHAR(6) NOT NULL DEFAULT 'en',
|
||||||
|
Homepage TEXT NULL DEFAULT NULL,
|
||||||
IRCNick VARCHAR(32) NOT NULL DEFAULT '',
|
IRCNick VARCHAR(32) NOT NULL DEFAULT '',
|
||||||
PGPKey VARCHAR(40) NULL DEFAULT NULL,
|
PGPKey VARCHAR(40) NULL DEFAULT NULL,
|
||||||
LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
LastLoginIPAddress VARCHAR(40) NULL DEFAULT NULL,
|
LastLoginIPAddress VARCHAR(45) NULL DEFAULT NULL,
|
||||||
InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
RegistrationTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
RegistrationTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
CommentNotify TINYINT(1) NOT NULL DEFAULT 1,
|
CommentNotify TINYINT(1) NOT NULL DEFAULT 1,
|
||||||
UpdateNotify TINYINT(1) NOT NULL DEFAULT 0,
|
UpdateNotify TINYINT(1) NOT NULL DEFAULT 0,
|
||||||
|
OwnershipNotify TINYINT(1) NOT NULL DEFAULT 1,
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
UNIQUE (Username),
|
UNIQUE (Username),
|
||||||
UNIQUE (Email),
|
UNIQUE (Email),
|
||||||
INDEX (AccountTypeID),
|
|
||||||
FOREIGN KEY (AccountTypeID) REFERENCES AccountTypes(ID) ON DELETE NO ACTION
|
FOREIGN KEY (AccountTypeID) REFERENCES AccountTypes(ID) ON DELETE NO ACTION
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
-- A default developer account for testing purposes
|
CREATE INDEX UsersAccountTypeID ON Users (AccountTypeID);
|
||||||
INSERT INTO Users (ID, AccountTypeID, Username, Email, Passwd) VALUES (
|
|
||||||
1, 3, 'dev', 'dev@localhost', MD5('dev'));
|
|
||||||
INSERT INTO Users (ID, AccountTypeID, Username, Email, Passwd) VALUES (
|
|
||||||
2, 2, 'tu', 'tu@localhost', MD5('tu'));
|
|
||||||
INSERT INTO Users (ID, AccountTypeID, Username, Email, Passwd) VALUES (
|
|
||||||
3, 1, 'user', 'user@localhost', MD5('user'));
|
|
||||||
|
|
||||||
|
|
||||||
-- SSH public keys used for the aurweb SSH/Git interface.
|
-- SSH public keys used for the aurweb SSH/Git interface.
|
||||||
|
@ -94,16 +89,16 @@ CREATE TABLE PackageBases (
|
||||||
PackagerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- Last packager
|
PackagerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- Last packager
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
UNIQUE (Name),
|
UNIQUE (Name),
|
||||||
INDEX (NumVotes),
|
|
||||||
INDEX (SubmitterUID),
|
|
||||||
INDEX (MaintainerUID),
|
|
||||||
INDEX (PackagerUID),
|
|
||||||
FOREIGN KEY (FlaggerUID) REFERENCES Users(ID) ON DELETE SET NULL,
|
FOREIGN KEY (FlaggerUID) REFERENCES Users(ID) ON DELETE SET NULL,
|
||||||
-- deleting a user will cause packages to be orphaned, not deleted
|
-- deleting a user will cause packages to be orphaned, not deleted
|
||||||
FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL,
|
FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL,
|
||||||
FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL,
|
FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL,
|
||||||
FOREIGN KEY (PackagerUID) REFERENCES Users(ID) ON DELETE SET NULL
|
FOREIGN KEY (PackagerUID) REFERENCES Users(ID) ON DELETE SET NULL
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX BasesNumVotes ON PackageBases (NumVotes);
|
||||||
|
CREATE INDEX BasesSubmitterUID ON PackageBases (SubmitterUID);
|
||||||
|
CREATE INDEX BasesMaintainerUID ON PackageBases (MaintainerUID);
|
||||||
|
CREATE INDEX BasesPackagerUID ON PackageBases (PackagerUID);
|
||||||
|
|
||||||
|
|
||||||
-- Keywords of package bases
|
-- Keywords of package bases
|
||||||
|
@ -124,7 +119,7 @@ CREATE TABLE Packages (
|
||||||
Name VARCHAR(255) NOT NULL,
|
Name VARCHAR(255) NOT NULL,
|
||||||
Version VARCHAR(255) NOT NULL DEFAULT '',
|
Version VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
Description VARCHAR(255) NULL DEFAULT NULL,
|
Description VARCHAR(255) NULL DEFAULT NULL,
|
||||||
URL VARCHAR(255) NULL DEFAULT NULL,
|
URL VARCHAR(8000) NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
UNIQUE (Name),
|
UNIQUE (Name),
|
||||||
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
||||||
|
@ -194,11 +189,11 @@ CREATE TABLE PackageDepends (
|
||||||
DepName VARCHAR(255) NOT NULL,
|
DepName VARCHAR(255) NOT NULL,
|
||||||
DepCondition VARCHAR(255),
|
DepCondition VARCHAR(255),
|
||||||
DepArch VARCHAR(255) NULL DEFAULT NULL,
|
DepArch VARCHAR(255) NULL DEFAULT NULL,
|
||||||
INDEX (PackageID),
|
|
||||||
INDEX (DepName),
|
|
||||||
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE,
|
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (DepTypeID) REFERENCES DependencyTypes(ID) ON DELETE NO ACTION
|
FOREIGN KEY (DepTypeID) REFERENCES DependencyTypes(ID) ON DELETE NO ACTION
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX DependsPackageID ON PackageDepends (PackageID);
|
||||||
|
CREATE INDEX DependsDepName ON PackageDepends (DepName);
|
||||||
|
|
||||||
|
|
||||||
-- Define the package relation types
|
-- Define the package relation types
|
||||||
|
@ -221,22 +216,22 @@ CREATE TABLE PackageRelations (
|
||||||
RelName VARCHAR(255) NOT NULL,
|
RelName VARCHAR(255) NOT NULL,
|
||||||
RelCondition VARCHAR(255),
|
RelCondition VARCHAR(255),
|
||||||
RelArch VARCHAR(255) NULL DEFAULT NULL,
|
RelArch VARCHAR(255) NULL DEFAULT NULL,
|
||||||
INDEX (PackageID),
|
|
||||||
INDEX (RelName),
|
|
||||||
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE,
|
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (RelTypeID) REFERENCES RelationTypes(ID) ON DELETE NO ACTION
|
FOREIGN KEY (RelTypeID) REFERENCES RelationTypes(ID) ON DELETE NO ACTION
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX RelationsPackageID ON PackageRelations (PackageID);
|
||||||
|
CREATE INDEX RelationsRelName ON PackageRelations (RelName);
|
||||||
|
|
||||||
|
|
||||||
-- Track which sources a package has
|
-- Track which sources a package has
|
||||||
--
|
--
|
||||||
CREATE TABLE PackageSources (
|
CREATE TABLE PackageSources (
|
||||||
PackageID INTEGER UNSIGNED NOT NULL,
|
PackageID INTEGER UNSIGNED NOT NULL,
|
||||||
Source VARCHAR(255) NOT NULL DEFAULT "/dev/null",
|
Source VARCHAR(8000) NOT NULL DEFAULT "/dev/null",
|
||||||
SourceArch VARCHAR(255) NULL DEFAULT NULL,
|
SourceArch VARCHAR(255) NULL DEFAULT NULL,
|
||||||
INDEX (PackageID),
|
|
||||||
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE
|
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX SourcesPackageID ON PackageSources (PackageID);
|
||||||
|
|
||||||
|
|
||||||
-- Track votes for packages
|
-- Track votes for packages
|
||||||
|
@ -245,12 +240,12 @@ CREATE TABLE PackageVotes (
|
||||||
UsersID INTEGER UNSIGNED NOT NULL,
|
UsersID INTEGER UNSIGNED NOT NULL,
|
||||||
PackageBaseID INTEGER UNSIGNED NOT NULL,
|
PackageBaseID INTEGER UNSIGNED NOT NULL,
|
||||||
VoteTS BIGINT UNSIGNED NULL DEFAULT NULL,
|
VoteTS BIGINT UNSIGNED NULL DEFAULT NULL,
|
||||||
INDEX (UsersID),
|
|
||||||
INDEX (PackageBaseID),
|
|
||||||
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
CREATE UNIQUE INDEX VoteUsersIDPackageID ON PackageVotes (UsersID, PackageBaseID);
|
CREATE UNIQUE INDEX VoteUsersIDPackageID ON PackageVotes (UsersID, PackageBaseID);
|
||||||
|
CREATE INDEX VotesUsersID ON PackageVotes (UsersID);
|
||||||
|
CREATE INDEX VotesPackageBaseID ON PackageVotes (PackageBaseID);
|
||||||
|
|
||||||
-- Record comments for packages
|
-- Record comments for packages
|
||||||
--
|
--
|
||||||
|
@ -266,13 +261,13 @@ CREATE TABLE PackageComments (
|
||||||
DelUsersID INTEGER UNSIGNED NULL DEFAULT NULL,
|
DelUsersID INTEGER UNSIGNED NULL DEFAULT NULL,
|
||||||
PinnedTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
PinnedTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
INDEX (UsersID),
|
|
||||||
INDEX (PackageBaseID),
|
|
||||||
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL,
|
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL,
|
||||||
FOREIGN KEY (EditedUsersID) REFERENCES Users(ID) ON DELETE SET NULL,
|
FOREIGN KEY (EditedUsersID) REFERENCES Users(ID) ON DELETE SET NULL,
|
||||||
FOREIGN KEY (DelUsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
FOREIGN KEY (DelUsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX CommentsUsersID ON PackageComments (UsersID);
|
||||||
|
CREATE INDEX CommentsPackageBaseID ON PackageComments (PackageBaseID);
|
||||||
|
|
||||||
-- Package base co-maintainers
|
-- Package base co-maintainers
|
||||||
--
|
--
|
||||||
|
@ -280,11 +275,11 @@ CREATE TABLE PackageComaintainers (
|
||||||
UsersID INTEGER UNSIGNED NOT NULL,
|
UsersID INTEGER UNSIGNED NOT NULL,
|
||||||
PackageBaseID INTEGER UNSIGNED NOT NULL,
|
PackageBaseID INTEGER UNSIGNED NOT NULL,
|
||||||
Priority INTEGER UNSIGNED NOT NULL,
|
Priority INTEGER UNSIGNED NOT NULL,
|
||||||
INDEX (UsersID),
|
|
||||||
INDEX (PackageBaseID),
|
|
||||||
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX ComaintainersUsersID ON PackageComaintainers (UsersID);
|
||||||
|
CREATE INDEX ComaintainersPackageBaseID ON PackageComaintainers (PackageBaseID);
|
||||||
|
|
||||||
-- Package base notifications
|
-- Package base notifications
|
||||||
--
|
--
|
||||||
|
@ -310,6 +305,7 @@ CREATE TABLE PackageBlacklist (
|
||||||
CREATE TABLE OfficialProviders (
|
CREATE TABLE OfficialProviders (
|
||||||
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
Name VARCHAR(64) NOT NULL,
|
Name VARCHAR(64) NOT NULL,
|
||||||
|
Repo VARCHAR(64) NOT NULL,
|
||||||
Provides VARCHAR(64) NOT NULL,
|
Provides VARCHAR(64) NOT NULL,
|
||||||
PRIMARY KEY (ID)
|
PRIMARY KEY (ID)
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
@ -340,27 +336,27 @@ CREATE TABLE PackageRequests (
|
||||||
RequestTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
RequestTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
Status TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
Status TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
INDEX (UsersID),
|
|
||||||
INDEX (PackageBaseID),
|
|
||||||
FOREIGN KEY (ReqTypeID) REFERENCES RequestTypes(ID) ON DELETE NO ACTION,
|
FOREIGN KEY (ReqTypeID) REFERENCES RequestTypes(ID) ON DELETE NO ACTION,
|
||||||
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL,
|
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL,
|
||||||
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE SET NULL
|
FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE SET NULL
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
CREATE INDEX RequestsUsersID ON PackageRequests (UsersID);
|
||||||
|
CREATE INDEX RequestsPackageBaseID ON PackageRequests (PackageBaseID);
|
||||||
|
|
||||||
-- Vote information
|
-- Vote information
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS TU_VoteInfo (
|
CREATE TABLE IF NOT EXISTS TU_VoteInfo (
|
||||||
ID int(10) unsigned NOT NULL auto_increment,
|
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
Agenda text NOT NULL,
|
Agenda TEXT NOT NULL,
|
||||||
User VARCHAR(32) NOT NULL,
|
User VARCHAR(32) NOT NULL,
|
||||||
Submitted bigint(20) unsigned NOT NULL,
|
Submitted BIGINT UNSIGNED NOT NULL,
|
||||||
End bigint(20) unsigned NOT NULL,
|
End BIGINT UNSIGNED NOT NULL,
|
||||||
Quorum decimal(2, 2) unsigned NOT NULL,
|
Quorum DECIMAL(2, 2) UNSIGNED NOT NULL,
|
||||||
SubmitterID int(10) unsigned NOT NULL,
|
SubmitterID INTEGER UNSIGNED NOT NULL,
|
||||||
Yes tinyint(3) unsigned NOT NULL default '0',
|
Yes TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
No tinyint(3) unsigned NOT NULL default '0',
|
No TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
Abstain tinyint(3) unsigned NOT NULL default '0',
|
Abstain TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
ActiveTUs tinyint(3) unsigned NOT NULL default '0',
|
ActiveTUs TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
PRIMARY KEY (ID),
|
PRIMARY KEY (ID),
|
||||||
FOREIGN KEY (SubmitterID) REFERENCES Users(ID) ON DELETE CASCADE
|
FOREIGN KEY (SubmitterID) REFERENCES Users(ID) ON DELETE CASCADE
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
@ -368,8 +364,8 @@ CREATE TABLE IF NOT EXISTS TU_VoteInfo (
|
||||||
-- Individual vote records
|
-- Individual vote records
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS TU_Votes (
|
CREATE TABLE IF NOT EXISTS TU_Votes (
|
||||||
VoteID int(10) unsigned NOT NULL,
|
VoteID INTEGER UNSIGNED NOT NULL,
|
||||||
UserID int(10) unsigned NOT NULL,
|
UserID INTEGER UNSIGNED NOT NULL,
|
||||||
FOREIGN KEY (VoteID) REFERENCES TU_VoteInfo(ID) ON DELETE CASCADE,
|
FOREIGN KEY (VoteID) REFERENCES TU_VoteInfo(ID) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE
|
FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
import pyalpm
|
|
||||||
import re
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
db_path = config.get('aurblup', 'db-path')
|
|
||||||
sync_dbs = config.get('aurblup', 'sync-dbs').split(' ')
|
|
||||||
servers = config.get('aurblup', 'servers').split(' ')
|
|
||||||
|
|
||||||
blacklist = set()
|
|
||||||
providers = set()
|
|
||||||
|
|
||||||
h = pyalpm.Handle("/", db_path)
|
|
||||||
for sync_db in sync_dbs:
|
|
||||||
repo = h.register_syncdb(sync_db, pyalpm.SIG_DATABASE_OPTIONAL)
|
|
||||||
repo.servers = [server.replace("%s", sync_db) for server in servers]
|
|
||||||
t = h.init_transaction()
|
|
||||||
repo.update(False)
|
|
||||||
t.release()
|
|
||||||
|
|
||||||
for pkg in repo.pkgcache:
|
|
||||||
blacklist.add(pkg.name)
|
|
||||||
[blacklist.add(x) for x in pkg.replaces]
|
|
||||||
providers.add((pkg.name, pkg.name))
|
|
||||||
for provision in pkg.provides:
|
|
||||||
provisionname = re.sub(r'(<|=|>).*', '', provision)
|
|
||||||
providers.add((pkg.name, provisionname))
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
cur.execute("SELECT Name FROM PackageBlacklist")
|
|
||||||
oldblacklist = set([row[0] for row in cur.fetchall()])
|
|
||||||
|
|
||||||
for pkg in blacklist.difference(oldblacklist):
|
|
||||||
cur.execute("INSERT INTO PackageBlacklist (Name) VALUES (%s)", [pkg])
|
|
||||||
for pkg in oldblacklist.difference(blacklist):
|
|
||||||
cur.execute("DELETE FROM PackageBlacklist WHERE Name = %s", [pkg])
|
|
||||||
|
|
||||||
cur.execute("SELECT Name, Provides FROM OfficialProviders")
|
|
||||||
oldproviders = set(cur.fetchall())
|
|
||||||
|
|
||||||
for pkg, provides in providers.difference(oldproviders):
|
|
||||||
cur.execute("INSERT INTO OfficialProviders (Name, Provides) "
|
|
||||||
"VALUES (%s, %s)", [pkg, provides])
|
|
||||||
for pkg, provides in oldproviders.difference(providers):
|
|
||||||
cur.execute("DELETE FROM OfficialProviders "
|
|
||||||
"WHERE Name = %s AND Provides = %s", [pkg, provides])
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import datetime
|
|
||||||
import gzip
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
|
|
||||||
docroot = os.path.dirname(os.path.realpath(__file__)) + "/../web/html/"
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
datestr = datetime.datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT")
|
|
||||||
pkglist_header = "# AUR package list, generated on " + datestr
|
|
||||||
pkgbaselist_header = "# AUR package base list, generated on " + datestr
|
|
||||||
|
|
||||||
with gzip.open(docroot + "packages.gz", "w") as f:
|
|
||||||
f.write(bytes(pkglist_header + "\n", "UTF-8"))
|
|
||||||
cur.execute("SELECT Packages.Name FROM Packages INNER JOIN PackageBases " +
|
|
||||||
"ON PackageBases.ID = Packages.PackageBaseID " +
|
|
||||||
"WHERE PackageBases.PackagerUID IS NOT NULL")
|
|
||||||
f.writelines([bytes(x[0] + "\n", "UTF-8") for x in cur.fetchall()])
|
|
||||||
|
|
||||||
with gzip.open(docroot + "pkgbase.gz", "w") as f:
|
|
||||||
f.write(bytes(pkgbaselist_header + "\n", "UTF-8"))
|
|
||||||
cur.execute("SELECT Name FROM PackageBases WHERE PackagerUID IS NOT NULL")
|
|
||||||
f.writelines([bytes(x[0] + "\n", "UTF-8") for x in cur.fetchall()])
|
|
||||||
|
|
||||||
db.close()
|
|
|
@ -1,382 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import email.mime.text
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import textwrap
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + '/../conf/config')
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
aur_location = config.get('options', 'aur_location')
|
|
||||||
aur_request_ml = config.get('options', 'aur_request_ml')
|
|
||||||
|
|
||||||
sendmail = config.get('notifications', 'sendmail')
|
|
||||||
sender = config.get('notifications', 'sender')
|
|
||||||
reply_to = config.get('notifications', 'reply-to')
|
|
||||||
|
|
||||||
|
|
||||||
def headers_cc(cclist):
|
|
||||||
return {'Cc': str.join(', ', cclist)}
|
|
||||||
|
|
||||||
|
|
||||||
def headers_msgid(thread_id):
|
|
||||||
return {'Message-ID': thread_id}
|
|
||||||
|
|
||||||
|
|
||||||
def headers_reply(thread_id):
|
|
||||||
return {'In-Reply-To': thread_id, 'References': thread_id}
|
|
||||||
|
|
||||||
|
|
||||||
def send_notification(to, subject, body, refs, headers={}):
|
|
||||||
wrapped = ''
|
|
||||||
for line in body.splitlines():
|
|
||||||
wrapped += textwrap.fill(line, break_long_words=False) + '\n'
|
|
||||||
body = wrapped + '\n' + refs
|
|
||||||
|
|
||||||
for recipient in to:
|
|
||||||
msg = email.mime.text.MIMEText(body, 'plain', 'utf-8')
|
|
||||||
msg['Subject'] = subject
|
|
||||||
msg['From'] = sender
|
|
||||||
msg['Reply-to'] = reply_to
|
|
||||||
msg['To'] = recipient
|
|
||||||
|
|
||||||
for key, value in headers.items():
|
|
||||||
msg[key] = value
|
|
||||||
|
|
||||||
p = subprocess.Popen([sendmail, '-t', '-oi'], stdin=subprocess.PIPE)
|
|
||||||
p.communicate(msg.as_bytes())
|
|
||||||
|
|
||||||
|
|
||||||
def username_from_id(cur, uid):
|
|
||||||
cur.execute('SELECT UserName FROM Users WHERE ID = %s', [uid])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def pkgbase_from_id(cur, pkgbase_id):
|
|
||||||
cur.execute('SELECT Name FROM PackageBases WHERE ID = %s', [pkgbase_id])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def pkgbase_from_pkgreq(cur, reqid):
|
|
||||||
cur.execute('SELECT PackageBaseID FROM PackageRequests WHERE ID = %s',
|
|
||||||
[reqid])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def get_user_email(cur, uid):
|
|
||||||
cur.execute('SELECT Email FROM Users WHERE ID = %s', [uid])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def get_maintainer_email(cur, pkgbase_id):
|
|
||||||
cur.execute('SELECT Users.Email FROM Users ' +
|
|
||||||
'INNER JOIN PackageBases ' +
|
|
||||||
'ON PackageBases.MaintainerUID = Users.ID WHERE ' +
|
|
||||||
'PackageBases.ID = %s', [pkgbase_id])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def get_recipients(cur, pkgbase_id, uid):
|
|
||||||
cur.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
|
||||||
'INNER JOIN PackageNotifications ' +
|
|
||||||
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
|
||||||
'PackageNotifications.UserID != %s AND ' +
|
|
||||||
'PackageNotifications.PackageBaseID = %s', [uid, pkgbase_id])
|
|
||||||
return [row[0] for row in cur.fetchall()]
|
|
||||||
|
|
||||||
|
|
||||||
def get_comment_recipients(cur, pkgbase_id, uid):
|
|
||||||
cur.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
|
||||||
'INNER JOIN PackageNotifications ' +
|
|
||||||
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
|
||||||
'Users.CommentNotify = 1 AND ' +
|
|
||||||
'PackageNotifications.UserID != %s AND ' +
|
|
||||||
'PackageNotifications.PackageBaseID = %s', [uid, pkgbase_id])
|
|
||||||
return [row[0] for row in cur.fetchall()]
|
|
||||||
|
|
||||||
|
|
||||||
def get_update_recipients(cur, pkgbase_id, uid):
|
|
||||||
cur.execute('SELECT DISTINCT Users.Email FROM Users ' +
|
|
||||||
'INNER JOIN PackageNotifications ' +
|
|
||||||
'ON PackageNotifications.UserID = Users.ID WHERE ' +
|
|
||||||
'Users.UpdateNotify = 1 AND ' +
|
|
||||||
'PackageNotifications.UserID != %s AND ' +
|
|
||||||
'PackageNotifications.PackageBaseID = %s', [uid, pkgbase_id])
|
|
||||||
return [row[0] for row in cur.fetchall()]
|
|
||||||
|
|
||||||
|
|
||||||
def get_request_recipients(cur, reqid):
|
|
||||||
cur.execute('SELECT DISTINCT Users.Email FROM PackageRequests ' +
|
|
||||||
'INNER JOIN PackageBases ' +
|
|
||||||
'ON PackageBases.ID = PackageRequests.PackageBaseID ' +
|
|
||||||
'INNER JOIN Users ' +
|
|
||||||
'ON Users.ID = PackageRequests.UsersID ' +
|
|
||||||
'OR Users.ID = PackageBases.MaintainerUID ' +
|
|
||||||
'WHERE PackageRequests.ID = %s', [reqid])
|
|
||||||
return [row[0] for row in cur.fetchall()]
|
|
||||||
|
|
||||||
|
|
||||||
def get_comment(cur, comment_id):
|
|
||||||
cur.execute('SELECT Comments FROM PackageComments WHERE ID = %s',
|
|
||||||
[comment_id])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def get_flagger_comment(cur, pkgbase_id):
|
|
||||||
cur.execute('SELECT FlaggerComment FROM PackageBases WHERE ID = %s',
|
|
||||||
[pkgbase_id])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def get_request_comment(cur, reqid):
|
|
||||||
cur.execute('SELECT Comments FROM PackageRequests WHERE ID = %s', [reqid])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def get_request_closure_comment(cur, reqid):
|
|
||||||
cur.execute('SELECT ClosureComment FROM PackageRequests WHERE ID = %s',
|
|
||||||
[reqid])
|
|
||||||
return cur.fetchone()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def send_resetkey(cur, uid):
|
|
||||||
cur.execute('SELECT UserName, Email, ResetKey FROM Users WHERE ID = %s',
|
|
||||||
[uid])
|
|
||||||
username, to, resetkey = cur.fetchone()
|
|
||||||
|
|
||||||
subject = 'AUR Password Reset'
|
|
||||||
body = 'A password reset request was submitted for the account %s ' \
|
|
||||||
'associated with your email address. If you wish to reset your ' \
|
|
||||||
'password follow the link [1] below, otherwise ignore this ' \
|
|
||||||
'message and nothing will happen.' % (username)
|
|
||||||
refs = '[1] ' + aur_location + '/passreset/?resetkey=' + resetkey
|
|
||||||
|
|
||||||
send_notification([to], subject, body, refs)
|
|
||||||
|
|
||||||
|
|
||||||
def welcome(cur, uid):
|
|
||||||
cur.execute('SELECT UserName, Email, ResetKey FROM Users WHERE ID = %s',
|
|
||||||
[uid])
|
|
||||||
username, to, resetkey = cur.fetchone()
|
|
||||||
|
|
||||||
subject = 'Welcome to the Arch User Repository'
|
|
||||||
body = 'Welcome to the Arch User Repository! In order to set an initial ' \
|
|
||||||
'password for your new account, please click the link [1] below. ' \
|
|
||||||
'If the link does not work, try copying and pasting it into your ' \
|
|
||||||
'browser.'
|
|
||||||
refs = '[1] ' + aur_location + '/passreset/?resetkey=' + resetkey
|
|
||||||
|
|
||||||
send_notification([to], subject, body, refs)
|
|
||||||
|
|
||||||
|
|
||||||
def comment(cur, uid, pkgbase_id, comment_id):
|
|
||||||
user = username_from_id(cur, uid)
|
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
|
||||||
to = get_comment_recipients(cur, pkgbase_id, uid)
|
|
||||||
text = get_comment(cur, comment_id)
|
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
|
||||||
|
|
||||||
subject = 'AUR Comment for %s' % (pkgbase)
|
|
||||||
body = '%s [1] added the following comment to %s [2]:' % (user, pkgbase)
|
|
||||||
body += '\n\n' + text + '\n\n'
|
|
||||||
body += 'If you no longer wish to receive notifications about this ' \
|
|
||||||
'package, please go to the package page [2] and select "%s".' % \
|
|
||||||
('Disable notifications')
|
|
||||||
refs = '[1] ' + user_uri + '\n'
|
|
||||||
refs += '[2] ' + pkgbase_uri
|
|
||||||
thread_id = '<pkg-notifications-' + pkgbase + '@aur.archlinux.org>'
|
|
||||||
headers = headers_reply(thread_id)
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs, headers)
|
|
||||||
|
|
||||||
|
|
||||||
def update(cur, uid, pkgbase_id):
|
|
||||||
user = username_from_id(cur, uid)
|
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
|
||||||
to = get_update_recipients(cur, pkgbase_id, uid)
|
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
|
||||||
|
|
||||||
subject = 'AUR Package Update: %s' % (pkgbase)
|
|
||||||
body = '%s [1] pushed a new commit to %s [2].' % (user, pkgbase)
|
|
||||||
body += '\n\n'
|
|
||||||
body += 'If you no longer wish to receive notifications about this ' \
|
|
||||||
'package, please go to the package page [2] and select "%s".' % \
|
|
||||||
('Disable notifications')
|
|
||||||
refs = '[1] ' + user_uri + '\n'
|
|
||||||
refs += '[2] ' + pkgbase_uri
|
|
||||||
thread_id = '<pkg-notifications-' + pkgbase + '@aur.archlinux.org>'
|
|
||||||
headers = headers_reply(thread_id)
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs, headers)
|
|
||||||
|
|
||||||
|
|
||||||
def flag(cur, uid, pkgbase_id):
|
|
||||||
user = username_from_id(cur, uid)
|
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
|
||||||
to = [get_maintainer_email(cur, pkgbase_id)]
|
|
||||||
text = get_flagger_comment(cur, pkgbase_id)
|
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
|
||||||
|
|
||||||
subject = 'AUR Out-of-date Notification for %s' % (pkgbase)
|
|
||||||
body = 'Your package %s [1] has been flagged out-of-date by %s [2]:' % \
|
|
||||||
(pkgbase, user)
|
|
||||||
body += '\n\n' + text
|
|
||||||
refs = '[1] ' + pkgbase_uri + '\n'
|
|
||||||
refs += '[2] ' + user_uri
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs)
|
|
||||||
|
|
||||||
|
|
||||||
def comaintainer_add(cur, pkgbase_id, uid):
|
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
|
||||||
to = [get_user_email(cur, uid)]
|
|
||||||
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
|
||||||
|
|
||||||
subject = 'AUR Co-Maintainer Notification for %s' % (pkgbase)
|
|
||||||
body = 'You were added to the co-maintainer list of %s [1].' % (pkgbase)
|
|
||||||
refs = '[1] ' + pkgbase_uri + '\n'
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs)
|
|
||||||
|
|
||||||
|
|
||||||
def comaintainer_remove(cur, pkgbase_id, uid):
|
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
|
||||||
to = [get_user_email(cur, uid)]
|
|
||||||
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
|
||||||
|
|
||||||
subject = 'AUR Co-Maintainer Notification for %s' % (pkgbase)
|
|
||||||
body = ('You were removed from the co-maintainer list of %s [1].' %
|
|
||||||
(pkgbase))
|
|
||||||
refs = '[1] ' + pkgbase_uri + '\n'
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs)
|
|
||||||
|
|
||||||
|
|
||||||
def delete(cur, uid, old_pkgbase_id, new_pkgbase_id=None):
|
|
||||||
user = username_from_id(cur, uid)
|
|
||||||
old_pkgbase = pkgbase_from_id(cur, old_pkgbase_id)
|
|
||||||
if new_pkgbase_id:
|
|
||||||
new_pkgbase = pkgbase_from_id(cur, new_pkgbase_id)
|
|
||||||
to = get_recipients(cur, old_pkgbase_id, uid)
|
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + old_pkgbase + '/'
|
|
||||||
|
|
||||||
subject = 'AUR Package deleted: %s' % (old_pkgbase)
|
|
||||||
if new_pkgbase_id:
|
|
||||||
new_pkgbase_uri = aur_location + '/pkgbase/' + new_pkgbase + '/'
|
|
||||||
body = '%s [1] merged %s [2] into %s [3].\n\n' \
|
|
||||||
'If you no longer wish receive notifications about the new ' \
|
|
||||||
'package, please go to [3] and click "%s".' %\
|
|
||||||
(user, old_pkgbase, new_pkgbase, 'Disable notifications')
|
|
||||||
refs = '[1] ' + user_uri + '\n'
|
|
||||||
refs += '[2] ' + pkgbase_uri + '\n'
|
|
||||||
refs += '[3] ' + new_pkgbase_uri
|
|
||||||
else:
|
|
||||||
body = '%s [1] deleted %s [2].\n\n' \
|
|
||||||
'You will no longer receive notifications about this ' \
|
|
||||||
'package.' % (user, old_pkgbase)
|
|
||||||
refs = '[1] ' + user_uri + '\n'
|
|
||||||
refs += '[2] ' + pkgbase_uri
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs)
|
|
||||||
|
|
||||||
|
|
||||||
def request_open(cur, uid, reqid, reqtype, pkgbase_id, merge_into=None):
|
|
||||||
user = username_from_id(cur, uid)
|
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
|
||||||
to = [aur_request_ml]
|
|
||||||
cc = get_request_recipients(cur, reqid)
|
|
||||||
text = get_request_comment(cur, reqid)
|
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
|
||||||
|
|
||||||
subject = '[PRQ#%d] %s Request for %s' % \
|
|
||||||
(int(reqid), reqtype.title(), pkgbase)
|
|
||||||
if merge_into:
|
|
||||||
merge_into_uri = aur_location + '/pkgbase/' + merge_into + '/'
|
|
||||||
body = '%s [1] filed a request to merge %s [2] into %s [3]:' % \
|
|
||||||
(user, pkgbase, merge_into)
|
|
||||||
body += '\n\n' + text
|
|
||||||
refs = '[1] ' + user_uri + '\n'
|
|
||||||
refs += '[2] ' + pkgbase_uri + '\n'
|
|
||||||
refs += '[3] ' + merge_into_uri
|
|
||||||
else:
|
|
||||||
body = '%s [1] filed a %s request for %s [2]:' % \
|
|
||||||
(user, reqtype, pkgbase)
|
|
||||||
body += '\n\n' + text
|
|
||||||
refs = '[1] ' + user_uri + '\n'
|
|
||||||
refs += '[2] ' + pkgbase_uri + '\n'
|
|
||||||
thread_id = '<pkg-request-' + reqid + '@aur.archlinux.org>'
|
|
||||||
# Use a deterministic Message-ID for the first email referencing a request.
|
|
||||||
headers = headers_msgid(thread_id)
|
|
||||||
headers.update(headers_cc(cc))
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs, headers)
|
|
||||||
|
|
||||||
|
|
||||||
def request_close(cur, uid, reqid, reason):
|
|
||||||
user = username_from_id(cur, uid)
|
|
||||||
to = [aur_request_ml]
|
|
||||||
cc = get_request_recipients(cur, reqid)
|
|
||||||
text = get_request_closure_comment(cur, reqid)
|
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
|
||||||
|
|
||||||
subject = '[PRQ#%d] Request %s' % (int(reqid), reason.title())
|
|
||||||
body = 'Request #%d has been %s by %s [1]' % (int(reqid), reason, user)
|
|
||||||
if text.strip() == '':
|
|
||||||
body += '.'
|
|
||||||
else:
|
|
||||||
body += ':\n\n' + text
|
|
||||||
refs = '[1] ' + user_uri
|
|
||||||
thread_id = '<pkg-request-' + reqid + '@aur.archlinux.org>'
|
|
||||||
headers = headers_reply(thread_id)
|
|
||||||
headers.update(headers_cc(cc))
|
|
||||||
|
|
||||||
send_notification(to, subject, body, refs, headers)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
action = sys.argv[1]
|
|
||||||
action_map = {
|
|
||||||
'send-resetkey': send_resetkey,
|
|
||||||
'welcome': welcome,
|
|
||||||
'comment': comment,
|
|
||||||
'update': update,
|
|
||||||
'flag': flag,
|
|
||||||
'comaintainer-add': comaintainer_add,
|
|
||||||
'comaintainer-remove': comaintainer_remove,
|
|
||||||
'delete': delete,
|
|
||||||
'request-open': request_open,
|
|
||||||
'request-close': request_close,
|
|
||||||
}
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
action_map[action](cur, *sys.argv[2:])
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
cur.execute("DELETE FROM PackageBases WHERE " +
|
|
||||||
"UNIX_TIMESTAMP() - SubmittedTS > 86400 AND PackagerUID IS NULL")
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
|
@ -1,30 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import mysql.connector
|
|
||||||
import os
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.read(os.path.dirname(os.path.realpath(__file__)) + "/../conf/config")
|
|
||||||
|
|
||||||
aur_db_host = config.get('database', 'host')
|
|
||||||
aur_db_name = config.get('database', 'name')
|
|
||||||
aur_db_user = config.get('database', 'user')
|
|
||||||
aur_db_pass = config.get('database', 'password')
|
|
||||||
aur_db_socket = config.get('database', 'socket')
|
|
||||||
|
|
||||||
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
|
||||||
passwd=aur_db_pass, db=aur_db_name,
|
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
|
||||||
cur = db.cursor()
|
|
||||||
|
|
||||||
cur.execute("UPDATE PackageBases SET NumVotes = (SELECT COUNT(*) FROM " +
|
|
||||||
"PackageVotes WHERE PackageVotes.PackageBaseID = PackageBases.ID)")
|
|
||||||
|
|
||||||
cur.execute("UPDATE PackageBases SET Popularity = (" +
|
|
||||||
"SELECT COALESCE(SUM(POWER(0.98, (UNIX_TIMESTAMP() - VoteTS) / 86400)), 0.0) " +
|
|
||||||
"FROM PackageVotes WHERE PackageVotes.PackageBaseID = " +
|
|
||||||
"PackageBases.ID AND NOT VoteTS IS NULL)")
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
33
setup.py
Normal file
33
setup.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import re
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
import sys
|
||||||
|
|
||||||
|
version = None
|
||||||
|
with open('web/lib/version.inc.php', 'r') as f:
|
||||||
|
for line in f.readlines():
|
||||||
|
match = re.match(r'^define\("AURWEB_VERSION", "v([0-9.]+)"\);$', line)
|
||||||
|
if match:
|
||||||
|
version = match.group(1)
|
||||||
|
|
||||||
|
if not version:
|
||||||
|
sys.stderr.write('error: Failed to parse version file!')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name="aurweb",
|
||||||
|
version=version,
|
||||||
|
packages=find_packages(),
|
||||||
|
entry_points={
|
||||||
|
'console_scripts': [
|
||||||
|
'aurweb-git-auth = aurweb.git.auth:main',
|
||||||
|
'aurweb-git-serve = aurweb.git.serve:main',
|
||||||
|
'aurweb-git-update = aurweb.git.update:main',
|
||||||
|
'aurweb-aurblup = aurweb.scripts.aurblup:main',
|
||||||
|
'aurweb-mkpkglists = aurweb.scripts.mkpkglists:main',
|
||||||
|
'aurweb-notify = aurweb.scripts.notify:main',
|
||||||
|
'aurweb-pkgmaint = aurweb.scripts.pkgmaint:main',
|
||||||
|
'aurweb-popupdate = aurweb.scripts.popupdate:main',
|
||||||
|
'aurweb-tuvotereminder = aurweb.scripts.tuvotereminder:main',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
)
|
11
test/Makefile
Normal file
11
test/Makefile
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
T = $(sort $(wildcard t[0-9][0-9][0-9][0-9]-*.sh))
|
||||||
|
|
||||||
|
check: $(T)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) -r test-results/
|
||||||
|
|
||||||
|
$(T):
|
||||||
|
@echo "*** $@ ***"; $(SHELL) $@
|
||||||
|
|
||||||
|
.PHONY: check clean $(T)
|
218
test/setup.sh
Normal file
218
test/setup.sh
Normal file
|
@ -0,0 +1,218 @@
|
||||||
|
TEST_DIRECTORY="$(pwd)"
|
||||||
|
TOPLEVEL="$(cd .. && pwd)"
|
||||||
|
|
||||||
|
. ./sharness.sh
|
||||||
|
|
||||||
|
# Configure python search path.
|
||||||
|
PYTHONPATH="$TOPLEVEL"
|
||||||
|
export PYTHONPATH
|
||||||
|
|
||||||
|
# Configure paths to the Git interface scripts.
|
||||||
|
GIT_AUTH="$TOPLEVEL/aurweb/git/auth.py"
|
||||||
|
GIT_SERVE="$TOPLEVEL/aurweb/git/serve.py"
|
||||||
|
GIT_UPDATE="$TOPLEVEL/aurweb/git/update.py"
|
||||||
|
MKPKGLISTS="$TOPLEVEL/scripts/mkpkglists.py"
|
||||||
|
TUVOTEREMINDER="$TOPLEVEL/scripts/tuvotereminder.py"
|
||||||
|
PKGMAINT="$TOPLEVEL/scripts/pkgmaint.py"
|
||||||
|
AURBLUP="$TOPLEVEL/scripts/aurblup.py"
|
||||||
|
NOTIFY="$TOPLEVEL/scripts/notify.py"
|
||||||
|
|
||||||
|
# Create the configuration file and a dummy notification script.
|
||||||
|
cat >config <<-EOF
|
||||||
|
[database]
|
||||||
|
backend = sqlite
|
||||||
|
name = aur.db
|
||||||
|
|
||||||
|
[options]
|
||||||
|
aur_location = https://aur.archlinux.org
|
||||||
|
aur_request_ml = aur-requests@archlinux.org
|
||||||
|
enable-maintenance = 0
|
||||||
|
maintenance-exceptions = 127.0.0.1
|
||||||
|
|
||||||
|
[notifications]
|
||||||
|
notify-cmd = $NOTIFY
|
||||||
|
sendmail = ./sendmail.sh
|
||||||
|
sender = notify@aur.archlinux.org
|
||||||
|
reply-to = noreply@aur.archlinux.org
|
||||||
|
|
||||||
|
[auth]
|
||||||
|
valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
|
||||||
|
username-regex = [a-zA-Z0-9]+[.\-_]?[a-zA-Z0-9]+$
|
||||||
|
git-serve-cmd = $GIT_SERVE
|
||||||
|
ssh-options = restrict
|
||||||
|
|
||||||
|
[serve]
|
||||||
|
repo-path = ./aur.git/
|
||||||
|
repo-regex = [a-z0-9][a-z0-9.+_-]*$
|
||||||
|
git-shell-cmd = ./git-shell.sh
|
||||||
|
git-update-cmd = ./update.sh
|
||||||
|
ssh-cmdline = ssh aur@aur.archlinux.org
|
||||||
|
|
||||||
|
[update]
|
||||||
|
max-blob-size = 256000
|
||||||
|
|
||||||
|
[aurblup]
|
||||||
|
db-path = $(pwd)/sync/
|
||||||
|
sync-dbs = test
|
||||||
|
server = file://$(pwd)/remote/
|
||||||
|
|
||||||
|
[mkpkglists]
|
||||||
|
packagesfile = packages.gz
|
||||||
|
pkgbasefile = pkgbase.gz
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >sendmail.sh <<-\EOF
|
||||||
|
#!/bin/sh
|
||||||
|
cat >>sendmail.out
|
||||||
|
EOF
|
||||||
|
chmod +x sendmail.sh
|
||||||
|
|
||||||
|
cat >git-shell.sh <<-\EOF
|
||||||
|
#!/bin/sh
|
||||||
|
echo $AUR_USER
|
||||||
|
echo $AUR_PKGBASE
|
||||||
|
echo $GIT_NAMESPACE
|
||||||
|
EOF
|
||||||
|
chmod +x git-shell.sh
|
||||||
|
|
||||||
|
cat >update.sh <<-\EOF
|
||||||
|
#!/bin/sh
|
||||||
|
echo $AUR_USER
|
||||||
|
echo $AUR_PKGBASE
|
||||||
|
EOF
|
||||||
|
chmod +x update.sh
|
||||||
|
|
||||||
|
AUR_CONFIG=config
|
||||||
|
export AUR_CONFIG
|
||||||
|
|
||||||
|
# Create SSH public keys which will be used by the test users later.
|
||||||
|
AUTH_KEYTYPE_USER=ssh-rsa
|
||||||
|
AUTH_KEYTEXT_USER=AAAAB3NzaC1yc2EAAAADAQABAAABAQCeUafDK4jqUiRHNQfwHcYjBKLZ4Rc1sNUofHApBP6j91nIvDHZe2VUqeBmFUhBz7kXK4VbXD9nlHMun2HeshL8hXnMzymZ8Wk7+IKefj61pajJkIdttw9Tnayfg7uhg5RbFy9zpEjmGjnIVjSzOXKCwppNT+CNujpKM5FD8gso/Z+l3fD+IwrPwS1SzF1Z99nqI9n2FM/JWZqluvTqnW9WdAvBDfutXxp0R5ZiLI5TAKL2Ssp5rpL70pkLXhv+9sK545zKKlXUFmw6Pi2iVBdqdRsk9ocl49dLiNIh8CYDCO3CRQn+8EnpBhTor2TKQxGJI3mzoBwWJJxoKhD/XlYJ
|
||||||
|
AUTH_FINGERPRINT_USER=SHA256:F/OFtYAy0JCytAGUi4RUZnOsThhQtFMK7fH1YvFBCpo
|
||||||
|
|
||||||
|
AUTH_KEYTYPE_TU=ssh-rsa
|
||||||
|
AUTH_KEYTEXT_TU=AAAAB3NzaC1yc2EAAAADAQABAAABAQC4Q2Beg6jf2r1LZ4vwT5y10dK8+/c5RaNyTwv77wF2OSLXh32xW0ovhE2lW2gqoakdGsxgM2fTtqMTl29WOsAxlGF7x9XbWhFXFUT88Daq1fAeuihkiRjfBbInSW/WcrFZ+biLBch67addtfkkd4PmAafDeeCtszAXqza+ltBG1oxAGiTXgI3LOhA1/GtLLxsi5sPUO3ZlhvwDn4Sy0aXYx8l9hop/PU4Cjn82hyRa9r+SRxQ3KtjKxcVMnZ8IyXOrBwXTukgSBR/6nSdEmO0JPkYUFuNwh3UGFKuNkrPguL5T+4YDym6czYmZJzQ7NNl2pLKYmYgBwBe5rORlWfN5
|
||||||
|
AUTH_FINGERPRINT_TU=SHA256:xQGC6j/U1Q3NDXLl04pm+Shr1mjYUXbGMUzlm9vby4k
|
||||||
|
|
||||||
|
AUTH_KEYTYPE_MISSING=sha-rsa
|
||||||
|
AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5
|
||||||
|
AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w
|
||||||
|
|
||||||
|
# Initialize the test database.
|
||||||
|
rm -f aur.db
|
||||||
|
sed \
|
||||||
|
-e '/^DROP DATABASE /d' \
|
||||||
|
-e '/^CREATE DATABASE /d' \
|
||||||
|
-e '/^USE /d' \
|
||||||
|
-e 's/ ENGINE = InnoDB//' \
|
||||||
|
-e 's/ [A-Z]* UNSIGNED NOT NULL AUTO_INCREMENT/ INTEGER NOT NULL/' \
|
||||||
|
-e 's/([0-9, ]*) UNSIGNED / UNSIGNED /' \
|
||||||
|
"$TOPLEVEL/schema/aur-schema.sql" | sqlite3 aur.db
|
||||||
|
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (1, 'user', '!', 'user@localhost', 1);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (2, 'tu', '!', 'tu@localhost', 2);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (3, 'dev', '!', 'dev@localhost', 3);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (4, 'user2', '!', 'user2@localhost', 1);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (5, 'user3', '!', 'user3@localhost', 1);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (6, 'user4', '!', 'user4@localhost', 1);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (7, 'tu2', '!', 'tu2@localhost', 2);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (8, 'tu3', '!', 'tu3@localhost', 2);" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (9, 'tu4', '!', 'tu4@localhost', 2);" | sqlite3 aur.db
|
||||||
|
|
||||||
|
echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db
|
||||||
|
|
||||||
|
echo "INSERT INTO PackageBlacklist (Name) VALUES ('forbidden');" | sqlite3 aur.db
|
||||||
|
echo "INSERT INTO OfficialProviders (Name, Repo, Provides) VALUES ('official', 'core', 'official');" | sqlite3 aur.db
|
||||||
|
|
||||||
|
# Initialize a Git repository and test packages.
|
||||||
|
GIT_AUTHOR_EMAIL=author@example.com
|
||||||
|
GIT_AUTHOR_NAME='A U Thor'
|
||||||
|
GIT_COMMITTER_EMAIL=committer@example.com
|
||||||
|
GIT_COMMITTER_NAME='C O Mitter'
|
||||||
|
export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
|
||||||
|
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
|
||||||
|
|
||||||
|
(
|
||||||
|
mkdir aur.git
|
||||||
|
cd aur.git
|
||||||
|
git init -q
|
||||||
|
|
||||||
|
git checkout -q --orphan refs/namespaces/foobar/refs/heads/master
|
||||||
|
|
||||||
|
cat >PKGBUILD <<-EOF
|
||||||
|
pkgname=foobar
|
||||||
|
pkgver=1
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc='aurweb test package.'
|
||||||
|
url='https://aur.archlinux.org/'
|
||||||
|
license=('GPL')
|
||||||
|
arch=('any')
|
||||||
|
depends=('python-pygit2')
|
||||||
|
source=()
|
||||||
|
md5sums=()
|
||||||
|
|
||||||
|
package() {
|
||||||
|
echo 'Hello world!'
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >.SRCINFO <<-EOF
|
||||||
|
pkgbase = foobar
|
||||||
|
pkgdesc = aurweb test package.
|
||||||
|
pkgver = 1
|
||||||
|
pkgrel = 1
|
||||||
|
url = https://aur.archlinux.org/
|
||||||
|
arch = any
|
||||||
|
license = GPL
|
||||||
|
depends = python-pygit2
|
||||||
|
|
||||||
|
pkgname = foobar
|
||||||
|
EOF
|
||||||
|
|
||||||
|
git add PKGBUILD .SRCINFO
|
||||||
|
git commit -q -m 'Initial import'
|
||||||
|
|
||||||
|
sed 's/\(pkgrel.*\)1/\12/' PKGBUILD >PKGBUILD.new
|
||||||
|
sed 's/\(pkgrel.*\)1/\12/' .SRCINFO >.SRCINFO.new
|
||||||
|
mv PKGBUILD.new PKGBUILD
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am 'Bump pkgrel'
|
||||||
|
|
||||||
|
git checkout -q --orphan refs/namespaces/foobar2/refs/heads/master
|
||||||
|
|
||||||
|
cat >PKGBUILD <<-EOF
|
||||||
|
pkgname=foobar2
|
||||||
|
pkgver=1
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc='aurweb test package.'
|
||||||
|
url='https://aur.archlinux.org/'
|
||||||
|
license=('MIT')
|
||||||
|
arch=('any')
|
||||||
|
depends=('python-pygit2')
|
||||||
|
source=()
|
||||||
|
md5sums=()
|
||||||
|
|
||||||
|
package() {
|
||||||
|
echo 'Hello world!'
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >.SRCINFO <<-EOF
|
||||||
|
pkgbase = foobar2
|
||||||
|
pkgdesc = aurweb test package.
|
||||||
|
pkgver = 1
|
||||||
|
pkgrel = 1
|
||||||
|
url = https://aur.archlinux.org/
|
||||||
|
arch = any
|
||||||
|
license = MIT
|
||||||
|
depends = python-pygit2
|
||||||
|
|
||||||
|
pkgname = foobar2
|
||||||
|
EOF
|
||||||
|
|
||||||
|
git add PKGBUILD .SRCINFO
|
||||||
|
git commit -q -m 'Initial import'
|
||||||
|
|
||||||
|
git checkout -q refs/namespaces/foobar/refs/heads/master
|
||||||
|
)
|
851
test/sharness.sh
Normal file
851
test/sharness.sh
Normal file
|
@ -0,0 +1,851 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2011-2012 Mathias Lafeldt
|
||||||
|
# Copyright (c) 2005-2012 Git project
|
||||||
|
# Copyright (c) 2005-2012 Junio C Hamano
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see http://www.gnu.org/licenses/ .
|
||||||
|
|
||||||
|
# Public: Current version of Sharness.
|
||||||
|
SHARNESS_VERSION="1.0.0"
|
||||||
|
export SHARNESS_VERSION
|
||||||
|
|
||||||
|
# Public: The file extension for tests. By default, it is set to "t".
|
||||||
|
: ${SHARNESS_TEST_EXTENSION:=t}
|
||||||
|
export SHARNESS_TEST_EXTENSION
|
||||||
|
|
||||||
|
# Reset TERM to original terminal if found, otherwise save orignal TERM
|
||||||
|
[ "x" = "x$SHARNESS_ORIG_TERM" ] &&
|
||||||
|
SHARNESS_ORIG_TERM="$TERM" ||
|
||||||
|
TERM="$SHARNESS_ORIG_TERM"
|
||||||
|
# Public: The unsanitized TERM under which sharness is originally run
|
||||||
|
export SHARNESS_ORIG_TERM
|
||||||
|
|
||||||
|
# Export SHELL_PATH
|
||||||
|
: ${SHELL_PATH:=$SHELL}
|
||||||
|
export SHELL_PATH
|
||||||
|
|
||||||
|
# For repeatability, reset the environment to a known state.
|
||||||
|
# TERM is sanitized below, after saving color control sequences.
|
||||||
|
LANG=C
|
||||||
|
LC_ALL=C
|
||||||
|
PAGER=cat
|
||||||
|
TZ=UTC
|
||||||
|
EDITOR=:
|
||||||
|
export LANG LC_ALL PAGER TZ EDITOR
|
||||||
|
unset VISUAL CDPATH GREP_OPTIONS
|
||||||
|
|
||||||
|
# Line feed
|
||||||
|
LF='
|
||||||
|
'
|
||||||
|
|
||||||
|
[ "x$TERM" != "xdumb" ] && (
|
||||||
|
[ -t 1 ] &&
|
||||||
|
tput bold >/dev/null 2>&1 &&
|
||||||
|
tput setaf 1 >/dev/null 2>&1 &&
|
||||||
|
tput sgr0 >/dev/null 2>&1
|
||||||
|
) &&
|
||||||
|
color=t
|
||||||
|
|
||||||
|
while test "$#" -ne 0; do
|
||||||
|
case "$1" in
|
||||||
|
-d|--d|--de|--deb|--debu|--debug)
|
||||||
|
debug=t; shift ;;
|
||||||
|
-i|--i|--im|--imm|--imme|--immed|--immedi|--immedia|--immediat|--immediate)
|
||||||
|
immediate=t; shift ;;
|
||||||
|
-l|--l|--lo|--lon|--long|--long-|--long-t|--long-te|--long-tes|--long-test|--long-tests)
|
||||||
|
TEST_LONG=t; export TEST_LONG; shift ;;
|
||||||
|
--in|--int|--inte|--inter|--intera|--interac|--interact|--interacti|--interactiv|--interactive|--interactive-|--interactive-t|--interactive-te|--interactive-tes|--interactive-test|--interactive-tests):
|
||||||
|
TEST_INTERACTIVE=t; export TEST_INTERACTIVE; verbose=t; shift ;;
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
help=t; shift ;;
|
||||||
|
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
|
||||||
|
verbose=t; shift ;;
|
||||||
|
-q|--q|--qu|--qui|--quie|--quiet)
|
||||||
|
# Ignore --quiet under a TAP::Harness. Saying how many tests
|
||||||
|
# passed without the ok/not ok details is always an error.
|
||||||
|
test -z "$HARNESS_ACTIVE" && quiet=t; shift ;;
|
||||||
|
--chain-lint)
|
||||||
|
chain_lint=t; shift ;;
|
||||||
|
--no-chain-lint)
|
||||||
|
chain_lint=; shift ;;
|
||||||
|
--no-color)
|
||||||
|
color=; shift ;;
|
||||||
|
--root=*)
|
||||||
|
root=$(expr "z$1" : 'z[^=]*=\(.*\)')
|
||||||
|
shift ;;
|
||||||
|
*)
|
||||||
|
echo "error: unknown test option '$1'" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$color"; then
|
||||||
|
# Save the color control sequences now rather than run tput
|
||||||
|
# each time say_color() is called. This is done for two
|
||||||
|
# reasons:
|
||||||
|
# * TERM will be changed to dumb
|
||||||
|
# * HOME will be changed to a temporary directory and tput
|
||||||
|
# might need to read ~/.terminfo from the original HOME
|
||||||
|
# directory to get the control sequences
|
||||||
|
# Note: This approach assumes the control sequences don't end
|
||||||
|
# in a newline for any terminal of interest (command
|
||||||
|
# substitutions strip trailing newlines). Given that most
|
||||||
|
# (all?) terminals in common use are related to ECMA-48, this
|
||||||
|
# shouldn't be a problem.
|
||||||
|
say_color_error=$(tput bold; tput setaf 1) # bold red
|
||||||
|
say_color_skip=$(tput setaf 4) # blue
|
||||||
|
say_color_warn=$(tput setaf 3) # brown/yellow
|
||||||
|
say_color_pass=$(tput setaf 2) # green
|
||||||
|
say_color_info=$(tput setaf 6) # cyan
|
||||||
|
say_color_reset=$(tput sgr0)
|
||||||
|
say_color_="" # no formatting for normal text
|
||||||
|
say_color() {
|
||||||
|
test -z "$1" && test -n "$quiet" && return
|
||||||
|
eval "say_color_color=\$say_color_$1"
|
||||||
|
shift
|
||||||
|
printf "%s\\n" "$say_color_color$*$say_color_reset"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
say_color() {
|
||||||
|
test -z "$1" && test -n "$quiet" && return
|
||||||
|
shift
|
||||||
|
printf "%s\n" "$*"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
TERM=dumb
|
||||||
|
export TERM
|
||||||
|
|
||||||
|
error() {
|
||||||
|
say_color error "error: $*"
|
||||||
|
EXIT_OK=t
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
say() {
|
||||||
|
say_color info "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
test -n "$test_description" || error "Test script did not set test_description."
|
||||||
|
|
||||||
|
if test "$help" = "t"; then
|
||||||
|
echo "$test_description"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec 5>&1
|
||||||
|
exec 6<&0
|
||||||
|
if test "$verbose" = "t"; then
|
||||||
|
exec 4>&2 3>&1
|
||||||
|
else
|
||||||
|
exec 4>/dev/null 3>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
test_failure=0
|
||||||
|
test_count=0
|
||||||
|
test_fixed=0
|
||||||
|
test_broken=0
|
||||||
|
test_success=0
|
||||||
|
|
||||||
|
die() {
|
||||||
|
code=$?
|
||||||
|
if test -n "$EXIT_OK"; then
|
||||||
|
exit $code
|
||||||
|
else
|
||||||
|
echo >&5 "FATAL: Unexpected exit with code $code"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
EXIT_OK=
|
||||||
|
trap 'die' EXIT
|
||||||
|
|
||||||
|
# Public: Define that a test prerequisite is available.
|
||||||
|
#
|
||||||
|
# The prerequisite can later be checked explicitly using test_have_prereq or
|
||||||
|
# implicitly by specifying the prerequisite name in calls to test_expect_success
|
||||||
|
# or test_expect_failure.
|
||||||
|
#
|
||||||
|
# $1 - Name of prerequiste (a simple word, in all capital letters by convention)
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# # Set PYTHON prerequisite if interpreter is available.
|
||||||
|
# command -v python >/dev/null && test_set_prereq PYTHON
|
||||||
|
#
|
||||||
|
# # Set prerequisite depending on some variable.
|
||||||
|
# test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
|
||||||
|
#
|
||||||
|
# Returns nothing.
|
||||||
|
test_set_prereq() {
|
||||||
|
satisfied_prereq="$satisfied_prereq$1 "
|
||||||
|
}
|
||||||
|
satisfied_prereq=" "
|
||||||
|
|
||||||
|
# Public: Check if one or more test prerequisites are defined.
|
||||||
|
#
|
||||||
|
# The prerequisites must have previously been set with test_set_prereq.
|
||||||
|
# The most common use of this is to skip all the tests if some essential
|
||||||
|
# prerequisite is missing.
|
||||||
|
#
|
||||||
|
# $1 - Comma-separated list of test prerequisites.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# # Skip all remaining tests if prerequisite is not set.
|
||||||
|
# if ! test_have_prereq PERL; then
|
||||||
|
# skip_all='skipping perl interface tests, perl not available'
|
||||||
|
# test_done
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# Returns 0 if all prerequisites are defined or 1 otherwise.
|
||||||
|
test_have_prereq() {
|
||||||
|
# prerequisites can be concatenated with ','
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=,
|
||||||
|
set -- $*
|
||||||
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
total_prereq=0
|
||||||
|
ok_prereq=0
|
||||||
|
missing_prereq=
|
||||||
|
|
||||||
|
for prerequisite; do
|
||||||
|
case "$prerequisite" in
|
||||||
|
!*)
|
||||||
|
negative_prereq=t
|
||||||
|
prerequisite=${prerequisite#!}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
negative_prereq=
|
||||||
|
esac
|
||||||
|
|
||||||
|
total_prereq=$(($total_prereq + 1))
|
||||||
|
case "$satisfied_prereq" in
|
||||||
|
*" $prerequisite "*)
|
||||||
|
satisfied_this_prereq=t
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
satisfied_this_prereq=
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$satisfied_this_prereq,$negative_prereq" in
|
||||||
|
t,|,t)
|
||||||
|
ok_prereq=$(($ok_prereq + 1))
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Keep a list of missing prerequisites; restore
|
||||||
|
# the negative marker if necessary.
|
||||||
|
prerequisite=${negative_prereq:+!}$prerequisite
|
||||||
|
if test -z "$missing_prereq"; then
|
||||||
|
missing_prereq=$prerequisite
|
||||||
|
else
|
||||||
|
missing_prereq="$prerequisite,$missing_prereq"
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test $total_prereq = $ok_prereq
|
||||||
|
}
|
||||||
|
|
||||||
|
# You are not expected to call test_ok_ and test_failure_ directly, use
|
||||||
|
# the text_expect_* functions instead.
|
||||||
|
|
||||||
|
test_ok_() {
|
||||||
|
test_success=$(($test_success + 1))
|
||||||
|
say_color "" "ok $test_count - $@"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_failure_() {
|
||||||
|
test_failure=$(($test_failure + 1))
|
||||||
|
say_color error "not ok $test_count - $1"
|
||||||
|
shift
|
||||||
|
echo "$@" | sed -e 's/^/# /'
|
||||||
|
test "$immediate" = "" || { EXIT_OK=t; exit 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
test_known_broken_ok_() {
|
||||||
|
test_fixed=$(($test_fixed + 1))
|
||||||
|
say_color error "ok $test_count - $@ # TODO known breakage vanished"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_known_broken_failure_() {
|
||||||
|
test_broken=$(($test_broken + 1))
|
||||||
|
say_color warn "not ok $test_count - $@ # TODO known breakage"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Execute commands in debug mode.
|
||||||
|
#
|
||||||
|
# Takes a single argument and evaluates it only when the test script is started
|
||||||
|
# with --debug. This is primarily meant for use during the development of test
|
||||||
|
# scripts.
|
||||||
|
#
|
||||||
|
# $1 - Commands to be executed.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_debug "cat some_log_file"
|
||||||
|
#
|
||||||
|
# Returns the exit code of the last command executed in debug mode or 0
|
||||||
|
# otherwise.
|
||||||
|
test_debug() {
|
||||||
|
test "$debug" = "" || eval "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Stop execution and start a shell.
|
||||||
|
#
|
||||||
|
# This is useful for debugging tests and only makes sense together with "-v".
|
||||||
|
# Be sure to remove all invocations of this command before submitting.
|
||||||
|
test_pause() {
|
||||||
|
if test "$verbose" = t; then
|
||||||
|
"$SHELL_PATH" <&6 >&3 2>&4
|
||||||
|
else
|
||||||
|
error >&5 "test_pause requires --verbose"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
test_eval_() {
|
||||||
|
# This is a separate function because some tests use
|
||||||
|
# "return" to end a test_expect_success block early.
|
||||||
|
case ",$test_prereq," in
|
||||||
|
*,INTERACTIVE,*)
|
||||||
|
eval "$*"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
eval </dev/null >&3 2>&4 "$*"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
test_run_() {
|
||||||
|
test_cleanup=:
|
||||||
|
expecting_failure=$2
|
||||||
|
test_eval_ "$1"
|
||||||
|
eval_ret=$?
|
||||||
|
|
||||||
|
if test "$chain_lint" = "t"; then
|
||||||
|
test_eval_ "(exit 117) && $1"
|
||||||
|
if test "$?" != 117; then
|
||||||
|
error "bug in the test script: broken &&-chain: $1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$immediate" || test $eval_ret = 0 || test -n "$expecting_failure"; then
|
||||||
|
test_eval_ "$test_cleanup"
|
||||||
|
fi
|
||||||
|
if test "$verbose" = "t" && test -n "$HARNESS_ACTIVE"; then
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
return "$eval_ret"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_skip_() {
|
||||||
|
test_count=$(($test_count + 1))
|
||||||
|
to_skip=
|
||||||
|
for skp in $SKIP_TESTS; do
|
||||||
|
case $this_test.$test_count in
|
||||||
|
$skp)
|
||||||
|
to_skip=t
|
||||||
|
break
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if test -z "$to_skip" && test -n "$test_prereq" && ! test_have_prereq "$test_prereq"; then
|
||||||
|
to_skip=t
|
||||||
|
fi
|
||||||
|
case "$to_skip" in
|
||||||
|
t)
|
||||||
|
of_prereq=
|
||||||
|
if test "$missing_prereq" != "$test_prereq"; then
|
||||||
|
of_prereq=" of $test_prereq"
|
||||||
|
fi
|
||||||
|
|
||||||
|
say_color skip >&3 "skipping test: $@"
|
||||||
|
say_color skip "ok $test_count # skip $1 (missing $missing_prereq${of_prereq})"
|
||||||
|
: true
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Run test commands and expect them to succeed.
|
||||||
|
#
|
||||||
|
# When the test passed, an "ok" message is printed and the number of successful
|
||||||
|
# tests is incremented. When it failed, a "not ok" message is printed and the
|
||||||
|
# number of failed tests is incremented.
|
||||||
|
#
|
||||||
|
# With --immediate, exit test immediately upon the first failed test.
|
||||||
|
#
|
||||||
|
# Usually takes two arguments:
|
||||||
|
# $1 - Test description
|
||||||
|
# $2 - Commands to be executed.
|
||||||
|
#
|
||||||
|
# With three arguments, the first will be taken to be a prerequisite:
|
||||||
|
# $1 - Comma-separated list of test prerequisites. The test will be skipped if
|
||||||
|
# not all of the given prerequisites are set. To negate a prerequisite,
|
||||||
|
# put a "!" in front of it.
|
||||||
|
# $2 - Test description
|
||||||
|
# $3 - Commands to be executed.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success \
|
||||||
|
# 'git-write-tree should be able to write an empty tree.' \
|
||||||
|
# 'tree=$(git-write-tree)'
|
||||||
|
#
|
||||||
|
# # Test depending on one prerequisite.
|
||||||
|
# test_expect_success TTY 'git --paginate rev-list uses a pager' \
|
||||||
|
# ' ... '
|
||||||
|
#
|
||||||
|
# # Multiple prerequisites are separated by a comma.
|
||||||
|
# test_expect_success PERL,PYTHON 'yo dawg' \
|
||||||
|
# ' test $(perl -E 'print eval "1 +" . qx[python -c "print 2"]') == "4" '
|
||||||
|
#
|
||||||
|
# Returns nothing.
|
||||||
|
test_expect_success() {
|
||||||
|
test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq=
|
||||||
|
test "$#" = 2 || error "bug in the test script: not 2 or 3 parameters to test_expect_success"
|
||||||
|
export test_prereq
|
||||||
|
if ! test_skip_ "$@"; then
|
||||||
|
say >&3 "expecting success: $2"
|
||||||
|
if test_run_ "$2"; then
|
||||||
|
test_ok_ "$1"
|
||||||
|
else
|
||||||
|
test_failure_ "$@"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo >&3 ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Run test commands and expect them to fail. Used to demonstrate a known
|
||||||
|
# breakage.
|
||||||
|
#
|
||||||
|
# This is NOT the opposite of test_expect_success, but rather used to mark a
|
||||||
|
# test that demonstrates a known breakage.
|
||||||
|
#
|
||||||
|
# When the test passed, an "ok" message is printed and the number of fixed tests
|
||||||
|
# is incremented. When it failed, a "not ok" message is printed and the number
|
||||||
|
# of tests still broken is incremented.
|
||||||
|
#
|
||||||
|
# Failures from these tests won't cause --immediate to stop.
|
||||||
|
#
|
||||||
|
# Usually takes two arguments:
|
||||||
|
# $1 - Test description
|
||||||
|
# $2 - Commands to be executed.
|
||||||
|
#
|
||||||
|
# With three arguments, the first will be taken to be a prerequisite:
|
||||||
|
# $1 - Comma-separated list of test prerequisites. The test will be skipped if
|
||||||
|
# not all of the given prerequisites are set. To negate a prerequisite,
|
||||||
|
# put a "!" in front of it.
|
||||||
|
# $2 - Test description
|
||||||
|
# $3 - Commands to be executed.
|
||||||
|
#
|
||||||
|
# Returns nothing.
|
||||||
|
test_expect_failure() {
|
||||||
|
test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq=
|
||||||
|
test "$#" = 2 || error "bug in the test script: not 2 or 3 parameters to test_expect_failure"
|
||||||
|
export test_prereq
|
||||||
|
if ! test_skip_ "$@"; then
|
||||||
|
say >&3 "checking known breakage: $2"
|
||||||
|
if test_run_ "$2" expecting_failure; then
|
||||||
|
test_known_broken_ok_ "$1"
|
||||||
|
else
|
||||||
|
test_known_broken_failure_ "$1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo >&3 ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Run command and ensure that it fails in a controlled way.
|
||||||
|
#
|
||||||
|
# Use it instead of "! <command>". For example, when <command> dies due to a
|
||||||
|
# segfault, test_must_fail diagnoses it as an error, while "! <command>" would
|
||||||
|
# mistakenly be treated as just another expected failure.
|
||||||
|
#
|
||||||
|
# This is one of the prefix functions to be used inside test_expect_success or
|
||||||
|
# test_expect_failure.
|
||||||
|
#
|
||||||
|
# $1.. - Command to be executed.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success 'complain and die' '
|
||||||
|
# do something &&
|
||||||
|
# do something else &&
|
||||||
|
# test_must_fail git checkout ../outerspace
|
||||||
|
# '
|
||||||
|
#
|
||||||
|
# Returns 1 if the command succeeded (exit code 0).
|
||||||
|
# Returns 1 if the command died by signal (exit codes 130-192)
|
||||||
|
# Returns 1 if the command could not be found (exit code 127).
|
||||||
|
# Returns 0 otherwise.
|
||||||
|
test_must_fail() {
|
||||||
|
"$@"
|
||||||
|
exit_code=$?
|
||||||
|
if test $exit_code = 0; then
|
||||||
|
echo >&2 "test_must_fail: command succeeded: $*"
|
||||||
|
return 1
|
||||||
|
elif test $exit_code -gt 129 -a $exit_code -le 192; then
|
||||||
|
echo >&2 "test_must_fail: died by signal: $*"
|
||||||
|
return 1
|
||||||
|
elif test $exit_code = 127; then
|
||||||
|
echo >&2 "test_must_fail: command not found: $*"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Run command and ensure that it succeeds or fails in a controlled way.
|
||||||
|
#
|
||||||
|
# Similar to test_must_fail, but tolerates success too. Use it instead of
|
||||||
|
# "<command> || :" to catch failures caused by a segfault, for instance.
|
||||||
|
#
|
||||||
|
# This is one of the prefix functions to be used inside test_expect_success or
|
||||||
|
# test_expect_failure.
|
||||||
|
#
|
||||||
|
# $1.. - Command to be executed.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success 'some command works without configuration' '
|
||||||
|
# test_might_fail git config --unset all.configuration &&
|
||||||
|
# do something
|
||||||
|
# '
|
||||||
|
#
|
||||||
|
# Returns 1 if the command died by signal (exit codes 130-192)
|
||||||
|
# Returns 1 if the command could not be found (exit code 127).
|
||||||
|
# Returns 0 otherwise.
|
||||||
|
test_might_fail() {
|
||||||
|
"$@"
|
||||||
|
exit_code=$?
|
||||||
|
if test $exit_code -gt 129 -a $exit_code -le 192; then
|
||||||
|
echo >&2 "test_might_fail: died by signal: $*"
|
||||||
|
return 1
|
||||||
|
elif test $exit_code = 127; then
|
||||||
|
echo >&2 "test_might_fail: command not found: $*"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Run command and ensure it exits with a given exit code.
|
||||||
|
#
|
||||||
|
# This is one of the prefix functions to be used inside test_expect_success or
|
||||||
|
# test_expect_failure.
|
||||||
|
#
|
||||||
|
# $1 - Expected exit code.
|
||||||
|
# $2.. - Command to be executed.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success 'Merge with d/f conflicts' '
|
||||||
|
# test_expect_code 1 git merge "merge msg" B master
|
||||||
|
# '
|
||||||
|
#
|
||||||
|
# Returns 0 if the expected exit code is returned or 1 otherwise.
|
||||||
|
test_expect_code() {
|
||||||
|
want_code=$1
|
||||||
|
shift
|
||||||
|
"$@"
|
||||||
|
exit_code=$?
|
||||||
|
if test $exit_code = $want_code; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo >&2 "test_expect_code: command exited with $exit_code, we wanted $want_code $*"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Compare two files to see if expected output matches actual output.
|
||||||
|
#
|
||||||
|
# The TEST_CMP variable defines the command used for the comparision; it
|
||||||
|
# defaults to "diff -u". Only when the test script was started with --verbose,
|
||||||
|
# will the command's output, the diff, be printed to the standard output.
|
||||||
|
#
|
||||||
|
# This is one of the prefix functions to be used inside test_expect_success or
|
||||||
|
# test_expect_failure.
|
||||||
|
#
|
||||||
|
# $1 - Path to file with expected output.
|
||||||
|
# $2 - Path to file with actual output.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success 'foo works' '
|
||||||
|
# echo expected >expected &&
|
||||||
|
# foo >actual &&
|
||||||
|
# test_cmp expected actual
|
||||||
|
# '
|
||||||
|
#
|
||||||
|
# Returns the exit code of the command set by TEST_CMP.
|
||||||
|
test_cmp() {
|
||||||
|
${TEST_CMP:-diff -u} "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: portably print a sequence of numbers.
|
||||||
|
#
|
||||||
|
# seq is not in POSIX and GNU seq might not be available everywhere,
|
||||||
|
# so it is nice to have a seq implementation, even a very simple one.
|
||||||
|
#
|
||||||
|
# $1 - Starting number.
|
||||||
|
# $2 - Ending number.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success 'foo works 10 times' '
|
||||||
|
# for i in $(test_seq 1 10)
|
||||||
|
# do
|
||||||
|
# foo || return
|
||||||
|
# done
|
||||||
|
# '
|
||||||
|
#
|
||||||
|
# Returns 0 if all the specified numbers can be displayed.
|
||||||
|
test_seq() {
|
||||||
|
i="$1"
|
||||||
|
j="$2"
|
||||||
|
while test "$i" -le "$j"
|
||||||
|
do
|
||||||
|
echo "$i" || return
|
||||||
|
i=$(expr "$i" + 1)
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Check if the file expected to be empty is indeed empty, and barfs
|
||||||
|
# otherwise.
|
||||||
|
#
|
||||||
|
# $1 - File to check for emptyness.
|
||||||
|
#
|
||||||
|
# Returns 0 if file is empty, 1 otherwise.
|
||||||
|
test_must_be_empty() {
|
||||||
|
if test -s "$1"
|
||||||
|
then
|
||||||
|
echo "'$1' is not empty, it contains:"
|
||||||
|
cat "$1"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Schedule cleanup commands to be run unconditionally at the end of a
|
||||||
|
# test.
|
||||||
|
#
|
||||||
|
# If some cleanup command fails, the test will not pass. With --immediate, no
|
||||||
|
# cleanup is done to help diagnose what went wrong.
|
||||||
|
#
|
||||||
|
# This is one of the prefix functions to be used inside test_expect_success or
|
||||||
|
# test_expect_failure.
|
||||||
|
#
|
||||||
|
# $1.. - Commands to prepend to the list of cleanup commands.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# test_expect_success 'test core.capslock' '
|
||||||
|
# git config core.capslock true &&
|
||||||
|
# test_when_finished "git config --unset core.capslock" &&
|
||||||
|
# do_something
|
||||||
|
# '
|
||||||
|
#
|
||||||
|
# Returns the exit code of the last cleanup command executed.
|
||||||
|
test_when_finished() {
|
||||||
|
test_cleanup="{ $*
|
||||||
|
} && (exit \"\$eval_ret\"); eval_ret=\$?; $test_cleanup"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Schedule cleanup commands to be run unconditionally when all tests
|
||||||
|
# have run.
|
||||||
|
#
|
||||||
|
# This can be used to clean up things like test databases. It is not needed to
|
||||||
|
# clean up temporary files, as test_done already does that.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# cleanup mysql -e "DROP DATABASE mytest"
|
||||||
|
#
|
||||||
|
# Returns the exit code of the last cleanup command executed.
|
||||||
|
final_cleanup=
|
||||||
|
cleanup() {
|
||||||
|
final_cleanup="{ $*
|
||||||
|
} && (exit \"\$eval_ret\"); eval_ret=\$?; $final_cleanup"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Summarize test results and exit with an appropriate error code.
|
||||||
|
#
|
||||||
|
# Must be called at the end of each test script.
|
||||||
|
#
|
||||||
|
# Can also be used to stop tests early and skip all remaining tests. For this,
|
||||||
|
# set skip_all to a string explaining why the tests were skipped before calling
|
||||||
|
# test_done.
|
||||||
|
#
|
||||||
|
# Examples
|
||||||
|
#
|
||||||
|
# # Each test script must call test_done at the end.
|
||||||
|
# test_done
|
||||||
|
#
|
||||||
|
# # Skip all remaining tests if prerequisite is not set.
|
||||||
|
# if ! test_have_prereq PERL; then
|
||||||
|
# skip_all='skipping perl interface tests, perl not available'
|
||||||
|
# test_done
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# Returns 0 if all tests passed or 1 if there was a failure.
|
||||||
|
test_done() {
|
||||||
|
EXIT_OK=t
|
||||||
|
|
||||||
|
if test -z "$HARNESS_ACTIVE"; then
|
||||||
|
test_results_dir="$SHARNESS_TEST_DIRECTORY/test-results"
|
||||||
|
mkdir -p "$test_results_dir"
|
||||||
|
test_results_path="$test_results_dir/$this_test.$$.counts"
|
||||||
|
|
||||||
|
cat >>"$test_results_path" <<-EOF
|
||||||
|
total $test_count
|
||||||
|
success $test_success
|
||||||
|
fixed $test_fixed
|
||||||
|
broken $test_broken
|
||||||
|
failed $test_failure
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$test_fixed" != 0; then
|
||||||
|
say_color error "# $test_fixed known breakage(s) vanished; please update test(s)"
|
||||||
|
fi
|
||||||
|
if test "$test_broken" != 0; then
|
||||||
|
say_color warn "# still have $test_broken known breakage(s)"
|
||||||
|
fi
|
||||||
|
if test "$test_broken" != 0 || test "$test_fixed" != 0; then
|
||||||
|
test_remaining=$(( $test_count - $test_broken - $test_fixed ))
|
||||||
|
msg="remaining $test_remaining test(s)"
|
||||||
|
else
|
||||||
|
test_remaining=$test_count
|
||||||
|
msg="$test_count test(s)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$test_failure" in
|
||||||
|
0)
|
||||||
|
# Maybe print SKIP message
|
||||||
|
if test -n "$skip_all" && test $test_count -gt 0; then
|
||||||
|
error "Can't use skip_all after running some tests"
|
||||||
|
fi
|
||||||
|
[ -z "$skip_all" ] || skip_all=" # SKIP $skip_all"
|
||||||
|
|
||||||
|
if test $test_remaining -gt 0; then
|
||||||
|
say_color pass "# passed all $msg"
|
||||||
|
fi
|
||||||
|
say "1..$test_count$skip_all"
|
||||||
|
|
||||||
|
test_eval_ "$final_cleanup"
|
||||||
|
|
||||||
|
test -d "$remove_trash" &&
|
||||||
|
cd "$(dirname "$remove_trash")" &&
|
||||||
|
rm -rf "$(basename "$remove_trash")"
|
||||||
|
|
||||||
|
exit 0 ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
say_color error "# failed $test_failure among $msg"
|
||||||
|
say "1..$test_count"
|
||||||
|
|
||||||
|
exit 1 ;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Root directory containing tests. Tests can override this variable,
|
||||||
|
# e.g. for testing Sharness itself.
|
||||||
|
: ${SHARNESS_TEST_DIRECTORY:=$(pwd)}
|
||||||
|
export SHARNESS_TEST_DIRECTORY
|
||||||
|
|
||||||
|
# Public: Source directory of test code and sharness library.
|
||||||
|
# This directory may be different from the directory in which tests are
|
||||||
|
# being run.
|
||||||
|
: ${SHARNESS_TEST_SRCDIR:=$(cd $(dirname $0) && pwd)}
|
||||||
|
export SHARNESS_TEST_SRCDIR
|
||||||
|
|
||||||
|
# Public: Build directory that will be added to PATH. By default, it is set to
|
||||||
|
# the parent directory of SHARNESS_TEST_DIRECTORY.
|
||||||
|
: ${SHARNESS_BUILD_DIRECTORY:="$SHARNESS_TEST_DIRECTORY/.."}
|
||||||
|
PATH="$SHARNESS_BUILD_DIRECTORY:$PATH"
|
||||||
|
export PATH SHARNESS_BUILD_DIRECTORY
|
||||||
|
|
||||||
|
# Public: Path to test script currently executed.
|
||||||
|
SHARNESS_TEST_FILE="$0"
|
||||||
|
export SHARNESS_TEST_FILE
|
||||||
|
|
||||||
|
# Prepare test area.
|
||||||
|
SHARNESS_TRASH_DIRECTORY="trash directory.$(basename "$SHARNESS_TEST_FILE" ".$SHARNESS_TEST_EXTENSION")"
|
||||||
|
test -n "$root" && SHARNESS_TRASH_DIRECTORY="$root/$SHARNESS_TRASH_DIRECTORY"
|
||||||
|
case "$SHARNESS_TRASH_DIRECTORY" in
|
||||||
|
/*) ;; # absolute path is good
|
||||||
|
*) SHARNESS_TRASH_DIRECTORY="$SHARNESS_TEST_DIRECTORY/$SHARNESS_TRASH_DIRECTORY" ;;
|
||||||
|
esac
|
||||||
|
test "$debug" = "t" || remove_trash="$SHARNESS_TRASH_DIRECTORY"
|
||||||
|
rm -rf "$SHARNESS_TRASH_DIRECTORY" || {
|
||||||
|
EXIT_OK=t
|
||||||
|
echo >&5 "FATAL: Cannot prepare test area"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Load any extensions in $srcdir/sharness.d/*.sh
|
||||||
|
#
|
||||||
|
if test -d "${SHARNESS_TEST_SRCDIR}/sharness.d"
|
||||||
|
then
|
||||||
|
for file in "${SHARNESS_TEST_SRCDIR}"/sharness.d/*.sh
|
||||||
|
do
|
||||||
|
# Ensure glob was not an empty match:
|
||||||
|
test -e "${file}" || break
|
||||||
|
|
||||||
|
if test -n "$debug"
|
||||||
|
then
|
||||||
|
echo >&5 "sharness: loading extensions from ${file}"
|
||||||
|
fi
|
||||||
|
. "${file}"
|
||||||
|
if test $? != 0
|
||||||
|
then
|
||||||
|
echo >&5 "sharness: Error loading ${file}. Aborting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Public: Empty trash directory, the test area, provided for each test. The HOME
|
||||||
|
# variable is set to that directory too.
|
||||||
|
export SHARNESS_TRASH_DIRECTORY
|
||||||
|
|
||||||
|
HOME="$SHARNESS_TRASH_DIRECTORY"
|
||||||
|
export HOME
|
||||||
|
|
||||||
|
mkdir -p "$SHARNESS_TRASH_DIRECTORY" || exit 1
|
||||||
|
# Use -P to resolve symlinks in our working directory so that the cwd
|
||||||
|
# in subprocesses like git equals our $PWD (for pathname comparisons).
|
||||||
|
cd -P "$SHARNESS_TRASH_DIRECTORY" || exit 1
|
||||||
|
|
||||||
|
this_test=${SHARNESS_TEST_FILE##*/}
|
||||||
|
this_test=${this_test%.$SHARNESS_TEST_EXTENSION}
|
||||||
|
for skp in $SKIP_TESTS; do
|
||||||
|
case "$this_test" in
|
||||||
|
$skp)
|
||||||
|
say_color info >&3 "skipping test $this_test altogether"
|
||||||
|
skip_all="skip all tests in $this_test"
|
||||||
|
test_done
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -n "$TEST_LONG" && test_set_prereq EXPENSIVE
|
||||||
|
test -n "$TEST_INTERACTIVE" && test_set_prereq INTERACTIVE
|
||||||
|
|
||||||
|
# Make sure this script ends with code 0
|
||||||
|
:
|
||||||
|
|
||||||
|
# vi: set ts=4 sw=4 noet :
|
28
test/t1100-git-auth.sh
Executable file
28
test/t1100-git-auth.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='git-auth tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test basic authentication.' '
|
||||||
|
"$GIT_AUTH" "$AUTH_KEYTYPE_USER" "$AUTH_KEYTEXT_USER" >out &&
|
||||||
|
grep -q AUR_USER=user out &&
|
||||||
|
grep -q AUR_PRIVILEGED=0 out
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test Trusted User authentication.' '
|
||||||
|
"$GIT_AUTH" "$AUTH_KEYTYPE_TU" "$AUTH_KEYTEXT_TU" >out &&
|
||||||
|
grep -q AUR_USER=tu out &&
|
||||||
|
grep -q AUR_PRIVILEGED=1 out
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test authentication with an unsupported key type.' '
|
||||||
|
test_must_fail "$GIT_AUTH" ssh-xxx "$AUTH_KEYTEXT_USER"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test authentication with a wrong key.' '
|
||||||
|
"$GIT_AUTH" "$AUTH_KEYTYPE_MISSING" "$AUTH_KEYTEXT_MISSING" >out
|
||||||
|
test_must_be_empty out
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
343
test/t1200-git-serve.sh
Executable file
343
test/t1200-git-serve.sh
Executable file
|
@ -0,0 +1,343 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='git-serve tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test interactive shell.' '
|
||||||
|
"$GIT_SERVE" 2>&1 | grep -q "Interactive shell is disabled."
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test help.' '
|
||||||
|
SSH_ORIGINAL_COMMAND=help "$GIT_SERVE" 2>actual &&
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=
|
||||||
|
while read -r line; do
|
||||||
|
echo $line | grep -q "^Commands:$" && continue
|
||||||
|
echo $line | grep -q "^ [a-z]" || return 1
|
||||||
|
[ ${#line} -le 80 ] || return 1
|
||||||
|
done <actual
|
||||||
|
IFS=$save_IFS
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test setup-repo and list-repos.' '
|
||||||
|
SSH_ORIGINAL_COMMAND="setup-repo foobar" AUR_USER=user \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="setup-repo foobar2" AUR_USER=tu \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test git-receive-pack.' '
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
user
|
||||||
|
foobar
|
||||||
|
foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="git-receive-pack /foobar.git/" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test git-receive-pack with an invalid repository name.' '
|
||||||
|
SSH_ORIGINAL_COMMAND="git-receive-pack /!.git/" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1 >actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Test git-upload-pack." '
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
user
|
||||||
|
foobar
|
||||||
|
foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="git-upload-pack /foobar.git/" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to pull from someone else's repository." '
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
user
|
||||||
|
foobar2
|
||||||
|
foobar2
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="git-upload-pack /foobar2.git/" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to push to someone else's repository." '
|
||||||
|
SSH_ORIGINAL_COMMAND="git-receive-pack /foobar2.git/" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to push to someone else's repository as Trusted User." '
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
tu
|
||||||
|
foobar
|
||||||
|
foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="git-receive-pack /foobar.git/" \
|
||||||
|
AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Test restore." '
|
||||||
|
echo "DELETE FROM PackageBases WHERE Name = \"foobar\";" | \
|
||||||
|
sqlite3 aur.db &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
user
|
||||||
|
foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="restore foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to restore an existing package base." '
|
||||||
|
SSH_ORIGINAL_COMMAND="restore foobar2" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Disown all package bases." '
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Adopt a package base as a regular user." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Adopt an already adopted package base." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Adopt a package base as a Trusted User." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar2
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Disown one's own package base as a regular user." '
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Disown one's own package base as a Trusted User." '
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to steal another user's package as a regular user." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar2
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to steal another user's package as a Trusted User." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to disown another user's package as a regular user." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar2
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to disown another user's package as a Trusted User." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Adopt a package base and add co-maintainers." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
SSH_ORIGINAL_COMMAND="set-comaintainers foobar user3 user4" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
5|3|1
|
||||||
|
6|3|2
|
||||||
|
EOF
|
||||||
|
echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
|
||||||
|
sqlite3 aur.db >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Update package base co-maintainers." '
|
||||||
|
SSH_ORIGINAL_COMMAND="set-comaintainers foobar user2 user3 user4" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
4|3|1
|
||||||
|
5|3|2
|
||||||
|
6|3|3
|
||||||
|
EOF
|
||||||
|
echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
|
||||||
|
sqlite3 aur.db >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Try to add co-maintainers to an orphan package base." '
|
||||||
|
SSH_ORIGINAL_COMMAND="set-comaintainers foobar2 user2 user3 user4" \
|
||||||
|
AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
4|3|1
|
||||||
|
5|3|2
|
||||||
|
6|3|3
|
||||||
|
EOF
|
||||||
|
echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
|
||||||
|
sqlite3 aur.db >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Disown a package base and check (co-)maintainer list." '
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
*foobar
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user2 AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
5|3|1
|
||||||
|
6|3|2
|
||||||
|
EOF
|
||||||
|
echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
|
||||||
|
sqlite3 aur.db >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Force-disown a package base and check (co-)maintainer list." '
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user3 AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
EOF
|
||||||
|
echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
|
||||||
|
sqlite3 aur.db >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "Check whether package requests are closed when disowning." '
|
||||||
|
SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat <<-EOD | sqlite3 aur.db &&
|
||||||
|
INSERT INTO PackageRequests (ID, ReqTypeID, PackageBaseID, PackageBaseName, UsersID) VALUES (1, 2, 3, "foobar", 4);
|
||||||
|
INSERT INTO PackageRequests (ID, ReqTypeID, PackageBaseID, PackageBaseName, UsersID) VALUES (2, 3, 3, "foobar", 5);
|
||||||
|
INSERT INTO PackageRequests (ID, ReqTypeID, PackageBaseID, PackageBaseName, UsersID) VALUES (3, 2, 2, "foobar2", 6);
|
||||||
|
EOD
|
||||||
|
>sendmail.out &&
|
||||||
|
SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=user AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_SERVE" 2>&1 &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
Subject: [PRQ#1] Request Accepted
|
||||||
|
EOD
|
||||||
|
grep "^Subject.*PRQ" sendmail.out >sendmail.parts &&
|
||||||
|
test_cmp sendmail.parts expected &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
1|2|3|foobar||4||The user user disowned the package.|0|2
|
||||||
|
EOD
|
||||||
|
echo "SELECT * FROM PackageRequests WHERE Status = 2;" | sqlite3 aur.db >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
464
test/t1300-git-update.sh
Executable file
464
test/t1300-git-update.sh
Executable file
|
@ -0,0 +1,464 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='git-update tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test update hook on a fresh repository.' '
|
||||||
|
old=0000000000000000000000000000000000000000 &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD^) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
1|1|foobar|1-1|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
1|GPL
|
||||||
|
1|1
|
||||||
|
1|1|python-pygit2||
|
||||||
|
1|1
|
||||||
|
EOF
|
||||||
|
>actual &&
|
||||||
|
for t in Packages Licenses PackageLicenses Groups PackageGroups \
|
||||||
|
PackageDepends PackageRelations PackageSources \
|
||||||
|
PackageNotifications; do
|
||||||
|
echo "SELECT * FROM $t;" | sqlite3 aur.db >>actual
|
||||||
|
done &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test update hook on another fresh repository.' '
|
||||||
|
old=0000000000000000000000000000000000000000 &&
|
||||||
|
test_when_finished "git -C aur.git checkout refs/namespaces/foobar/refs/heads/master" &&
|
||||||
|
git -C aur.git checkout -q refs/namespaces/foobar2/refs/heads/master &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar2 AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
1|1|foobar|1-1|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
2|2|foobar2|1-1|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
1|GPL
|
||||||
|
2|MIT
|
||||||
|
1|1
|
||||||
|
2|2
|
||||||
|
1|1|python-pygit2||
|
||||||
|
2|1|python-pygit2||
|
||||||
|
1|1
|
||||||
|
2|1
|
||||||
|
EOF
|
||||||
|
>actual &&
|
||||||
|
for t in Packages Licenses PackageLicenses Groups PackageGroups \
|
||||||
|
PackageDepends PackageRelations PackageSources \
|
||||||
|
PackageNotifications; do
|
||||||
|
echo "SELECT * FROM $t;" | sqlite3 aur.db >>actual
|
||||||
|
done &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test update hook on an updated repository.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD^) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
2|2|foobar2|1-1|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
3|1|foobar|1-2|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
1|GPL
|
||||||
|
2|MIT
|
||||||
|
2|2
|
||||||
|
3|1
|
||||||
|
2|1|python-pygit2||
|
||||||
|
3|1|python-pygit2||
|
||||||
|
1|1
|
||||||
|
2|1
|
||||||
|
EOF
|
||||||
|
>actual &&
|
||||||
|
for t in Packages Licenses PackageLicenses Groups PackageGroups \
|
||||||
|
PackageDepends PackageRelations PackageSources \
|
||||||
|
PackageNotifications; do
|
||||||
|
echo "SELECT * FROM $t;" | sqlite3 aur.db >>actual
|
||||||
|
done &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test restore mode.' '
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_UPDATE" restore 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
2|2|foobar2|1-1|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
3|1|foobar|1-2|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
1|GPL
|
||||||
|
2|MIT
|
||||||
|
2|2
|
||||||
|
3|1
|
||||||
|
2|1|python-pygit2||
|
||||||
|
3|1|python-pygit2||
|
||||||
|
1|1
|
||||||
|
2|1
|
||||||
|
EOF
|
||||||
|
>actual &&
|
||||||
|
for t in Packages Licenses PackageLicenses Groups PackageGroups \
|
||||||
|
PackageDepends PackageRelations PackageSources \
|
||||||
|
PackageNotifications; do
|
||||||
|
echo "SELECT * FROM $t;" | sqlite3 aur.db >>actual
|
||||||
|
done &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test restore mode on a non-existent repository.' '
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
error: restore: repository not found: foobar3
|
||||||
|
EOD
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar3 AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" restore >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing to a branch other than master.' '
|
||||||
|
old=0000000000000000000000000000000000000000 &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
error: pushing to a branch other than master is restricted
|
||||||
|
EOD
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/pu "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Performing a non-fast-forward ref update.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD^) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
error: denying non-fast-forward (you should pull first)
|
||||||
|
EOD
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Performing a non-fast-forward ref update as Trusted User.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD^) &&
|
||||||
|
AUR_USER=tu AUR_PKGBASE=foobar AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Removing .SRCINFO.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
git -C aur.git rm -q .SRCINFO &&
|
||||||
|
git -C aur.git commit -q -m "Remove .SRCINFO" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing .SRCINFO$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Removing .SRCINFO with a follow-up fix.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
git -C aur.git rm -q .SRCINFO &&
|
||||||
|
git -C aur.git commit -q -m "Remove .SRCINFO" &&
|
||||||
|
git -C aur.git revert --no-edit HEAD &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing .SRCINFO$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Removing PKGBUILD.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
git -C aur.git rm -q PKGBUILD &&
|
||||||
|
git -C aur.git commit -q -m "Remove PKGBUILD" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing PKGBUILD$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing a tree with a subdirectory.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
mkdir aur.git/subdir &&
|
||||||
|
touch aur.git/subdir/file &&
|
||||||
|
git -C aur.git add subdir/file &&
|
||||||
|
git -C aur.git commit -q -m "Add subdirectory" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: the repository must not contain subdirectories$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing a tree with a large blob.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
printf "%256001s" x >aur.git/file &&
|
||||||
|
git -C aur.git add file &&
|
||||||
|
git -C aur.git commit -q -m "Add large blob" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: maximum blob size (250.00KiB) exceeded$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with a non-matching package base.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/\(pkgbase.*\)foobar/\1foobar2/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Change package base"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: invalid pkgbase: foobar2, expected foobar$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with invalid syntax.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/=//" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Break .SRCINFO"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" 2>&1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO without pkgver.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "/pkgver/d" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Remove pkgver"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing mandatory field: pkgver$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO without pkgrel.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "/pkgrel/d" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Remove pkgrel"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing mandatory field: pkgrel$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with epoch.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/.*pkgrel.*/\\0\\nepoch = 1/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Add epoch"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" 2>&1 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
2|2|foobar2|1-1|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
3|1|foobar|1:1-2|aurweb test package.|https://aur.archlinux.org/
|
||||||
|
EOF
|
||||||
|
echo "SELECT * FROM Packages;" | sqlite3 aur.db >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with invalid pkgname.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/\(pkgname.*\)foobar/\1!/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Change pkgname"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: invalid package name: !$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with invalid epoch.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/.*pkgrel.*/\\0\\nepoch = !/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Change epoch"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: invalid epoch: !$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with too long URL.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
url="http://$(printf "%7993s" x | sed "s/ /x/g")/" &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s#.*url.*#\\0\\nurl = $url#" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Change URL"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: url field too long: $url\$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Missing install file.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/.*depends.*/\\0\\ninstall = install/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Add install field"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing install file: install$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Missing changelog file.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/.*depends.*/\\0\\nchangelog = changelog/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Add changelog field"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing changelog file: changelog$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Missing source file.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s/.*depends.*/\\0\\nsource = file/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Add file to the source array"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: missing source file: file$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with too long source URL.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
url="http://$(printf "%7993s" x | sed "s/ /x/g")/" &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s#.*depends.*#\\0\\nsource = $url#" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Add huge source URL"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: source entry too long: $url\$" actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing a blacklisted package.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
echo "pkgname = forbidden" >>aur.git/.SRCINFO &&
|
||||||
|
git -C aur.git commit -q -am "Add blacklisted package" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
error: package is blacklisted: forbidden
|
||||||
|
EOD
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing a blacklisted package as Trusted User.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
echo "pkgname = forbidden" >>aur.git/.SRCINFO &&
|
||||||
|
git -C aur.git commit -q -am "Add blacklisted package" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
warning: package is blacklisted: forbidden
|
||||||
|
EOD
|
||||||
|
AUR_USER=tu AUR_PKGBASE=foobar AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing a package already in the official repositories.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
echo "pkgname = official" >>aur.git/.SRCINFO &&
|
||||||
|
git -C aur.git commit -q -am "Add official package" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
error: package already provided by [core]: official
|
||||||
|
EOD
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing a package already in the official repositories as Trusted User.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
echo "pkgname = official" >>aur.git/.SRCINFO &&
|
||||||
|
git -C aur.git commit -q -am "Add official package" &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
warning: package already provided by [core]: official
|
||||||
|
EOD
|
||||||
|
AUR_USER=tu AUR_PKGBASE=foobar AUR_PRIVILEGED=1 \
|
||||||
|
"$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Trying to hijack a package.' '
|
||||||
|
old=0000000000000000000000000000000000000000 &&
|
||||||
|
test_when_finished "git -C aur.git checkout refs/namespaces/foobar/refs/heads/master" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
git checkout -q refs/namespaces/foobar2/refs/heads/master &&
|
||||||
|
sed "s/\\(.*pkgname.*\\)2/\\1/" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Change package name"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
cat >expected <<-EOD &&
|
||||||
|
error: cannot overwrite package: foobar
|
||||||
|
EOD
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar2 AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
47
test/t2100-mkpkglists.sh
Executable file
47
test/t2100-mkpkglists.sh
Executable file
|
@ -0,0 +1,47 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='mkpkglists tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test package list generation with no packages.' '
|
||||||
|
echo "DELETE FROM Packages;" | sqlite3 aur.db &&
|
||||||
|
echo "DELETE FROM PackageBases;" | sqlite3 aur.db &&
|
||||||
|
"$MKPKGLISTS" &&
|
||||||
|
test $(zcat packages.gz | wc -l) -eq 1 &&
|
||||||
|
test $(zcat pkgbase.gz | wc -l) -eq 1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Test package list generation.' '
|
||||||
|
cat <<-EOD | sqlite3 aur.db &&
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (1, "foobar", 1, 0, 0);
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (2, "foobar2", 2, 0, 0);
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (3, "foobar3", NULL, 0, 0);
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (4, "foobar4", 1, 0, 0);
|
||||||
|
INSERT INTO Packages (ID, PackageBaseID, Name) VALUES (1, 1, "pkg1");
|
||||||
|
INSERT INTO Packages (ID, PackageBaseID, Name) VALUES (2, 1, "pkg2");
|
||||||
|
INSERT INTO Packages (ID, PackageBaseID, Name) VALUES (3, 1, "pkg3");
|
||||||
|
INSERT INTO Packages (ID, PackageBaseID, Name) VALUES (4, 2, "pkg4");
|
||||||
|
INSERT INTO Packages (ID, PackageBaseID, Name) VALUES (5, 3, "pkg5");
|
||||||
|
EOD
|
||||||
|
"$MKPKGLISTS" &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
foobar
|
||||||
|
foobar2
|
||||||
|
foobar4
|
||||||
|
EOD
|
||||||
|
gunzip pkgbase.gz &&
|
||||||
|
sed "/^#/d" pkgbase >actual &&
|
||||||
|
test_cmp actual expected &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
pkg1
|
||||||
|
pkg2
|
||||||
|
pkg3
|
||||||
|
pkg4
|
||||||
|
EOD
|
||||||
|
gunzip packages.gz &&
|
||||||
|
sed "/^#/d" packages >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
53
test/t2200-tuvotereminder.sh
Executable file
53
test/t2200-tuvotereminder.sh
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='tuvotereminder tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test Trusted User vote reminders.' '
|
||||||
|
now=$(date -d now +%s) &&
|
||||||
|
tomorrow=$(date -d tomorrow +%s) &&
|
||||||
|
threedays=$(date -d "3 days" +%s) &&
|
||||||
|
cat <<-EOD | sqlite3 aur.db &&
|
||||||
|
INSERT INTO TU_VoteInfo (ID, Agenda, User, Submitted, End, Quorum, SubmitterID) VALUES (1, "Lorem ipsum.", "user", 0, $now, 0.00, 2);
|
||||||
|
INSERT INTO TU_VoteInfo (ID, Agenda, User, Submitted, End, Quorum, SubmitterID) VALUES (2, "Lorem ipsum.", "user", 0, $tomorrow, 0.00, 2);
|
||||||
|
INSERT INTO TU_VoteInfo (ID, Agenda, User, Submitted, End, Quorum, SubmitterID) VALUES (3, "Lorem ipsum.", "user", 0, $tomorrow, 0.00, 2);
|
||||||
|
INSERT INTO TU_VoteInfo (ID, Agenda, User, Submitted, End, Quorum, SubmitterID) VALUES (4, "Lorem ipsum.", "user", 0, $threedays, 0.00, 2);
|
||||||
|
EOD
|
||||||
|
>sendmail.out &&
|
||||||
|
"$TUVOTEREMINDER" &&
|
||||||
|
grep -q "Proposal 2" sendmail.out &&
|
||||||
|
grep -q "Proposal 3" sendmail.out &&
|
||||||
|
test_must_fail grep -q "Proposal 1" sendmail.out &&
|
||||||
|
test_must_fail grep -q "Proposal 4" sendmail.out
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Check that only TUs who did not vote receive reminders.' '
|
||||||
|
cat <<-EOD | sqlite3 aur.db &&
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (1, 2);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (2, 2);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (3, 2);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (4, 2);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (1, 7);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (3, 7);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (2, 8);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (4, 8);
|
||||||
|
INSERT INTO TU_Votes (VoteID, UserID) VALUES (1, 9);
|
||||||
|
EOD
|
||||||
|
>sendmail.out &&
|
||||||
|
"$TUVOTEREMINDER" &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
Subject: TU Vote Reminder: Proposal 2
|
||||||
|
To: tu2@localhost
|
||||||
|
Subject: TU Vote Reminder: Proposal 2
|
||||||
|
To: tu4@localhost
|
||||||
|
Subject: TU Vote Reminder: Proposal 3
|
||||||
|
To: tu3@localhost
|
||||||
|
Subject: TU Vote Reminder: Proposal 3
|
||||||
|
To: tu4@localhost
|
||||||
|
EOD
|
||||||
|
grep "^\(Subject\|To\)" sendmail.out >sendmail.parts &&
|
||||||
|
test_cmp sendmail.parts expected
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
26
test/t2300-pkgmaint.sh
Executable file
26
test/t2300-pkgmaint.sh
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='pkgmaint tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test package base cleanup script.' '
|
||||||
|
now=$(date -d now +%s) &&
|
||||||
|
threedaysago=$(date -d "3 days ago" +%s) &&
|
||||||
|
cat <<-EOD | sqlite3 aur.db &&
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (1, "foobar", 1, $now, 0);
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (2, "foobar2", 2, $threedaysago, 0);
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (3, "foobar3", NULL, $now, 0);
|
||||||
|
INSERT INTO PackageBases (ID, Name, PackagerUID, SubmittedTS, ModifiedTS) VALUES (4, "foobar4", NULL, $threedaysago, 0);
|
||||||
|
EOD
|
||||||
|
"$PKGMAINT" &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
foobar
|
||||||
|
foobar2
|
||||||
|
foobar3
|
||||||
|
EOD
|
||||||
|
echo "SELECT Name FROM PackageBases;" | sqlite3 aur.db >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
53
test/t2400-aurblup.sh
Executable file
53
test/t2400-aurblup.sh
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='aurblup tests'
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
test_expect_success 'Test official provider update script.' '
|
||||||
|
mkdir -p remote/test/foobar-1.0-1 &&
|
||||||
|
cat <<-EOD >remote/test/foobar-1.0-1/desc &&
|
||||||
|
%FILENAME%
|
||||||
|
foobar-1.0-any.pkg.tar.xz
|
||||||
|
|
||||||
|
%NAME%
|
||||||
|
foobar
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
1.0-1
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
any
|
||||||
|
EOD
|
||||||
|
mkdir -p remote/test/foobar2-1.0-1 &&
|
||||||
|
cat <<-EOD >remote/test/foobar2-1.0-1/desc &&
|
||||||
|
%FILENAME%
|
||||||
|
foobar2-1.0-any.pkg.tar.xz
|
||||||
|
|
||||||
|
%NAME%
|
||||||
|
foobar2
|
||||||
|
|
||||||
|
%VERSION%
|
||||||
|
1.0-1
|
||||||
|
|
||||||
|
%ARCH%
|
||||||
|
any
|
||||||
|
|
||||||
|
%PROVIDES%
|
||||||
|
foobar3
|
||||||
|
foobar4
|
||||||
|
EOD
|
||||||
|
( cd remote/test && bsdtar -czf ../test.db * ) &&
|
||||||
|
mkdir sync &&
|
||||||
|
"$AURBLUP" &&
|
||||||
|
cat <<-EOD >expected &&
|
||||||
|
foobar|test|foobar
|
||||||
|
foobar2|test|foobar2
|
||||||
|
foobar2|test|foobar3
|
||||||
|
foobar2|test|foobar4
|
||||||
|
EOD
|
||||||
|
echo "SELECT Name, Repo, Provides FROM OfficialProviders ORDER BY Provides;" | sqlite3 aur.db >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
29
upgrading/4.3.0.txt
Normal file
29
upgrading/4.3.0.txt
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
1. Add a column to store ownership notification settings:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE Users ADD COLUMN OwnershipNotify TINYINT(1) NOT NULL DEFAULT 1;
|
||||||
|
----
|
||||||
|
|
||||||
|
2. Resize the LastLoginIPAddress column:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE Users MODIFY LastLoginIPAddress VARCHAR(45) NULL DEFAULT NULL;
|
||||||
|
----
|
||||||
|
|
||||||
|
3. Add a new column to store repository information of official providers:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE OfficialProviders ADD COLUMN Repo VARCHAR(64) NOT NULL;
|
||||||
|
----
|
||||||
|
|
||||||
|
4. Add a column to store users' homepages:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE Users ADD COLUMN Homepage TEXT NULL DEFAULT NULL;
|
||||||
|
----
|
||||||
|
|
||||||
|
5. Resize LangPreference to fit Latin American Spanish language code:
|
||||||
|
|
||||||
|
--
|
||||||
|
ALTER TABLE Users MODIFY LangPreference VARCHAR(6);
|
||||||
|
--
|
17
upgrading/4.4.0.txt
Normal file
17
upgrading/4.4.0.txt
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
1. Resize the URL column of the Packages table:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE Packages MODIFY URL VARCHAR(8000) NULL DEFAULT NULL;
|
||||||
|
----
|
||||||
|
|
||||||
|
2. Resize the Source column of the PackageSources table:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE PackageSources
|
||||||
|
MODIFY Source VARCHAR(8000) NOT NULL DEFAULT "/dev/null";
|
||||||
|
----
|
||||||
|
|
||||||
|
3. The location of the Git interface scripts was changed. Make sure you update
|
||||||
|
your aurweb configuration, as well as the SSH daemon and AUR Git repository
|
||||||
|
configurations to point to the new wrapper scripts which are located in
|
||||||
|
/usr/local/bin/ by default.
|
6
upgrading/4.4.1.txt
Normal file
6
upgrading/4.4.1.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
1. The default configuration file search path now points to /etc/aurweb/config.
|
||||||
|
Make sure you copy your aurweb configuration to the new location before
|
||||||
|
upgrading.
|
||||||
|
|
||||||
|
2. The maintenance scripts have been prefixed by "aurweb-" and can now be
|
||||||
|
installed using `python3 setup.py install`.
|
|
@ -2,12 +2,45 @@
|
||||||
|
|
||||||
set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');
|
set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');
|
||||||
|
|
||||||
|
$path = $_SERVER['PATH_INFO'];
|
||||||
|
$tokens = explode('/', $path);
|
||||||
|
|
||||||
|
if (preg_match('/^([a-z0-9][a-z0-9.+_-]*?)(\.git)?$/', $tokens[1], $matches)) {
|
||||||
|
$gitpkg = $matches[1];
|
||||||
|
if (pkg_from_name($gitpkg)) {
|
||||||
|
$gitcmd = 'git clone ' . sprintf(config_get('options', 'git_clone_uri_anon'), htmlspecialchars($gitpkg));
|
||||||
|
$gitlink = get_pkgbase_uri($gitpkg);
|
||||||
|
} else {
|
||||||
|
unset($gitpkg);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unset($gitpkg);
|
||||||
|
}
|
||||||
|
|
||||||
html_header( __("Page Not Found") );
|
html_header( __("Page Not Found") );
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div id="error-page" class="box 404">
|
<div id="error-page" class="box 404">
|
||||||
<h2>404 - <?= __("Page Not Found") ?></h2>
|
<h2>404 - <?= __("Page Not Found") ?></h2>
|
||||||
<p><?= __("Sorry, the page you've requested does not exist.") ?></p>
|
<p><?= __("Sorry, the page you've requested does not exist.") ?></p>
|
||||||
|
<?php if (isset($gitpkg)): ?>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong><?= __("Note") ?>:</strong>
|
||||||
|
<?= __("Git clone URLs are not meant to be opened in a browser.") ?>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<?= __("To clone the Git repository of %s, run %s.",
|
||||||
|
'<strong>' . htmlspecialchars($gitpkg) . '</strong>',
|
||||||
|
'<code>' . htmlspecialchars($gitcmd) . '</code>') ?>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<?= __("Click %shere%s to return to the %s details page.",
|
||||||
|
'<a href="' . htmlspecialchars($gitlink, ENT_QUOTES) . '">', '</a>',
|
||||||
|
'<strong>' . htmlspecialchars($gitpkg) . '</strong>') ?>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
|
@ -34,9 +34,10 @@ if ($action == "UpdateAccount") {
|
||||||
in_request("U"), in_request("T"), in_request("S"),
|
in_request("U"), in_request("T"), in_request("S"),
|
||||||
in_request("E"), in_request("H"), in_request("P"),
|
in_request("E"), in_request("H"), in_request("P"),
|
||||||
in_request("C"), in_request("R"), in_request("L"),
|
in_request("C"), in_request("R"), in_request("L"),
|
||||||
in_request("I"), in_request("K"), in_request("PK"),
|
in_request("HP"), in_request("I"), in_request("K"),
|
||||||
in_request("J"), in_request("CN"), in_request("UN"),
|
in_request("PK"), in_request("J"), in_request("CN"),
|
||||||
in_request("ID"), $row["Username"]);
|
in_request("UN"), in_request("ON"), in_request("ID"),
|
||||||
|
$row["Username"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,12 +79,26 @@ if (isset($_COOKIE["AURSID"])) {
|
||||||
} else {
|
} else {
|
||||||
/* Verify user has permission to edit the account */
|
/* Verify user has permission to edit the account */
|
||||||
if (can_edit_account($row)) {
|
if (can_edit_account($row)) {
|
||||||
display_account_form("UpdateAccount", $row["Username"],
|
display_account_form("UpdateAccount",
|
||||||
$row["AccountTypeID"], $row["Suspended"], $row["Email"],
|
$row["Username"],
|
||||||
$row["HideEmail"], "", "", $row["RealName"],
|
$row["AccountTypeID"],
|
||||||
$row["LangPreference"], $row["IRCNick"], $row["PGPKey"], $PK,
|
$row["Suspended"],
|
||||||
$row["InactivityTS"] ? 1 : 0, $row["CommentNotify"],
|
$row["Email"],
|
||||||
$row["UpdateNotify"], $row["ID"], $row["Username"]);
|
$row["HideEmail"],
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
$row["RealName"],
|
||||||
|
$row["LangPreference"],
|
||||||
|
$row["Homepage"],
|
||||||
|
$row["IRCNick"],
|
||||||
|
$row["PGPKey"],
|
||||||
|
$PK,
|
||||||
|
$row["InactivityTS"] ? 1 : 0,
|
||||||
|
$row["CommentNotify"],
|
||||||
|
$row["UpdateNotify"],
|
||||||
|
$row["OwnershipNotify"],
|
||||||
|
$row["ID"],
|
||||||
|
$row["Username"]);
|
||||||
} else {
|
} else {
|
||||||
print __("You do not have permission to edit this account.");
|
print __("You do not have permission to edit this account.");
|
||||||
}
|
}
|
||||||
|
@ -116,15 +131,26 @@ if (isset($_COOKIE["AURSID"])) {
|
||||||
print $update_account_message;
|
print $update_account_message;
|
||||||
|
|
||||||
if (!$success) {
|
if (!$success) {
|
||||||
display_account_form("UpdateAccount", in_request("U"),
|
display_account_form("UpdateAccount",
|
||||||
in_request("T"), in_request("S"),
|
in_request("U"),
|
||||||
in_request("E"), in_request("H"),
|
in_request("T"),
|
||||||
in_request("P"), in_request("C"),
|
in_request("S"),
|
||||||
in_request("R"), in_request("L"),
|
in_request("E"),
|
||||||
in_request("I"), in_request("K"),
|
in_request("H"),
|
||||||
in_request("PK"), in_request("J"),
|
in_request("P"),
|
||||||
in_request("CN"), in_request("UN"),
|
in_request("C"),
|
||||||
in_request("ID"), $row["Username"]);
|
in_request("R"),
|
||||||
|
in_request("L"),
|
||||||
|
in_request("HP"),
|
||||||
|
in_request("I"),
|
||||||
|
in_request("K"),
|
||||||
|
in_request("PK"),
|
||||||
|
in_request("J"),
|
||||||
|
in_request("CN"),
|
||||||
|
in_request("UN"),
|
||||||
|
in_request("ON"),
|
||||||
|
in_request("ID"),
|
||||||
|
$row["Username"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -148,3 +148,8 @@ label.confirmation,
|
||||||
color: red;
|
color: red;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#news div p {
|
||||||
|
max-height: 15em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
|
@ -167,10 +167,6 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) {
|
||||||
header("Content-Type: image/gif");
|
header("Content-Type: image/gif");
|
||||||
readfile("./$path");
|
readfile("./$path");
|
||||||
break;
|
break;
|
||||||
case "/css/archnavbar/archlogo.gif":
|
|
||||||
header("Content-Type: image/png");
|
|
||||||
readfile("./$path");
|
|
||||||
break;
|
|
||||||
case "/css/archnavbar/archlogo.png":
|
case "/css/archnavbar/archlogo.png":
|
||||||
case "/css/archnavbar/aurlogo.png":
|
case "/css/archnavbar/aurlogo.png":
|
||||||
case "/images/favicon.ico":
|
case "/images/favicon.ico":
|
||||||
|
|
|
@ -20,18 +20,47 @@ echo '<h2>' . __('Register') . '</h2>';
|
||||||
|
|
||||||
if (in_request("Action") == "NewAccount") {
|
if (in_request("Action") == "NewAccount") {
|
||||||
list($success, $message) = process_account_form(
|
list($success, $message) = process_account_form(
|
||||||
"new", "NewAccount", in_request("U"), 1, 0,
|
"new",
|
||||||
in_request("E"), in_request("H"), '', '', in_request("R"),
|
"NewAccount",
|
||||||
in_request("L"), in_request("I"), in_request("K"),
|
in_request("U"),
|
||||||
in_request("PK"), 0, in_request("CN"), in_request("UN"));
|
1,
|
||||||
|
0,
|
||||||
|
in_request("E"),
|
||||||
|
in_request("H"),
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
in_request("R"),
|
||||||
|
in_request("L"),
|
||||||
|
in_request("HP"),
|
||||||
|
in_request("I"),
|
||||||
|
in_request("K"),
|
||||||
|
in_request("PK"),
|
||||||
|
0,
|
||||||
|
in_request("CN"),
|
||||||
|
in_request("UN"),
|
||||||
|
in_request("ON"));
|
||||||
|
|
||||||
print $message;
|
print $message;
|
||||||
|
|
||||||
if (!$success) {
|
if (!$success) {
|
||||||
display_account_form("NewAccount", in_request("U"), 1, 0,
|
display_account_form("NewAccount",
|
||||||
in_request("E"), in_request("H"), '', '', in_request("R"),
|
in_request("U"),
|
||||||
in_request("L"), in_request("I"), in_request("K"),
|
1,
|
||||||
in_request("PK"), 0, in_request("CN"), in_request("UN"));
|
0,
|
||||||
|
in_request("E"),
|
||||||
|
in_request("H"),
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
in_request("R"),
|
||||||
|
in_request("L"),
|
||||||
|
in_request("HP"),
|
||||||
|
in_request("I"),
|
||||||
|
in_request("K"),
|
||||||
|
in_request("PK"),
|
||||||
|
0,
|
||||||
|
in_request("CN"),
|
||||||
|
in_request("UN"),
|
||||||
|
in_request("ON"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<p>' . __("Use this form to create an account.") . '</p>';
|
print '<p>' . __("Use this form to create an account.") . '</p>';
|
||||||
|
|
|
@ -52,19 +52,21 @@ function html_format_pgp_fingerprint($fingerprint) {
|
||||||
* @param string $C The confirmed password value of the displayed user
|
* @param string $C The confirmed password value of the displayed user
|
||||||
* @param string $R The real name of the displayed user
|
* @param string $R The real name of the displayed user
|
||||||
* @param string $L The language preference of the displayed user
|
* @param string $L The language preference of the displayed user
|
||||||
|
* @param string $HP The homepage of the displayed user
|
||||||
* @param string $I The IRC nickname of the displayed user
|
* @param string $I The IRC nickname of the displayed user
|
||||||
* @param string $K The PGP key fingerprint of the displayed user
|
* @param string $K The PGP key fingerprint of the displayed user
|
||||||
* @param string $PK The list of SSH public keys
|
* @param string $PK The list of SSH public keys
|
||||||
* @param string $J The inactivity status of the displayed user
|
* @param string $J The inactivity status of the displayed user
|
||||||
* @param string $CN Whether to notify of new comments
|
* @param string $CN Whether to notify of new comments
|
||||||
* @param string $UN Whether to notify of package updates
|
* @param string $UN Whether to notify of package updates
|
||||||
|
* @param string $ON Whether to notify of ownership changes
|
||||||
* @param string $UID The user ID of the displayed user
|
* @param string $UID The user ID of the displayed user
|
||||||
* @param string $N The username as present in the database
|
* @param string $N The username as present in the database
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function display_account_form($A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",$R="",
|
function display_account_form($A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",$R="",
|
||||||
$L="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$UID=0,$N="") {
|
$L="",$HP="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$ON="",$UID=0,$N="") {
|
||||||
global $SUPPORTED_LANGS;
|
global $SUPPORTED_LANGS;
|
||||||
|
|
||||||
include("account_edit_form.php");
|
include("account_edit_form.php");
|
||||||
|
@ -86,19 +88,21 @@ function display_account_form($A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",$R=""
|
||||||
* @param string $C The confirmed password for the user
|
* @param string $C The confirmed password for the user
|
||||||
* @param string $R The real name of the user
|
* @param string $R The real name of the user
|
||||||
* @param string $L The language preference of the user
|
* @param string $L The language preference of the user
|
||||||
|
* @param string $HP The homepage of the displayed user
|
||||||
* @param string $I The IRC nickname of the user
|
* @param string $I The IRC nickname of the user
|
||||||
* @param string $K The PGP fingerprint of the user
|
* @param string $K The PGP fingerprint of the user
|
||||||
* @param string $PK The list of public SSH keys
|
* @param string $PK The list of public SSH keys
|
||||||
* @param string $J The inactivity status of the user
|
* @param string $J The inactivity status of the user
|
||||||
* @param string $CN Whether to notify of new comments
|
* @param string $CN Whether to notify of new comments
|
||||||
* @param string $UN Whether to notify of package updates
|
* @param string $UN Whether to notify of package updates
|
||||||
|
* @param string $ON Whether to notify of ownership changes
|
||||||
* @param string $UID The user ID of the modified account
|
* @param string $UID The user ID of the modified account
|
||||||
* @param string $N The username as present in the database
|
* @param string $N The username as present in the database
|
||||||
*
|
*
|
||||||
* @return array Boolean indicating success and message to be printed
|
* @return array Boolean indicating success and message to be printed
|
||||||
*/
|
*/
|
||||||
function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",
|
function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",
|
||||||
$R="",$L="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$UID=0,$N="") {
|
$R="",$L="",$HP="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$ON="",$UID=0,$N="") {
|
||||||
global $SUPPORTED_LANGS;
|
global $SUPPORTED_LANGS;
|
||||||
|
|
||||||
$error = '';
|
$error = '';
|
||||||
|
@ -274,13 +278,14 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C=""
|
||||||
$salt = $dbh->quote($salt);
|
$salt = $dbh->quote($salt);
|
||||||
$R = $dbh->quote($R);
|
$R = $dbh->quote($R);
|
||||||
$L = $dbh->quote($L);
|
$L = $dbh->quote($L);
|
||||||
|
$HP = $dbh->quote($HP);
|
||||||
$I = $dbh->quote($I);
|
$I = $dbh->quote($I);
|
||||||
$K = $dbh->quote(str_replace(" ", "", $K));
|
$K = $dbh->quote(str_replace(" ", "", $K));
|
||||||
$q = "INSERT INTO Users (AccountTypeID, Suspended, ";
|
$q = "INSERT INTO Users (AccountTypeID, Suspended, ";
|
||||||
$q.= "InactivityTS, Username, Email, Passwd, Salt, ";
|
$q.= "InactivityTS, Username, Email, Passwd, Salt, ";
|
||||||
$q.= "RealName, LangPreference, IRCNick, PGPKey) ";
|
$q.= "RealName, LangPreference, Homepage, IRCNick, PGPKey) ";
|
||||||
$q.= "VALUES (1, 0, 0, $U, $E, $P, $salt, $R, $L, ";
|
$q.= "VALUES (1, 0, 0, $U, $E, $P, $salt, $R, $L, ";
|
||||||
$q.= "$I, $K)";
|
$q.= "$HP, $I, $K)";
|
||||||
$result = $dbh->exec($q);
|
$result = $dbh->exec($q);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$message = __("Error trying to create account, %s%s%s.",
|
$message = __("Error trying to create account, %s%s%s.",
|
||||||
|
@ -342,11 +347,13 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C=""
|
||||||
}
|
}
|
||||||
$q.= ", RealName = " . $dbh->quote($R);
|
$q.= ", RealName = " . $dbh->quote($R);
|
||||||
$q.= ", LangPreference = " . $dbh->quote($L);
|
$q.= ", LangPreference = " . $dbh->quote($L);
|
||||||
|
$q.= ", Homepage = " . $dbh->quote($HP);
|
||||||
$q.= ", IRCNick = " . $dbh->quote($I);
|
$q.= ", IRCNick = " . $dbh->quote($I);
|
||||||
$q.= ", PGPKey = " . $dbh->quote(str_replace(" ", "", $K));
|
$q.= ", PGPKey = " . $dbh->quote(str_replace(" ", "", $K));
|
||||||
$q.= ", InactivityTS = " . $inactivity_ts;
|
$q.= ", InactivityTS = " . $inactivity_ts;
|
||||||
$q.= ", CommentNotify = " . ($CN ? "1" : "0");
|
$q.= ", CommentNotify = " . ($CN ? "1" : "0");
|
||||||
$q.= ", UpdateNotify = " . ($UN ? "1" : "0");
|
$q.= ", UpdateNotify = " . ($UN ? "1" : "0");
|
||||||
|
$q.= ", OwnershipNotify = " . ($ON ? "1" : "0");
|
||||||
$q.= " WHERE ID = ".intval($UID);
|
$q.= " WHERE ID = ".intval($UID);
|
||||||
$result = $dbh->exec($q);
|
$result = $dbh->exec($q);
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ function config_load() {
|
||||||
global $AUR_CONFIG;
|
global $AUR_CONFIG;
|
||||||
|
|
||||||
if (!isset($AUR_CONFIG)) {
|
if (!isset($AUR_CONFIG)) {
|
||||||
$AUR_CONFIG = parse_ini_file("../../conf/config", true, INI_SCANNER_RAW);
|
$AUR_CONFIG = parse_ini_file("/etc/aurweb/config", true, INI_SCANNER_RAW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -661,6 +661,9 @@ function pkgbase_adopt ($base_ids, $action=true, $via) {
|
||||||
$q.= "SET MaintainerUID = $uid ";
|
$q.= "SET MaintainerUID = $uid ";
|
||||||
$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
|
$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
|
||||||
$dbh->exec($q);
|
$dbh->exec($q);
|
||||||
|
|
||||||
|
/* Add the new maintainer to the notification list. */
|
||||||
|
pkgbase_notify($base_ids);
|
||||||
} else {
|
} else {
|
||||||
/* Update the co-maintainer list when disowning a package. */
|
/* Update the co-maintainer list when disowning a package. */
|
||||||
if (has_credential(CRED_PKGBASE_DISOWN)) {
|
if (has_credential(CRED_PKGBASE_DISOWN)) {
|
||||||
|
@ -692,8 +695,11 @@ function pkgbase_adopt ($base_ids, $action=true, $via) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($base_ids as $base_id) {
|
||||||
|
notify(array($action ? 'adopt' : 'disown', $base_id, $uid));
|
||||||
|
}
|
||||||
|
|
||||||
if ($action) {
|
if ($action) {
|
||||||
pkgbase_notify($base_ids);
|
|
||||||
return array(true, __("The selected packages have been adopted."));
|
return array(true, __("The selected packages have been adopted."));
|
||||||
} else {
|
} else {
|
||||||
return array(true, __("The selected packages have been disowned."));
|
return array(true, __("The selected packages have been disowned."));
|
||||||
|
@ -1056,7 +1062,6 @@ function pkgbase_set_keywords($base_id, $keywords) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($keywords as $keyword) {
|
foreach ($keywords as $keyword) {
|
||||||
$q = sprintf("INSERT INTO PackageKeywords (PackageBaseID, Keyword) VALUES (%d, %s)", $base_id, $dbh->quote($keyword));
|
$q = sprintf("INSERT INTO PackageKeywords (PackageBaseID, Keyword) VALUES (%d, %s)", $base_id, $dbh->quote($keyword));
|
||||||
var_dump($q);
|
|
||||||
$dbh->exec($q);
|
$dbh->exec($q);
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
|
|
|
@ -230,7 +230,7 @@ function pkg_providers($name) {
|
||||||
* Get package dependencies for a specific package
|
* Get package dependencies for a specific package
|
||||||
*
|
*
|
||||||
* @param int $pkgid The package to get dependencies for
|
* @param int $pkgid The package to get dependencies for
|
||||||
* @param int $limit An upper bound on the number of packages to retrieve
|
* @param int $limit An upper bound for the number of packages to retrieve
|
||||||
*
|
*
|
||||||
* @return array All package dependencies for the package
|
* @return array All package dependencies for the package
|
||||||
*/
|
*/
|
||||||
|
@ -506,7 +506,7 @@ function pkg_source_link($url, $arch) {
|
||||||
*
|
*
|
||||||
* @param string $name The package name for the dependency search
|
* @param string $name The package name for the dependency search
|
||||||
* @param array $provides A list of virtual provisions of the package
|
* @param array $provides A list of virtual provisions of the package
|
||||||
* @param int $limit An upper bound on the number of packages to retrieve
|
* @param int $limit An upper bound for the number of packages to retrieve
|
||||||
*
|
*
|
||||||
* @return array All packages that depend on the specified package name
|
* @return array All packages that depend on the specified package name
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -221,7 +221,7 @@ function pkgreq_close($id, $reason, $comments, $auto_close=false) {
|
||||||
|
|
||||||
$dbh = DB::connect();
|
$dbh = DB::connect();
|
||||||
$id = intval($id);
|
$id = intval($id);
|
||||||
$uid = uid_from_sid($_COOKIE["AURSID"]);
|
$uid = $auto_close ? 0 : uid_from_sid($_COOKIE["AURSID"]);
|
||||||
|
|
||||||
if (!$auto_close && !has_credential(CRED_PKGREQ_CLOSE)) {
|
if (!$auto_close && !has_credential(CRED_PKGREQ_CLOSE)) {
|
||||||
return array(false, __("Only TUs and developers can close requests."));
|
return array(false, __("Only TUs and developers can close requests."));
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
<?php
|
<?php
|
||||||
define("AURWEB_VERSION", "v4.2.1");
|
define("AURWEB_VERSION", "v4.4.1");
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,10 @@
|
||||||
<th><?= __("Real Name") . ":" ?></th>
|
<th><?= __("Real Name") . ":" ?></th>
|
||||||
<td><?= htmlspecialchars($row["RealName"], ENT_QUOTES) ?></td>
|
<td><?= htmlspecialchars($row["RealName"], ENT_QUOTES) ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><?= __("Homepage") . ":" ?></th>
|
||||||
|
<td><a href="<?= htmlspecialchars($row["Homepage"], ENT_QUOTES) ?>" rel="nofollow"><?= htmlspecialchars($row["Homepage"], ENT_QUOTES) ?></a></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th><?= __("IRC Nick") . ":" ?></th>
|
<th><?= __("IRC Nick") . ":" ?></th>
|
||||||
<td><?= htmlspecialchars($row["IRCNick"], ENT_QUOTES) ?></td>
|
<td><?= htmlspecialchars($row["IRCNick"], ENT_QUOTES) ?></td>
|
||||||
|
@ -55,6 +59,14 @@
|
||||||
<?= $row["InactivityTS"] ? __("Inactive since") . ' ' . date("Y-m-d H:i", $row["InactivityTS"]) : __("Active"); ?>
|
<?= $row["InactivityTS"] ? __("Inactive since") . ' ' . date("Y-m-d H:i", $row["InactivityTS"]) : __("Active"); ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><?= __("Registration date:") ?></th>
|
||||||
|
<?php if ($row["RegistrationTS"]): ?>
|
||||||
|
<td><?= (new DateTime($row["RegistrationTS"]))->format('Y-m-d') ?></td>
|
||||||
|
<?php else: ?>
|
||||||
|
<td><?= __("unknown") ?></td>
|
||||||
|
<?php endif; ?>
|
||||||
|
</tr>
|
||||||
<?php if (has_credential(CRED_ACCOUNT_LAST_LOGIN)): ?>
|
<?php if (has_credential(CRED_ACCOUNT_LAST_LOGIN)): ?>
|
||||||
<tr>
|
<tr>
|
||||||
<th><?= __("Last Login") . ":" ?></th>
|
<th><?= __("Last Login") . ":" ?></th>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php if ($A == "UpdateAccount"): ?>
|
<?php if ($A == "UpdateAccount"): ?>
|
||||||
<p>
|
<p>
|
||||||
<?= __('Click %shere%s if you want to permanently delete this account.', '<a href="' . get_user_uri($N) . 'delete/' . '">', '</a>') ?>
|
<?= __('Click %shere%s if you want to permanently delete this account.', '<a href="' . get_user_uri($N) . 'delete/' . '">', '</a>') ?>
|
||||||
|
<?= __('Click %shere%s for user details.', '<a href="' . get_user_uri($N) . '">', '</a>') ?>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<form id="edit-profile-form" action="<?= get_user_uri($N) . 'update/'; ?>" method="post">
|
<form id="edit-profile-form" action="<?= get_user_uri($N) . 'update/'; ?>" method="post">
|
||||||
|
@ -98,6 +99,11 @@
|
||||||
<input type="text" size="30" maxlength="32" name="R" id="id_realname" value="<?= htmlspecialchars($R,ENT_QUOTES) ?>" />
|
<input type="text" size="30" maxlength="32" name="R" id="id_realname" value="<?= htmlspecialchars($R,ENT_QUOTES) ?>" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label for="id_homepage"><?= __("Homepage") ?>:</label>
|
||||||
|
<input type="text" size="30" name="HP" id="id_homepage" value="<?= htmlspecialchars($HP,ENT_QUOTES) ?>" />
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="id_irc"><?= __("IRC Nick") ?>:</label>
|
<label for="id_irc"><?= __("IRC Nick") ?>:</label>
|
||||||
<input type="text" size="30" maxlength="32" name="I" id="id_irc" value="<?= htmlspecialchars($I,ENT_QUOTES) ?>" />
|
<input type="text" size="30" maxlength="32" name="I" id="id_irc" value="<?= htmlspecialchars($I,ENT_QUOTES) ?>" />
|
||||||
|
@ -143,6 +149,10 @@
|
||||||
<label for="id_updatenotify"><?= __("Notify of package updates") ?>:</label>
|
<label for="id_updatenotify"><?= __("Notify of package updates") ?>:</label>
|
||||||
<input type="checkbox" name="UN" id="id_updatenotify" <?= $UN ? 'checked="checked"' : '' ?> />
|
<input type="checkbox" name="UN" id="id_updatenotify" <?= $UN ? 'checked="checked"' : '' ?> />
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="id_ownershipnotify"><?= __("Notify of ownership changes") ?>:</label>
|
||||||
|
<input type="checkbox" name="ON" id="id_ownershipnotify" <?= $ON ? 'checked="checked"' : '' ?> />
|
||||||
|
</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<?php if ($ver): ?>
|
<?php if ($ver): ?>
|
||||||
<p>aurweb <a href="https://projects.archlinux.org/aurweb.git/log/?h=<?= htmlspecialchars($ver, ENT_QUOTES) ?>"><?= htmlspecialchars($ver) ?></a></p>
|
<p>aurweb <a href="https://git.archlinux.org/aurweb.git/log/?h=<?= htmlspecialchars($ver, ENT_QUOTES) ?>"><?= htmlspecialchars($ver) ?></a></p>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<p><?= __('Copyright %s 2004-%d aurweb Development Team.', '©', date('Y')) ?></p>
|
<p><?= __('Copyright %s 2004-%d aurweb Development Team.', '©', date('Y')) ?></p>
|
||||||
<p><?= __('AUR packages are user produced content. Any use of the provided files is at your own risk.') ?></p>
|
<p><?= __('AUR packages are user produced content. Any use of the provided files is at your own risk.') ?></p>
|
||||||
|
|
|
@ -35,7 +35,7 @@ if (!$result): ?>
|
||||||
<th><a href="?<?= mkurl('SB=n&SO=' . $SO_next) ?>"><?= __("Name") ?></a></th>
|
<th><a href="?<?= mkurl('SB=n&SO=' . $SO_next) ?>"><?= __("Name") ?></a></th>
|
||||||
<th><?= __("Version") ?></th>
|
<th><?= __("Version") ?></th>
|
||||||
<th><a href="?<?= mkurl('SB=v&SO=' . $SO_next) ?>"><?= __("Votes") ?></a></th>
|
<th><a href="?<?= mkurl('SB=v&SO=' . $SO_next) ?>"><?= __("Votes") ?></a></th>
|
||||||
<th><a href="?<?= mkurl('SB=p&SO=' . $SO_next) ?>"><?= __("Popularity") ?></a><span title="<?= __('Popularity is calculated as the sum of all votes with each vote being weighted with a factor of 0.98 per day since its creation.') ?>" class="hover-help"><sup>?</sup></span></th>
|
<th><a href="?<?= mkurl('SB=p&SO=' . $SO_next) ?>"><?= __("Popularity") ?></a><span title="<?= __('Popularity is calculated as the sum of all votes with each vote being weighted with a factor of %.2f per day since its creation.', 0.98) ?>" class="hover-help"><sup>?</sup></span></th>
|
||||||
<?php if ($SID): ?>
|
<?php if ($SID): ?>
|
||||||
<th><a href="?<?= mkurl('SB=w&SO=' . $SO_next) ?>"><?= __("Voted") ?></a></th>
|
<th><a href="?<?= mkurl('SB=w&SO=' . $SO_next) ?>"><?= __("Voted") ?></a></th>
|
||||||
<th><a href="?<?= mkurl('SB=o&SO=' . $SO_next) ?>"><?= __("Notify") ?></a></th>
|
<th><a href="?<?= mkurl('SB=o&SO=' . $SO_next) ?>"><?= __("Notify") ?></a></th>
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
<?php if (pkgbase_user_notify($uid, $base_id)): ?>
|
<?php if (pkgbase_user_notify($uid, $base_id)): ?>
|
||||||
<li><?= html_action_form($base_uri . 'unnotify/', "do_UnNotify", __('Disable notifications')) ?></li>
|
<li><?= html_action_form($base_uri . 'unnotify/', "do_UnNotify", __('Disable notifications')) ?></li>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<li><?= html_action_form($base_uri . 'notify/', "do_Notify", __('Notify of new comments')) ?></li>
|
<li><?= html_action_form($base_uri . 'notify/', "do_Notify", __('Enable notifications')) ?></li>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if (has_credential(CRED_PKGBASE_EDIT_COMAINTAINERS, array($row["MaintainerUID"]))): ?>
|
<?php if (has_credential(CRED_PKGBASE_EDIT_COMAINTAINERS, array($row["MaintainerUID"]))): ?>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
|
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
|
||||||
<p>
|
<p>
|
||||||
<label for="id_type"><?= __("Request type") ?>:</label>
|
<label for="id_type"><?= __("Request type") ?>:</label>
|
||||||
<select name="type" id="id_type" onchange="showHideMergeSection()">
|
<select name="type" id="id_type" onchange="showHideMergeSection(); showHideRequestHints()">
|
||||||
<option value="deletion"><?= __('Deletion') ?></option>
|
<option value="deletion"><?= __('Deletion') ?></option>
|
||||||
<option value="merge"><?= __('Merge') ?></option>
|
<option value="merge"><?= __('Merge') ?></option>
|
||||||
<?php if (pkgbase_maintainer_uid($base_id)): ?>
|
<?php if (pkgbase_maintainer_uid($base_id)): ?>
|
||||||
|
@ -35,8 +35,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showHideRequestHints() {
|
||||||
|
$('#deletion_hint').hide();
|
||||||
|
$('#merge_hint').hide();
|
||||||
|
$('#orphan_hint').hide();
|
||||||
|
$('#' + $('#id_type').val() + '_hint').show();
|
||||||
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
showHideMergeSection();
|
showHideMergeSection();
|
||||||
|
showHideRequestHints();
|
||||||
|
|
||||||
$('#id_merge_into').typeahead({
|
$('#id_merge_into').typeahead({
|
||||||
source: function(query, callback) {
|
source: function(query, callback) {
|
||||||
|
@ -59,6 +67,15 @@
|
||||||
<label for="id_comments"><?= __("Comments") ?>:</label>
|
<label for="id_comments"><?= __("Comments") ?>:</label>
|
||||||
<textarea name="comments" id="id_comments" rows="5" cols="50"></textarea>
|
<textarea name="comments" id="id_comments" rows="5" cols="50"></textarea>
|
||||||
</p>
|
</p>
|
||||||
|
<p id="deletion_hint">
|
||||||
|
<?= __('By submitting a deletion request, you ask a Trusted User to delete the package base. This type of request should be used for duplicates, software abandoned by upstream, as well as illegal and irreparably broken packages.') ?>
|
||||||
|
</p>
|
||||||
|
<p id="merge_hint">
|
||||||
|
<?= __('By submitting a merge request, you ask a Trusted User to delete the package base and transfer its votes and comments to another package base. Merging a package does not affect the corresponding Git repositories. Make sure you update the Git history of the target package yourself.') ?>
|
||||||
|
</p>
|
||||||
|
<p id="orphan_hint">
|
||||||
|
<?= __('By submitting an orphan request, you ask a Trusted User to disown the package base. Please only do this if the package needs maintainer action, the maintainer is MIA and you already tried to contact the maintainer previously.') ?>
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" class="button" name="do_FileRequest" value="<?= __("Submit Request") ?>" />
|
<input type="submit" class="button" name="do_FileRequest" value="<?= __("Submit Request") ?>" />
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
if (!$due) {
|
if (!$due) {
|
||||||
$time_left = $idle_time - (time() - intval($row['RequestTS']));
|
$time_left = $idle_time - (time() - intval($row['RequestTS']));
|
||||||
if ($time_left > 48 * 3600) {
|
if ($time_left > 48 * 3600) {
|
||||||
$time_left_fmt = __("~%d days left", round($time_left / (24 * 3600)));
|
$time_left_fmt = _n("~%d day left", "~%d days left", round($time_left / (24 * 3600)));
|
||||||
} elseif ($time_left > 3600) {
|
} elseif ($time_left > 3600) {
|
||||||
$time_left_fmt = _n("~%d hour left", "~%d hours left", round($time_left / 3600));
|
$time_left_fmt = _n("~%d hour left", "~%d hours left", round($time_left / 3600));
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue