trunk/.github/000755 000000 000000 00000000000 14440331004 011720 5ustar00000000 000000 trunk/.github/workflows/000755 000000 000000 00000000000 14440331004 013755 5ustar00000000 000000 trunk/.github/workflows/build.yml000644 000000 000000 00000001424 14440331004 015600 0ustar00000000 000000 --- name: build on: [push] concurrency: group: ${{ github.workflow }}--${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-20.04, macos-12, windows-2022] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: | 2.7 3.5 3.6 3.7 3.8 3.9 3.10 3.11 - run: python3 -m pip install tox~=4.4.0 virtualenv~=20.21.0 - run: python3 -m tox run - uses: actions/upload-artifact@v3 if: always() with: name: log-${{ matrix.os }} path: | .tox/py*/log .tox/py*/tmp/testenv if-no-files-found: ignore trunk/.gitignore000644 000000 000000 00000000063 14410443274 012361 0ustar00000000 000000 *.py[co] *.mo *.rej /build /dist /*.egg-info /.tox trunk/COPYING000644 000000 000000 00000006532 12432141335 011426 0ustar00000000 000000 Copyright (C) 2005 Matthew Good All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software now contains voluntary contributions made by many individuals. For the exact contribution history, see the revision history and logs, available at https://trac-hacks.org/log/accountmanagerplugin/. ---- The previous, informal "license", that has been more of a statement rather than a real license in legal sense, is reproduced below as well: "THE BEER-WARE LICENSE" (Revision 42): wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Matthew Good Author: Matthew Good ---- exclusively for acct_mgr/md5crypt.py: Based on FreeBSD src/lib/libcrypt/crypt.c 1.2 http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/lib/libcrypt/crypt.c?rev=1.2&content-type=text/plain Original license: "THE BEER-WARE LICENSE" (Revision 42): wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp This port adds no further stipulations. I forfeit any copyright interest. Author: Matthew Good ---- Sources for art-work, that is included in this distribution: * Approval icon derived from man remix by Alexandre Garel, originally drawn by Francesco 'Architetto' and certificate symbol from SVG images from Tango Project icons * Refresh icon derived from grey-shaded-key SVG image drawn by silwol, "edit clear" and "view refresh" Tango Project icons by warszawianka * Sword and shield icon from SVG image uploaded by purzen, * System users icon and dialog error from SVG image from Tango Project icons by warszawianka * Info icon from SVG image uploaded by jean_victor_balin * Red square error or warning icon by molumen all set out to Public Domain and published at http://openclipart.org trunk/MANIFEST.in000644 000000 000000 00000000545 14413553530 012134 0ustar00000000 000000 # Define files to include in a distribution built by the 'sdist' command. include changelog include contrib/* exclude contrib/signatures.py include COPYING include README* include acct_mgr/htdocs/* include acct_mgr/locale/messages.pot include acct_mgr/locale/*/LC_MESSAGES/acct_mgr.po include acct_mgr/templates/*/*.html include acct_mgr/templates/*/*.txt trunk/README000644 000000 000000 00000002671 12504353742 011262 0ustar00000000 000000 = TracAccountManager = A user account management plugin for Trac. == Installation == 1. Run: python setup.py bdist_egg 2. If necessary, create a folder called "plugins" in your Trac environment. 3. Copy the .egg file from the "dist" folder created by step 1 into the "plugins" directory of your Trac environment. == Configuration == Add one of the following sections to trac.ini to get started. See even more configuration examples for supported backends at http://trac-hacks.org/wiki/AccountManagerPlugin/AuthStores or in the configuraition cookbook page at http://trac-hacks.org/wiki/CookBook/AccountManagerPluginConfiguration === Htpasswd === {{{ [account-manager] ; use an Apache htpasswd file htpasswd_hash_type = md5 htpasswd_file = /path/to/trac.htpasswd password_store = HtPasswdStore }}} === Htdigest === {{{ [account-manager] ; use an Apache htdigest file htdigest_file = /path/to/trac.htdigest htdigest_realm = TracDigestRealm password_store = HtDigestStore }}} === HttpAuth === {{{ [account-manager] ; use a page that is secured with HTTP Auth authentication_url = http://hostname/path password_store = HttpAuthStore }}} === Radius === {{{ [account-manager] force_passwd_change = false password_store = RadiusAuthStore persistent_sessions = false radius_authport = 1812 # per IETF RFC2865, obsolete default: 1645 radius_secret = radius_server = }}} This back-end supports neither user listing nor password changes. trunk/README.hashes000644 000000 000000 00000001270 11605405626 012526 0ustar00000000 000000 == HowTo Verify Sources == Starting with acct_mgr-0.3 the origin of release sources can be verified. If you care, and you really should, you can verify recorded md5 and sha1 hashes against your copy (fresh checkout) of the TracAccountManager sources: Call `python ./contrib/signatures.py` from the top directory containing the *sums hash files and you should simply get back `Check passed.` Additional files are reported but ignored. The hash files are signed with maintainers public OpenPGP key for verification as well, i.e. as following: {{{ gpg --verify ./acct_mgr-md5sums.sig gpg --verify ./acct_mgr-sha1sums.sig }}} provided you've downloaded and imported maintainers public key before. trunk/README.update000644 000000 000000 00000016320 12317115504 012531 0ustar00000000 000000 This document contains information about upgrading AccountManagerPlugin to the last release. It is provided to help anybody who is upgrading by specifically reminding of changes with potentially disruptive effect to existing installations. It goes back as far as release acct_mgr-0.2. If you are upgrading from an even earlier release, start from a default configuration, please. Many valuable hints on AccountManager configuration are compiled into http://trac-hacks.org/wiki/CookBook/AccountManagerPluginConfiguration Upgrading acct_mgr-0.4.4 -> 0.5 ------------------------------- The 'password_file' option has been removed from AbstractPasswordFileStore. Now each file store implementation must provide its own filename option. Likewise 'password_format' is no longer supported for store selection. Please specifiy the appropriate class name in 'password_store' instead. Note though, that SvnServePasswordStore still uses the ambiguous 'password_file' so others must avoid it to allow password store chaining. Upgrading acct_mgr-0.4 -> 0.4.1 ------------------------------- Run `python ./contrib/fix-session_attribute-failed_logins.py ` on any Trac environment, that had account locking enabled with time constraints before. This is a one-time task, but running it multiple times does no harm. Upgrading acct_mgr-0.3.2 -> 0.4 ------------------------------- 'password_file' is depreciated and no longer used by any authentication store provided by AccountManagerPlugin itself. New configuration options to supersed 'password_file' for affected stores: {{{ #!ini [account-manager] password_store = HtDigestStore # Obsolete entry commented for reference #password_file = /.htdigest htdigest_file = /.htdigest }}} {{{ #!ini [account-manager] password_store = HtPasswdStore # Obsolete entry commented for reference #password_file = /.htpasswd htpasswd_file = /.htpasswd }}} The password reset procedure has been re-designed from ground to make password resets recoverable, at least to prevent possible DoS attempted by malicious users on accounts connected to known email addresses. It utilizes ResetPwStore, a SessionStore, as temporary cache for new auto-generated random passwords. A subsequent login can succeed using old or new password. Only the password, that succeeds first, will be retained. So if the old password succeeds first, any cached new password is discharged. while a new password will get overwritten in any subsequent password reset, it replaces the old password only after being used for a successful login, and before it possibly gets overwritten itself by a newer one of course. Component rename: {{{ #!ini [components] # Obsolete entries commented for reference #acct_mgr.admin.accountmanageradminpages acct_mgr.admin.accountmanageradminpanel #acct_mgr.admin.accountchangenotificationadminpage acct_mgr.admin.accountchangenotificationadminpanel }}} New user account registration has been restructured, moved to a separate place and even partly rewritten from scratch. Component move: {{{ #!ini [components] # Obsolete entries commented for reference #acct_mgr.web_ui.emailverificationmodule acct_mgr.register.emailverificationmodule #acct_mgr.web_ui.registrationmodule acct_mgr.register.registrationmodule }}} `IAccountRegistrationInspector` is the interface, that allows for flexibility in registration form design as well as in registration request checks. Note: You'll certaily want to enable some/all of the new check classes in `acct_mgr.register`, if you want to use RegistrationModule at all. Don't forget to add all checks to the registration configuration too to actually apply them on subsequent requests (showing default value here): {{{ #!ini [account-manager] register_check = BasicCheck, EmailCheck, BotTrapCheck, RegExpCheck, UsernamePermCheck }}} Note: Email has been validated against a hard-coded regular expression before. Now the expression is configurable and this check moved into the RegExpCheck. Upgrading acct_mgr-0.3.1 -> 0.3.2 --------------------------------- "Account details" has been removed from panel list and made a true sub-page to "Users", just as it was meant to be right from the start. Internally form action of details page has changed from POST to GET. `get_user_attribute`, another method borrowed from/inspired by UserManagerPlugin, was added to the API. Upgrading acct_mgr-0.3 -> 0.3.1 ------------------------------- The release has been almost entirely dedicated to restore backwards-compatibility with Trac down to 0.11, but still watch out. Component rename: {{{ #!ini [components] # Obsolete entry commented for reference #acct_mgr.admin.accountchangenotificationadminpanel acct_mgr.admin.accountchangenotificationadminpage }}} Upgrading acct_mgr-0.2.1 -> 0.3 ------------------------------- That translates to 2 years and well over 100 revisions without a release, so by 2011 a lot of existing applications use(d) code from the development branch `trunk` alias acct_mgr-0.2.1dev at some stage in-between. The transition to `0.11` branch has been done early in the process too. Component rename: {{{ #!ini [components] # Obsolete entry commented for reference #acct_mgr.admin.accountmanageradminpage acct_mgr.admin.accountmanageradminpages }}} AccountGuard is an new feature with some related options to protect accounts against brute-force attacks on user passwords. The login page becomes more customizable i.e. with `login_opt_list` option. Full i18n support has been added, that is utilized starting with Trac 0.12 to show localized versions of all pages, provided that requested translations have been done and included into the source. Internally some variables `user` have been renamed to `username` in contrast to `name` for users pre-/surname and nickname. This raises various problems for other plugins replacing parts of this plugin and/or re-using it's methods. This is the first release cryptographically signed by the maintainer, and contributed scripts allow to check md5 and sha1 checksums of downloaded sources against included lists (CLI only). These lists should be verified in turn with an OpenPGP program like GnuPG. Upgrading acct_mgr-0.2 -> 0.2.1 ------------------------------- For this plugin it covers development dedicated to the `0.10` branch. Email notification of account related events added, that require corresponding new configuration options to be configured properly. Upgrading from before acct_mgr-0.2 ---------------------------------- This covers 1 1/2 years of development by 2 different developers within several branches, starting from `0.9`. It has been finalized with the ClearSilver-to-Genshi port for Trac 0.11 and acct_mgr-0.2 was pushed out without much noise after the initial release and three intermediate maintenance releases. Most notably a SessionStore implementation has been introduced for storing user passwords as a Trac session attribute. This was meant as an alternative to file based stores, where they cause data loss on concurrent changes. Please note, that the file stores have been changed since that time too to minimize such issues. Coming from a stage that early you'll get a whole-new plugin. Restarting the whole configuration process should be less error prone and painful than following a multitude of incremental updates from here. trunk/acct_mgr/000755 000000 000000 00000000000 14711401206 012142 5ustar00000000 000000 trunk/acct_mgr/__init__.py000644 000000 000000 00000000070 14413553530 014257 0ustar00000000 000000 import pkg_resources pkg_resources.require('Trac>=1.2') trunk/acct_mgr/admin.py000644 000000 000000 00000222500 14711401206 013605 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2010-2014 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good from datetime import datetime import inspect import re from trac.admin import IAdminPanelProvider from trac.config import BoolOption, Option from trac.core import Component, ExtensionPoint, implements from trac.perm import PermissionCache, PermissionSystem from trac.util import as_int from trac.util.datefmt import format_datetime, to_datetime from trac.util.html import html as tag from trac.util.presentation import Paginator from trac.util.translation import dgettext, tagn_ from trac.util.text import cleandoc, exception_to_unicode from trac.web.api import IAuthenticator from trac.web.chrome import Chrome, add_ctxtnav, add_link, add_notice from trac.web.chrome import add_script, add_stylesheet, add_warning from trac.wiki.formatter import format_to_html from .api import AccountManager, IUserIdChanger, _, gettext, ngettext, tag_ from .compat import iteritems, itervalues from .guard import AccountGuard from .model import (change_uid, del_user_attribute, email_verification_token, email_verified, get_user_attribute, last_seen, set_user_attribute) from .notification import NotificationError from .register import EmailVerificationModule, RegistrationError from .util import i18n_tag, format_timespan from .web_ui import AccountModule def fetch_user_data(env, req, filters=None): acctmgr = AccountManager(env) guard = AccountGuard(env) accounts = {} for username in acctmgr.get_users(): if 'ACCTMGR_USER_ADMIN' in req.perm: url = req.href.admin('accounts', 'users', username) else: url = None accounts[username] = {'username': username, 'url': url} if guard.user_locked(username): accounts[username]['locked'] = True t_lock = guard.lock_time(username) if t_lock > 0: t_release = guard.pretty_release_time(req, username) accounts[username]['release_hint'] = _( "Locked until %(t_release)s", t_release=t_release) verify_email = env.is_enabled(EmailVerificationModule) and \ EmailVerificationModule(env).email_enabled and \ EmailVerificationModule(env).verify_email for acct, status in iteritems(get_user_attribute(env, username=None, authenticated=None)): account = accounts.get(acct) if account is not None and 1 in status: # Only use attributes related to authenticated # accounts. account['name'] = status[1].get('name') account['email'] = status[1].get('email') # Obfuscate email address if required. if account['email']: account['email'] = Chrome(env).format_author(req, account['email']) approval = status[1].get('approval') approval = approval and set((approval,)) or set() if approval and filters and not approval.intersection(filters): del accounts[acct] continue if account['email'] and verify_email: if email_verified(env, account['username'], account['email']): if approval: account['approval'] = list(approval) elif approval: account['approval'] = list(approval.union(['email'])) elif not filters or 'email' in filters: account['approval'] = ['email'] elif approval: account['approval'] = list(approval) if filters and 'active' not in filters: inactive_accounts = {} for username in accounts: if 'approval' in accounts[username]: # Hint: This is 30 % faster than dict.update() here. inactive_accounts[username] = accounts[username] accounts = inactive_accounts ts_seen = last_seen(env) for username, last_visit in ts_seen: account = accounts.get(username) if account and last_visit: account['last_visit'] = to_datetime(last_visit) return sorted(itervalues(accounts), key=lambda acct: acct['username']) def _getoptions(cls): opt_cls = isinstance(cls, Component) and cls.__class__ or cls options = [(name, value) for name, value in inspect.getmembers(opt_cls) if isinstance(value, Option)] index = 0 for option in options: index += 1 try: opt_val = option[1].__get__(cls, cls) except AttributeError: # Error will be raised again when parsing options list, # so don't care here. continue # Check, if option is a valid component (possibly with own options). opt_cls = isinstance(opt_val, Component) and opt_val.__class__ or None extents = _getoptions(opt_cls) for extent in extents: options.insert(index, extent) index += 1 return options def _setorder(req, components): """Pull the password store ordering out of the req object""" for c in components.get_all_components(): components[c] = int(req.args.get(c.__class__.__name__, 0)) continue class ExtensionOrder(dict): """Keeps the order of components in OrderedExtensionsOption.""" instance = 0 def __init__(self, d=None, components=None, list=None): super(ExtensionOrder, self).__init__() self.instance += 1 self.d = d or {} self.sxref = {} for c in components or []: self.d[c] = 0 self[0] = c self.sxref[c.__class__.__name__] = c continue for i, c in enumerate(list or []): self.d[c] = i + 1 self[i + 1] = c def __getitem__(self, key): """Lookup a component in the list.""" return self.d[key] def __setitem__(self, key, value): if isinstance(key, Component): order = self.d[key] self.d[key] = value self.d[order].remove(key) self[value] = key elif isinstance(key, str): self.d[self.sxref[key]] = value elif isinstance(key, int): self.d.setdefault(key, []) self.d[key].append(value) else: raise KeyError("Invalid key type (%s) for ExtensionOrder" % type(key)) pass def get_enabled_components(self): """Return an ordered list of components. All components that are order 0 are dropped from the list. """ keys = sorted(k for k in self.d if isinstance(k, int)) component_list = [] for k in keys[1:]: component_list.extend(self.d[k]) continue return component_list def get_enabled_component_names(self): """Returns the class names of the enabled components.""" components = self.get_enabled_components() return [c.__class__.__name__ for c in components] def get_all_components(self): return [k for k in self.d if isinstance(k, Component)] def component_count(self): return len(self.get_all_components()) class UserAdminPanel(Component): implements(IAdminPanelProvider) uid_changers = ExtensionPoint(IUserIdChanger) ACCTS_PER_PAGE = 20 def __init__(self): self.acctmgr = AccountManager(self.env) self.guard = AccountGuard(self.env) # IAdminPanelProvider methods def get_admin_panels(self, req): if 'ACCTMGR_USER_ADMIN' in req.perm: yield 'accounts', _("Accounts"), 'users', _("Users") def render_admin_panel(self, req, cat, page, path_info): if path_info: return self._do_acct_details(req, path_info) return self._do_users(req) def _do_add(self, req): """Add new user account on verified request.""" return _add_user_account(self.env, req) def _do_db_cleanup(self, req): if 'ACCTMGR_ADMIN' in req.perm: env = self.env changed = False # Get data for all authenticated users from 'session_attribute'. attr = get_user_attribute(self.env, username=None, authenticated=1) attrs = {} accounts = req.args.get('accounts') accounts = accounts and accounts.split(',') or [] sel = req.args.getlist('sel') if req.args.get('purge') and sel: sel_len = len(sel) matched = [] for acct, states in iteritems(attr): for state in states['id']: for elem, id in iteritems(states[state]['id']): if id in sel: if acct in attrs: if state in attrs[acct]: attrs[acct][state].append(elem) else: attrs[acct][state] = [elem] else: attrs[acct] = {state: [elem]} matched.append(id) if len(matched) == sel_len: break if len(matched) == sel_len: break if len(matched) == sel_len: break for id in (frozenset(sel) - frozenset(matched)): for acct, states in iteritems(attr): for state, id_ in iteritems(states['id']): if id == id_: # Full account is marked, forget attributes. if acct in attrs: attrs[acct][state] = [] else: attrs[acct] = {state: []} matched.append(id) if len(matched) == sel_len: break if len(matched) == sel_len: break # DEVEL: For Python>2.4 better use defaultdict for counters. del_count = {'acct': 0, 'attr': 0} for account, states in iteritems(attrs): for state, elem in iteritems(states): if len(elem) == 0: del_user_attribute(env, account, state) del_count['acct'] += 1 else: for attribute in elem: del_user_attribute(env, account, state, attribute) del_count['attr'] += 1 changed = True if changed: accounts_ = attributes = '' n_plural = del_count['acct'] if n_plural > 0: accounts_ = tag.li(ngettext("%(count)s account", "%(count)s accounts", n_plural, count=n_plural)) n_plural = del_count['attr'] if n_plural > 0: attributes = tag.li(ngettext( "%(count)s account attribute", "%(count)s account attributes", n_plural, count=n_plural)) add_notice(req, tag_("Successfully deleted: %(account)s", account=tag.ul(accounts_, attributes))) # Update the dict after changes. attr = get_user_attribute(env, username=None, authenticated=1) if not accounts and sel: # Get initial account selection from account/user list. accounts = sel attr_sel = dict((account, states) for account, states in iteritems(attr) if account in accounts) if len(accounts) == 1: back_label = _("Back to Account") back_href = req.href.admin('accounts', 'users', accounts[0]) else: back_label = _("Back to Accounts") back_href = req.href.admin('accounts', 'users') add_ctxtnav(req, back_label, href=back_href) add_stylesheet(req, 'acct_mgr/acctmgr.css') data = dict(i18n_tag=i18n_tag, accounts=accounts, attr=attr_sel) return 'account_db_cleanup.html', data def _do_acct_details(self, req, username): env = self.env acctmgr = self.acctmgr guard = self.guard if not (username and acctmgr.has_user(username)): add_warning(req, _( "Please choose account by username from the list to proceed." )) req.redirect(req.href.admin('accounts', 'users')) change_uid_enabled = self.uid_changers and True or False data = dict(i18n_tag=i18n_tag, attr_addonly=bool(req.args.get('attr_addonly')), change_uid_enabled=change_uid_enabled, skip_delete=bool(req.args.get('skip_delete')), uid_exists=bool(req.args.get('uid_exists')), url=req.href.admin('accounts', 'users', username), user=username) verify_enabled = False if env.is_enabled(EmailVerificationModule): verify_enabled = EmailVerificationModule(env).email_enabled and \ EmailVerificationModule(env).verify_email email_approved = req.args.get('email_approved') if verify_enabled: # Preserve selection during a series of requests. data['email_approved'] = email_approved data['verify_enabled'] = verify_enabled if req.method == 'POST': action = req.args.get('action', '') # Change attributes and or password of existing user account. if action == 'edit': labels = { 'email': _("Email Address"), 'name': _("Pre-/Surname (Nickname)"), 'password': _("Password") } attributes = get_user_attribute(self.env, username=username, authenticated=1) old_values = {} if username in attributes: old_values['name'] = attributes[username][1].get('name') old_values['email'] = attributes[username][1].get('email') success = [] # Delete a single user account attribute value. if any(k.startswith('delete_email') for k in req.args): del_user_attribute(env, username, attribute='email') add_notice(req, tag_( "Deleted %(attribute)s for %(username)s.", attribute=tag.b(labels.get('email')), username=tag.b(username))) elif any(k.startswith('delete_name') for k in req.args): del_user_attribute(env, username, attribute='name') add_notice(req, tag_( "Deleted %(attribute)s for %(username)s.", attribute=tag.b(labels.get('name')), username=tag.b(username))) password = req.args.get('password') if password and (password.strip() != ''): if password != req.args.get('password_confirm'): add_warning(req, _("The passwords must match.")) else: self._set_password(req, username, password) success.append(labels.get('password')) for attribute in ('name', 'email'): value = req.args.get(attribute, '').strip() if (old_values.get(attribute) or '') != value: # Save changes. keys = dict(sent='email_verification_sent_to', token='email_verification_token') if value: set_user_attribute(env, username, attribute, value) # Account email approval for authoritative action. if attribute == 'email' and verify_enabled and \ email_approved: set_user_attribute(env, username, keys['sent'], value) del_user_attribute(env, username, attribute=keys['token']) else: del_user_attribute(env, username, attribute=attribute) if attribute == 'email': for key in keys: del_user_attribute(env, username, attribute=keys[key]) success.append(labels.get(attribute)) if success: attributes = tag.b(', '.join(success)) add_notice(req, tag_( "Updated %(attributes)s for %(username)s.", attributes=attributes, username=tag.b(username))) # Change user ID of existing user account. elif action == 'uid': new_uid = req.args.get('new_uid', '').strip() results = None if new_uid: results = self._do_change_uid(req, username, new_uid) if not results: pass elif 'error' in results: for key, message in iteritems(results['error']): add_warning(req, _( "Update error in table %(table)s: %(message)s", table=key[0], message=message)) break else: add_notice(req, tag.ul( [tag.li(ngettext( "Table %(table)s column %(column)s%(constraint)s: " "%(result)s change", "Table %(table)s column %(column)s%(constraint)s: " "%(result)s changes", n_changes, table=tag.b(key[0]), column=tag.b(key[1]), constraint='(' + key[2] + ')' if key[2] else '', result=tag.b(n_changes))) for key, n_changes in sorted(iteritems(results))] )) # Switch to display information for new user ID. username = new_uid data.update({ 'url': req.href.admin('accounts', 'users', username), 'user': username, }) # Get account attributes and account status information. stores = ExtensionOrder(components=acctmgr.stores, list=acctmgr.password_stores) user_store = acctmgr.find_user_store(username) if user_store: data['user_store'] = user_store.__class__.__name__ data['store_order_num'] = stores[user_store] if hasattr(user_store, 'set_password'): data['password_change_enabled'] = True data['ignore_auth_case'] = \ self.config.getbool('trac', 'ignore_auth_case') approval = email = name = None # Fetch data from 'session_attribute'. attributes = get_user_attribute(self.env, username=username, authenticated=1) if username in attributes: name = attributes[username][1].get('name') email = attributes[username][1].get('email') if self.config.getbool('account-manager', 'require_approval'): approval = attributes[username][1].get('approval') data['acctmgr'] = dict(email=email, name=name) if email and verify_enabled: data['verification'] = 'enabled' data['email_verified'] = email_verified(env, username, email) data['email_verification_token'] = \ email_verification_token(env, username, email) self.log.debug('AcctMgr:admin:_do_acct_details for user "%s" ' 'email "%s": %s', username, email, data['email_verified']) if req.args.get('delete') or req.args.get('release'): if approval and req.args.get('release'): # Admit authenticated/registered session. del_user_attribute(env, username, attribute='approval') add_notice(req, tag_( "Account lock (%(condition)s) for user %(user)s cleared", condition=gettext(approval), user=tag.b(username))) approval = None # Delete failed login attempts, evaluating attempts count. if guard.failed_count(username, reset=True) > 0: add_notice(req, tag_( "Failed login attempts for user %(user)s deleted", user=tag.b(username))) data['approval'] = approval # Get access history. ts_seen = last_seen(env, username) if ts_seen and ts_seen[0][1]: data['last_visit'] = datetime.fromtimestamp(ts_seen[0][1], req.tz) if self.env.is_enabled(AccountGuard): attempts = [] attempts_count = guard.failed_count(username, reset=None) if attempts_count > 0: for attempt in guard.get_failed_log(username): attempt = attempt.copy() attempt['time'] = datetime.fromtimestamp(attempt['time'], req.tz) attempts.append(attempt) data['attempts'] = attempts data['pretty_lock_time'] = guard.pretty_lock_time(username, next=True) data['attempts_count'] = attempts_count data['lock_count'] = guard.lock_count(username) if guard.user_locked(username) is True: data['user_locked'] = True data['release_time'] = guard.pretty_release_time(req, username) # TRANSLATOR: Optionally tabbed account editor's label forms = [('edit', _('Modify Account'))] if change_uid_enabled: forms.append(('uid', _('Change User ID'))) data['forms'] = forms data['active_form'] = req.args.get('action') or forms[0][0] add_ctxtnav(req, _("Account Attributes"), href=req.href.admin('accounts', 'users', cleanup='1', accounts=username)) add_ctxtnav(req, _("Back to Accounts"), href=req.href.admin('accounts', 'users')) add_stylesheet(req, 'acct_mgr/acctmgr.css') return 'account_admin.html', data def _do_users(self, req): env = self.env acctmgr = self.acctmgr acctmod = AccountModule(env) listing_enabled = acctmgr.supports('get_users') password_change_enabled = acctmgr.supports('set_password') password_reset_enabled = acctmod.reset_password_enabled delete_enabled = acctmgr.supports('delete_user') verify_enabled = (EmailVerificationModule(env).email_enabled and EmailVerificationModule(env).verify_email) data = { 'i18n_tag': i18n_tag, 'acctmgr': dict(), 'email_approved': True, 'filters': [], 'listing_enabled': listing_enabled, 'create_enabled': acctmgr.supports('set_password'), 'delete_enabled': delete_enabled, 'verify_enabled': verify_enabled, 'ignore_auth_case': self.config.getbool('trac', 'ignore_auth_case'), 'password_change_enabled': password_change_enabled, 'password_reset_enabled': password_reset_enabled } if req.method == 'GET': if req.args.get('cleanup'): return self._do_db_cleanup(req) if req.method == 'POST': email_approved = req.args.get('email_approved') # Preserve selection during a series of requests. data['email_approved'] = email_approved sel = req.args.getlist('sel') if 'add' in req.args: # Add new user account. data['acctmgr'] = self._do_add(req) elif 'approve' in req.args and sel: # Toggle approval status for selected accounts. ban = [] unban = [] for username in sel: # Get account approval status. status = get_user_attribute(env, username, attribute='approval') status = username in status and \ status[username][1].get('approval') or None if status: # Admit authenticated/registered session. del_user_attribute(env, username, attribute='approval') unban.append(username) else: # Ban the account. set_user_attribute(env, username, 'approval', 'revoked') ban.append(username) msg = None if unban: accounts = tag.b(', '.join(unban)) msg = tagn_("Approved account: %(accounts)s", "Approved accounts: %(accounts)s", len(unban), accounts=accounts) if ban: msg = tag(msg, tag.br()) if msg else tag() accounts = tag.b(', '.join(ban)) msg(tagn_("Banned account: %(accounts)s", "Banned accounts: %(accounts)s", len(ban), accounts=accounts)) if ban or unban: add_notice(req, msg) elif 'reset' in req.args and sel: # Password reset for one or more accounts. if password_reset_enabled: for username, name, email in env.get_known_users(): if username in sel: acctmod._reset_password(req, username, email) if sel: add_notice(req, tag_( "Password reset for %(accounts)s.", accounts=tag.b(', '.join(sel)))) else: add_warning(req, _( "The password reset procedure is not enabled.")) elif 'remove' in req.args and sel: # Delete one or more accounts. if delete_enabled: for account in sel: self._delete_user(req, account) if sel: add_notice(req, tag_( "Deleted account: %(accounts)s", accounts=tag.b(', '.join(sel)))) else: add_warning(req, _("The password store does not support " "deleting users.")) elif any(action for action in req.args if action in ('cleanup', 'purge', 'unselect')): return self._do_db_cleanup(req) req.redirect(req.href.admin('accounts', 'users')) # (Re-)Build data for current user list. available_filters = [ ('active', _("active")), ('revoked', _("revoked"), False), # not shown by default ('pending', _("pending approval")) ] if verify_enabled: available_filters.append(('email', _("email unverified"))) # Check request or session for enabled filters, or use default. filters = [f[0] for f in available_filters if 'filter_%s' % f[0] in req.args] key = 'acctmgr_user.filter.%s' if not filters: filters = [f[0] for f in available_filters if req.session.get(key % f[0]) == '1'] if not filters: filters = [f[0] for f in available_filters if len(f) == 2 or f[2]] for filter_ in available_filters: data['filters'].append({ 'name': filter_[0], 'label': filter_[1], 'enabled': filter_[0] in filters }) if listing_enabled: data.update({ 'cls': 'listing', 'cols': ['email', 'name'], 'delete_msg_confirm': _( "Are you sure you want to delete these accounts?")}) # Preserve pager setting. if 'max_per_page' in req.args: max_per_page = req.args.get('max_per_page') req.session.set('acctmgr_user.max_items', max_per_page, self.ACCTS_PER_PAGE) req.redirect(req.href.admin('accounts', 'users')) # Save results of submitted user list filter form to the session. elif 'update' in req.args: for filter_ in available_filters: key = 'acctmgr_user.filter.%s' % filter_[0] if 'filter_%s' % filter_[0] in req.args: req.session[key] = '1' elif key in req.session: del req.session[key] req.redirect(req.href.admin('accounts', 'users')) # Read account information. data.update(self._paginate(req, fetch_user_data(env, req, filters))) add_stylesheet(req, 'acct_mgr/acctmgr.css') add_stylesheet(req, 'common/css/report.css') return 'account_users.html', data def _do_change_uid(self, req, old_uid, new_uid): acctmgr = self.acctmgr acctmod = AccountModule(self.env) attr_overwrite = not bool(req.args.get('attr_addonly')) create_user = not bool(req.args.get('uid_exists')) delete_user = not bool(req.args.get('skip_delete')) email = None # Demand conditions required for a successful change. store_old = acctmgr.find_user_store(old_uid) if delete_user and store_old and \ not hasattr(store_old, 'delete_user'): add_warning(req, tag_( "Removing the old user is not supported by %(store)s.", store=tag.b(store_old.__class__.__name__))) return stores = ExtensionOrder(components=acctmgr.stores, list=acctmgr.password_stores) # Predict stores for old and new account. keep_passwd = False for store in stores.get_enabled_components(): if not hasattr(store, 'set_password'): continue if store == store_old: # DEVEL: Preserve passwords for other stores too. keep_passwd = store.__class__.__name__ == 'SessionStore' break if create_user: if acctmgr.password_stores and \ not acctmgr.supports('set_password'): add_warning(req, _( "None of the configured password stores is writable.")) return if not (acctmod.reset_password_enabled or keep_passwd): add_warning(req, _( "Password reset is a required action, but disabled yet.")) return # Ensure, that the new ID must pass basic checks. checks = ExtensionOrder(components=acctmgr.checks, list=acctmgr.register_checks) required_check = 'BasicCheck' if required_check not in checks.get_enabled_component_names(): add_warning(req, tag_( "At least %(required_check)s must be configured and " "enabled.", required_check=tag.b(required_check))) return req.args['username'] = new_uid # Prime request with data to prevent input validation failures. req.args['password'] = req.args['password_confirm'] = 'pass' attributes = get_user_attribute(self.env, old_uid) email = old_uid in attributes and \ attributes[old_uid][1].get('email') or None if email: req.args['email'] = email # Prevent account verification failure due to existing email # address. del_user_attribute(self.env, old_uid, attribute='email') name = old_uid in attributes and \ attributes[old_uid][1].get('name') or None if name: req.args['name'] = name try: acctmgr.validate_account(req) except RegistrationError as e: add_warning(req, e) if email: set_user_attribute(self.env, old_uid, 'email', email) return if not keep_passwd and \ self._set_password(req, new_uid, acctmod._random_password, False) is None: add_warning(req, _( "Failed to save new login data to a password store.")) if email: set_user_attribute(self.env, old_uid, 'email', email) return # Call all user ID changers. results = change_uid(self.env, old_uid, new_uid, self.uid_changers, attr_overwrite) if 'error' in results: if create_user: # Rollback all changes including newly created account. self._delete_user(req, new_uid) if email: set_user_attribute(self.env, old_uid, 'email', email) return results attributes = get_user_attribute(self.env, new_uid, attribute='email') email_new = new_uid in attributes and attributes[new_uid].get(1) and \ attributes[new_uid][1].get('email') or None if email and (create_user or attr_overwrite or not email_new): set_user_attribute(self.env, new_uid, 'email', email) if not keep_passwd: acctmod._reset_password(req, new_uid, email) elif email_new and not keep_passwd: acctmod._reset_password(req, new_uid, email_new) elif not keep_passwd: add_warning(req, tag_( "Cannot send the new password to the user, because no email " "address is associated with %(username)s.", username=tag.b(new_uid))) if delete_user: # Finally delete old user ID. self._delete_user(req, old_uid) # Notify listeners about successful ID change. try: acctmgr._notify('id_changed', old_uid, new_uid) except NotificationError as e: add_warning(req, _("Error raised while sending a change " "notification.") + _("You'll get details with TracLogging " "enabled.")) self.log.error('Unable to send user ID change notification: %s', exception_to_unicode(e, traceback=True)) return results def _set_password(self, req, username, password, overwrite=True): """Password saving with graceful handling of notification errors.""" try: result = self.acctmgr.set_password(username, password, overwrite=overwrite) except NotificationError as e: add_warning(req, _("Error raised while sending a change " "notification.") + _("You'll get details with TracLogging enabled.")) self.log.error('Unable to send password change notification: %s', exception_to_unicode(e, traceback=True)) result = self.acctmgr.has_user(username) or None return result def _delete_user(self, req, username): """Delete method, that handles notification errors gracefully.""" try: self.acctmgr.delete_user(username) except NotificationError as e: add_warning(req, _("Error raised while sending a change " "notification.") + _("You'll get details with TracLogging " "enabled.")) self.log.error('Unable to send user delete notification: %s', exception_to_unicode(e, traceback=True)) def _paginate(self, req, accounts): max_per_page = as_int(req.session.get('acctmgr_user.max_items'), self.ACCTS_PER_PAGE) page = int(req.args.get('page', '1')) total = len(accounts) pager = Paginator(accounts, page - 1, max_per_page) pagedata = [] shown_pages = pager.get_shown_pages(21) for shown_page in shown_pages: page_href = req.href.admin('accounts', 'users', page=shown_page) pagedata.append([page_href, None, str(shown_page), _("page %(num)s", num=str(shown_page))]) # Prepare bottom and top pager navigation data. fields = ['href', 'class', 'string', 'title'] pager.current_page = {'href': None, 'class': 'current', 'string': str(pager.page + 1), 'title': None} pager.shown_pages = [dict(zip(fields, p)) for p in pagedata] if pager.has_more_pages: # Show '# of #' instead of total count. total = pager.displayed_items() if pager.has_next_page: next_href = req.href.admin('accounts', 'users', page=page + 1) add_link(req, 'next', next_href, _('Next Page')) if pager.has_previous_page: prev_href = req.href.admin('accounts', 'users', page=page - 1) add_link(req, 'prev', prev_href, _('Previous Page')) page_href = req.href.admin('accounts', 'cleanup') return dict(accounts=pager, displayed_items=total, page_href=page_href) class ConfigurationAdminPanel(Component): implements(IAdminPanelProvider, IAuthenticator) auth_init = BoolOption('account-manager', 'auth_init', True, doc="Launch an initial Trac authentication setup.") def __init__(self): self.acctmgr = AccountManager(self.env) self.authname = 'setup' self.cfg_action = 'ACCTMGR_CONFIG_ADMIN' self.guard = AccountGuard(self.env) self.perms = PermissionSystem(self.env) # IAdminPanelProvider methods def get_admin_panels(self, req): if 'ACCTMGR_CONFIG_ADMIN' in req.perm: yield 'accounts', _("Accounts"), 'config', _("Configuration") def render_admin_panel(self, req, cat, page, path_info): return self._do_config(req) def _do_config(self, req): cfg = self.config env = self.env def safe_wiki_to_html(context, text): """Convenience function from trac.admin.web_ui.""" try: return format_to_html(env, context, text) except Exception as e: self.log.error('Unable to render component documentation: %s', exception_to_unicode(e, traceback=True)) return tag.pre(text) data = { 'i18n_tag': i18n_tag, 'format_timespan': format_timespan, 'safe_wiki_to_html': safe_wiki_to_html, } # Prefer args from URL to make progress bar links work. step = req.args.get('step', 0) step = int(step and step or req.args.get('active', 0)) stores = ExtensionOrder(components=self.acctmgr.stores, list=self.acctmgr.password_stores) register_checks = self.config.getlist('account-manager', 'register_checks') checks = ExtensionOrder(components=self.acctmgr.checks, list=register_checks) def _redirect(req): # Use permission-sensitive redirection on exit. if 'ACCTMGR_USER_ADMIN' in req.perm: req.redirect(req.href.admin('accounts', 'users')) req.redirect(req.href()) if req.method == 'POST': # Rollback unsaved configuration changes. if req.args.get('exit'): try: cfg.parse_if_needed(force=True) # Full reload except TypeError: # Attribute was introduced in Trac 0.12, so a fallback # for compatibility down to 0.11 is required. cfg.touch() # Fake write access for reload _redirect(req) # Don't care as long as the feature is disabled. elif req.args.get('restart') and self.acctmgr.refresh_passwd: del_user_attribute(self.env, attribute='password_refreshed') add_notice(req, _("Password hash refresh procedure restarted.")) account = dict() if req.method == 'POST' and (req.args.get('back') or req.args.get('next') or req.args.get('save')): # Handling only values for the current page is important. if step == 0: cfg.set('trac', 'auth_cookie_lifetime', int(req.args.get('auth_cookie_lifetime'))) cfg.set('trac', 'secure_cookies', bool(req.args.get('secure_cookies', False))) cfg.set('trac', 'check_auth_ip', bool(req.args.get('check_auth_ip', False))) cfg.set('trac', 'ignore_auth_case', bool(req.args.get('ignore_auth_case', False))) acctmgr_login = bool(int(req.args.get('acctmgr_login'))) # These two can't work in parallel. cfg.set('components', 'acct_mgr.web_ui.LoginModule', acctmgr_login and 'enabled' or 'disabled') cfg.set('components', 'trac.web.auth.LoginModule', acctmgr_login and 'disabled' or 'enabled') if acctmgr_login: cfg.set('account-manager', 'login_opt_list', bool(req.args.get('login_opt_list', False))) cfg.set('account-manager', 'persistent_sessions', bool(req.args.get('persistent_sessions', False))) cfg.set('account-manager', 'cookie_refresh_pct', int(req.args.get('cookie_refresh_pct', False))) cfg.set('trac', 'auth_cookie_path', req.args.get('auth_cookie_path')) elif step == 1: # This section is as critical as it is complicated by the # amount of available options and combinations of options. # We restrict initial setup to a single store, allowing to # configure additional ones later on in the self-adapting # multi-store setup view. init_store = req.args.get('init_store') init_store_file = req.args.get('init_store_file') if init_store: # Define shortcuts for common strings. a = 'account-manager' c = 'components' e = 'enabled' p = 'password_store' # Set minimal required options, leaving most options out # to keep them at - maybe changing - default values. if init_store == 'db': cfg.set(a, p, 'SessionStore') cfg.set(c, 'acct_mgr.db.SessionStore', e) cfg.set(c, 'acct_mgr.pwhash.HtDigestHashMethod', e) from .db import SessionStore from .pwhash import HtDigestHashMethod assert env.is_enabled(HtDigestHashMethod) assert env.is_enabled(SessionStore) elif init_store == 'file': if init_store_file == 'htdigest': cfg.set(a, 'htdigest_file', 'trac.htdigest') cfg.set(a, p, 'HtDigestStore') cfg.set(c, 'acct_mgr.htfile.HtDigestStore', e) from .htfile import HtDigestStore assert env.is_enabled(HtDigestStore) elif init_store_file == 'htpasswd': cfg.set(a, 'htpasswd_file', 'trac.htpasswd') cfg.set(a, 'htpasswd_hash_type', 'md5') cfg.set(a, p, 'HtPasswdStore') cfg.set(c, 'acct_mgr.htfile.HtPasswdStore', e) from .htfile import HtPasswdStore assert env.is_enabled(HtPasswdStore) elif init_store_file == 'svn_file': cfg.set(a, p, 'SvnServePasswordStore') cfg.set(c, 'acct_mgr.svnserve.SvnServePasswordStore', e) from .svnserve import SvnServePasswordStore assert env.is_enabled(SvnServePasswordStore) elif init_store == 'http': cfg.set(a, p, 'HttpAuthStore') cfg.set(c, 'acct_mgr.http.HttpAuthStore', e) from .http import HttpAuthStore assert env.is_enabled(HttpAuthStore) # ToDo # elif init_store == 'etc': # [account-manager] # password_store = # [components] else: _setorder(req, stores) cfg.set('account-manager', 'password_store', ','.join(stores.get_enabled_component_names())) for store in stores.get_all_components(): for attr, option in _getoptions(store): cls_name = store.__class__.__name__ newval = req.args.get('%s.%s' % (cls_name, attr)) self.log.debug("%s.%s: %s", cls_name, attr, newval) if newval is not None: cfg.set(option.section, option.name, newval) cfg.set('account-manager', 'refresh_passwd', bool(req.args.get('refresh_passwd', False))) # Refresh object after changes. stores = ExtensionOrder(components=self.acctmgr.stores, list=self.acctmgr.password_stores) elif step == 2: reset_password = bool(req.args.get('reset_password', False)) # Enable the required hash method for this SessionStore too. hash_method = cfg.get('account-manager', 'hash_method') cfg.set('components', 'acct_mgr.pwhash.%s' % hash_method, 'enabled') cfg.set('components', 'acct_mgr.web_ui.ResetPwStore', reset_password and 'enabled' or 'disabled') cfg.set('account-manager', 'reset_password', reset_password) cfg.set('account-manager', 'generated_password_length', int(req.args.get('generated_password_length'))) cfg.set('account-manager', 'force_passwd_change', bool(req.args.get('force_passwd_change', False))) elif step == 3: change_uid_enabled = bool(req.args.get('change_uid_enabled')) cfg.set('components', 'acct_mgr.model.*', change_uid_enabled and 'enabled' or 'disabled') # Force 'disabled' status for all related components. if not change_uid_enabled and cfg['components'].options(): for k, v in cfg['components'].options(): if k.startswith('acct_mgr.model.') and \ k != 'acct_mgr.model.*': cfg.remove('components', k) acctmgr_register = req.args.get('acctmgr_register', False) cfg.set('components', 'acct_mgr.register.RegistrationModule', acctmgr_register and 'enabled' or 'disabled') cfg.set('account-manager', 'allow_delete_account', bool(req.args.get('allow_delete_account', False))) _setorder(req, checks) cfg.set('account-manager', 'register_check', ','.join(checks.get_enabled_component_names())) for check in checks.get_all_components(): for attr, option in _getoptions(check): cls_name = check.__class__.__name__ newval = req.args.get('%s.%s' % (cls_name, attr)) self.log.debug("%s.%s: %s", cls_name, attr, newval) if newval is not None: cfg.set(option.section, option.name, newval) if acctmgr_register: # Should require approval for user self-registrations, # not for accounts created by admin users alone. cfg.set('account-manager', 'require_approval', bool(req.args.get('require_approval', False))) # Allow email verification regardless of account creator. verify_email = bool(req.args.get('verify_email', False)) cfg.set('account-manager', 'verify_email', verify_email) cfg.set( 'components', 'acct_mgr.register.EmailVerificationModule', verify_email and 'enabled' or 'disabled') # Refresh object after changes. register_checks = self.config.getlist('account-manager', 'register_check') checks = ExtensionOrder(components=self.acctmgr.checks, list=register_checks) elif step == 4: acctmgr_guard = req.args.get('acctmgr_guard', False) cfg.set('components', 'acct_mgr.guard.AccountGuard', acctmgr_guard and 'enabled' or 'disabled') cfg.set('account-manager', 'login_attempt_max_count', as_int(req.args.get('login_attempt_max_count'), self.guard.login_attempt_max_count, min=0)) user_lock_time = as_int(req.args.get('user_lock_time'), self.guard.user_lock_time, min=0) cfg.set('account-manager', 'user_lock_time', user_lock_time) # AccountGuard.lock_time_progression has the sanitized value. cfg.set('account-manager', 'user_lock_time_progression', req.args.get('user_lock_time_progression') or self.guard.lock_time_progression) cfg.set('account-manager', 'user_lock_max_time', as_int(req.args.get('user_lock_max_time'), self.guard.user_lock_max_time, min=user_lock_time)) if req.args.get('save') and step == 5: perms = self.perms.get_user_permissions(self.authname) if perms.get(self.cfg_action) and perms[self.cfg_action]: # Revoke initial configuration permission. self.perms.revoke_permission(self.authname, self.cfg_action) # Restore 'authenticated' users permissions. perms = self.perms.get_user_permissions('auth_moved') for action in perms: # Filter actions inherited from 'anonymous'. if perms[action] and \ action not in PermissionCache( self.env): self.perms.grant_permission('authenticated', action) self.perms.revoke_permission('auth_moved', action) # Prevent to run another initial setup later. cfg.set('account-manager', 'auth_init', False) # Write changes back to file to make them permanent, what # causes the environment to reload on following redirect. cfg.save() add_notice(req, _("Your changes have been saved.")) _redirect(req) else: add_notice(req, _( "Your changes are cached until you either drop or save " "them all (see last step).")) if req.method == 'POST' and req.args.get('add'): # Initial admin account requested. account = _add_user_account(self.env, req) username = self.acctmgr.handle_username_casing( req.args.get('username', '').strip()) if not account and username: self.perms.grant_permission(username, 'TRAC_ADMIN') # Prepare information for progress bar and page navigation. if req.method == 'POST': if 'next' in req.args: step += 1 elif ('back' in req.args or 'prev' in req.args) and step > 0: step -= 1 steps = [ dict(label=_("Authentication Options"), past=step > 0), dict(image='users', label=_("Password Store"), past=step > 1), dict(image='refresh', label=_("Password Policy"), past=step > 2), dict(image='approval', label=_("Account Policy"), past=step > 3), dict(image='guard', label=_("Account Guard"), past=step > 4), dict(label=_("Initialization")) ] data.update({ 'active': step, 'steps': steps, 'auth_cookie_lifetime': cfg.getint('trac', 'auth_cookie_lifetime'), 'secure_cookies': cfg.getbool('trac', 'secure_cookies'), 'check_auth_ip': cfg.getbool('trac', 'check_auth_ip'), 'ignore_auth_case': cfg.getbool('trac', 'ignore_auth_case'), 'acctmgr_login': cfg.getbool('components', 'acct_mgr.web_ui.LoginModule'), 'login_opt_list': cfg.getbool('account-manager', 'login_opt_list'), 'persistent_sessions': self.acctmgr.persistent_sessions, 'cookie_refresh_pct': cfg.getint('account-manager', 'cookie_refresh_pct'), 'auth_cookie_path': cfg.get('trac', 'auth_cookie_path'), }) # Build password store configuration details. disabled_store = None password_store = cfg.getlist('account-manager', 'password_store') data.update({'password_store': password_store}) if password_store: store_count = range(0, stores.component_count() + 1) store_list = [] for store in self.acctmgr.stores: if store.__class__.__name__ == "ResetPwStore": # Exclude special store, that is used strictly internally # and inherits configuration from SessionStore anyway. continue options = [] for attr, option in _getoptions(store): error = None opt_val = None value = None try: opt_val = option.__get__(store, store) except AttributeError as e: env.log.error(e) regexp = r'^.* interface named \"(.*?)\".*$' error = _("Error while reading configuration - Hint: " "Enable/install required component '%s'." % re.sub(regexp, r'\1', str(e))) pass if opt_val: value = isinstance(opt_val, Component) and \ opt_val.__class__.__name__ or opt_val opt_sel = None try: option.xtnpt.interface except AttributeError: # No ExtensionOption / Interface undefined. pass else: opt_sel = {'options': [], 'selected': None} if opt_sel: for impl in option.xtnpt.extensions(env): extension = impl.__class__.__name__ opt_sel['options'].append(extension) if opt_val and extension == value: opt_sel['selected'] = extension if len(opt_sel['options']) == 0 and error: opt_sel['error'] = error value = opt_sel options.append({ 'label': attr, 'name': '%s.%s' % (store.__class__.__name__, attr), 'value': value, 'doc': gettext(option.__doc__) }) continue store_list.append({ 'name': store.__class__.__name__, 'classname': store.__class__.__name__, 'order': stores[store], 'options': options }) continue store_list = sorted(store_list, key=lambda i: i['order']) disabled_store = frozenset(password_store).difference(frozenset( [store['classname'] for store in store_list])) data.update({ 'store_count': store_count, 'disabled_store': disabled_store, 'store_list': store_list, 'refresh_passwd': self.acctmgr.refresh_passwd, }) else: # Prepare initial setup information. data.update({ 'init_store': 'db', 'init_store_hint': dict( db=cleandoc(""" [account-manager] db_htdigest_realm = password_store = SessionStore [components] acct_mgr.db.SessionStore = enabled acct_mgr.pwhash.HtDigestHashMethod = enabled """), htdigest=cleandoc(""" [account-manager] htdigest_file = trac.htdigest htdigest_realm = password_store = HtDigestStore [components] acct_mgr.htfile.HtDigestStore = enabled """), htpasswd=cleandoc(""" [account-manager] htpasswd_file = trac.htpasswd htpasswd_hash_type = md5 password_store = HtPasswdStore [components] acct_mgr.htfile.HtPasswdStore = enabled """), svn_file=cleandoc(""" [account-manager] password_file = password_store = SvnServePasswordStore [components] acct_mgr.svnserve.SvnServePasswordStore = enabled """), http=cleandoc(""" [account-manager] auth_url = password_store = HttpAuthStore [components] acct_mgr.http.HttpAuthStore = enabled """), etc=cleandoc(""" [account-manager] password_store = [components] """) ), }) reset_password = cfg.getbool('account-manager', 'reset_password') data.update({ 'reset_password': reset_password, 'generated_password_length': cfg.getint('account-manager', 'generated_password_length'), 'force_passwd_change': cfg.getbool('account-manager', 'force_passwd_change'), }) # Build registration check configuration details. acctmgr_register = cfg.getbool('components', 'acct_mgr.register.RegistrationModule') check_list = [] for check in self.acctmgr.checks: options = [] for attr, option in _getoptions(check): error = None opt_val = None value = None try: opt_val = option.__get__(check, check) except AttributeError as e: env.log.error(e) regexp = r'^.* interface named \"(.*?)\".*$' error = _("Error while reading configuration - " "Hint: Enable/install required component '%s'." % re.sub(regexp, r'\1', str(e))) if opt_val: value = isinstance(opt_val, Component) and \ opt_val.__class__.__name__ or opt_val opt_sel = None try: option.xtnpt.interface except AttributeError: # No ExtensionOption / Interface undefined. pass else: opt_sel = {'options': [], 'selected': None} if opt_sel: for impl in option.xtnpt.extensions(env): extension = impl.__class__.__name__ opt_sel['options'].append(extension) if opt_val and extension == value: opt_sel['selected'] = extension if len(opt_sel['options']) == 0 and error: opt_sel['error'] = error value = opt_sel options.append({ 'label': attr, 'name': '%s.%s' % (check.__class__.__name__, attr), 'value': value, 'doc': gettext(option.__doc__) }) continue try: doc = dgettext(check._domain, check._description) except AttributeError: doc = check.__class__.__doc__ check_list.append({ 'name': check.__class__.__name__, 'classname': check.__class__.__name__, 'doc': doc, 'order': checks[check], 'options': options }) continue check_list = sorted(check_list, key=lambda i: i['order']) check_count = range(0, checks.component_count() + 1) register_check = cfg.getlist('account-manager', 'register_check') disabled_check = frozenset(register_check).difference(frozenset( [check['classname'] for check in check_list])) data.update({ 'change_uid_enabled': [k for k, v in cfg['components'].options() if k.startswith('acct_mgr.model.') and v == 'enabled'] and True or False, 'acctmgr_register': acctmgr_register, 'allow_delete_account': cfg.getbool('account-manager', 'allow_delete_account'), 'register_check': register_check, 'disabled_check': disabled_check, 'check_list': check_list, 'check_count': check_count, 'require_approval': cfg.getbool('account-manager', 'require_approval'), 'verify_email': EmailVerificationModule(env).verify_email, }) # Prepare AccountGuard configuration details. acctmgr_guard = ( cfg.getbool('components', 'acct_mgr.web_ui.LoginModule') and cfg.getbool('components', 'acct_mgr.guard.AccountGuard') ) login_attempt_max_count = self.guard.login_attempt_max_count data.update({ 'acctmgr_guard': acctmgr_guard, 'login_attempt_max_count': login_attempt_max_count, 'user_lock_time': self.guard.user_lock_time, 'user_lock_max_time': self.guard.user_lock_max_time, 'user_lock_time_progression': self.guard.lock_time_progression, }) # Prepare configuration check-up information. details = [] status = (disabled_store and 'error' or not password_store and 'disabled' or 'ok') details.append(dict(desc=_("Password Store"), status=status, step=1)) # Require no pending password store configuration issues. ready = status != 'error' details.append(dict( desc=_("Password Reset"), status=not reset_password and 'disabled' or 'ok', step=2 ) ) status = (disabled_check and 'error' or not register_check and 'unknown' or not acctmgr_register and 'disabled' or 'ok') details.append( dict(desc=_("Account Registration"), status=status, step=3) ) # Require no pending registration check configuration issues. ready = ready and status != 'error' details.append(dict( desc=_("Account Guard"), status=((not acctmgr_guard or login_attempt_max_count < 1) and 'disabled' or 'ok'), step=4) ) admin_available = self.perms.get_users_with_permission('TRAC_ADMIN') status = 'ok' if admin_available else 'error' details.append(dict(desc=_("Admin user account"), status=status)) # Require at least one admin account. ready = ready and status != 'error' details.append(dict(desc=_("Configuration Review"), status='unknown')) data.update({ 'admin_available': admin_available, 'acctmgr': account, 'set_password': self.acctmgr.supports('set_password'), 'completion': dict(details=details, ready=ready), }) # Extract relevant configuration options for final review. opts = [(k, v) for k, v in cfg['account-manager'].options()] roundup = {'account-manager': sorted(opts)} components = ['trac.web.auth.LoginModule'] core_opts = ( 'auth_cookie_path', 'auth_cookie_lifetime', 'ignore_auth_case', 'check_auth_ip', 'secure_cookies' ) opts = [(k, v) for k, v in cfg['trac'].options() if k in core_opts] roundup['trac'] = sorted(opts) # Read sections marked as related too. components.extend(cfg['account-manager'].getlist('sibling_cmp')) roundup['components'] = [(k, v) for k, v in cfg['components'].options() if k.startswith('acct_mgr') or k in [c.lower() for c in components]] if 'sibling_cfg' in cfg['account-manager']: siblings = cfg['account-manager'].getlist('sibling_cfg') for sibling in siblings: opts = [(k, v) for k, v in cfg[sibling].options()] roundup[sibling] = sorted(opts) # Clean-up by filtering options with default values. roundup_defaults = dict() for section in roundup: defaults = cfg.defaults().get(section) for option in roundup[section]: if defaults and option[0] in defaults and \ defaults[option[0]] == option[1]: if section in roundup_defaults: roundup_defaults[section].append(option[0]) else: roundup_defaults[section] = list((option[0],)) data.update(dict(roundup=roundup, roundup_defaults=roundup_defaults)) add_script(req, 'acct_mgr/js/acctmgr_admin.js') add_stylesheet(req, 'acct_mgr/acctmgr.css') add_stylesheet(req, 'common/css/report.css') return 'account_config.html', data # IAuthenticator methods def authenticate(self, req): """Launch an initial Trac authentication setup. This method authorizes the first login request after Trac environment load as setup session, while no user has full permissions, but can be locked by configuration to never authenticate at all. """ init = self.config.getbool('account-manager', 'auth_init') remote_user = None if init and req.path_info == '/login' and not req.remote_user and \ not self.perms.get_users_with_permission('TRAC_ADMIN'): # Prevent to run another initial setup in parallel. self.config.set('account-manager', 'auth_init', False) # Initialize a setup session. req.environ['REMOTE_USER'] = remote_user = self.authname if self.authname not in \ self.perms.get_users_with_permission(self.cfg_action): self.perms.grant_permission(self.authname, self.cfg_action) # Do not grant anything but the required configuration permission. perms = self.perms.get_user_permissions('authenticated') for action in perms: # Filter actions inherited from 'anonymous'. if perms[action] and action not in PermissionCache(self.env): self.perms.grant_permission('auth_moved', action) self.perms.revoke_permission('authenticated', action) add_notice(req, _("Initial Trac authentication setup launched.")) # Set referer without interfering with redirect to '/login'. req.args['referer'] = req.href.admin('accounts', 'config') return remote_user def _add_user_account(env, req): acctmgr = AccountManager(env) account = dict(email=req.args.get('email', '').strip(), name=req.args.get('name', '').strip(), username=acctmgr.handle_username_casing( req.args.get('username', '').strip())) verify_enabled = EmailVerificationModule(env).email_enabled and \ EmailVerificationModule(env).verify_email if acctmgr.supports('set_password'): if account['username']: # Check request and prime account on success. try: acctmgr.validate_account(req, True) # Account email approval for authoritative action. if verify_enabled and account['email'] and \ req.args.get('email_approved'): set_user_attribute(env, account['username'], 'email_verification_sent_to', account['email']) except NotificationError as e: add_warning(req, _("Error raised while sending a change " "notification.") + _("You'll get details with TracLogging " "enabled.")) env.log.error('Unable to send change notification: %s', exception_to_unicode(e, traceback=True)) except RegistrationError as e: add_warning(req, e) else: add_notice(req, tag_( "Account %(username)s created.", username=tag.b(account['username']))) # User editor form clean-up. account = {} else: add_warning(req, _( "None of the configured password stores is writable.")) return account trunk/acct_mgr/api.py000644 000000 000000 00000047744 14413553530 013314 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2011-2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good from pkg_resources import resource_filename, resource_isdir from trac.config import BoolOption, Option, OrderedExtensionsOption from trac.core import Component, ExtensionPoint, Interface, TracError from trac.core import implements from trac.perm import IPermissionRequestor, PermissionCache from trac.util.text import cleandoc, exception_to_unicode from trac.util.translation import domain_functions from trac.web.chrome import ITemplateProvider, add_warning from trac.web.main import IRequestFilter from .compat import use_jinja2 DOMAIN = 'acct_mgr' add_domain, _, N_, gettext, ngettext, tag_ = \ domain_functions(DOMAIN, ('add_domain', '_', 'N_', 'gettext', 'ngettext', 'tag_')) cleandoc_ = cleandoc class IAccountChangeListener(Interface): """An interface for receiving account change events.""" def user_created(user, password): """New user (account) created.""" def user_id_changed(old_uid, new_uid): """User id changed. This is, when an authenticated Trac session's ID has been changed. """ def user_password_changed(user, password): """Password changed.""" def user_deleted(user): """User and related account information have been deleted.""" def user_password_reset(user, email, password): """User password has been reset. Note, that this is no longer final, and the old password could still be recovered before first successful login with the new password by using the old password again. """ def user_email_verification_requested(user, token): """User verification has been requested.""" def user_registration_approval_required(user): """Account registered, requiring administrative approval.""" class IAccountRegistrationInspector(Interface): """An interface for Components, that wish to participate in examining requests for account creation. The check method is called not only by RegistrationModule but when adding new users from the user editor in AccountManagerAdminPanel too. Provide a descriptive, translatable string for web-UI presentation as '_description' attribute using the 'cleandoc_' from acct_mgr.api for trimming excessive whitespace. WikiFormatting is assumed to get a nice, uniform rendering i.e. for the configuration admin panel. """ def render_registration_fields(req, data): """Emit one or multiple additional fields for registration form built. Returns a dict containing a 'required' and/or 'optional' tuple of * Genshi Fragment or valid XHTML markup for registration form * modified or unchanged data object (used to render `account_register.html`) If the return value is just a single tuple, its fragment or markup will be inserted into the 'required' section. """ def validate_registration(req): """Check registration form input. Returns a RegistrationError with error message, or None on success. """ class IPasswordStore(Interface): """An interface for Components that provide a storage method for users and passwords. """ def config_key(): """'''Deprecated''': New implementations should not use this method. The preferred way to configure an `IPasswordStore` implementation is by using its class name in the `password_store` option. Returns a string used to identify this implementation in the config. This password storage implementation will be used, if the value of config property "account-manager.password_format" matches. """ def get_users(): """Returns an iterable of the known usernames.""" def has_user(user): """Returns whether the user account exists.""" def set_password(user, password, old_password=None, overwrite=True): """Sets the password for the user. This should create the user account, if it doesn't already exist. Returns True, if a new account was created, False if an existing account was updated. """ def check_password(user, password): """Checks if the password is valid for the user. Returns True, if the correct user and password are specified. Returns False, if the incorrect password was specified. Returns None, if the user doesn't exist in this password store. Note: Returning `False` is an active rejection of the login attempt. Return None to let the authentication eventually fall through to next store in a chain. """ def delete_user(user): """Deletes the user account. Returns True, if the account existed and was deleted, False otherwise. """ class IUserIdChanger(Interface): """An interface for Components, that will participate in changing user IDs inside a Trac environment consistently. """ def replace(old_uid, new_uid): """Change the user ID. A db connection is provided, so that all components may share the same transaction for making the whole change atomic (commit all or revert pending changes in case of an error in any Trac realm). A dict is expected with realm(s) as key and message value to give feedback on failure or success per Trac realm. """ class AccountManager(Component): """The AccountManager component handles all user account management methods provided by the IPasswordStore interface. The methods will be handled by underlying password storage implementations set in trac.ini with the "account-manager.password_store" option. The "account-manager.password_store" may be an ordered list of password stores, and if so, then each password store is queried in turn. """ implements(IAccountChangeListener, IPermissionRequestor, IRequestFilter, ITemplateProvider) change_listeners = ExtensionPoint(IAccountChangeListener) # All checks, not only the configured ones (see self.register_checks). checks = ExtensionPoint(IAccountRegistrationInspector) password_stores = OrderedExtensionsOption( 'account-manager', 'password_store', IPasswordStore, include_missing=False, doc="Ordered list of password stores, queried in turn.") register_checks = OrderedExtensionsOption( 'account-manager', 'register_check', IAccountRegistrationInspector, default="""BasicCheck, EmailCheck, BotTrapCheck, RegExpCheck, UsernamePermCheck""", include_missing=False, doc="""Ordered list of IAccountRegistrationInspector's to use for registration checks.""") # All stores, not only the configured ones (see self.password_stores). stores = ExtensionPoint(IPasswordStore) allow_delete_account = BoolOption( 'account-manager', 'allow_delete_account', True, doc="Allow users to delete their own account.") force_passwd_change = BoolOption( 'account-manager', 'force_passwd_change', True, doc="Force the user to change password when it's reset.") persistent_sessions = BoolOption( 'account-manager', 'persistent_sessions', False, doc="""Allow the user to be remembered across sessions without needing to re-authenticate. This is, user checks a \"Remember Me\" checkbox and, next time he visits the site, he'll be remembered.""") refresh_passwd = BoolOption( 'account-manager', 'refresh_passwd', False, doc="""Re-set passwords on successful authentication. This is most useful to move users to a new password store or enforce new store configuration (i.e. changed hash type), but should be disabled/unset otherwise.""") username_char_blacklist = Option( 'account-manager', 'username_char_blacklist', ':[]', doc="""Always exclude some special characters from usernames. This is enforced upon new user registration.""") _htdocs_dir = resource_filename(__name__, 'htdocs') _templates_dir = resource_filename( __name__, 'templates/%s' % ('jinja2' if use_jinja2 else 'genshi')) def __init__(self): # Bind the 'acct_mgr' catalog to the specified locale directory. if resource_isdir(__name__, 'locale'): locale_dir = resource_filename(__name__, 'locale') add_domain(self.env.path, locale_dir) # Public API def get_users(self): """Get usernames from all active stores. Because we allow concurrent active stores, and some stores even don't warrant uniqueness within itself, multiple usernames should be expected. """ users = [] for store in self.password_stores: users.extend(store.get_users()) return users def has_user(self, user): exists = False user = self.handle_username_casing(user) for store in self.password_stores: if store.has_user(user): exists = True break continue return exists def set_password(self, user, password, old_password=None, overwrite=True): user = self.handle_username_casing(user) store = self.find_user_store(user) if store and not hasattr(store, 'set_password'): raise TracError(_("The authentication backend for user %(user)s " "does not support setting the password.", user=user)) elif not store: store = self.get_supporting_store('set_password') if store: try: result = store.set_password(user, password, old_password, overwrite) except TypeError: # Support former method signature - overwrite unconditionally. result = None if overwrite or not store.has_user(user): result = store.set_password(user, password, old_password) if result: self._notify('created', user, password) elif not overwrite: raise TracError(_("Password for user %(user)s existed, " "couldn't create.", user=user)) else: self._notify('password_changed', user, password) else: raise TracError(_("None of the IPasswordStore components listed " "in the trac.ini supports setting the password " "or creating users.")) return result def check_password(self, user, password): valid = False user = self.handle_username_casing(user) for store in self.password_stores: valid = store.check_password(user, password) if valid: if valid is True and \ self.refresh_passwd is True and \ self.get_supporting_store('set_password'): self._maybe_update_hash(user, password) break return valid def delete_user(self, user): user = self.handle_username_casing(user) # Delete credentials from password store. store = self.find_user_store(user) del_method = getattr(store, 'delete_user', None) if callable(del_method): del_method(user) # Delete session attributes, session and any custom permissions # set for the user. from .model import delete_user delete_user(self.env, user) self._notify('deleted', user) def supports(self, operation): try: self.password_stores except AttributeError: return False else: if self.get_supporting_store(operation): return True else: return False def get_supporting_store(self, operation): """Returns the IPasswordStore that implements the specified operation. None is returned if no supporting store can be found. """ supports = False store = None for store in self.password_stores: if hasattr(store, operation): supports = True break continue store = supports and store or None return store def get_all_supporting_stores(self, operation): """Returns a list of stores that implement the specified operation""" stores = [] for store in self.password_stores: if hasattr(store, operation): stores.append(store) continue return stores def find_user_store(self, user): """Locates which store contains the user specified. If the user isn't found in any IPasswordStore in the chain, None is returned. """ user_stores = [] for store in self.password_stores: user_list = store.get_users() user_stores.append((store, user_list)) continue user = self.handle_username_casing(user) for store in user_stores: if user in store[1]: return store[0] continue return None def handle_username_casing(self, user): """Enforce lowercase usernames if required. Comply with Trac's own behavior, when case-insensitive user authentication is set to True. """ ignore_auth_case = self.config.getbool('trac', 'ignore_auth_case') return ignore_auth_case and user.lower() or user def validate_account(self, req, create=False): """Run configured registration checks. Optionally create a new account on success. """ for inspector in self.register_checks: inspector.validate_registration(req) if create: self._create_user(req) def _create_user(self, req): """Set password and prime a new authenticated Trac session.""" username = req.args.get('username', '').strip() username = self.handle_username_casing(username) # Result of a successful account creation request is a made-up # authenticated session, that a new user can refer to later on. # Strictly required to create a primary key for additional attributes, # perhaps even something as critical as the SessionStore password. from .model import prime_auth_session, set_user_attribute try: prime_auth_session(self.env, username) # Save attributes for the user with reference to that session ID. # Done before writing to a password store to preserve attributes # in case of non-fatal errors (especially notification errors). for attribute in ('name', 'email'): value = req.args.get(attribute) if not value: continue set_user_attribute(self.env, username, attribute, value) # Create the user in the configured (primary) password store. self.set_password(username, req.args.get('password'), overwrite=False) finally: if not self.has_user(username): # Rollback. from .model import delete_user delete_user(self.env, username) def _maybe_update_hash(self, user, password): from .model import get_user_attribute, set_user_attribute if get_user_attribute(self.env, user, 1, 'password_refreshed', 1) == [0]: self.log.debug("Refresh password for user: %s", user) store = self.find_user_store(user) pwstore = self.get_supporting_store('set_password') if pwstore.set_password(user, password) is True: # Account re-created according to current settings. if store and not (store.delete_user(user) is True): self.log.warning("Failed to remove old entry for user: " "%s", user) set_user_attribute(self.env, user, 'password_refreshed', 1) def _notify(self, mod, *args): mod = '_'.join(['user', mod]) for listener in self.change_listeners: # Support divergent account change listener implementations too. try: self.log.debug("CHANGE_LISTENER: %s(%s)", repr(listener), mod) getattr(listener, mod)(*args) except AttributeError as e: self.log.warning("IAccountChangeListener %s does not support " "method %s: %s", listener.__class__.__name__, mod, exception_to_unicode(e)) # IAccountChangeListener methods def user_created(self, user, password): self.log.info("Created new user: %s", user) def user_id_changed(self, old_uid, new_uid): self.log.info("Changed user id: from '%s' to '%s'", old_uid, new_uid) def user_password_changed(self, user, password): self.log.info("Updated password for user: %s", user) def user_deleted(self, user): self.log.info("Deleted user: %s", user) def user_password_reset(self, user, email, password): self.log.info("Password reset for user: %s, %s", user, email) def user_email_verification_requested(self, user, token): self.log.info("Email verification requested for user: %s", user) def user_registration_approval_required(self, user): self.log.info("Registration approval required for user: %s", user) # IRequestFilter methods def pre_process_request(self, req, handler): if not req.session.authenticated or 'ACCTMGR_USER_ADMIN' in req.perm: # Permissions for anonymous and admin users remain unchanged. return handler if 'approval' in req.session: # Account approval not granted, remove elevated permissions. req.perm = PermissionCache(self.env) add_warning(req, _("Account is pending approval. You may need " "to contact your administrator.")) self.log.debug( "AccountManager.pre_process_request: Permissions for '%s' " "stripped (account approval %s)", req.authname, req.session['approval']) return handler def post_process_request(self, req, template, data, content_type): return template, data, content_type # IPermissionRequestor methods def get_permission_actions(self): action = ['ACCTMGR_CONFIG_ADMIN', 'ACCTMGR_USER_ADMIN', 'EMAIL_VIEW', 'USER_VIEW'] actions = [('ACCTMGR_ADMIN', action), action[0], (action[1], action[2:]), action[3]] return actions # ITemplateProvider methods def get_htdocs_dirs(self): """Return the absolute path of a directory containing additional static resources (such as images, style sheets, etc). """ yield 'acct_mgr', self._htdocs_dir def get_templates_dirs(self): """Return the absolute path of the directory containing the provided Genshi templates. """ yield self._templates_dir class GenericUserIdChanger(Component): """Define common class attributes for IUserIdChanger components.""" implements(IUserIdChanger) abstract = True def msg(self, old_uid, new_uid, table, column, constraint=None, result=0): if not constraint: return ("Replacing user ID '%s' with '%s' for %s %s: %s" % (old_uid, new_uid, table, column, result)) return ("Replacing user ID '%s' with '%s' for %s %s (%s): %s" % (old_uid, new_uid, table, column, constraint, result)) # IUserIdChanger method def replace(self, old_uid, new_uid): raise NotImplementedError trunk/acct_mgr/compat.py000644 000000 000000 00000002341 14413553530 014006 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2010-2014 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. import hmac import sys from trac.web.chrome import Chrome if sys.version_info[0] == 2: unicode = unicode basestring = basestring iteritems = lambda d: d.iteritems() itervalues = lambda d: d.itervalues() def compare_digest(a, b): if type(a) is not type(b): to_b = lambda v: v.encode('utf-8') if isinstance(v, unicode) else v a = to_b(a) b = to_b(b) return hmac.compare_digest(a, b) else: unicode = str basestring = str iteritems = lambda d: d.items() itervalues = lambda d: d.values() compare_digest = hmac.compare_digest use_jinja2 = hasattr(Chrome, 'jenv') if use_jinja2: def process_request_compat(f): return f else: def process_request_compat(f): def wrapper(self, req): rv = f(self, req) if isinstance(rv, tuple) and len(rv) == 2: rv += (None,) return rv return wrapper trunk/acct_mgr/db.py000644 000000 000000 00000010447 14413553530 013116 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2007 Matthew Good # Copyright (C) 2010-2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good from trac.core import Component, implements from trac.config import ExtensionOption from .api import IPasswordStore, N_ from .pwhash import IPasswordHashMethod class SessionStore(Component): implements(IPasswordStore) hash_method = ExtensionOption('account-manager', 'hash_method', IPasswordHashMethod, 'HtDigestHashMethod', doc=N_("IPasswordHashMethod used to create new/updated passwords")) def __init__(self): self.key = 'password' # Check for valid hash method configuration. self.hash_method_enabled def get_users(self): """Returns an iterable of the known usernames.""" for sid, in self.env.db_query(""" SELECT DISTINCT sid FROM session_attribute WHERE authenticated=1 AND name=%s """, (self.key,)): yield sid def has_user(self, user): for _ in self.env.db_query(""" SELECT * FROM session_attribute WHERE authenticated=1 AND name=%s AND sid=%s """, (self.key, user)): return True return False def set_password(self, user, password, old_password=None, overwrite=True): """Sets the password for the user. This should create the user account, if it doesn't already exist. Returns True, if a new account was created, and False, if an existing account was updated. """ if not self.hash_method_enabled: return hash_ = self.hash_method.generate_hash(user, password) with self.env.db_transaction as db: sql = "WHERE authenticated=1 AND name=%s AND sid=%s" if overwrite: db(""" UPDATE session_attribute SET value=%s """ + sql, (hash_, self.key, user)) exists = False for _ in db(""" SELECT value FROM session_attribute """ + sql, (self.key, user)): exists = True break if not exists: db(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,1,%s,%s) """, (user, self.key, hash_)) return not exists def check_password(self, user, password): """Checks if the password is valid for the user.""" if not self.hash_method_enabled: return for hash_, in self.env.db_query(""" SELECT value FROM session_attribute WHERE authenticated=1 AND name=%s AND sid=%s """, (self.key, user)): return self.hash_method.check_hash(user, password, hash_) # Return value 'None' allows to proceed with another, chained store. return def delete_user(self, user): """Deletes the user account. Returns True, if the account existed and was deleted, False otherwise. """ with self.env.db_transaction as db: sql = "WHERE authenticated=1 AND name=%s AND sid=%s" # Avoid has_user() to make this transaction atomic. exists = False for _ in db(""" SELECT * FROM session_attribute %s """ % sql, (self.key, user)): exists = True break if exists: db(""" DELETE FROM session_attribute %s """ % sql, (self.key, user)) return exists @property def hash_method_enabled(self): """Prevent AttributeError on plugin load. This would happen, if the implementation of 'IPasswordHashMethod' interface configured in 'hash_method' has not been enabled. """ try: self.hash_method except AttributeError: self.log.error("%s: no IPasswordHashMethod enabled - fatal, " "can't work", self.__class__) return return True trunk/acct_mgr/guard.py000644 000000 000000 00000024461 14413553530 013634 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2011,2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann from datetime import timedelta import json import time from trac.config import IntOption, Option from trac.core import Component from trac.util.datefmt import format_datetime, pretty_timedelta from trac.util.datefmt import to_datetime, to_timestamp from .compat import unicode from .model import (del_user_attribute, get_user_attribute, set_user_attribute, user_known) class AccountGuard(Component): """The AccountGuard component protects against brute-force attacks on user passwords. It does so by adding logging of failed login attempts, account status tracking and administative user account locking. Configurable time-locks with exponential lock time prolongation allow to balance graceful handling of failed login attempts and reasonable protection against attempted brute-force attacks. """ login_attempt_max_count = IntOption( 'account-manager', 'login_attempt_max_count', 0, doc="""Lock user account after specified number of login attempts. Value zero means no limit.""") user_lock_time = IntOption( 'account-manager', 'user_lock_time', 0, doc="""Drop user account lock after specified time (seconds). Value zero means unlimited lock time.""") user_lock_max_time = IntOption( 'account-manager', 'user_lock_max_time', 86400, doc="""Limit user account lock time to specified time (seconds). This is relevant only with user_lock_time_progression > 1.""") user_lock_time_progression = Option( 'account-manager', 'user_lock_time_progression', '1', doc="""Extend user account lock time incrementally. This is based on logarithmic calculation and decimal numbers accepted: Value '1' means constant lock time per failed login attempt. Value '2' means double locktime after 2nd lock activation, four times the initial locktime after 3rd, and so on.""") def __init__(self): # Adjust related values to promote a sane configuration, because the # combination of some default values is not meaningful. cfg = self.config if self.login_attempt_max_count < 0: cfg.set('account-manager', 'login_attempt_max_count', 0) options = ['user_lock_time', 'user_lock_max_time', 'user_lock_time_progression'] for option in options: cfg.remove('account-manager', option) self.log.warning("AccountGuard disabled by option, obsoleting " "other options.") elif self.user_lock_max_time < 1: cfg.set('account-manager', 'user_lock_max_time', cfg.defaults().get( 'account-manager')['user_lock_max_time']) self.log.warning("AccountGuard option fixed, please check your " "configuration.") else: return # Changes are intentionally not written to file for persistence. # This could cause the environment to reload a bit too early, even # interrupting a rewrite in progress by another thread and causing # a DoS condition by truncating the configuration file. def failed_count(self, user, ipnr=None, reset=False): """Report number of previously logged failed login attempts. Enforce login policy with regards to tracking of login attempts and user account lock behavior. Default `False` for reset value causes logging of another attempt. `None` value for reset just reads failed login attempts count. `True` value for reset triggers final log deletion. """ if not user or not user_known(self.env, user): return 0 key = 'failed_logins_count' value = get_user_attribute(self.env, user, 1, key) count = value and user in value and int(value[user][1].get(key)) or 0 if reset is None: # Report failed attempts count only. return count if not reset: # Trigger the failed attempt logger. attempts = self.get_failed_log(user) log_length = len(attempts) if log_length > self.login_attempt_max_count: # Truncate attempts list preserving most recent events. del attempts[:(log_length - self.login_attempt_max_count)] attempts.append({'ipnr': ipnr, 'time': int(time.time())}) count += 1 # Update or create attempts counter and list. set_user_attribute(self.env, user, 'failed_logins', unicode(attempts)) set_user_attribute(self.env, user, key, count) self.log.debug("AccountGuard.failed_count(%s) = %s", user, count) else: # Delete existing attempts counter and list. del_user_attribute(self.env, user, 1, 'failed_logins') del_user_attribute(self.env, user, 1, key) # Delete the lock count too. self.lock_count(user, 'reset') return count def get_failed_log(self, user): """Returns an iterable of previously logged failed login attempts. The iterable contains a list of dicts in the following form: {'ipnr': ipnr, 'time': time_stamp} or an empty list. The time stamp format depends on Trac support for POSIX seconds (before 0.12) or POSIX microseconds in more recent Trac versions. """ if not user: return [] attempts = get_user_attribute(self.env, user, 1, 'failed_logins') return attempts and eval(attempts[user][1].get('failed_logins')) or [] def lock_count(self, user, action='get'): """Count, log and report, how often in succession user account lock conditions have been met. This is the exponent for lock time prolongation calculation too. """ key = 'lock_count' if action != 'reset': value = get_user_attribute(self.env, user, 1, key) count = value and user in value and \ int(value[user][1].get(key)) or 0 if action != 'get': # Push and create or update cached count. count += 1 set_user_attribute(self.env, user, key, count) else: # Reset/delete lock count cache. del_user_attribute(self.env, user, 1, key) count = 0 return count def lock_time(self, user, next=False): """Calculate current time-lock length for user account.""" base = self.lock_time_progression lock_count = self.lock_count(user) if not user or not user_known(self.env, user): return 0 else: if next: # Preview calculation. exponent = lock_count else: exponent = lock_count - 1 t_lock = self.user_lock_time * base ** exponent # Limit maximum lock time. if t_lock > self.user_lock_max_time: t_lock = self.user_lock_max_time self.log.debug("AccountGuard.lock_time(%s) = %s%s", user, t_lock, next and ' (preview)' or '') return t_lock @property def lock_time_progression(self): try: progression = float(self.config.get('account-manager', 'user_lock_time_progression')) if progression == int(progression): progression = int(progression) # Prevent unintended decreasing lock time. if progression < 1: progression = 1 except (TypeError, ValueError): progression = float(self.config.defaults().get('account-manager') ['user_lock_time_progression']) return progression def pretty_lock_time(self, user, next=False): """Convenience method for formatting lock time to string.""" t_lock = self.lock_time(user, next) return (t_lock > 0) and \ (pretty_timedelta(to_datetime(None) - timedelta(seconds=t_lock))) or None def pretty_release_time(self, req, user): """Convenience method for formatting lock time to string.""" ts_release = self.release_time(user) if ts_release is None: return None return format_datetime(to_datetime( self.release_time(user)), tzinfo=req.tz) def release_time(self, user): if self.login_attempt_max_count > 0: if self.user_lock_time == 0: return 0 # Logged attempts required for further checking. attempts = self.get_failed_log(user) if attempts: return attempts[-1]['time'] + self.lock_time(user) def user_locked(self, user): """Returns whether the user account is currently locked. Expect True, if locked, False, if not and None otherwise. """ if self.login_attempt_max_count < 1 or not user or \ not user_known(self.env, user): self.log.debug("AccountGuard.user_locked(%s) = None (%s)", user, self.login_attempt_max_count < 1 and 'disabled by configuration' or 'anonymous user') return None count = self.failed_count(user, reset=None) if count < self.login_attempt_max_count: self.log.debug("AccountGuard.user_locked(%s) = False (try left)", user) return False ts_release = self.release_time(user) if ts_release == 0: # Account locked permanently. self.log.debug("AccountGuard.user_locked(%s) = True " "(permanently)", user) return True # Time-locked or time-lock expired. ts_now = to_timestamp(to_datetime(None)) locked = ts_release - ts_now > 0 self.log.debug("AccountGuard.user_locked(%s) = %s (%s)", user, locked, locked and 'time-lock' or 'lock expired') return locked trunk/acct_mgr/htdocs/000755 000000 000000 00000000000 13171054267 013440 5ustar00000000 000000 trunk/acct_mgr/htdocs/acctmgr.css000644 000000 000000 00000010541 13171054267 015573 0ustar00000000 000000 /* CSS definitions for AccountManagerPlugin */ fieldset.collapsed { border-width: 0; padding: 0 0.5em; } /* styles for configuration admin page */ div.compact { width: 48em; } div.compact pre { background-color: #ffffff; } div.compact textarea { height: 12em; } div.ini { background-color: #ffffff; font-family: Courier, Monospace, serif; max-height: 640px; overflow: auto; padding: 1em; } div.ini span.defaults { color: #998; } div#tabcontent form#cfg_wiz { clear: right; overflow: visible; } form#cfg_wiz fieldset legend.step { font-size: 110%; } form#cfg_wiz tt { border: 1px none #ffffff } fieldset img.icon { float: right; } input.numwidget { text-align: right; width: 7em; } input[name$=filename], input[name$=_regexp], form#cfg_wiz textarea { width: 48em; } li.disabled { list-style-image: url(../acct_mgr/status_disabled.png); } li.error { list-style-image: url(../acct_mgr/status_error.png); } li.ok { list-style-image: url(../acct_mgr/status_ok.png); } li.unknown { list-style-image: url(../acct_mgr/status_unknown.png); } /* progress display derived from Easy CSS Progress Bar 1.0 by Juergen Koller [www.kollermedia.at] */ ul#progress { width: 600px; list-style: none; margin: 10px; float: right; } ul#progress a { text-decoration: none; color: #a9a9a9; } ul#progress li { float: left; background: url(../acct_mgr/arrow.png) repeat-x right 6px; text-align: left; } ul#progress li span { display: block; margin: auto 45% auto auto; text-align: center; border: 1px solid #a9a9a9; border-radius: 10px; width: 20px; height: 20px; line-height: 20px; background-color: #ffffff; } ul#progress li span a { display: block; margin: 0; border-radius: 10px; width: 20px; height: 20px; } ul#progress li span a.active, ul#progress li.active span a, ul#progress li.past span a:hover, ul.progress li.past:hover span a { border-radius: 10px; background-color: #990000; color: #ffffff; } ul#progress li a { display: block; margin: 0.2em 11% 0 0; text-align: center; } ul#progress li.past { background-position: right -174px; } ul#progress li.active { background-position: right -84px; } ul#progress li#last { background-position: right -354px; } ul#progress li#last.active { background-position: right -264px; } ul#progress li.active a:hover, ul.progress li.past a:hover, ul#progress li.past a, ul#progress li.active a { color: #990000; } ul#progress li.active span a:hover { color: #ffffff; } ul#progress li.past:hover { cursor: pointer; } ul#progress li.past span, ul#progress li.active span { border: 1px solid #990000; } /* styles for users admin page */ .holdingbox { position: relative; top: -0.8em; } .panel { position: relative; overflow: hidden; height: 6em; } div#accountlist { max-height: 640px; overflow: auto; } div#tabcontent form#prefs { clear: right; overflow: hidden; } tr.missing td, tr.missing td a { color: #998; } /* styles for account details admin page */ div#user_locked p span img { vertical-align: middle; } div#failed_attempts p.tableheader { color: #999; font-size: 90%; font-weight: bold; margin: 0; padding: 1em 5px 0; } input.delete { position: relative; right: 16px; } table#login_attempts { width: 480px; } td a img { vertical-align: middle; } p span.buttons input { margin-top: 0; vertical-align: baseline; } /* tabs */ #account_details div.field { margin-bottom: 1em; } #account_details #forms { list-style: none; } #account_details #forms li { background: #e6e6e6; border: 1px solid; border-color: #ccc #666 #ccc #ccc; border-top-left-radius: .5em; border-top-right-radius: .5em; color: #666; position: relative; bottom: -1px; float: left; font-size: 90%; margin: 0 .3em; padding: .2em 1em .3em; } #account_details #forms :link, #account_details #forms :visited { border: none; color: #999; } #account_details #forms :link:hover, #account_details #forms :visited:hover { background: transparent; color: #333; } #account_details #forms li.active { background: #fff; border-bottom: 1px solid #fff; } #account_details #formcontent { background: url(../vgradient.png) 0 1px repeat-x; border-top: 1px solid #ccc; float: right; width: 100%; } * html #account_details #formcontent { padding-top: 0; } /* style for compatibility with Trac < 1.0 */ h2 .trac-count { margin-left: .2em; vertical-align: baseline; color: #999; font-size: 90%; font-weight: normal; } trunk/acct_mgr/htdocs/approval.png000644 000000 000000 00000007563 12076643325 016007 0ustar00000000 000000 PNG  IHDR@@iqbKGD pHYsaa?itIME$sIDATxk]Wuks}gcL$NH!UhB Ry?RRAZ-RK+!Ub* PM!8&W{~8wĞLʑͽ_X_t#[Ew^F@|OTlޱ7pn 6cAAANР|ޟdC{ѿ>&$u5D_gHW>{/yċGv_|xc4ڨ"ȯYv{ r{_ztXm Q- >; d-+hPdEmlBաDC a15#UG9MڋT)❼O=ŒPY%zSAIWBO֟A5I8UWuTuxWP3d|ԣ4[/Y89\ -9$!Uxeic))\HACh 45@~jTWH"h޴N[9qbAbjzmF;BA\F3%,Phm7XA#&V_Em% Ov GݯK%ԓ:W8DA2u$&5(nB%!z@1!Ĉ04x%b-:l2xM7D, H4Ufp4(!5\F i&QΗH(iJ(ÆB,} 1&J(׫&2heʠT\(dE!xTUAk$ a鉐$ T52m× W ʜ \>l8/=Zs6lXEdj u޲¡о:)$^I-ބH򂛠_j,ۻޙofYJT!`LL060]iIu>|OK]6͐9APWT3rn Yw_d֟^6xrBW ^%(tѫsaL2+̇-r9̗?^ɓyg+zǗ JpY h\ @yB4x-sɳi| W-ͯ@"WDfEZ YXDȕy*HL?$w'ߟ<|9B4)ezP,h@C@Sx1=qӝ92ϿşjtZ b-hNC+Ƨ+S:ӧ̜d/ ~Oߺk76&FAU宪vYeė?/}.8_κlGWֳ`"`MX;7gtC_gl*'gcz Ɨ5w["=Z_!bub˺x%2,CD!DԡVXhT#D1݆t㌎Ms.c@Hȭ;w/(B^̊ys\=x"Y?od}%7˦Eu9b &GHZ0QwPgȗ!dnu[:ew/5Z[#iG:m՗=+Pd)h4jG33~]Z]o34QkĄR堠V"~90?' _7$N}c9ߜ>q3C13CiNz6 \0j/YOǛC?mEQJ0s2;öaM\2r8 75e%b116:9c#}#N>} \D=iQʩS1O';DfI3ZyJm,Iw lH5eIB+ˎ}jt)\ ˬkLdC{*@(}NZtIVV8>~>e1;{V 8J ^Ԓ2EG[)\&󓘪@u=N"Ӈ: YAdDFZۯ`ML೔eIĕseiooh$XsSsNVU>" xW&}d s1C IQk8xGo Cu:OL/rWΥ G. I=B(H1y].\c?f8IYC1X󁛙7].P8Q[zՆw}}l]折Jk4NwaNf[@Ԧ dt*]~TΞx ȺfH𬢧cuCczj " %FLBz=7ne W0#WЮr i}[".Ƈ7ES"&~Vyb׏]Ic3eʍlmZ +rʱnaŚW0~~M-rey l#>לC` J0wsKj&XZ9-NMQbE ꫒"ϧFu5zeB`\r1Fh [1(Eo~qW $meH"Fl6$DʄOJcyUZ3{ j\y}_d֠^\b1sD)(fD\3<\޲ԇ"€84'N /9yMD"%fXj-b !Пry4(Fu)1f`x&J(|}rEUkykW; 613oBp| BJ\EA#aAw/`D ?U RJJ ZHe oT!8%x9%@^*ɛjz{#K69"r1$0wݪif MX+m7YЁ}6`g9ѿSn/ px`6kހ 3Lu d؂>cˁ!^V2/@,sC*/rm/}/  ~kADfe:D)Tq ¿~Iun9r]Ճ6Vѝ"Th^=S(*#]E!_凢Z]oEڿAp8hIENDB`trunk/acct_mgr/htdocs/arrow.png000644 000000 000000 00000001405 12107303456 015273 0ustar00000000 000000 PNG  IHDRjv~QPLTE&bKGDH pHYs  tIME  D:IDATxIj0P,ݝyvI Y-7~,{Kx\Z-Bᇗ|kS)K컃dr6GYJ!-wy]~|+iGvt옺MrZ}Y@;Hȹ!Y Ys(| sNY1xZxlZ?+jN#f*jNTsbTO!f f kҗH_M5A֍wĩ; Fb@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - p5qIENDB`trunk/acct_mgr/htdocs/delete.png000644 000000 000000 00000001745 12432141335 015407 0ustar00000000 000000 PNG  IHDRasBIT|d pHYsEYBtEXtSoftwarewww.inkscape.org<#tEXtTitlered square error warning iconr}tEXtAuthormolumenQ.tEXtDescriptiona red square error or warning icon/!tEXtCreation Time2006-09-07T17:35:559pRtEXtSourcehttps://openclipart.org/detail/110/red-square-error-warning-icon-by-molumen(ItEXtCopyrightPublic Domain http://creativecommons.org/licenses/publicdomain/YIDAT8˥KHaG7b" z1Hȅ"I\ʰEF.|lMDE(%6:o6|Ì!s~9HAHRQ2 F9aSVwY]bwjm}&X f}BCI{ \8ƇF{8oL™|;>{x ^ϸbadV1gf) gcC`u?V k7`^nV.JjZv KXЖ`*(a|ߓq$\d/\VWb;V{s\7?0 351 jV@HEvO+`C?W5+3ZZc8 Lá 9DžHeR..@o@d(/uz?֫MA"HΔ*\h"Uvr?]e2Is2:Z,IENDB`trunk/acct_mgr/htdocs/guard.png000644 000000 000000 00000006454 12076643325 015263 0ustar00000000 000000 PNG  IHDR@@iqbKGD pHYsaa?itIME jA IDATx{pTU?t I9ШAy,KtAuG]u--gvt )v'#@pG:J$BH$wB y'!Y!D 0!Rs=i$qF}M7i@ !>D$srݺu@)c=_kc "`eƤ+)|wοe˖i/֏^n)B~`|K/ Ν;9z>>;RJ-.[ɓ'TW^ 8S8O>H(@$Qmo۶MGDD(iz]/fM4 vŘ1c!~ޢN 뙀@ˌK5껇e˖c/hHOO $;p d6\f^?+w߭_{5!wK)EJ/^R>uߎ>Lwcp!+; 6 ҋ *m >#:[c+577rǎ"..N R-v`RJ8g͚ŪUr;UדL1MOBxjlٳoRJq"7wajj~d?M0gy(--%<<>}0g'h #(YieY$%Ν^2d~>k7oxRV {D!(~zѯ_?LgСCzҥhTV^ P4ݦCߚG #Gf"9 WM}1QQL0E2MøSi] !tn:6oތR&==Waa!'N.zھ_GZ `i,krLTT`=7n1QQHkѬ,ce䘦am+Vƍ#22B̙C wzŊ";;˗ӕq@+0^Z5b{q!qw/=|.e̛̙7O>}ɶm{bZ~H00ӌ3mc ODywt4iXWGui)QM]iiR\RzF0_ia@~WE!0iX7O@\ܔg@̐wZUWQQJPxbϗӃF0MLJC/6]ӱZa6qZVjLG@pn /`ŒWUGSB#!C 0u{FO?#F7`@vNH)S7M@,@dޭE:[ǎm@K GvZ+4uBgWP濸v!!W>Jq`n;ʚL);c/s46~~J)24?O@u5Z&/765Vb._EYQQ (Rmu7H)K}rs :UxMMUUR=A@yUmm2b$њO)l^yTtIYVYILt4%ee~ mDqY0@8AvAkj**\e 9BCun'N&ʽn))y}>\{H!Jr׭PJq8|8{n%PBr ,˲;t|-l6[~N?!eMv6J=E@41!n7YyyX-oOj9ቍEJɱ,y 1OސsTx5NDi5_>R:>WC_ èL?rk ٳ54N2sru4ʲ]v   o=J@N^)Ѭ,,&,4X׳,ZZ>3 ={Tg?PV^mqF[ϟ~Ѻt@V<;+/0H##sihld[mdTݻuվՑӚoO>J `]W؛k!ٲ_طO# 륬L,ඡCtw/m/"`u)y`BΜaFeڠǎ,<11Gk͚Ma|*s-_xoۜ\ 48b KJ(.-Ų,U9gΐu*x|\aaNJBJ]ԗ7۶0P{0X3`be cpGFEqY-~?UGV^Uec︃Pc|oimz"6!D|0MDN:E꧟2qh"\.ܑ**PSZMCSihj:ܑHt>z޳i7z !a֮]{7W^ԓO^9¨# ?^Bpgb"X>杶m&# 9@o) ԪI||?tqÇ'"qqVPFNLTx}JsKgm?>4@%K]rE柗,aPrN܌+}:/D#.Lcg͚mCri?uu))QZO=Lv<+WrhbժUYL ސ{a%X+6Ajz! +22 6hmtHHH6ض͌3VJriR&XX7o߾牊Dx˗SRRְCi7R Q WLuذaÀv^ ƍZosJ0`ԨQy+*)n0\#G$&ഴuV6oެ+**܀NNHHF3xzz:߿@ Zq~{?_RR޴i~Ҁ6MWľp8,˥4M[u0y@NY߀П;p6OIENDB`trunk/acct_mgr/htdocs/info.png000644 000000 000000 00000001165 12116735443 015104 0ustar00000000 000000 PNG  IHDRabKGD pHYsaa?itIME;'LJIDAT8͒kSQ?ラ) Xڥk Tɩ[t?͡HNB)F-B&hiI})] wårQaxA*+c8j4~ן.-Q!dffvGJQ&F>ok[[7^q#N LN^+qr"!CWJCCOs^Tz<255NKnS Q[[C>:Nj x Gsxv:}[K8N?}V^)rx3IENDB`trunk/acct_mgr/htdocs/js/000755 000000 000000 00000000000 13065031720 014043 5ustar00000000 000000 trunk/acct_mgr/htdocs/js/acctmgr_admin.js000644 000000 000000 00000012577 13065031720 017205 0ustar00000000 000000 // Interaction for the configuration admin panel (function ($) { // Hide/unhide depending sections function toggleLoginOpts() { var isChecked = parseInt( $("input[name=acctmgr_login]:checked").val()); var section = $("#acctmgr_login_opts"); if (isChecked === 0) { $("input[name=auth_cookie_lifetime]").change(); section.slideUp(); } else { $("input[name=auth_cookie_lifetime]").change(); section.slideDown(); } } function togglePreview() { var fileChecked = $("input[name=init_store_file]:checked").val(); var isChecked = $("input[name=init_store]:checked").val(); $("fieldset.ini").hide(); if (isChecked === "file") { $("fieldset#" + fileChecked).show(); } else { $("fieldset#" + isChecked).show(); } } function toggleFileStore() { var isChecked = $("input[name=init_store]:checked").val(); var section = $("#init_store_file"); if (isChecked === "file") { section.slideDown(); } else { section.slideUp(); } } function toggleEtcStore() { var isChecked = $("input[name=init_store]:checked").val(); var section = $("#etc_store_cfg"); if (isChecked === "etc") { section.slideDown(); } else { section.slideUp(); } } function toggleRestart() { var button = $("#restart"); if (!$("input[name=refresh_passwd]").is(':checked')) { button.attr('disabled', 'disabled'); } else { button.removeAttr('disabled'); } } function toggleRegisterOpts() { var section = $("#acctmgr_register_opts"); if (!$("input[name=acctmgr_register]").is(':checked')) { section.slideUp(); } else { section.slideDown(); } } function toggleGuardOpts() { var section = $("#acctmgr_guard_opts"); if (!$("input[name=acctmgr_guard]").is(':checked')) { section.slideUp(); } else { section.slideDown(); } } $(document).ready(function ($) { // Hide/unhide depending elements $("input[name=auth_cookie_lifetime]").change(function () { var isChecked = parseInt( $("input[name=acctmgr_login]:checked").val()); var oldValue = parseInt($("#auth_cookie_lifetime_old").val()); if (parseInt($("input[name=auth_cookie_lifetime]") .val()) !== oldValue || (isChecked === 0 && oldValue === 0)) { $("span#pretty_auth_cookie_lifetime").hide(); } else { $("span#pretty_auth_cookie_lifetime").show(); } }); var $user_lock_max_time = $("input[name=user_lock_max_time]"); $user_lock_max_time.change(function () { var oldValue = parseInt($("#user_lock_max_time_old").val()); if (parseInt($user_lock_max_time.val()) !== oldValue) { $("span#pretty_user_lock_max_time").hide(); } else { $("span#pretty_user_lock_max_time").show(); } }); // Hide/unhide depending sections $("input[type=radio][name=init_store]").click(function () { togglePreview(); }); $("input[type=radio][name=init_store_file]").click(function () { togglePreview(); }); $("input[name=init_store]:checked").click(); var $login_attempt_max_count = $("input[name=login_attempt_max_count]"); $login_attempt_max_count.change(function () { var currVal = parseInt( $login_attempt_max_count.val()); var section = $("div#user_lock_time"); if (currVal === 0) { section.slideUp(); } else if (currVal < 0) { $login_attempt_max_count.val('0'); section.slideUp(); } else { section.slideDown(); } }).change(); var $user_lock_time = $("input[name=user_lock_time]"); $user_lock_time.change(function () { var currVal = parseInt($user_lock_time.val()); var section = $("div#user_lock_time_progression"); if (currVal === 0) { section.slideUp(); } else if (currVal < 0) { $user_lock_time.val('0'); section.slideUp(); } else { section.slideDown(); } }).change(); var $user_lock_time_progression = $("input[name=user_lock_time_progression]"); $user_lock_time_progression.change(function () { var currVal = parseFloat( $user_lock_time_progression.val()); var section = $("div#user_lock_max_time"); if (currVal === 1) { section.slideUp(); } else if (currVal < 1) { $user_lock_time_progression.val('1'); section.slideUp(); } else { section.slideDown(); } }).change(); // Bind functions to input elements and fix initial section // visibility depending on some input state $("input[type=radio][name=acctmgr_login]").click(function () { toggleLoginOpts(); }); toggleLoginOpts(); $("input[type=radio][name=init_store]").click(function () { toggleFileStore(); }); toggleFileStore(); $("input[type=radio][name=init_store]").click(function () { toggleEtcStore(); }); toggleEtcStore(); $("input[type=checkbox][name=acctmgr_register]").click(function () { toggleRegisterOpts(); }); toggleRestart(); $("input[type=checkbox][name=refresh_passwd]").click(function () { toggleRestart(); }); toggleRegisterOpts(); $("input[type=checkbox][name=acctmgr_guard]").click(function () { toggleGuardOpts(); }); toggleGuardOpts(); }); })(jQuery); trunk/acct_mgr/htdocs/locked.png000644 000000 000000 00000001106 11474566631 015414 0ustar00000000 000000 PNG  IHDRasBIT|d pHYs.1tEXtSoftwarewww.inkscape.org<IDAT8Q0ɺ‚MH,4>jKO[hh((- %%@?$.DYkdfOrs2};XkL&kc1gM}%H:'ZDH=6ytzcL "R*rZ*y3/H?qr̃)jBIY0 ǏN|wZTJ"$ 1F8c8:M+L  ) *Apuy| !v{dIs1l[V%unwV$'! +C9g=C es$yrkI$VݐWgQucLFUEUUM;LȖxUMoւ 8fo]ph6wfeل`0&2ou`,yIENDB`trunk/acct_mgr/htdocs/refresh.png000644 000000 000000 00000014750 12076643325 015615 0ustar00000000 000000 PNG  IHDR@@iqbKGD pHYsaa?itIME5HmuIDATxݛ{\UUN;t@$@AxQ@DTPW:uW (H`A "ytGguWwWթM Hw>sNWs^kQ K0h"Th FusX]aKBRjLCz; < _Vݳւv |@TȜb }2}pź C]]c{~-x X&Nt๫c崶G 4 #0H7f΋SypՑȩjG@՘ejh\ wp," I[m1|6 ߇ ؿ}@4MV'do aV `BI:a (,5L v z|^1u͢e%pril ӄ&|p|+%k K@BQ΁Q0pWi FXu>Ԡ(tFaBʉ\J)U5={0荐)~ <\6IKBG9 xGP+Xꎻ ֻn,6!vJIC$ {o-Z뫯v>% R݋Bp p﨨t kG\3Rvͭ+a͚5X"XCoYdcPyNLq`bO*t H9e2I 6]U_x٥Zp\ܭ[ {ɣ_0eZptJ)kmR957R)eRH)k $MŊ~k|@'O~J IYW'egvU^& H$Ν;I$̚5K>|X]?ol2-QV躤䍘jTV5$9Lq=OضŶmFJ͛YBi3D\lԲqؿ@-DY.|allM6Q\\L2$qg4*;:dJtwKq^5uBBR0MӬE0>ή¶ttt+PQQmd<Wa;eu묦\n3Y|FDS@+PjMě1~"G0P(D8f֭,]To߾ݩtFIcnn}/|m?4L@#UUUǁ0P,j,*iTE5\58~MMZ^NK.M6'|ySvqYXEx8"I8x 0 Vn+93-|Mճg7#mv]:L ,ș鄪L[QHŐiNVnzd|`uE'o` \!M+K<eӁGgOC=ԜdID8$"'5k ###-ƒJ6晗sr0Jp}=cLS]vTU9yT+A+PCO7{U@RЌ>=HUo4ƍۗچ91ǛsUYYs3c'xmI< 39<(*~^-smcYNNfyRS ɞJ}09 ?%N+ 8gFmEh? K}yzz:ۻkú={v؂Tɍ83-{\FfֽO8hBU+ \y {V嶇fAo/ -ToxOQ<N 8E^s%.7IzF1^ZcQMӄ(r ,(O g.i? Uu\!UzדxNNŲJj`@ F l/Zhh'cسg?,뱎0Vyr6}T1"t &,Op,Dk׿V;y\WAs u3$ճЎ;]_t  -[p뭷NLL݅oLSUU FʲVVK)$9Dz}rIJ}lG:6R;{f.JRAlnEZ* 롿x믽}[;Jj[|]}`TKvSeyIZ=o#'_(צ_xbg)t7ٴ7XXDE}mɷ>..v<1\ċ8C/;#D@⚅Ec0 h)*H {*rT-PB(xA6VGtRw"vz4H+Nr|姞vβ~W\qn5kWyw\"a6/Pcɞx\'FH#QQLNal"P Ph FE `b_~!.(AJu؛$^ա֢oY,xH)d>NEd;V1$$NN]8I}I28T7"*PC!4=t+F1Bexm# -}=3-G;;dlu_QW %qrOq 'R>z !4]BX_] *>"fk_ۈ8XLJ&/L%AW^Qc<]idꋊ3W v:bumt!";{g3ߋ~7XFJ `|%Q*RHEű[#wr^d-v{?DQEDVٳvOSw1~0n[u{vowҹx(  ]SҷmBRR)vyrߖ|Lu ㇷxv.c{QʅЛPZG#T "i<7\HJ4UVz00pfGrt95{Zz>(UUU^"#8Nm,()ȷ*4V-yOcW /#C B.r`@{P ]%R\K|6ٜC])Rm_|hQ * i.9(+y}JpI+l,*/4/nJjk#M 4E䋙B!T@tbAZҙV>Kqa 떰z:.û}ϙ|yNwgOrUцQɕ>h'һIZl=IoFIw{ :nþ_>؞M vK?}紮];XɄJߨ\{J ]KӼ_ޱGwϸ\;8W3dǘK+/d JZAуOɌ9\WאLzˈ691%6dZӖqqV)ۖg/2R׳mA*l3ҕSf.kHzovWGcbl{qs|,o{g*?RNH*T$3B*?~ƭWP&5LFG)"bIENDB`trunk/acct_mgr/htdocs/status_disabled.png000644 000000 000000 00000001151 12107303456 017311 0ustar00000000 000000 PNG  IHDRabKGD pHYs B(xtIME .IDAT8͒kR?o9F Mְ`s2 O1AuPv!uC:<+;!/ V,冨iӷ={Cq(]w~~_/_% >}lt8Y| |ug'WpgnX'v*y"\oR*|JF'3eej Ѡ^"7n ՃFtz{3'$9;+ng2) ffܑ ~ O[[UkN'eo (][:#`(3 4lM(FQDQ`#h8:<x.D3k}G zf3^x|^FEye4F#X UU B$I"6 AhC|׵3x466FIӨJ6ri|f j*˼>:ڛKp| _jt_FydjN~v|W;qF\IENDB`trunk/acct_mgr/htdocs/status_error.png000644 000000 000000 00000001230 12107303456 016671 0ustar00000000 000000 PNG  IHDRabKGD pHYs B(xtIME ,Eb}%IDAT8˭Kkao8M&ITj`v E)(E KߠEB(_jMDxIN2]\L聏{./ğ+3ؗ؋%痯փm J:rgx l6RI:Nޫ/owBH14 ֪+f`7e Ƅ@p{w܌qV\=W(J:#5 %H$8mDqᴲT~a(>-&2;Gt* Bo1PJaAA²./6~ya絥B`5 @>^H].Ptۛ %8:џ.A<1XH 7jNB% p >imIDAT8RKhQ=&t&ƪT"B)P+AtQ!J N(\)nZ]_A$b]LĴdi]C+.λw]RKjOq%nqtM+n>} NexqOWԗq ʛz;3O'N G}hKF^Xe^iXd$ղqTar0@>J_/*Z3v v:/0xP;t)\~ F #oėa\ٯ8矒lt;ab\ؚQcQ qZ$. 'cHl,ʬhG!nRFr%t9^'0[`FibN&pš-5Ϭ̻|V]6M ?BbtB =?BP5c.:bӑe-hMAH2c/@/ KˮrQn]?woOoo!#.IENDB`trunk/acct_mgr/htdocs/time-locked.png000644 000000 000000 00000001354 11474566631 016355 0ustar00000000 000000 PNG  IHDRasBIT|d pHYs.1tEXtSoftwarewww.inkscape.org<iIDAT8?LSQByb iM46& IWF H] 6ILXR6X*Zb޻^Zxs; `𡔲\.txx8.aABNPJ9^ymm-]*!B`Z&irJ)ZZZ ø qcbvq&n˲l1M['(JTUEpFǓ&Rr\)ىiH)z}~-KRN)Xĥd2iT'jUjjxZ=4ӌNHjw'߲T*~ MHd2)GGG,p8;VVcYVbGu婩@ @?lmmMZrccA<HZ'Jrzz5Mk u]Fd~~DQ100R&OB|888pB`0HGGeasgl6dqqѴA>L&CP۱o}noo?J)BЛYI,3gff}}}J)riyycq øz'R]i{l,.'@տ 5X,3IENDB`trunk/acct_mgr/htdocs/users.png000644 000000 000000 00000012737 12076643325 015323 0ustar00000000 000000 PNG  IHDR@@iqbKGD pHYsaa?itIME #Ϣ8blIDATxieuUu,=8&j-q("DbA`8Q d1"aȰ-q 1IlbǴHf8$5p^߾ܥý6jIT},s~<~<V|ȇP+ީB!bEo;/g'_xV1U=& |<8Nhw6M٨ cO# /{agqm+?( 0`m(>ymz~=0 me=CRy eqZxD\Ck=o9~ɳɵZ p/t=dVy>BH c hZل$3? m>|?yxq~JAa@ɕVJs,A53UOy~7fs:.A8@+1JULKq6a^em5 K~だ@=}J)q(g_W/(8 @!,`m̯#gZ'qsy,g4̖5o=GNtZY4A"pp&gz͟C#jOcw?y(d.&MQ(9$M:uN ,U+ (VN,rcSBKARpq aΟ 3 S 1:Y+n:~:I3 <"kYsyZ}E/e}(!u!.d(Bmo^ڕ7ѹ͕$*1q4E;%c801u 80R |oqQ )dQUTPEy%PIبEyvcoNF|q'+(`8V-i 4r m&8*IS\jr'Fe2J{d'6BAJHAee.=u…?[psg n{:8!8&"Q(Q 'If "B seE>/ :Z6_ByEL2Ƥ:K}cIS7t{6LQ~?MI\Z<@ccW@yL᠂_̔7c|.aTfP(*jWX~#D%eM4^m _GQLg 0 2EjnU_BOQDy(m@ip\aDG_}-u?._ݰZJ8I~'P/8@Qi,!"Q^K蠆K(@lVAe3jQ(ϢIq|-Al~g$K(e($I$IC(P(1A)#bcq"ꢴ\[zr߉"O 9t~J%~4˂"0"+IG(QklFvledn?'.gn*%ED8x,?ux?>Ϝ'NJEbUA)K,9JgK:=\%=\28{F ̷l<@KZq=4KKڢ:v1߉XhXoP, ɾt/7Y]YeXl8SNpFLR:. -{>CQQf\վ[zB ovZ4֒&)^8)@$'phHXrltY;P+_X̧⾻=Zݽ*%4D  7c~;S`*ޡ2BHFD>bD)H8Z'b> 0 !K}+dzp翧 wGE?xh=i\ A/ϒ.X]ii q9Q %"aAدApQgBK2̶80; tuPC\ x[("3j`=lʤ3A(3 gGK '8V)b Lg!3KGIe;춂a&oЅuDР>wCY8v(ʲN<Q-0S~Rڹ+ӣB $h :czQT'.qo-"]=gS+]:uS<f>Zhl_΃."S(PX:a!_}d.kV/xl]{'1a;|_ I)ja>1 Рvzeᵮf%X>K>ݽB)QYIJ8evAM_X)/"l3ޅN+Rv Ly:.rU܇7nz_Q3J?G֎67v(/~vow#XlWwտlc;<8E4iť.~xHݟ?zaL7&JlcKqY\K{;AЬlv +VF!:3C9YXX1Z U6BƵ龋ZѽZ+hk/Pw$鴨V80Fp;u`~~ W6zX_$Ŗ)1LX\hBј,rg$x*NYĬ6wEdHZj9dyO)}⾗@yYhQ.b̍d{F)a<>-05ql4t)^P/TyZF^^S8p^ PJs*=aw1^D [;݀ʎҌԁrߋ噧v"ξpG].L}Tw$hGǘʼnۏs~`Qʟȷ2?g6&ô[=(?XOXæw&}>uvܪڳw Zj!=87C]V Ky5K*cg;go3Y]ۍ;"4mr` /9&}fgggyv+nÍe[- xaerDv;ŵސb`x~mȔ%H!_DD(|D#gGKĆ@ ɷ,Lޡ^*5QQAԎEEbtJ)x4͂Y{ #`r׺YDn SnI Ja \Aw":W: ݗk&@'8&z;O/g5A.~.ޘL_UFu#V:]9w7mw@k젝Q0T~ð{e r)c4Gͳ=ANg-m8J3P s}^]`2IkcFqV*f(icfȌr1 rk7ke~ w*֋f_pysI:,l3@ }J^ N7"|{9#4!L9c1AOI%~FgⱵJDl*o;ճ|r73һ]48~IY&VQK@ꣲ/&v+Tjw//֏0m,Uz#ܿTNvo;}E@VLXj6\ڈMlsEwm[U1ճT=&޿A1 m\q%4v LZ9dyM\ GVWg _;3prT n<*6bUykXYzB50Zg.QF~! <*ŐZ 5Q¥7~r ]Y% o'o 5ݘ-Q < !yˏ8tz#6C+Oz@/ /RJ9޻okwtQkg󍧔Q7='OĊMEgy :LS\CB (zj֖SڟQƫtID48SNؔ! Rظw>^=9oiA>>v[DiPSXiV+/\T K|:e4%A;SUS&UGx"4q+2w1ʱApxx# eSϵIENDB`trunk/acct_mgr/htfile.py000644 000000 000000 00000022557 14413553530 014011 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005-2007 Matthew Good # Copyright (C) 2011,2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import errno import io import os from trac.config import Option from trac.core import Component, TracError, implements from .api import IPasswordStore, _, N_ from .compat import compare_digest, unicode from .pwhash import check_hash, generate_hash, htdigest from .util import EnvRelativePathOption def _eachline(filename, encoding='utf-8'): with io.open(filename, 'r', encoding=encoding) as f: for line in f: yield line def _writelines(filename, lines, encoding='utf-8'): with io.open(filename, 'w', encoding=encoding) as f: for line in lines: if isinstance(line, bytes): line = unicode(line, 'utf-8') f.write(line) class AbstractPasswordFileStore(Component): """Base class for managing password files. Derived classes support different formats such as Apache's htpasswd and htdigest format. See these concrete sub-classes for usage information. """ abstract = True # Note: 'filename' is a required, store-specific option. def has_user(self, user): return user in self.get_users() def get_users(self): filename = self.filename if not os.path.exists(filename): self.log.error('acct_mgr: get_users() -- ' 'Can\'t locate password file "%s"', filename) return [] return self._get_users(filename) def set_password(self, user, password, old_password=None, overwrite=True): return not self._update_file(self.prefix(user), self.userline(user, password), overwrite) def delete_user(self, user): return self._update_file(self.prefix(user), None) def check_password(self, user, password): filename = self.filename if not os.path.exists(filename): self.log.error('acct_mgr: check_password() -- ' 'Can\'t locate password file "%s"', filename) return False prefix = self.prefix(user) try: for line in _eachline(filename): if line.startswith(prefix): line = line[len(prefix):].rstrip('\n') return self._check_userline(user, password, line) except (OSError, IOError): self.log.error('acct_mgr: check_password() -- ' 'Can\'t read password file "%s"', filename) return None def _update_file(self, prefix, userline, overwrite=True): """Add or remove user and change password. If `userline` is empty, the line starting with `prefix` is removed from the user file. Otherwise the line starting with `prefix` is updated to `userline`. If no line starts with `prefix`, the `userline` is appended to the file. Returns `True` if a line matching `prefix` was updated, `False` otherwise. """ if not self.filename: option = self.__class__.filename raise TracError( _("[%(section)s] %(name)s option for the password " "file is not configured", section=option.section, name=option.name)) filename = self.filename matched = False new_lines = [] eol = '\n' try: # Open existing file read-only to read old content. lines = list(_eachline(filename)) except EnvironmentError as e: if e.errno == errno.ENOENT: # Ignore, when file doesn't exist and create it below. pass elif e.errno == errno.EACCES: raise TracError(_( "The password file could not be read. Trac requires read " "and write access to both the password file and its " "parent directory.")) else: raise else: # DEVEL: Beware, in shared use there is a race-condition, # since file changes by other programs that occur from now on # are currently not detected and will get overwritten. # This could be fixed by file locking, but a cross-platform # implementation is certainly non-trivial. if len(lines) > 0: # predict eol style for lines without eol characters if not os.linesep == '\n': if lines[-1].endswith('\r') and os.linesep == '\r': # antique MacOS newline style safeguard # DEVEL: is this really still needed? eol = '\r' elif lines[-1].endswith('\r\n') and os.linesep == '\r\n': # Windows newline style safeguard eol = '\r\n' for line in lines: if line.startswith(prefix): if not matched and userline: if overwrite: new_lines.append(userline + eol) else: new_lines.append(line.rstrip('\r\n') + eol) matched = True # preserve existing lines with proper eol elif line.endswith(eol) and not \ (eol == '\n' and line.endswith('\r\n')): new_lines.append(line) # unify eol style using confirmed default and # make sure the (last) line has a newline anyway else: new_lines.append(line.rstrip('\r\n') + eol) # Finally add the new line here, if it wasn't used before # to update or delete a line, creating content for a new file as well. if not matched and userline: new_lines.append(userline + eol) # Try to (re-)open file write-only now and save new content. try: _writelines(filename, new_lines) except EnvironmentError as e: if e.errno == errno.EACCES or e.errno == errno.EROFS: raise TracError(_( "The password file could not be updated. Trac requires " "read and write access to both the password file and its " "parent directory.")) else: raise return matched class HtPasswdStore(AbstractPasswordFileStore): """Manages user accounts stored in Apache's htpasswd format. To use this implementation add the following configuration section to trac.ini: {{{ [account-manager] password_store = HtPasswdStore htpasswd_file = /path/to/trac.htpasswd htpasswd_hash_type = crypt|md5|sha|sha256|sha512 <- None or one of these }}} Default behaviour is to detect presence of 'crypt' and use it or fallback to generation of passwords with md5 hash otherwise. """ implements(IPasswordStore) filename = EnvRelativePathOption('account-manager', 'htpasswd_file', '', doc=N_("Path relative to Trac environment or full host machine path " "to password file")) hash_type = Option('account-manager', 'htpasswd_hash_type', 'crypt', doc=N_("Default hash type of new/updated passwords")) def config_key(self): return 'htpasswd' def prefix(self, user): return user + ':' def userline(self, user, password): return self.prefix(user) + generate_hash(password, self.hash_type) def _check_userline(self, user, password, suffix): return check_hash(password, suffix) def _get_users(self, filename): for line in _eachline(filename): user = line.split(':', 1)[0] if user: yield user class HtDigestStore(AbstractPasswordFileStore): """Manages user accounts stored in Apache's htdigest format. To use this implementation add the following configuration section to trac.ini: {{{ [account-manager] password_store = HtDigestStore htdigest_file = /path/to/trac.htdigest htdigest_realm = TracDigestRealm }}} """ implements(IPasswordStore) filename = EnvRelativePathOption('account-manager', 'htdigest_file', '', doc=N_("Path relative to Trac environment or full host machine path " "to password file")) realm = Option('account-manager', 'htdigest_realm', '', doc=N_("Realm to select relevant htdigest file entries")) def config_key(self): return 'htdigest' def prefix(self, user): return '%s:%s:' % (user, self.realm) def userline(self, user, password): prefix = self.prefix(user) return prefix + htdigest(user, self.realm, password) def _check_userline(self, user, password, suffix): hash_ = htdigest(user, self.realm, password) return compare_digest(suffix, hash_) def _get_users(self, filename): for line in _eachline(filename): args = line.split(':')[:2] if len(args) == 2: user, realm = args if realm == self.realm and user: yield user trunk/acct_mgr/htfile.pyi000644 000000 000000 00000002460 14413553530 014151 0ustar00000000 000000 from typing import Optional from trac.core import Component def _eachline(filename: str, encoding: str = 'utf-8'): ... def _writelines(filename: str, lines, encoding: str = 'utf-8'): ... class AbstractPasswordFileStore(Component): def has_user(self, user: str) -> bool: ... def get_users(self) -> [str]: ... def set_password(self, user: str, password: str, old_password: str = None, overwrite: bool = True) -> bool: ... def delete_user(self, user: str) -> bool: ... def check_password(self, user: str, password: str) -> Optional[bool]: ... def _update_file(self, prefix: str, userline: Optional[str], overwrite: bool = True) -> bool: ... class HtPasswdStore(AbstractPasswordFileStore): def config_key(self) -> str: ... def prefix(self, user: str) -> str: ... def userline(self, user: str, password: str) -> str: ... def _check_userline(self, user: str, password: str, suffix: str) -> bool: ... def _get_users(self, filename: str) -> [str]: ... class HtDigestStore(AbstractPasswordFileStore): def config_key(self) -> str: ... def prefix(self, user: str) -> str: ... def userline(self, user: str, password: str) -> str: ... def _check_userline(self, user: str, password: str, suffix: str) -> bool: ... def _get_users(self, filename: str) -> [str]: ... trunk/acct_mgr/http.py000644 000000 000000 00000006111 14413553530 013501 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2011 Dennis McRitchie # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import sys if sys.version_info[0] == 2: from urlparse import urlparse from urllib2 import (HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, HTTPDigestAuthHandler, build_opener) else: from urllib.parse import urlparse from urllib.request import (HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, HTTPDigestAuthHandler, build_opener) from trac.config import Option from trac.core import Component, implements from trac.web.href import Href from .api import IPasswordStore, N_ class HttpAuthStore(Component): implements(IPasswordStore) auth_url = Option('account-manager', 'authentication_url', '', doc=N_("URL of the HTTP authentication service")) def check_password(self, username, password): self.log.debug("Trac.ini authentication_url = '%s'", self.auth_url) # Nothing to do, if URL is absolute. if self.auth_url.startswith('http://') or \ self.auth_url.startswith('https://'): auth_url = self.auth_url # Handle server-relative URLs. elif self.auth_url.startswith('/'): # Prepend the Trac server component. pr = urlparse(self.env.abs_href()) href = Href(pr[0] + '://' + pr[1]) auth_url = href(self.auth_url) elif '/' in self.auth_url: # URLs with path like 'common/authFile' or 'site/authFile'. auth_url = self.env.abs_href.chrome(self.auth_url) else: # Bare file name option value like 'authFile'. auth_url = self.env.abs_href.chrome('common', self.auth_url) self.log.debug("Final auth_url = '%s'", auth_url) acctmgr = HTTPPasswordMgrWithDefaultRealm() acctmgr.add_password(None, auth_url, username, password) try: build_opener(HTTPBasicAuthHandler(acctmgr), HTTPDigestAuthHandler(acctmgr))\ .open(auth_url) except IOError as e: if hasattr(e, 'code') and e.code == 404: self.log.debug("HttpAuthStore page not found; we are " "authenticated nonetheless") return True if hasattr(e, 'code') and e.code == 401: self.log.debug("HttpAuthStore authentication failed") return None except ValueError: self.log.debug("HttpAuthStore: 'authentication_url' specifies " "an invalid URL""") return None else: self.log.debug("HttpAuthStore page exists; we are authenticated") return True def get_users(self): return [] def has_user(self, user): return False trunk/acct_mgr/locale/000755 000000 000000 00000000000 14414633245 013413 5ustar00000000 000000 trunk/acct_mgr/locale/.placeholder000644 000000 000000 00000000244 11457367770 015711 0ustar00000000 000000 # DO NOT REMOVE # This file helps setuptools to always include the 'locale' directory on # packaging, so Trac doesn't blow-up on loading plugins from Python eggs. trunk/acct_mgr/locale/cs/000755 000000 000000 00000000000 14414633245 014020 5ustar00000000 000000 trunk/acct_mgr/locale/cs/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015605 5ustar00000000 000000 trunk/acct_mgr/locale/cs/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000225135 14414633245 017734 0ustar00000000 000000 # Czech translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Honza Rames , 2011. # Tomas Capek , 2011. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: shadow \n" "Language: cs\n" "Language-Team: Czech (http://www.transifex.com/projects/p/Trac_Plugin-" "L10N/language/cs/)\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "Uzamčeno do %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Účty" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Uživatelé" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Vytvořit účet" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Vytvořit účet" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "Nejprve prosím určete účet zvolením uživatelského jména v seznamu." #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Hesla se musí shodovat." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Neúspěšné pokusy o přihlášení uživatele %(user)s byly smazány" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Změnit heslo" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Odstranit účet" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Uložit" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Jste si jisti, že chcete smazat svůj účet?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Konfigurace" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Oznamovací akce" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Heslo je nesprávné." #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Účet uzamčen" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Účet" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Oznámení" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Obnovení hesla" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Oznámení o účtech" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Správa uživatelských účtů" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Konfigurace" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Soubor hesel nelze přečíst. Trac vyžaduje čtecí a zapisovací přístup k " "souboru hesel a jeho nadřazené složce." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Soubor hesel nemůže být aktualizován. Trac vyžaduje čtecí a zapisovací " "přístup k souboru hesel a jeho nadřazené složce." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Výchozí typ hashe pro nová/aktualizovaná hesla" #: acct_mgr/htfile.py:236 #, fuzzy msgid "Realm to select relevant htdigest file entries" msgstr "Prostředí pro výběr relevantních záznamů htdigest" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "URL autentizační služby pro HTTP" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Oznámení" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Uživatelské jméno nesmí být prázdné." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Uživatelské jméno nesmí obsahovat některý z těchto znaků: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Uživatelské jméno %(username)s není povoleno." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Heslo nesmí být prázdné." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Musíte zadat platnou e-mailovou adresu." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Registrovat" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Vaše oprávnění jsou omezena dokud %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "E-mail byl odeslán na adresu <%(email)s> s tokenem na %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "Prosím, přihlaste se pro dokončení ověřeni Vašeho e-mailu." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Váš e-mail je již ověřen." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Potvrzovací e-mail byl znovu odeslána na <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Děkujeme Vám za ověření Vaší emailové adresy." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Neplatný ověřovací token" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Zapomněli jste heslo?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Účet" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Už jste přihlášeni. Pokud potřebujete změnit Vaše heslo použijte stránku " "[1:Nastavení účtu]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Jste si jisti, že chcete smazat svůj účet?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Děkujeme, že jste si udělali čas na aktualizaci svého hesla." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "Je nutné provést změnu hesla z důvodu nedávné žádosti o jeho změnu." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Staré heslo je nesprávné." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Staré heslo nemůže být prázdné." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Heslo bylo úspěšně aktualizováno." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Heslo je nesprávné." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Uživatelské jméno je požadováno" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "E-mail je požadován" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "K uvedenému E-mail a jméno nebyl nalezen známý účet." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "Nové heslo bylo zasláno na <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Neplatné uživatelské jméno nebo heslo" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "Účet uzamčen, prosím zkuste to znovu za %(release_time)s" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Účet uzamčen" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "Přihlášení po %(attempts)s neúspěšném pokusu" msgstr[1] "Přihlášení po %(attempts)s neúspěšných pokusech" msgstr[2] "Přihlášení po %(attempts)s neúspěšných pokusech" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Správa uživatelských účtů" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Uživatelské jméno:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Zaregistrovat" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Upozorňováni o smazání účtu" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Heslo:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Potvrdit heslo:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Odstranit účet" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "E-mailová adresa:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Stav účtu" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, fuzzy, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" "[1:] Tento účet byl zamčen do %(time)s[2:] a do té doby budou odmítnuty i" " korektní pokusy o přihlášení." #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Tento účet byl natrvalo zamčen." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Zrušit uzamčení účtu" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Odemknout" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "Podmínka uzamčení byla dosud splněna %(count)s-krát." msgstr[1] "Podmínka uzamčení byla dosud splněna %(count)s-krát." msgstr[2] "Podmínka uzamčení byla dosud splněna %(count)s-krát." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, fuzzy, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" "Proto po dalším neúspěšném pokusu o autentizaci k tomuto účtu bude " "zbrzděna o %(time)s." #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "Podmínka uzamčení zatím nebyla splněna." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "Pro tento účet nejsou nastavena žádná omezení." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "Ověřovací údaje o tomto uživateli jsou uloženy v AuthStore číslo " "[1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "U uživatelských jmen se [1:nekontroluje velikost písmen]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "U uživatelských jmen se [1:kontroluje velikost písmen]." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 #, fuzzy msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" "Ověřovací údaje o tomto uživateli nejsou v žádném úložišti, proto nelze " "tohoto uživatele autentizovat a přístup k tomuto účtu je [1:de facto " "zablokován]. Jiné detaily účtu mohou být stále k dispozici." #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Aktuální e-mailová adresa: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Tato adresa byla úspěšně ověřena." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "Čeká se na ověření [1:(symbol: %(token)s)]" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Tato adresa zatím nebyla potvrzena." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Pro tento účet není registrována žádná e-mailová adresa." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Historie přístupů" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Poslední přihlášení: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "Uživatel se ještě nepřihlásil." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Celkový počet neúspěšných pokusů: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Tabulka: přehled neúspěšných přihlášení" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "IP adresa" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "Čas zaznamenání" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Smazat záznam neúspěšných přihlášení" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Smazat záznam" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "Žádné záznamy o neúspěšných přihlášení." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Účty: Konfigurace" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "Umožní uživatelům zapamatování přihlášení napříč sezeními bez nutnosti " "znovupřihlášení." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Heslo je nesprávné." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Úložiště hesel nepodporuje výpis uživatelů." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Heslo je nesprávné." #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Přinutit uživatele ke změně hesla po resetování hesla." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Účet" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Pro tento účet není registrována žádná e-mailová adresa." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Přinutit uživatele k ověření jejich e-mailové adresy." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Účet" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Celkový počet neúspěšných pokusů: %(count)s" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Zaregistrovat" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Uživatelské jméno:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Přidat " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Přihlásit se" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Pamatuj si mě" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Chyba" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Účty: Konfigurace oznámení" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Oznámení o účtech" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Nastavte následující volby, aby Vám mohly být \n" " doručovány informace o vytvoření účtu, změně hesla a smazání účtu." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Oznamovací akce" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Toto je seznam akcí, které můžete \n" " povolit nebo zakázat pokud [1:zaškrtnete] [2: zaškrtávací políčka]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Upozorňováni o novém vytvoření účtu" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Upozorňováni o resetování hesla" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Upozorňováni o smazání účtu" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Upozorňováni o změně adresy příjemců" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Seznam e-mailových adres a/nebo\n" " uživatelských jmen kteří budou informováni o akcích uvedených výše:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Odstranit účet" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Odstranit účet" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Změnit heslo" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Staré heslo:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nové heslo:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Zaregistrovat" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Požadované" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Volitelné" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Jméno:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Vytvořit účet" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Reset hesla" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Pokud jste zapomněli své heslo, zadejte své uživatelské jméno a \n" " e-mailovou adresu a bude Vám e-mailem zasláno heslo nové." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Obnovit heslo" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Jméno" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "E-mail" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Poslední přihlášení" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Natrvalo uzamčen" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Znovu poslat e-mail" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Odstranit účet" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Úložiště hesel nepodporuje výpis uživatelů." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Aktualizovat" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Odstranit účet" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Odstranit vybrané účty" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Ověřte e-mail" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "E-mail byl zaslán na \n" " %(email)s s tokenem pro ověření Vaší nové adresy. \n" " Zkontrolujte prosím svoji e-mailovou schránku a zadejte token do níže" " uvedeného formuláře." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "" "Můžete [1: změnit svou \n" " e-mailovou adresu], pokud je tato nesprávná." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Ověřovácí Token:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Ověřit" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Znovu poslat e-mail" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Váš e-mail je již ověřen." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "" #~ "Path relative to Trac environment or full host machine\n" #~ " path to password file" #~ msgstr "" #~ "Cesta relativní k prostředí Tracu nebo" #~ " absolutní cesta k souboru s hesly" #~ msgid "" #~ "Path to the users file; leave blank to locate\n" #~ " the users file by reading svnserve.conf" #~ msgstr "" #~ "Cesta k souboru uživatelů; nevyplňujte, " #~ "pokud ji chcete načítat ze souboru " #~ "svnserve.conf" #~ msgid "Please change your password now." #~ msgstr "Změňte prosím vaše heslo." #~ msgid "Review User Account Details" #~ msgstr "Zkontrolujte detaily uživatelského účtu" #~ msgid "Verification" #~ msgstr "Ověření" #~ msgid "Persistent Sessions" #~ msgstr "Přetrvávající zasedání" #~ msgid "Verify email" #~ msgstr "Ověřit e-mail" #~ msgid " Change " #~ msgstr " Změnit " #~ msgid "Already logged in" #~ msgstr "Již přihlášen" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Neplatný typ klíče (%s) pro ExtensionOrder" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "\"crypt\" modul není na této platformě k dispozici." #~ msgid "verify your email address" #~ msgstr "ověřit svou e-mailovou adresu" #~ msgid "verify your new email address" #~ msgstr "neověříte vaši novou emailovou adresu" #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "Účet uzamčen, prosím zkuste to znovu za %(release_time)s" #~ msgid "Account filters" #~ msgstr "Detaily účtu" trunk/acct_mgr/locale/de/000755 000000 000000 00000000000 14414633245 014003 5ustar00000000 000000 trunk/acct_mgr/locale/de/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015570 5ustar00000000 000000 trunk/acct_mgr/locale/de/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000273254 14414633245 017724 0ustar00000000 000000 # German (Germany) translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Steffen Hoffmann , 2011-2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:07+0000\n" "Last-Translator: Steffen Hoffmann \n" "Language: de\n" "Language-Team: German \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "gesperrt bis %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Nutzerkonten" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Nutzer" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "%(count)s Benutzerkonto" msgstr[1] "%(count)s Benutzerkonten" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "%(count)s Nutzerkonteneigenschaft" msgstr[1] "%(count)s Nutzerkonteneigenschaften" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "Erfolgreich gelöscht:" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Zurück zu Nutzerkonten" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Zurück zu Nutzerkonten" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "" "Zum Fortfahren bitte Nutzerkonto nach Benutzernamen aus der Liste " "auswählen." #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "Email-Adresse" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "Vor-/Nachname (Pseudonym)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Kennwort" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "%(attribute)s für %(username)s gelöscht." #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Die Kennwörter müssen übereinstimmen." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "%(attributes)s für %(username)s aktualisiert." #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "Aktualisierungsfehler in Tabelle %(table)s: %(message)s" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "Kontosperre (%(condition)s) für Benutzer %(user)s aufgehoben" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Fehlgeschlagene Anmeldeversuche für Nutzer %(user)s gelöscht" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 #, fuzzy msgid "Modify Account" msgstr "Zurück zu Nutzerkonten" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Kennwortänderung" #: acct_mgr/admin.py:534 #, fuzzy msgid "Account Attributes" msgstr "Nutzerkonteneigenschaftenprüfung" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "Zurücksetzen des Passworts für %(accounts)s." #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "Das Rücksetzen von Kennwörtern ist nicht aktiviert." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Nutzerkonto löschen" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "aktiv" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "widerrufen" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "Genehmigung ausstehend" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "Email unbestätigt" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Sind Sie sicher, dass Sie Ihr Nutzerkonto löschen möchten?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "Das Entfernen des alten Benutzers wird von %(store)s nicht unterstützt." #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "Keiner der konfigurierten Kennwortspeicher ist beschreibbar." #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" "Das Zurücksetzen des Passworts ist eine erforderliche Aktion, aber noch " "deaktiviert." #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "Mindestens %(required_check)s muss konfiguriert und aktiviert sein." #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" "Neue Anmeldedaten konnten nicht in einem Passwortspeicher gespeichert " "werden." #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" "Das neue Passwort kann nicht an den Benutzer gesendet werden, da keine " "Email-Adresse lautet verknüpft mit %(username)s." #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "Beim Senden einer Änderungsbenachrichtigung ist ein Fehler aufgetreten." #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "Sie erhalten Details mit aktiviertem TracLogging." #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "Seite %(num)s" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "Nächste Seite" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "Vorige Seite" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Einstellungen" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "Das Rücksetzen von Kennwörtern ist neu gestartet." #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "Ihre Änderungen wurden gespeichert." #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" "Ihre Änderungen werden zwischengespeichert, bis Sie sie entweder löschen " "oder alle speichern (siehe letztes Schritt)." #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Benachrichtigungsaktionen" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Das Kennwort is ungültig." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Kennwort" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Nutzerkonto gesperrt" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Nutzerkontenwächter" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Benachrichtigung" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, fuzzy, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" "Fehler beim Lesen der Einstellungen - Hinweis: Aktivieren/installieren " "Sie erforderliche Komponenten." #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Kennwort zurücksetzen" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Nutzerkontenbenachrichtigung" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Benutzerkontenverwaltung" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Einstellungen" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "Ersteinrichtung der Trac-Authentifizierung gestartet." #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "Konto %(username)s erstellt." #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" "Der Authentifikationsdienst für den Nutzer %(user)s erlaubt das Festlegen" " des Kennworts nicht." #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" "Keine der in trac.ini aufgeführten IPasswordStore-Komponenten erlaubt das" " Festlegen des Kennworts oder das Erstellen neuer Nutzer." #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" "Das Konto muss noch genehmigt werden. Möglicherweise müssen Sie sich an " "Ihren Administrator wenden." #: acct_mgr/db.py:25 #, fuzzy msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "IPasswordHashMethod für neue/aktualisierte Kennwörter" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "[%(section)s] %(name)s-Option für die Passwortdatei ist nicht konfiguriert" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Die Kennwortdatei konnte nicht gelesen werden. Trac benötigt Lese- und " "Schreibzugriff sowohl auf die Kennworddatei als auch auf deren " "übergeordnetes Verzeichnis." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Die Kennwortdatei konnte nicht aktualisiert werden. Trac benötigt Lese- " "und Schreibzugriff sowohl auf die Kennworddatei als auch auf deren " "übergeordnetes Verzeichnis." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Standard-Hash-Typ für neue/aktualisierte Kennwörter" #: acct_mgr/htfile.py:236 #, fuzzy msgid "Realm to select relevant htdigest file entries" msgstr "Namensraum (realm) zur Auswahl zutreffender Einträge aus HtDigest-Datei" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "URL des HTTP-Authentifizierungsdienstes" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "(erforderliches %(perm)s fehlt)" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Benachrichtigung" #: acct_mgr/pwhash.py:59 #, fuzzy msgid "Realm to select relevant htdigest db entries" msgstr "Namensraum (realm) zur Auswahl zutreffender HtDigest-Datenbankeinträge" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "Registrierungsfehler" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" "Eine Sammlung grundlegender Überprüfungen.\n" "\n" "Dies beinhaltet die Überprüfung auf\n" " * Leerheit (keine Benutzereingabe für Benutzername und/oder Passwort)\n" " * einige Zeichen auf der schwarzen Liste des Benutzernamens\n" " * Benutzernamen in Großbuchstaben (reserviert für Trac-" "Berechtigungsaktionen)\n" " * einige reservierte Benutzernamen\n" " * ein Duplikat des Benutzernamens in konfigurierten Passwortspeichern\n" "\n" "''Diese Überprüfung wird bei Anfragen bezüglich der eigenen Präferenzen " "des Benutzers umgangen.''" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Nutzername darf nicht leer sein." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Der Nutzername darf keines der folgenden Zeichen enthalten: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" "Ein Nutzername ausschliesslich aus Grossbuchstaben bestehend ist nicht " "zugelassen." #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Der Nutzername %(username)s ist nicht zugelassen." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, fuzzy, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" "Es existiert bereits ein Benutzerkonto oder eine Gruppe namens " "%(username)s oder mit einem nur bezüglich Gross-/Kleinschreibung " "abweichenden Namen." #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Kennwort darf nicht leer sein." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "Bitte antworten Sie oben: %(Frage)s" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" "Bitte tragen Sie [%(token)s] als Bestätigungscode ein, exakt wie zwischen" " den Klammern angegeben." #: acct_mgr/register.py:167 msgid "Parole:" msgstr "Code:" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "In dieses Feld tragen Sie lieber nichts ein." #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "Sind Sie eine Person? Dann strengen Sie sich mehr an!" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" "Eine Sammlung von Prüfungen für Email-Adressen.\n" "\n" "''Diese Überprüfung wird umgangen, wenn die Kontoüberprüfung deaktiviert " "ist.''" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-Mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" "Ihre Email-Adresse wird benötigt, damit Trac Ihnen einen Bestätigungscode" " zusenden kann." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" "Das Eintragen Ihrer Email-Adresse ermöglicht es Ihnen ausserdem, Ihr " "Kennwort zurückzusetzen, falls Sie es jemals vergessen sollten." #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 #, fuzzy msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" "Das Eintragen Ihrer Email-Adresse ermöglicht es Ihnen ausserdem, Ihr " "Kennwort zurückzusetzen, falls Sie es jemals vergessen sollten." #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Sie müssen eine gültige Email-Adresse angeben." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" "Die angegebene Email-Adresse wird bereits verwendet. Bitte geben Sie eine" " andere an." #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" "Eine Sammlung von Prüfungen basierend auf regulären Ausdrücken.\n" "\n" "''Es hängt davon ab, ob !EmailCheck auch für die Verwendung des " "Eingabefelds aktiviert ist.\n" "Ebenso wird die Email-Prüfung umgangen, wenn die Kontoverifizierung\n" "Behinderte.''" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "Der Nutzername %(username)s entspricht nicht den hier geltenden Regeln." #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" "Die angegebene Email-Adresse scheint ungültig zu sein. Bitte geben Sie " "eine gültige Email-Adresse an." #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" "Nach Benutzernamen suchen, auf die im Berechtigungssystem verwiesen wird." "\n" "\n" "''Diese Prüfung wird bei Anfragen eines authentifizierten Benutzers " "umgangen.''" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Registrieren" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "Sie sollten dieses Problem einem Trac-Administrator melden." #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" "Ihr Benutzername wurde erfolgreich registriert, aber Ihr Konto " "erfordertBehördliche Genehmigung. Bitte fahren Sie gemäß den örtlichen " "Richtlinien fort." #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" "Ihr Nutzername wurde erfolgreich registriert, aber Ihr Konto muss noch " "aktiviert werden. Bitte melden Sie sich als Nutzer %(user)s an und folgen" " Sie den Anweisungen." #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" "Die Registrierung ist erfolgreich abgeschlossen worden. Sie können sich " "nun als Nutzer %(user)s anmelden." #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Ihre Berechtigungen sind eingeschränkt worden, bis Sie %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" "Eine E-Mail-Nachricht mit einem Bestätigungscode wurde an <%(email)s> " "gesendet, um %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" "Bitte melden Sie sich an, um den Bestätigungsvorgang für Ihre E-Mail-" "Adresse abzuschliessen." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Ihre Email-Adresse ist bereits bestätigt." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Eine E-Mail-Benachrichtigung ist an <%s> gesendet worden." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Vielen Dank, dass Sie Ihre Email-Adresse bestätigt haben." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Ungültiger Bestätigungscode" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Kennwort vergessen?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Nutzerkonto" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" "Entschuldigung, aber die Richtlinie verbietet die Auswahl von " "'%(username)s' für einen anonymen Sitzung. Melden Sie sich an oder wählen" " Sie bitte eine andere Session-ID." #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Sie sind bereits angemeldet. Falls Sie Ihr Kennwort ändern möchten, " "benutzen Sie bitte die Seite für [1:Nutzerkonto-Einstellungen]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" "Die Richtlinie verbietet die Auswahl von %(username)s für eine anonyme " "Sitzung, weil Es ist ein registrierter Benutzername. Bitte melden Sie " "sich an oder wählen Sie einen anderen Autorennamen." #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Sind Sie sicher, dass Sie Ihr Nutzerkonto löschen möchten?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" "Danke, dass Sie sich die Zeit genommen haben, Ihr Passwort zu " "aktualisieren." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" "Sie müssen Ihr Kennwort wegen einer kürzlich angeforderten " "Kennwortänderung ändern. " #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Das alte Passwort ist ungültig." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Das alte Passwort darf nicht leer sein." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "Passwort darf nicht mit altem Passwort übereinstimmen." #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Das Passwort wurde erfolgreich aktualisiert." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Das Passwort is ungültig." #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "Nutzername ist erforderlich." #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "Email-Adresse ist erforderlich." #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "" "Email-Adresse und Nutzername müssen zu einem bekannten Benutzerkonto " "gehören." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "Passwort kann nicht zurückgesetzt werden: %(error)s" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "Ein neues Passwort ist Ihnen per Email zugeschickt worden an <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Nutzername oder Passwort ungültig" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "Nutzerkonto gesperrt, bitte nach %(release_time)s nochmals versuchen" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Nutzerkonto gesperrt" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "Anmeldung nach %(attempts)s Fehlversuch" msgstr[1] "Anmeldung nach %(attempts)s Fehlversuchen" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" "Nicht unterstützte Database-Schema-Version, bitte aktualisieren Sie " "%(plugin)s auf eine neuere Ausführung." #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Benutzerkontenverwaltung" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "für [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "für [1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" "Für die Änderung der Benutzer-ID müssen zusätzliche Komponenten aktiviert" " werden" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Nutzername:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "Benutzer-ID ändern ('Benutzername')" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" "Überspringen Sie das Erstellen eines Kontos und das Zurücksetzen des " "Passworts" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Nutzerkonto registrieren" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "Überschreiben Sie keine vorhandenen Attribute" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 #, fuzzy msgid "Copy only new account attributes" msgstr "Nutzerkonteneigenschaftenprüfung" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Benutzerkontenlöschung melden" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "Heutige Anmeldedaten belassen" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Kennwort:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Kennwortbestätigung:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "Vor-/Nachname (Pseudonym):" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Nutzerkonto löschen" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "Email-Adresse:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "Bestätigung neuer Email-Adresse auslassen" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "Änderungen übernehmen" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Nutzerkontenstatus" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, fuzzy, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" "[1:] Dieses Nutzerkonto ist bis %(time)s gesperrt worden,[2:] und auch " "gültige Anmeldeversuche werden bis dahin abgewiesen." #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Dieses Nutzerkonto ist dauerhaft gesperrt worden." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Hebe Nutzerkontensperre auf" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Nutzerkonto entsperren" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "Sperrbedingung wurde bisher einmal erreicht." msgstr[1] "Sperrbedingung wurde bisher %(count)s mal erreicht." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, fuzzy, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" "Deshalb würde die Anmeldung für dieses Benutzerkonto nach einem weiteren " "Fehlversuch um %(time)s verzögert." #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "Bisher wurde die Sperrbedingung nicht erreicht." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "Für dieses Nutzerkonto sind keine Beschränkungen festgelegt." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "Identitätsmerkmale für diesen Nutzer sind im Beglaubigungsregister Nummer" " [1:%(order_num)s] (%(store)s) gespeichert." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "Nutzernamesvergleich beachtet [1:Groß-/Kleinschreibung nicht]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "Nutzernamesvergleich beachtet [1:Groß-/Kleinschreibung]." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 #, fuzzy msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" "Kein Register bietet Identitätsmerkmale für diesen Nutzer an, daher kann " "der Nutzer momentan nicht beglaubigt werden, und der Zugang zu diesem " "[1:Benutzerkonto ist praktisch gesperrt], während Nutzerkontendetails " "weiterhin verfügbar sein können." #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Aktuelle Email-Adresse: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Diese Adresse ist erfolgreich bestätigt worden." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "Die Bestätigung ist offen [1:(Code: %(token)s)]" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Diese Adresse ist bisher noch nicht bestätigt worden." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Für dieses Nutzerkonto ist keine Email-Adresse eingetragen." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Zugriffsverlauf" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Letzte Anmeldung: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "Der Nutzer hat sich bisher nicht angemeldet." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Fehlversuche gesamt: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Tabelle: Protokoll der letzten fehlgeschlagenen Anmeldeversuche" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "IP-Adresse" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "Protokollzeit" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Lösche Anmeldefehlerprotokoll" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Lösche Protokoll" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "Aktuell ist kein fehlgeschlagener Anmeldeversuch protokolliert." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "Kennwortaktualisierung" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Nutzerkonten: Einstellungen" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "Übernehmen Sie die Änderungen und gehe zurück" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 #, fuzzy msgid "Previous" msgstr "Vorige Seite" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "Geh zurück" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "Übernehmen Sie die Änderungen und fahren Sie fort" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "Folgende" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "Schritt %(step)s: %(label)s" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "Ziel für die Einstellung von Authentifizierungsoptionen" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "Anbieterunabhängige Authentifizierungsoptionen" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" "Konvertieren Sie Anmeldenamen bei Registrierung und Anmeldung in " "Kleinbuchstaben." #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "Überprüfen Sie die IP-Adresse für die Authentifizierung." #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "Beschränken Sie das Senden von Cookies auf HTTPS-Verbindungen." #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "Erforderlich, wenn die Trac-Instanz nur über HTTPS erreichbar ist." #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, fuzzy, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" "Sperrzeitobergrenze: [1:] Sekunden [2:Dies ist nur bei einem " "Sperrzeitverlängerungsfaktor > 1 von Bedeutung.]" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 #, fuzzy msgid "Authentication Front-end" msgstr "Authentifizierte Nutzerkonten" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "Erlaube das Wiedererkennen des Nutzers ohne Neuanmeldung." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Das Kennwort is ungültig." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 #, fuzzy msgid "Use a password store embedded into Trac db." msgstr "Geordnete Liste von Kennwortspeichern, die nacheinander abgefragt werden." #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 #, fuzzy msgid "Password stores are queried in turn, so order matters." msgstr "Geordnete Liste von Kennwortspeichern, die nacheinander abgefragt werden." #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" "Aktualisiere die Kennwort-Hash-Werte bei der nächsten erfolgreichen " "Anmeldung." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "Neustart" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Kennwortaktualisierung" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "Das Rücksetzen von Kennwörtern ist nicht aktiviert." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Zwinge Nutzer nach Zurücksetzen des Kennworts zur Kennwortänderung." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Nutzerkontenwächter" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Für dieses Nutzerkonto ist keine Email-Adresse eingetragen." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Zwinge Nutzer, ihre Email-Adresse zu bestätigen." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Nutzerkontenwächter" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "Anzahl Anmelde-Fehlversuche max.:" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 #, fuzzy msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" "Nutzerkontensperrung erfolgt nach angegebener Anzahl von Fehlversuchen. " "Wert Null bedeutet 'unbegrenzt'." #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "Sperrzeitverlängerungsfaktor:" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Nutzerkonto registrieren" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "Benutzerkonto hinzufügen/bearbeiten:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Nutzername:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "Nur Kleinschreibung für Nutzernamen zulässig" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Hinzufügen " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "Nutzerkonten: Bereinigung" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "Eigenschaft" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "Wert" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "Authentifizierte Nutzerkonten" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "Ausgewählte Einträge löschen" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "Auswahl aufheben" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Anmelden" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Angemeldet bleiben" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Fehler" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Nutzerkonten: Benachrichtigungseinstellungen" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Nutzerkontenbenachrichtigung" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Wählen Sie die folgenden Optionen, um über Kontenerstellung, " "Kennwortrücksetzen und Kontenlöschung benachrichtigt zu werden." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Benachrichtigungsaktionen" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Dies ist eine Aktionsliste, die Sie durch [1:Wählen] der " "[2:Ankreuzfelder] aktivieren oder deaktivieren können." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Erstellung eines neuen Benutzerkontos melden" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Kennwortrücksetzen melden" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Benutzerkontenlöschung melden" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Empfängeradressen für Benachrichtigungen" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Liste von durch Leerzeichen getrennten E-Mail-Adressen und/oder " "Nutzernamen, die über die vorgenannten Aktionen benachrichtigt werden:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Nutzerkontolöschung" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Nutzerkonto löschen" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Kennwortänderung" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Altes Kennwort:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Neues Kennwort:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Nutzerkonto registrieren" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Erforderlich" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Optional" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Name:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Nutzerkonto erstellen" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Kennwort zurücksetzen" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Falls Sie Ihr Kennwort vergessen haben, dann tragen Sie bitte Ihren " "Nutzernamen und Ihre E-Mail-Adresse nachfolgend ein, und Sie erhalten " "per E-Mail ein neues Kennwort." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Kennwort zurücksetzen" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Name" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "Email" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Letzte Anmeldung" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "dauerhaft gesperrt" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Email-Nachricht erneut versenden" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Zurück zu Nutzerkonten" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 #, fuzzy msgid "Max accounts per page [1:]" msgstr "Nutzerkonten pro Seite maximal: [1:]" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Aktualisieren" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 #, fuzzy msgid "Status" msgstr "Neustart" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "Versende anderes Zufallskennwort" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "Kennwörter zurücksetzen" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Nutzerkonto löschen" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Ausgewählte Einträge löschen" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "Nutzerkonteneigenschaftenprüfung" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Email-Adresse bestätigen" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "Zur Bestätigung Ihrer neuen Adresse wurde eine E-Mail-Nachricht mit einem" " Bestätigungscode an %(email)s gesendet. Bitte sehen Sie Ihre Nachrichten" " durch, und tragen Sie den Code in das nachfolgende Feld ein." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "Sie können [1: Ihre E-Mail-Adresse ändern], falls sie fehlerhaft ist." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Bestätigungscode:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Bestätigen" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Email-Nachricht erneut versenden" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Ihre Email-Adresse ist bereits bestätigt." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Ungültiger Schlüsseltyp (%s) für Kennwortspeicherreihenfolge" #~ msgid "Account guard icon" #~ msgstr "Nutzerkontenwächter" #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "Aufhebung einer Sperre nach [1:] Sekunden (0 = unbegrenzte Sperrzeit)" #~ msgid "Account filters" #~ msgstr "Nutzerkontendetails" #~ msgid "The password store does not support creating users." #~ msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #~ msgid "Unknown user %(user)s." #~ msgstr "Nutzer %(user)s ist unbekannt." #~ msgid "" #~ "The password store does not support\n" #~ " changing passwords.\n" #~ " " #~ msgstr "Der Kennwortspeicher erlaubt das Löschen von Nutzern nicht." #~ msgid "" #~ "Path relative to Trac environment or full host machine\n" #~ " path to password file" #~ msgstr "" #~ "Pfad relativ zur Trac-Umgebung oder " #~ "vollständiger Verzeichnispfad zur Kennwortdatei" #~ msgid "The email and username do not match a known account." #~ msgstr "" #~ "E-Mail-Adresse und Nutzername gehören zu" #~ " keinem bekannten Benutzerkonto." #~ msgid "No check method 'validate_registration' defined in %(module)s" #~ msgstr "Keine Prüfmethode 'validate_registration' in %(module)s definiert" #~ msgid "" #~ "Entering your email address will also enable you\n" #~ " to reset your " #~ "password if you ever forget it." #~ msgstr "" #~ "Das Eintragen Ihrer E-Mail-Adresse " #~ "ermöglicht es Ihnen ausserdem, Ihr " #~ "Kennwort zurückzusetzen, falls Sie es " #~ "jemals vergessen sollten." #~ msgid "" #~ "Path to the users file; leave blank to locate\n" #~ " the users file by reading svnserve.conf" #~ msgstr "" #~ "Pfad zur Nutzerdatei; zum Lesen der " #~ "Nutzerdatei aus svnserve.conf freilassen" #~ msgid "%(relativetime)s ago" #~ msgstr "vor %(relativetime)s" #~ msgid "Please change your password now." #~ msgstr "Bitte ändern Sie jetzt Ihr Kennwort." #~ msgid "Review User Account Details" #~ msgstr "Benutzerkontendetailprüfung" #~ msgid "Verification" #~ msgstr "Bestätigung" #~ msgid "Persistent Sessions" #~ msgstr "Dauerhafte Anmeldungen" #~ msgid "" #~ "This is, user checks a \"Remember Me\"\n" #~ " [1:checkbox] and, next time he visits the site within\n" #~ " 30 days, he'll be remembered and automatically authenticated." #~ msgstr "" #~ "D. h., der Nutzer aktiviert ein " #~ "[1:Ankreuzfeld] \"Angemeldet bleiben\" und " #~ "wird beim nächsten Besuch innerhalb von" #~ " 30 Tagen wiedererkannt und automatisch " #~ "angemeldet." #~ msgid "Verify email" #~ msgstr "E-Mail-Adresse bestätigen" #~ msgid "" #~ "Extend user account lock time incrementally. This is\n" #~ " based on logarithmic calculation" #~ " and decimal numbers accepted:\n" #~ " Value '1' means constant " #~ "lock time per failed login attempt.\n" #~ "" #~ " Value '2' means double " #~ "locktime after 2nd lock activation,\n" #~ " four times the initial locktime after 3rd, and so on." #~ msgstr "" #~ "Die Sperrzeit wird schrittweise verlängert." #~ " Dies basiert auf einer logarithmischen " #~ "Berechnung, die auch Dezimalzahlen nutzen " #~ "kann: Wert '1' bedeutet konstante " #~ "Sperrzeit pro Fehlversuch. Wert '2' " #~ "bedeutet eine Verdopplung der Sperrzeit " #~ "nach der 2. Sperrenaktivierung, eine " #~ "Vervierfachung der ursprünglichen Sperrzeit " #~ "nach der 3. Aktivierung, und so " #~ "weiter." #~ msgid "Successfully updated: %(success)s" #~ msgstr "Erfolgreich aktualisiert: %(success)s" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "Füge ein neues Benutzerkonto hinzu oder bearbeite ein bestehendes." #~ msgid " Change " #~ msgstr " Ändern " #~ msgid "Remove selected accounts" #~ msgstr "Ausgewählte Nutzerkonten löschen" #~ msgid "Accounts (%(slice)s)" #~ msgstr "Nutzerkonten (%(slice)s)" #~ msgid "Not Authenticated Accounts" #~ msgstr "Nicht authentifizierte Nutzerkonten" #~ msgid "Already logged in" #~ msgstr "Bereits angemeldet" #~ msgid "" #~ "\n" #~ " Entering your email " #~ "address will also enable you to " #~ "reset\n" #~ " your password if you ever forget it.\n" #~ " " #~ msgstr "" #~ "Das Eintragen Ihrer E-Mail-Adresse " #~ "ermöglicht es Ihnen, Ihr Kennwort " #~ "zurückzusetzen, falls Sie es jemals " #~ "vergessen sollten." #~ msgid "" #~ "Entering your email address will enable you to\n" #~ " reset your password if you ever forget it." #~ msgstr "" #~ "Das Eintragen Ihrer E-Mail-Adresse " #~ "ermöglicht es Ihnen, Ihr Kennwort " #~ "zurückzusetzen, falls Sie es jemals " #~ "vergessen sollten." #~ msgid "Password for user %s existed, couldn't create." #~ msgstr "Passwort für Benutzer %s existiert, konnte nicht erstellt werden." #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "Das \"crypt\"-Modul ist auf diesem System nicht verfügbar." #~ msgid "" #~ "Neither are \"sha2\" hash algorithms " #~ "supported by the \"crypt\" module on " #~ "this platform nor is \"passlib\" " #~ "available." #~ msgstr "" #~ "Weder unterstützt das \"crypt\"-Modul ist " #~ "auf diesem System \"sha2\" Hashtypen " #~ "noch ist \"passlib\" verfügbar." #~ msgid "Invalid request arguments." #~ msgstr "Ungültige Anfrageargumente." #~ msgid "verify your email address" #~ msgstr "Ihre Email-Adresse bestätigen" #~ msgid "Your permissions have been limited until you %(link)s." #~ msgstr "Ihre Berechtigungen sind eingeschränkt worden, bis Sie %(link)s." #~ msgid "verify your new email address" #~ msgstr "Ihre neue Email-Adresse zu bestätigen" #~ msgid "An email has been sent to <%(email)s> with a token to %(link)s." #~ msgstr "" #~ "Eine Email-Nachricht mit einem " #~ "Bestätigungscode wurde an <%(email)s> " #~ "gesendet, um %(link)s." #~ msgid "A notification email has been resent to <%s>." #~ msgstr "Eine Email-Benachrichtigung ist an <%s> gesendet worden." #~ msgid "" #~ "You're already logged in. If you " #~ "need to change your password please " #~ "use the %(prefs_href)s page." #~ msgstr "" #~ "Sie sind bereits angemeldet. Falls Sie" #~ " Ihr Kennwort ändern möchten, benutzen " #~ "Sie bitte die Seite für [1" #~ ":Nutzerkonto-Einstellungen]." #~ msgid "author" #~ msgstr "Autor" #~ msgid "" #~ "You are required to change password " #~ "because of a recent password change " #~ "request. %(invitation)s" #~ msgstr "" #~ "Sie müssen Ihr Passwort wegen einer " #~ "kürzlich angeforderten Kennwortänderung ändern." #~ " \n" #~ msgid "info" #~ msgstr "info" #~ msgid "" #~ "[1:]\n" #~ " This account has been locked until %(time)s[2:]\n" #~ " and even valid login attempts are rejected meanwhile." #~ msgstr "" #~ "[1:] Dieses Nutzerkonto ist bis %(time)s" #~ " gesperrt worden,[2:] und auch gültige " #~ "Anmeldeversuche werden bis dahin abgewiesen." #~ msgid "" #~ "Therefore after another failed login attempt authentication\n" #~ " for this account would be retarded by %(time)s." #~ msgstr "" #~ "Deshalb würde die Anmeldung für dieses" #~ " Benutzerkonto nach einem weiteren " #~ "Fehlversuch um %(time)s verzögert." #~ msgid "" #~ "Credentials for this user are stored in AuthStore number\n" #~ " [1:%(order_num)s] (%(store)s)." #~ msgstr "" #~ "Identitätsmerkmale für diesen Nutzer sind " #~ "im Beglaubigungsregister Nummer [1:%(order_num)s]" #~ " (%(store)s) gespeichert." #~ msgid "" #~ "No readable store provides credentials for this user,\n" #~ " so the user may not " #~ "get authenticated and access to this" #~ "\n" #~ " [1:account might be effectively blocked]." #~ msgstr "" #~ "Kein Register bietet Identitätsmerkmale für" #~ " diesen Nutzer an, daher kann der " #~ "Nutzer momentan nicht beglaubigt werden, " #~ "und der Zugang zu diesem " #~ "[1:Benutzerkonto ist praktisch gesperrt], " #~ "während Nutzerkontendetails weiterhin verfügbar " #~ "sein können." #~ msgid "" #~ "Verification is pending\n" #~ " [1:(token: %(token)s)]" #~ msgstr "Die Bestätigung ist offen [1:(Code: %(token)s)]" #~ msgid "" #~ "Decide, whether to use HTTP authentication (Trac default) or\n" #~ " a HTML login form provided by AccountManagerPlugin." #~ msgstr "" #~ "Entscheiden Sie, ob HTTP-Authentifizierung " #~ "verwendet werden soll (Trac-Standard) " #~ "oder\n" #~ " ein von AccountManagerPlugin bereitgestelltes HTML-Anmeldeformular." #~ msgid "" #~ "After initial login Trac sessions are authenticated per request\n" #~ " based on browser cookies. " #~ "Therefore a number of options provide" #~ "\n" #~ " control over some critical browser cookie properties." #~ msgstr "" #~ "Nach der ersten Anmeldung werden " #~ "Trac-Sitzungen per Anfrage authentifiziert\n" #~ "" #~ " basierend auf Browser-Cookies. Daher" #~ " eine Reihe von Optionen bereitstellen\n" #~ "" #~ " Kontrolle über einige kritische Browser-Cookie-Eigenschaften." #~ msgid "" #~ "Adapt to careless username typing, where casing does not matter,\n" #~ " like on Windows. Potentially " #~ "troublesome, because [1:case\n" #~ " matters for Trac permission assignment lookup] anyway." #~ msgstr "" #~ "Passen Sie sich an die nachlässige " #~ "Eingabe von Benutzernamen an, bei der" #~ " Groß- und Kleinschreibung keine Rolle " #~ "spielt,\n" #~ " wie unter Windows. Potentiell lästig, weil [1:case\n" #~ "ist für die Suche nach Trac-Berechtigungszuweisungen wichtig] sowieso." #~ msgid "" #~ "Potentially troublesome for users with dynamic IP address, but\n" #~ " disregarded for persistent sessions." #~ msgstr "" #~ "Potenziell problematisch für Benutzer mit " #~ "dynamischer IP-Adresse, aber\n" #~ " für dauerhafte Sitzungen nicht berücksichtigt." #~ msgid "" #~ "Lifetime of the authentication cookie:\n" #~ " [1:]\n" #~ " seconds\n" #~ " [2:\n" #~ " (%(timedelta)s)\n" #~ " ]" #~ msgstr "" #~ "Sperrzeitobergrenze: [1:] Sekunden [2:Dies ist" #~ " nur bei einem Sperrzeitverlängerungsfaktor " #~ "> 1 von Bedeutung.]" #~ msgid "" #~ "Lock user account after the specified number of failed\n" #~ " attempts. Value zero means [1:no limit]." #~ msgstr "" #~ "Nutzerkontensperrung erfolgt nach angegebener " #~ "Anzahl von Fehlversuchen. Wert Null " #~ "bedeutet 'unbegrenzt'." #~ msgid "" #~ "Set the following options in order to be notified of\n" #~ " account creation, password reset and account deletion." #~ msgstr "" #~ "Wählen Sie die folgenden Optionen, um" #~ " über Kontenerstellung, Kennwortrücksetzen und" #~ " Kontenlöschung benachrichtigt zu werden." #~ msgid "" #~ "This is a list of actions which you can\n" #~ " enable or disable by [1:checking] the [2:checkboxes]." #~ msgstr "" #~ "Dies ist eine Aktionsliste, die Sie " #~ "durch [1:Wählen] der [2:Ankreuzfelder] " #~ "aktivieren oder deaktivieren können." #~ msgid "" #~ "Space-separated list of email addresses and/or\n" #~ " usernames that get notified of the above actions:" #~ msgstr "" #~ "Liste von durch Leerzeichen getrennten " #~ "Email-Adressen und/oder Nutzernamen, die " #~ "über die vorgenannten Aktionen benachrichtigt" #~ " werden:" #~ msgid "" #~ "If you've forgotten your password, enter your username and\n" #~ " email address below, and a new password will be sent to you." #~ msgstr "" #~ "Falls Sie Ihr Kennwort vergessen haben," #~ " dann tragen Sie bitte Ihren " #~ "Nutzernamen und Ihre Email-Adresse " #~ "nachfolgend ein, und Sie erhalten per" #~ " Email ein neues Kennwort." #~ msgid "" #~ "An email was sent to\n" #~ " %(email)s with a token to verify your new address.\n" #~ " Please check your email and enter the token in the form below." #~ msgstr "" #~ "Zur Bestätigung Ihrer neuen Adresse " #~ "wurde eine Email-Nachricht mit einem " #~ "Bestätigungscode an %(email)s gesendet. Bitte" #~ " sehen Sie Ihre Nachrichten durch, " #~ "und tragen Sie den Code in das " #~ "nachfolgende Feld ein." #~ msgid "" #~ "You can [1:change your\n" #~ " email address], if it is incorrect." #~ msgstr "Sie können [1: Ihre Email-Adresse ändern], falls sie fehlerhaft ist." #~ msgid "less than %s" #~ msgstr "weniger als %s" #~ msgid "%(num)d day" #~ msgid_plural "%(num)d days" #~ msgstr[0] "%(num)i Tag %%s" #~ msgstr[1] "%(num)i Tage %%s" #~ msgid "%(num)i second" #~ msgid_plural "%(num)i seconds" #~ msgstr[0] "%(num)i Sekunde" #~ msgstr[1] "%(num)i Sekunden" trunk/acct_mgr/locale/es/000755 000000 000000 00000000000 14414633245 014022 5ustar00000000 000000 trunk/acct_mgr/locale/es/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015607 5ustar00000000 000000 trunk/acct_mgr/locale/es/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000220227 14414633245 017733 0ustar00000000 000000 # Spanish (Spain) translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Adolfo González Blázquez , 2010. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Adolfo González Blázquez \n" "Language: es\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/Trac_Plugin-" "L10N/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Cuentas" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Usuarios" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Crear cuenta" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Crear cuenta" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Las contraseñas deben ser iguales." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Cambiar contraseña" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Eliminar cuenta" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Guardar" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "¿Está seguro de que desea eliminar su cuenta?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Configuración" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Acciones de notificación" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "La contraseña es incorrecta." #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Cuenta" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Notificación" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Reiniciar contraseña" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Notificación de cuentas" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Administrar cuentas de usuario" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Configuración" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 #, fuzzy msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "No se puede leer el fichero de contraseñas. Trac necesita permisos de " "lectura y escritura en el fichero de contraseñas así como en su " "directorio padre." #: acct_mgr/htfile.py:165 #, fuzzy msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "No se puede actualizar el fichero de contraseñas. Trac necesita permisos " "de lectura y escritura en el fichero de contraseñas así como en su " "directorio padre." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Notificación" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "El nombre de usuario no puede estar vacío." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" "El nombre de usuario no debe contener ninguno de estos caracteres: " "%(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "El nombre de usuario %(username)s no está permitido." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "La contraseña no puede estar vacía." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "Correo electrónico:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Debe introducir una dirección de correo electrónico correcta." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Registrarse" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Sus permisos se han limitado hasta que %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" "Se ha enviado un correo electrónico a <%(email)s> con una clave para " "%(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" "Por favor, inicie sesión para terminar el proceso de verificación de " "correo electrónico." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Su correo electrónico ya ha sido verificado." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Se ha reenviado un correo de notificación a <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Gracias por verificar su dirección de correo electrónico." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Clave de verificación inválida" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Cuenta" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Ya está conectado. Si necesita cambiar su contraseña por favor use la " "página [1:Preferencias de cuenta]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "¿Está seguro de que desea eliminar su cuenta?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Gracias por tomarse el tiempo en actualizar su contraseña." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" "Se le pide cambiar su contraseña porque ha habido un solicitud de cambio " "recientemente." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "La contraseña antigua es incorrecta." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "La contraseña antigua no puede estar vacía." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Contraseña actualizada con éxito." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "La contraseña es incorrecta." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "El nombre de usuario es necesario" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "El correo electrónico es necesario" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "" "El correo electrónico y el nombre de usuario no coinciden con los de " "ninguna cuenta conocida." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" "Se le ha enviado una nueva contraseña por correo electrónico a " "<%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Nombre de usuario o contraseña inválidos" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Administrar cuentas de usuario" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Nombre de usuario:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Registrar una cuenta" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Notificarme las eliminaciones de cuentas" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Contraseña:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Confirmar contraseña:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Eliminar cuenta" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "Dirección de correo electrónico:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Eliminar" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Cuentas: configuración" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "Permite al usuario ser recordado entre sesiones sin la necesidad de " "reautenticarse." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "La contraseña es incorrecta." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Este almacén de contraseñas no puede listar usuarios." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "La contraseña es incorrecta." #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" "Obligar a los usuarios a cambiar sus contraseñas después de un reinicio " "de contraseña." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Cuenta" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Obliga a los usuarios a verificar su dirección de correo electrónico." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Cuenta" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Registrar una cuenta" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Nombre de usuario:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Añadir " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Iniciar sesión" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Recuérdeme" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Error" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Cuentas: configuración de notificación" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Notificación de cuentas" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Active las siguientes opciones para ser notificado cuando se creen " "cuentas, se reinicien contraseñas o se eliminen cuentas." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Acciones de notificación" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Esta es una lista de acciones que puede activar o desactivar haciendo " "[1:clic] en las [2:casillas de activación]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Notificarme la creación de nuevas cuentas" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Notificarme los reinicios de contraseñas" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Notificarme las eliminaciones de cuentas" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Direcciones de destinatarios de las notificaciones" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Lista de direcciones de correo electrónico separadas por comas y/o " "usuarios a los que notificar sobre las siguientes acciones:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Eliminar cuenta" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Eliminar cuenta" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Cambiar contraseña" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Contraseña antigua:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nueva contraseña:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Registrar una cuenta" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Obligatorio" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Opcional" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Nombre:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Crear cuenta" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Reiniciar contraseña" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Si ha olvidado su contraseña introduzca su nombre de usuario y su " "dirección de correo electrónico y se le enviará una nueva." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Reiniciar contraseña" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Nombre" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "Correo electrónico" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Última conexión" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Reenviar correo electrónico" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Eliminar cuenta" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Este almacén de contraseñas no puede listar usuarios." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Eliminar cuenta" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Eliminar cuentas de usuario seleccionadas" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Verificar correo electrónico" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "Se ha enviado un correo electrónico a %(email)s con una clave para " "verificar su nueva dirección. Por favor, compruebe su correo he " "introduzca la clave en el formulario de abajo." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "Puede [1:cambiar su dirección de correo electrónico] si es incorrecta." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Clave de verificación:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Verificar" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Reenviar correo electrónico" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Su correo electrónico ya ha sido verificado." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "Please change your password now." #~ msgstr "Por favor cambie ahora su contraseña." #~ msgid "Persistent Sessions" #~ msgstr "Sesiones persistentes" #~ msgid "Verify email" #~ msgstr "Verificar correo electrónico" #~ msgid " Change " #~ msgstr " Cambiar " #~ msgid "Already logged in" #~ msgstr "Ya está conectado" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Tipo de clave (%s) inválida para ExtensionOrder" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "El módulo \"crypt\" no se encuentra disponible en esta plataforma." #~ msgid "verify your email address" #~ msgstr "verifique su dirección de correo electrónico" #~ msgid "verify your new email address" #~ msgstr "verifique su nueva dirección de correo electrónico" #~ msgid "Password store icon" #~ msgstr "La contraseña es incorrecta." #~ msgid "Account filters" #~ msgstr "Cuentas" trunk/acct_mgr/locale/et/000755 000000 000000 00000000000 14414633245 014023 5ustar00000000 000000 trunk/acct_mgr/locale/et/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015610 5ustar00000000 000000 trunk/acct_mgr/locale/et/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000204574 14414633245 017743 0ustar00000000 000000 # Estonian translations for TracAccountManager. # Copyright (C) 2023 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \n" "Language: et\n" "Language-Team: Estonian \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" trunk/acct_mgr/locale/fi/000755 000000 000000 00000000000 14414633245 014011 5ustar00000000 000000 trunk/acct_mgr/locale/fi/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015576 5ustar00000000 000000 trunk/acct_mgr/locale/fi/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000204572 14414633245 017727 0ustar00000000 000000 # Finnish translations for TracAccountManager. # Copyright (C) 2023 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \n" "Language: fi\n" "Language-Team: Finnish \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" trunk/acct_mgr/locale/fr/000755 000000 000000 00000000000 14414633245 014022 5ustar00000000 000000 trunk/acct_mgr/locale/fr/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015607 5ustar00000000 000000 trunk/acct_mgr/locale/fr/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000213725 14414633245 017740 0ustar00000000 000000 # French (France) translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Sukender (Benoit NEIL) msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Sukender (Benoit NEIL) \n" "Language: fr\n" "Language-Team: French \n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Comptes" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Utilisateurs" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Créer compte" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Créer compte" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "Adresse email" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Mot de passe" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Les mots de passe doivent correspondre." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Changer de mot de passe" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Supprimer compte" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Êtes-vous sûr(e) de vouloir supprimer votre compte ?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Configuration" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Mot de passe incorrect." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Mot de passe" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Compte bloqué" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Compte" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Notification" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Réinitialisation du mot de passe" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Gestion des comptes utilisateurs" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Configuration" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Le fichier de mots de pase n'est pas lisible. Trac nécessite les droits " "en lecture et écriture pour ce fichier et le répertoire parent." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Le fichier de mots de pase n'a pu être mis à jour. Trac nécessite les " "droits en lecture et écriture pour ce fichier et le répertoire parent." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Notification" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Le nom d'utilisateur doit être renseigné." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Le nom d'utilisateur ne peut contenir les caractères suivants : %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "'%(username)s' n'est pas un nom d'utilisateur valide." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Le mot de passe doit être renseigné." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "Adresse email :" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Vous devez spécifier une adresse email valide." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "S'inscrire" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Mot de passe oublié ?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Compte" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Vous êtes déjà connecté. Si vous souhaitez modifier votre mot de passe, " "merci d'utiliser la page des [1:préférences de compte]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Êtes-vous sûr(e) de vouloir supprimer votre compte ?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Merci de prendre le temps de changer votre mot de passe." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "Suite à une réinitialisation, vous devez changer de mot de passe. " #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "L'ancien mot de passe est incorrect." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "L'ancien mot de passe doit être renseigné." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Mot de passe mis à jour." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Mot de passe incorrect." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Le nom d'utilisateur doit être renseigné." #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "L'adresse email doit être renseignée." #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "L'email et/ou le nom d'utilisateur sont inconnus." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Utilisateur ou mot de passe incorrect." #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "Compte bloqué. Merci de recommencer dans %(release_time) sec." #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Compte bloqué" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Gestion des comptes utilisateurs" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Utilisateur :" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "S'inscrire" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Être notifié de la suppression de compte" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Mot de passe :" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Confirmation du mot de passe :" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Supprimer compte" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "Adresse email :" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Débloquer" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Nombre de tentatives ayant échoué : %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "Adresse IP" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Mot de passe incorrect." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Mot de passe incorrect." #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Compte" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Compte" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Nombre de tentatives ayant échoué : %(count)s" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "S'inscrire" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Utilisateur :" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "Ajouter" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Connexion" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Se souvenir de moi" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Erreur" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Être notifié de la création de compte" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Être notifié de la réinitialisation de mot de passe" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Être notifié de la suppression de compte" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Adresse pour les notifications" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Liste d'emails séparés par des espaces et/ou noms d'utilisateurs qui " "seront notifié des actions suivantes :" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Supprimer compte" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Supprimer compte" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Changer de mot de passe" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Ancien mot de passe :" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nouveau mot de passe :" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "S'inscrire" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Nom :" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Créer compte" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Réinitialiser le mot de passe" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Réinitialiser le mot de passe" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Nom" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "Adresse email" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Dernière connexion" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Bloqué définitivement" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Renvoyer email" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Supprimer compte" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Supprimer compte" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Supprimer les comptes sélectionnés" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Vérifier email" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Vérifier" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Renvoyer email" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "Please change your password now." #~ msgstr "Merci changer votre mot de passe maintenant." #~ msgid "Already logged in" #~ msgstr "Déjà connecté" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "Le module \"crypt\" n'est pas disponible sur cette plateforme." #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "" #~ "Compte bloqué. Merci de recommencer dans\n" #~ "%(release_time) sec.\n" #~ " " #~ msgid "Account filters" #~ msgstr "Compte bloqué" trunk/acct_mgr/locale/he/000755 000000 000000 00000000000 14414633245 014007 5ustar00000000 000000 trunk/acct_mgr/locale/he/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015574 5ustar00000000 000000 trunk/acct_mgr/locale/he/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000235053 14414633245 017723 0ustar00000000 000000 # Hebrew translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Shalom Craimer , 2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Shalom Craimer \n" "Language: he\n" "Language-Team: Hebrew \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "נעול עד %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "חשבונות" #: acct_mgr/admin.py:213 msgid "Users" msgstr "משתמשים" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "עודכן בהצלחה: %(success)s" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "יצירת חשבון" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "יצירת חשבון" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "נא לבחור חשבון מתוך הרשימה על־פי שם המשתמש" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "כתובת דוא\"ל" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "תחילית-/שם משפחה (כינוי)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "ססמה" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "על הססמאות להיות זהות." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "ניסיונות ההתחברות הכושלים עבור המשתמש %(user)s נמחקו" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "שינוי ססמה" #: acct_mgr/admin.py:534 #, fuzzy msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "היכולת לאפס ססמאות אינו פעילה." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "מחיקת חשבון" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "מאגר הססמאות אינו תומך במחיקת משתמשים." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "שמירה" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "האם ברצונך למחוק את חשבונך?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "תצורה" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "פעולות התרעה" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "הססמא לא נכונה." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "ססמה" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "החשבון נעול" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "חשבון" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "התרעה" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "איפוס ססמה" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "התרעות חשבון" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "נהל חשבונות משתמשים" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "תצורה" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, fuzzy, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" "שידרת האימות עבור המשתמש %s אינה תומכת\n" " בקביעת ססמה.\n" " " #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" "אף אחד ממרכיבי ב-IPasswordStore הרשומים בקובץ\n" " trac.ini תומכים בקביעת ססמאות או יצירת משתמשים.\n" " " #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "לא ניתן לקרוא את קובץ הססמאות. טראק דורש\n" " גישת קריאה וכתיבה הן לקובץ הססמאות\n" " והן לספרייה המכילה אותו." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "לא ניתן לעדכן את קובץ הססמאות. טראק דורש\n" " גישת קריאה וכתיבה הן לקובץ הססמאות\n" " והן לספרייה המכילה אותו." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "ברירת המחדל לסוג הגיבוב של ססמאות חדשות ומעודכנות" #: acct_mgr/htfile.py:236 #, fuzzy msgid "Realm to select relevant htdigest file entries" msgstr "מתחם־האימות לשימוש בעת בחירת שורות קובץ htdigest" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "הכתובת של שירות האימות עבור HTTP" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "התרעה" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "שם המשתמש אינו יכול להיות ריק." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "אסור לשם־המשתמש להכיל את התוים הללו: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "שם־המשתמש %(username)s אינו חוקי." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "הססמה לא יכולה להיות ריקה." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 #, fuzzy msgid "Email:" msgstr "דוא\"ל" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 #, fuzzy msgid "The email address is required for Trac to send you a verification token." msgstr "לא נרשמה כתובת דוא\"ל עבור חשבון זה." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "עליך להזין כתובת דוא\"ל חוקית." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "הרשמה" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "הרשאותיך הוגבלו עד אשר תבצע/י %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" "הודעה נשלחה לכתובת %(email)s עם אסימון עבור\n" " %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "נא להתחבר על־מנת לסיים את תהליך אימות כתובת הדוא\"ל." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "כתובת הדוא\"ל שלך כבר אומתה." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "הודעת דוא\"ל נשלחה שוב אל <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "תודה לך על אימות כתובת הדוא\"ל שלך." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "אסימון אימות לא־תקף" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "שכחת את ססמתך?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "חשבון" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "כבר ביצעת התחברות. אם ברצונך לשנות\n" " את ססמתך, יש להשתמש\n" " בדף [1:העדפות חשבון]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "האם ברצונך למחוק את חשבונך?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "תודה לך על שהשקעת מזמנת לעדכן את ססמתך." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "עליך לשנות את ססמתך עקב בקשה חדשה לשינוי ססמאות." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "הססמה הישנה שגויה." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "הססמה הישנה לא יכולה להיות ריקה." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "הססמה עודכנה בהצלחה." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "הססמא לא נכונה." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "חובה להזין שם־משתמש" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "חובה להזין כתובת דוא\"ל" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "כתובת הדוא\"ל ושם־המשתמש אינם תואמים לחשבון מוכר." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" "נשלחה ססמה חדשה\n" " אליך לכתובת הדוא\"ל %(email)s ." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "שם־המשתמש או הססמה שגויים" #: acct_mgr/web_ui.py:529 #, fuzzy, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" "החשבון ננעל, נא לנסות בשנית לאחר\n" " %(release_time)s\n" " " #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "החשבון נעול" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "התחברות לאחר %(attempts)s ניסיון כושל" msgstr[1] "התחברות לאחר %(attempts)s ניסיונות כושלים" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "נהל חשבונות משתמשים" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "עבור [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "עבור [1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "שם המשתמש:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "הרשמה לחשבון" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "התרע על מחיקת חשבונות" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "ססמה:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "אימות ססמה:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "תחילית-/שם משפחה (כינוי):" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "מחיקת חשבון" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "כתובת דוא\"ל:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "מצב החשבון" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, fuzzy, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" "[1:]\n" " חשבון זה ננעל עד %(time)s[2:]\n" " ובינתיים אפילו ניסיונות התחברות חוקיים יידחו." #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "חשבון זה ננעל לצמיתות." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "שיחרור נעילת החשבון" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "שיחרור נעילה" #: acct_mgr/templates/genshi/account_admin.html:170 #, fuzzy, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" "תנאי הנעילה הוגשמו כבר\n" " %(count)s פעם." msgstr[1] "" "תנאי הנעילה הוגשמו\n" " %(count)s פעמים." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, fuzzy, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" "לכן, ניסיון ההתחברות הבא לחשבון זה\n" " יעוכב למשך %(time)s." #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "תנאי הנעילה עוד לא הוגשמו." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "לא נקבעו תנאים עבור חשבון זה." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "פרטי האימות למשתמש זה מאוחסנים במאגר־האימות במספר\n" " [1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "חיפוש שמות־משתמשים נקבע ל-[1:לא רגיש לאותיות גדולות/קטנות]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "חיפוש שמות־משתמשים נקבע ל-[1:רגיש לאותיות גדולות/קטנות]." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 #, fuzzy msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" "אין מאגר המספק פרטי אימות עבור משתמש זה,\n" " לכן לא ניתן לאמת את המשתמש והגישה\n" " לחשבון זה [1:דומה לחסומה],\n" " בעוד שייתכן ופרטי החשבון עדיין זמינים." #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "כתובת הדוא\"ל הנוכחית: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "כתובת זו אומתה בהצלחה." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" "האימות ממתין\n" " ([1:אסימון: '%(token)s' ])." #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "כתובת דוא\"ל זו עוד לא אומתה." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "לא נרשמה כתובת דוא\"ל עבור חשבון זה." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "היסטוריית גישות" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "התחברות אחרונה: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "משתמש זה מעולם לא התחבר/ה." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "סה\"כ ניסיונות חיבור כושלים: %(count)s." #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "טבלה: תצוגת ניסיונות החיבור הכושלים האחרונות" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "כתובת IP" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "זמן הרישום" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "מחיקת רישום ניסיונות החיבור הכושלים" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "מחיקת הרישום" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "לא נרשמו ניסיונות חיבור כושלים." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "עדכן ססמה" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "חשבונות: תצורה" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "אפשר למשתמש להיזכר בין הפעלות ללא צורך\n" " לאימות מחדש." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "הססמא לא נכונה." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "מאגר ססמאות זה אינו תומך בהצגת רשימת המשתמשים." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "עדכן בשקט את גיבובי הססמאות בהתחברות הבאה." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "עדכן ססמה" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "היכולת לאפס ססמאות אינו פעילה." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "חייב את המשתמשים לשנות את ססמתם לאחר איפוס ססמה." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "חשבון" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "לא נרשמה כתובת דוא\"ל עבור חשבון זה." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "חייב את המשתמשים לאמת את כתובות הדוא\"ל שלהם." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "חשבון" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "סה\"כ ניסיונות חיבור כושלים: %(count)s." #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "הרשמה לחשבון" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "הוספה/עריכה של חשבון:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "שם המשתמש:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " הוספה " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "כניסה" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "זכור אותי" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "שגיאה" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "חשבונות: תצורת התרעות" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "התרעות חשבון" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "יש לקבוע את האפשרויות להלן על־מנת לקבל התרעה על\n" " יצירת חשבונות, איפוס ססמאות ומחיקת חשבונות." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "פעולות התרעה" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "זוהי רשימת הפעולות שבאפשרותך\n" " להפעיל או לבטל על־ידי [1:סימון] [2:ב-וי]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "התרע על יצירת חשבונות חדשים" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "התרע על איפוס ססמאות" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "התרע על מחיקת חשבונות" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "כתובת למשלוח התרעות" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "רשימת כתובות דוא\"ל ו/או שמות משתמשים, מופרדים ברווחים,\n" " אשר יקבלו התרעות על הפעולות שלעיל:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "מחיקת חשבון" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "מחיקת חשבון" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "שינוי ססמה" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "ססמה ישנה:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "ססמה חדשה:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "הרשמה לחשבון" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "חובה" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "לא־חובה" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "שם:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "יצירת חשבון" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "איפוס ססמה" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "אם שכחת את ססמתך, ניתן להזין את שם משתמש וכתובת דוא\"ל\n" " להלן ותישלח אליך ססמה חדשה." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "איפוס ססמה" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "שם" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "דוא\"ל" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "התחברות אחרונה" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "נעול לצמיתות" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "שליחת הודעה בשנית" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "הוספה/עריכה של חשבון:" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "מאגר ססמאות זה אינו תומך בהצגת רשימת המשתמשים." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "עידכון" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "איפוס ססמאות" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "מחיקת חשבון" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "הסר את החשבונות המסומנים" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "אימות כתובת דוא\"ל" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "נשלחה הודעה אל\n" " %(email)s עם אסימון לאימות הכתובת החדשה.\n" " נא לבדוק את הדוא\"ל שלך ולהזין את אסימון האימות בטופס להלן." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "" "ניתן [1:לשנות את\n" " כתובת הדואר שלך], אם היא מוטעית." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "אסימון אימות:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "אימות" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "שליחת הודעה בשנית" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "כתובת הדוא\"ל שלך כבר אומתה." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The password store does not support creating users." #~ msgstr "מאגר הססמאות אינו תומך ביצירת משתמשים." #~ msgid "Unknown user %(user)s." #~ msgstr "משתמש לא מוכר %(user)s." #~ msgid "" #~ "The password store does not support\n" #~ " changing passwords.\n" #~ " " #~ msgstr "" #~ "מאגר הססמאות אינו תומך\n" #~ " בשינוי ססמאות.\n" #~ " " #~ msgid "" #~ "Path relative to Trac environment or full host machine\n" #~ " path to password file" #~ msgstr "" #~ "הנתיב יחסית לסביבת הטראק, או שם מלא של השרת והנתיב\n" #~ " אל קובץ הססמאות" #~ msgid "The email and username do not match a known account." #~ msgstr "כתובת הדוא\"ל והמשתמש אינם תואמים לשום חשבון." #~ msgid "" #~ "Path to the users file; leave blank to locate\n" #~ " the users file by reading svnserve.conf" #~ msgstr "" #~ "הנתיב לקובץ־משתמשים; יש להשאיר ריק\n" #~ " על־מנת לאכן את הקובץ על־ידי קריאת svnserve.conf" #~ msgid "Please change your password now." #~ msgstr "יש לשנות את ססמתך כעת." #~ msgid "Review User Account Details" #~ msgstr "הגהת פרטי חשבון המשתמש" #~ msgid "Verification" #~ msgstr "אימות" #~ msgid "Persistent Sessions" #~ msgstr "שמור מצב בין הפעלות" #~ msgid "Verify email" #~ msgstr "אימות דוא\"ל" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "הוספת חשבון־משתמש חדש או עריכת אחד קיים." #~ msgid " Change " #~ msgstr " שינוי " #~ msgid "Already logged in" #~ msgstr "כבר מחובר" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "סוג המפתח (%s) אינו מתאים לסדר־האחסון" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "" #~ "החבילה \"crypt\" אינה זמינה\n" #~ " על מערכת זו." #~ msgid "verify your email address" #~ msgstr "נא לאמת את כתובת הדוא\"ל שלך" #~ msgid "verify your new email address" #~ msgstr "נא לאמת את כתובת הדוא\"ל החדשה שלך" #~ msgid "Password store icon" #~ msgstr "הססמא לא נכונה." #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "" #~ "החשבון ננעל, נא לנסות בשנית לאחר\n" #~ " %(release_time)s\n" #~ " " #~ msgid "Account filters" #~ msgstr "פרטי החשבון" trunk/acct_mgr/locale/id_ID/000755 000000 000000 00000000000 14414633245 014363 5ustar00000000 000000 trunk/acct_mgr/locale/id_ID/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 016150 5ustar00000000 000000 trunk/acct_mgr/locale/id_ID/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000204601 14414633245 020272 0ustar00000000 000000 # Indonesian (Indonesia) translations for TracAccountManager. # Copyright (C) 2023 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \n" "Language: id_ID\n" "Language-Team: Indonesian (Indonesia) " "(http://www.transifex.com/projects/p/Trac_Plugin-L10N/language/id_ID/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" trunk/acct_mgr/locale/it/000755 000000 000000 00000000000 14414633245 014027 5ustar00000000 000000 trunk/acct_mgr/locale/it/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015614 5ustar00000000 000000 trunk/acct_mgr/locale/it/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000230342 14414633245 017737 0ustar00000000 000000 # Italian translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Roberto Longobardi , 2011. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: seccanj \n" "Language: it\n" "Language-Team: Italian (http://www.transifex.com/projects/p/Trac_Plugin-" "L10N/language/it/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "Bloccato fino a %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Accounts" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Utenti" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "Aggiornato con successo: %(success)s" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Crea un account" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Crea un account" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "Scegliere un account utente dalla lista per procedere." #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "Indirizzo e-mail" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "Soprannome (Nickname)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Password" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Le password devono corrispondere." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Tentativi di login falliti per l'utente %(user)s eliminati" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Cambia password" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "La procedura di reimpostazione della password non è attivata." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Elimina account" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "Il contenitore di password non supporta l'eliminazione degli utenti." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Salva" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Sei sicuro di voler eliminare il tuo account?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Configurazione" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Azioni di Notifica" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "La password è errata." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Password" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Account bloccato" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Account" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Notifica" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Reimposta Password" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Notifiche Account" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Gestione Account Utente" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Configurazione" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" "Il backend di autenticazione per l'utente %(user)s non supporta " "l'impostazione della password." #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" "Nessuno dei componenti IPasswordStore elencati nel file trac.ini supporta" " l'impostazione della password o la creazione di utenti." #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Impossibile leggere il file delle password. Trac necessita dei diritti di" " lettura e scrittura sia sul file delle password che sulla sua directory " "padre." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Impossibile aggiornare il file delle password. Trac necessita dei diritti" " di lettura e scrittura sia sul file delle password che sulla sua " "directory padre." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Tipo di hash predefinito per le passowrd nuove/aggiornate" #: acct_mgr/htfile.py:236 #, fuzzy msgid "Realm to select relevant htdigest file entries" msgstr "Reame per la selezione delle voci rilevanti nel file htdigest" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "URL del servizio di autenticazione HTTP" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Notifica" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Il nome utente non può essere vuoto." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Il nome utente non deve contenere i seguenti caratteri: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Il nome utente %(username)s non è consentito." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "La password non può essere vuota." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 #, fuzzy msgid "The email address is required for Trac to send you a verification token." msgstr "Nessun indirizzo e-mail è registrato per questo account." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "È necessario specificare un indirizzo email valido." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Registrati" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Le autorizzazioni sono state limitate fino a quando non %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "Una e-mail è stata inviata a <%(email)s> con un token per %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "Accedi per completare la procedura di verifica." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Il tuo indirizzo email è già verificato." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Una email di notifica è stata inviata a <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Grazie per aver confermato il tuo indirizzo email." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Codice di verifica non valido" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Password dimenticata?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Account" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Sei già loggato. Se hai bisogno di cambiare la password\n" "utilizza la pagina [1:Preferenze account]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Sei sicuro di voler eliminare il tuo account?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Grazie per aver dedicato del tempo per aggiornare la password." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" "Occorre cambiare la password a causa di una recente richiesta di modifica" " della stessa." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "La vecchia password è errata." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "La vecchia password non può essere vuota." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "La password è stata aggiornata con successo." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "La password è errata." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Il nome utente è obbligatorio" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "L'email è obbligatoria" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "L'e-mail e il nome utente devono corrispondere a un account noto." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" "Una nuova password ti è stata inviata tramite \n" "e-mail a <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Nome utente o password non validi" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "Account bloccato. Si prega di riprovare dopo %(release_time)s" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Account bloccato" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "Login dopo %(attempts)s tentativo fallito" msgstr[1] "Login dopo %(attempts)s tentativi falliti" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Gestione Account Utente" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "per [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "per [1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Nome utente:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Registra un account" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Ricevi avvisi alla cancellazione di account" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Password:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Conferma Password:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "Soprannome (Nickname):" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Elimina account" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "Indirizzo e-mail:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Stato Account" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, fuzzy, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" "[1:]\n" "Questo account è stato bloccato fino a %(time)s [2:]\n" "e anche i tentativi di accesso validi verranno respinti in questo periodo." #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Questo account è stato bloccato in modo permanente." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Rilasciare il blocco sull'account" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Sblocca" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "La condizione di blocco si è verificata %(count)s volta finora." msgstr[1] "La condizione di blocco si è verificata %(count)s volte finora." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, fuzzy, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" "Pertanto, al prossimo tentativo falito di accesso l'autenticazione per " "questo account sarà ritardata di %(time)s." #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "La condizione di blocco non si è ancora verificata." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "Nessun vincolo è fissato per questo account." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "Le credenziali per questo utente sono memorizzate \n" "nell'AuthStore numero [1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "La corrispondenza nome utente è impostata su [1:non case-sensitive]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "La corrispondenza nome utente è impostata su [1: case-sensitive]." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 #, fuzzy msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" "Nessun contenitore fornisce credenziali per questo utente. L'utente al " "momento non può essere autenticato e l'accesso a questo [1:account è di " "fatto bloccato], mentre i dati dell'account potrebbero essere ancora " "disponibili." #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Indirizzo email corrente: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Questo indirizzo è stato verificato con successo." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "La verifica è in corso [1:(token: %(token)s)]." #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Questo indirizzo non è stato ancora verificato." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Nessun indirizzo e-mail è registrato per questo account." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Storia degli Accessi" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Ultimo accesso: %(time)s " #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "L'utente non ha mai acceduto prima." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Totale tentativi falliti: %(count)s " #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Tabella: Registro ultimi tentativi di accesso non riuscito" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "Indirizzo IP" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "Tempo di connessione" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Elimina registro errori di accesso" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Elimina Registro" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "Attualmente non esistono tentativi di accesso non riusciti registrati." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "Aggiorna la password" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Accounts: Configurazione" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "Consenti all'utente di essere ricordato da una sessione all'altra senza " "bisogno di ri-autenticazione." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "La password è errata." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" "Questo contenitore password non \n" "permette di listare gli utenti." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" "Aggiorna automaticamente gli hash delle password al prossimo login " "riuscito." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Aggiorna la password" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "La procedura di reimpostazione della password non è attivata." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" "Forzare gli utenti a cambiare password dopo una reimpostazione della " "password." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Account" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Nessun indirizzo e-mail è registrato per questo account." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Forzare gli utenti a verificare i loro indirizzi email." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Account" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Totale tentativi falliti: %(count)s " #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Registra un account" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "Aggiungi/Modifica Account:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Nome utente:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Aggiungi " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Accedi" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Ricordati di me" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Errore" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Accounts: Configurazione delle Notifiche" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Notifiche Account" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Impostare le seguenti opzioni per essere notificati della creazione \n" "di account, reimpostazione password e cancellazione account." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Azioni di Notifica" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Questa è una lista di azioni che è possibile attivare o \n" "disattivare mediante la [1:selezione] delle [2:caselle di controllo]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Ricevi avvisi alla creazione di nuovi account" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Ricevi avvisi alla reimpostazione della password" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Ricevi avvisi alla cancellazione di account" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Indirizzi dei destinatari delle notifiche" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Elenco separato da spazi di indirizzi e-mail e/o\n" "nomi utente che saranno informati delle azioni di cui sopra:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Elimina account" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Elimina account" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Cambia password" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Vecchia Password:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nuova password:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Registra un account" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Obbligatorio" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Facoltativo" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Nome:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Crea un account" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Reimposta la Password" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Se hai dimenticato la password, inserisci il tuo nome utente\n" "e indirizzo e-mail e ti verrà inviata via e-mail una nuova password." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Reimposta la password" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Nome" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "E-mail" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Ultimo accesso" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Bloccato permanentemente" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Rispedisci E-mail" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Aggiungi/Modifica Account:" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" "Questo contenitore password non \n" "permette di listare gli utenti." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Aggiorna" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "Reimposta le password" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Elimina account" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Rimuovere gli account selezionati" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Verifica e-mail" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "Una e-mail è stata inviata a %(email)s con un codice per\n" "verificare il tuo nuovo indirizzo. \n" "Controlla la tua e-mail e inserisci il codice nel modulo sottostante." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "Puoi [1:modificare il tuo indirizzo email], se non è corretto." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Codice di Verifica:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Verifica" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Rispedisci E-mail" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Il tuo indirizzo email è già verificato." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The password store does not support creating users." #~ msgstr "Il contenitore di password non supporta la creazione di utenti." #~ msgid "Unknown user %(user)s." #~ msgstr "Utente sconosciuto %(user)s ." #~ msgid "" #~ "The password store does not support\n" #~ " changing passwords.\n" #~ " " #~ msgstr "Il contenitore di password non supporta la modifica delle password." #~ msgid "" #~ "Path relative to Trac environment or full host machine\n" #~ " path to password file" #~ msgstr "" #~ "Percorso relativo all'ambiente Trac o " #~ "percorso completo sulla macchina server " #~ "del file delle password" #~ msgid "The email and username do not match a known account." #~ msgstr "L'e-mail e il nome utente non corrispondono a nessun account noto." #~ msgid "" #~ "Path to the users file; leave blank to locate\n" #~ " the users file by reading svnserve.conf" #~ msgstr "" #~ "Percorso del file degli utenti; lasciare" #~ " vuoto per individuare il file degli" #~ " utenti leggendo svnserve.conf" #~ msgid "Please change your password now." #~ msgstr "Occorre cambiare subito la password." #~ msgid "Review User Account Details" #~ msgstr "Rivedi i Dettagli sull'Account Utente" #~ msgid "Verification" #~ msgstr "Verifica" #~ msgid "Persistent Sessions" #~ msgstr "Sessioni Persistenti" #~ msgid "Verify email" #~ msgstr "Verifica e-mail" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "Aggiungi un nuovo account utente o modificane uno esistente." #~ msgid " Change " #~ msgstr " Cambia " #~ msgid "Already logged in" #~ msgstr "Già loggato" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Tipo di chiave (%s) non valido per ExtensionOrder" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "Il modulo \"crypt\" non è disponibile su questa piattaforma." #~ msgid "verify your email address" #~ msgstr "Verificare l'indirizzo e-mail" #~ msgid "verify your new email address" #~ msgstr "Verificare il nuovo indirizzo e-mail" #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "" #~ "Account bloccato. Si prega di riprovare\n" #~ "dopo %(release_time)s" #~ msgid "Account filters" #~ msgstr "Dettagli account" trunk/acct_mgr/locale/ja/000755 000000 000000 00000000000 14414633245 014005 5ustar00000000 000000 trunk/acct_mgr/locale/ja/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015572 5ustar00000000 000000 trunk/acct_mgr/locale/ja/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000276371 14414633245 017731 0ustar00000000 000000 # Japanese (Japan) translations for TracAccountManager. # Copyright (C) 2010-2023 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Jun Omae , 2010-2023. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-12-01 09:00+0000\n" "Last-Translator: Jun Omae \n" "Language: ja\n" "Language-Team: Japanese \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "%(t_release)sまでロックされます" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "アカウント" #: acct_mgr/admin.py:213 msgid "Users" msgstr "ユーザ" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "%(count)sアカウント" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "アカウント属性%(count)s件" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "正常に削除しました: %(account)s" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "アカウントページに戻る" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "アカウントページに戻る" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "処理するアカウントをリストから名前で選んでください。" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "メールアドレス" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "名前 (ニックネーム)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "パスワード" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "%(username)s の %(attribute)s を削除しました。" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "パスワードが一致しません。" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "%(username)s の %(attributes)s を更新しました。" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "テーブル %(table)s の更新エラー: %(message)s" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "テーブル %(table)s カラム %(columns%(constraint)s: %(result)s個の変更" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "ユーザ %(user)s のアカウントロック (%(condition)s) を解除しました" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "ユーザ %(user)s へのログイン失敗の試行回数を削除しました" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "アカウントの変更" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "ユーザ ID の変更" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "アカウント属性" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "%(accounts)s のパスワードリセット" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "パスワードリセットは有効になっていません。" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "アカウントを削除: %(accounts)s" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "パスワードストアはユーザの削除をサポートしていません。" #: acct_mgr/admin.py:644 msgid "active" msgstr "有効" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "無効" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "承認待ち" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "メール未確認" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "本当にこのアカウントを削除しますか?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "旧ユーザの削除は %(store)s ではサポートされていません。" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "設定されているパスワードストアはいずれも書き込み可能ではありません。" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "パスワードリセットは必須の操作ですが、まだ無効になっています。" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "少なくとも %(required_check)s が設定・有効になっている必要があります。" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "パスワードストアへの新しいログインデータの保存に失敗しました。" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "ユーザ %(username)s にメールアドレスが設定されていないため、新しいパスワードを送信できません。" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "変更通知を送信中にエラーが発生しました。" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "TracLogging を有効にしていれば詳細が分かります。" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "ページ%(num)s" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "次のページ" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "前のページ" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "設定" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "パスワードリセットを実行しました。" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "変更を保存しました。" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "変更内容は破棄するか保存するまでキャッシュされます (最終ステップを参照)。" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "認証オプション" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "パスワードストア" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "パスワードポリシー" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "アカウントポリシー" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "アカウントガード" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "初期設定" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "設定の読込中にエラー - ヒント: 必要なコンポーネント '%s' を有効/インストールしてください。" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "パスワードリセット" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "アカウント登録" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "管理ユーザアカウント" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "設定のレビュー" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "Trac 認証の初期設定を開始しました。" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "アカウント %(username)s を作成しました。" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "ユーザ %(user)s に対する認証バックエンドはパスワードの設定をサポートしていません。" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "ユーザ %(user)s のパスワードが存在しているため、作成できませんでした。" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "パスワードの設定やユーザ作成をサポートする IPasswordStore コンポーネントを trac.ini に指定していません。" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "アカウント承認待ちです。管理者への連絡が必要になる場合があります。" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "パスワードの作成と更新を行うのに使用する IPasswordHashMethod コンポーネント" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "パスワードファイルに対する [%(section)s] %(name)s オプションが設定されていません" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "パスワードファイルが読み取り可能ではありません。Trac はパスワードファイルとその親ディレクトリに対して読み書きのアクセスを行います。" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "パスワードファイルを更新できませんでした。Trac はパスワードファイルとその親ディレクトリに対して読み書きのアクセスを行います。" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "パスワードファイルへのパスを Trac 環境からの相対パスもしくはフルパスで指定する" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "新規及び更新パスワードのデフォルトのハッシュタイプ" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "htdigest ファイルエントリを選択するのに使用するレルム" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "HTTP 認証サービスの URL" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "(必要な %(perm)s がありません)" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "通知" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "htdigest データベースエントリに選択するのに使用するレルム" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "passlib も crypt モジュールも利用できません" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "登録エラー" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" "基本的なチェックのコレクションです。\n" "\n" "以下のチェックが含まれています。\n" " * 空白 (ユーザ名やパスワードの入力がない)\n" " * ブラックリストに載ったユーザ名の文字がある\n" " * 大文字のユーザ名 (Trac の権限名に予約されています)\n" " * 一部予約ユーザ名\n" " * 設定されたパスワードストアにあるユーザ名が重複している場合\n" "\n" "''このチェックはユーザ自身の設定に関するリクエストには実施されません。''" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "ユーザ名は空にできません。" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "ユーザ名に次の文字を使えません: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "大文字のみのユーザ名は許可していません。" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "ユーザ名 %(username)s は使用できません。" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "名前が %(username)s と大文字小文字だけが違うか一致しているアカウントまたはグループが存在します。" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "パスワードは空にできません。" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" "シンプルなボットチェックのコレクションです。\n" "\n" "''このチェックは認証されたユーザからのリクエストには実施されません。''" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" "標準プロンプトの代わりに尋ねられる質問で register_basic_token の値がその回答になります。空文字列 (デフォルト値) " "を設定すると標準プロンプトになります。" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "検証を通るのに入力として必要な文字列です。" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "上記に回答してください: %(question)s" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "確認コードに [%(token)s] の括弧の内側にあるものすべて正確に入力してください。" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "合言葉:" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "この項目に入力しないようにしてください。" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "人間さんですか? もうちょっとやってみて!" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" "メールアドレスに対するチェックのコレクションです。\n" "\n" "''このチェックはアカウント認証が無効の場合には実施されません。''" #: acct_mgr/register.py:207 msgid "Email:" msgstr "メールアドレス:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "確認用コードを送信するためにメールアドレスが必要です。" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "メールアドレスを入力しておくと、パスワードを忘れた場合にパスワードをリセットすることもできます。" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "メールアドレスを入力しておくと、パスワードを忘れた場合にパスワードをリセットできます。" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "有効なメールアドレスを指定してください。" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "このメールアドレスはすでに使用されています。別のメールアドレスを指定してください。" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" "正規表現に基づくチェックのコレクションです。\n" "\n" "''この入力フィールドを使うには !EmailCheck " "が有効になっている必要があります。アカウント認証が無効の場合、同様にメールアドレスのチェックは実施されません。''" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "新規ユーザ名を検証する正規表現です。ローカルネーミングポリシーに対応した許可するユーザ名の制約を定義します。" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" "新規アカウントのメールアドレスを検証する正規表現です。有効なメールアドレスの制約を定義します。正規表現をカスタマイズして UTF-8 " "文字を受け付けるなど制限を狭くしたり広くしたりすることができます。" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "ユーザ名 %(username)s がローカルの名前付けポリシーに合っていません。" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "正しくないメールアドレスを指定しています。正しいメールアドレスを指定してください。" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" "権限システムでユーザ名が使用されているかどうかをチェックします。\n" "\n" "''このチェックは認証されたユーザからのリクエストには実施されません。''" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "登録" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "Trac 管理者にこの問題を報告してください。" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "ユーザ名は正常に登録されましたが、アカウントは管理者による承認が必要です。ローカルポリシーに従って進めてください。" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "ユーザ名を正常に登録しましたがまだアクティベーションが必要です。ユーザ %(user)s でログインを行って指示に従ってください。" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "登録処理は正常に終了しました。いまからユーザ %(user)s でログインできます。" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "[1:メールアドレスを確認する]まで権限が制限されます。" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "[1:新しいメールアドレスを確認する]ためトークンを記載したメールを <%(email)s> に送信しました。" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "メールアドレスを確認するためにログインしてください。" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "メールアドレスはすでに確認済みです。" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "通知メールを <%(email)s> に再送信しました。" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "メールアドレスを確認してくれてありがとうございます。" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "確認用コードが正しくありません" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "ユーザファイルのパス、空欄のままにすると svnserve.conf で指定しているユーザファイルとなります。" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "%(datepart)s %(timepart)s" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "パスワードが思い出せない?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "アカウント" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" "申し訳ありませんが、匿名セッションで '%(username)s' を使用することはポリシーで禁止されています。ログインするか他のセッション ID" " を使用してください。" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "すでにログインしています。パスワードを変更したい場合は[1:アカウント設定]ページを使ってください。" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "登録済みのユーザ名を匿名セッションで使用することはポリシーで禁止されています。ログインするか別のユーザ名を使用してください。" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "本当にアカウントを削除しますか?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "パスワードの更新に時間を割いてくれてありがとうございます。" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "パスワード変更要求により、パスワードを変更する必要があります。[1:直ちにパスワードを変更してください。]" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "旧パスワードが間違っています。" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "旧パスワードは空にできません。" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "パスワードは旧パスワードと一致してはいけません。" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "パスワードを正常に更新しました。" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "パスワードが間違っています。" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "ユーザ名が必要です。" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "メールアドレスが必要です。" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "メールアドレスとユーザ名は既存のアカウントと一致しなければなりません。" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "パスワードをリセットできません: %(error)s" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "新しいパスワードを <%(email)s> に送信しました。" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "ユーザ名、またはパスワードが間違っています" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "アカウントをロックしているので、%(release_time)s以降にやり直してください。" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "アカウントロック" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "ログイン (%(attempts)s回失敗)" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "サポートしていない DB スキーマバージョンです。%(plugin)s を最新のバージョンに更新してください。" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "ユーザアカウントの管理" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "[1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "[1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "ユーザ ID 変更にはコンポーネントを追加で有効にする必要があります" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "新ユーザ名:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "ユーザ ID ('ユーザ名') の変更" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "アカウント作成とパスワードリセットをスキップする" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "既存アカウントを引き継ぐ" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "存在する属性を上書きしない" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "新しいアカウント属性のみをコピーする" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "最後のアカウント削除をスキップする" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "旧ログインデータを残す" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "パスワード:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "パスワード(確認):" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "名前:" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "値の削除" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "メールアドレス:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "メールアドレスの確認を省略する" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "変更を適用" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "アカウントステータス" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "このアカウントは%(time)sまでロックしています。[1:]それまでの間、正常なログイン試行であっても拒否します。" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "このアカウントは無期限でロックしています。" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "アカウントロックを解除" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "ロック解除" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "現在、タイムロック条件に%(count)s回到達しています。" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "したがって、このアカウントに対するログイン試行は%(time)sまで失敗することになります。" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "まだロック条件を満たしたことはありません。" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "このアカウントの制限はありません。" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "AuthStore 番号 [1:%(order_num)s] (%(store)s) にあるこのユーザの認証情報。" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "ユーザ名は[1:大文字小文字を区別しません]。" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "ユーザ名は[1:大文字小文字を区別します]。" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "このユーザの認証情報を持つストアはなくアカウント情報があっても、このユーザは現状認証およびアクセス出来ず[1:実質上ブロック]します。" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "現在のメールアドレス: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "このアドレスは確認済みです。" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "確認待ちです [1:(トークン: %(token)s)]" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "このアドレスはまだ確認していません。" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "このアカウントには登録しているメールアドレスがありません。" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "アクセス履歴" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "最終ログイン: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "ユーザはこれまでにログインしたことがありません。" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "合計ログイン失敗回数: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "テーブル: 最近の失敗ログイン一覧" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "IP アドレス" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "アクセス時刻" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "失敗ログインのログを削除" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "ログを削除" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "現在、ログがのこっている失敗ログインはありません。" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "再表示" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "アカウント: 設定" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "変更を適用して戻る" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "前へ" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "戻る" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "変更を適用し続ける" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "次へ" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "ステップ %(step)s: %(label)s" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "認証オプションを設定する目的" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" "HTTP 認証 (Trac デフォルト) または AccountManagerPlugin で提供する HTML " "ログインフォームのどちらを使用するかを決定します。" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" "最初のログイン以降、Trac " "のセッションはブラウザのクッキーに基づいてリクエストごとに認証されます。そのため、重要なブラウザのクッキーのプロパティを制御する設定を提供しています。" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "プロバイダに依存しない認証オプション" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "登録とログイン時にログイン名を小文字に変換する" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" "Windows のような大文字と小文字を区別しない、不注意なユーザ名の入力に対応する。[1:Trac " "の権限割り当ては大文字と小文字を区別して行われる]ため、トラブルになる可能性があります。" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "認証時に IP アドレスをチェックする" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "動的な IP アドレスを持つユーザにはトラブルになる可能性がありますが、永続的なセッションでは無視されます。" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "クッキーの送信を HTTPS 接続に制限する" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "Trac インスタンスが HTTPS でのみアクセス可能な場合には必須です。" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "認証クッキーの有効期限: [1:] 秒 [2:(%(timedelta)s)]" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" "ブラウザが認証情報をキャッシュする時間、つまりどれくらい操作を行わなかった場合に再ログインが必要になるかを決定します。デフォルト (0秒) " "ではブラウザ終了時にクッキーの有効期限が切れるようになっています。" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "認証フロントエンド" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "Web サーバに設定し提供される HTTP 認証と認証情報を使う。" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "次のステップで設定すれば、AccountManagerPlugin でパスワードストアを管理することはできます。" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "AccountManagerPlugin で管理する1つまたは複数のパスワードストアによる HTML ログインフォームを使う。" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" "AccountManagerPlugin は HTML フォームによるログインページと [1:LoginModule] " "のカスタムバージョンを提供します。" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" "この機能を有効にするには、セッション認証に関連する設定を確認し調整する必要があります。なお、AccountManagerPlugin の " "LoginModule は[1:認証クッキーの有効期限のデフォルトを30日に変更]します。" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "AccountManagerPlugin 認証オプション" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "ログインフォームに関連する操作へのリンクを統合する。" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" "[1:有効にした場合、通常は metanav " "ナビゲーションバーにあるリンク][2:[3:[4:パスワード忘れ/パスワードリセット]][5:[6:新規ユーザ登録]]][7:がログインフォームに表示されます。CSS" " によりログインフォームをさらにカスタマイズすることができます。]" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "再認証を必要とせずにセッションをまたいでユーザを記憶するようにする。" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" "これは、ユーザが AccountManagerPlugin " "のログインフォームで「ログインを記憶させる」[1:チェックボックス]をチェックすると、30日以内にサイトに再度アクセスしたときに自動的に認証されるものです。" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "セッションクッキー ID 変更の尤度: [1:] % (労働時間ごと)" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "長時間セッションによる脆弱性を低減するためリフレッシュ処理を実施する。0は[1:実施しない]になります。" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "認証クッキーのパス:" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" "これは AccountManagerPlugin の認証情報をクッキーのパスが一致する Trac インスタンスへの分配を可能にします。複数の " "Trac インスタンスで共通するパスを設定することで、簡易的に[1:シングル・サインオン]を提供します。" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "パスワードストア" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "パスワードストアを設定する目的" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" "AccountManagerPlugin " "はモジュールバックエンド方式でユーザ認証情報を管理し、パスワードストアへのアクセスを少なくとも1つ提供しています。" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "認証バックエンドの初期選択" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "Trac データベース組み込みのパスワードストアを使用する。" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" "[1:SessionStore] は Trac データベースの 'session_attribute' " "テーブルにパスワードを格納します。これは主にディレクトリやファイルの権限などに追加で依存しないようにするためにデフォルトの選択になっています。" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" "同時アクセスの問題を解決するのには素晴らしいものですが、このパスワードストアには欠点もあります。特にハッシュタイプのシームレスな移行をサポートしていませんし、複数の" " Trac インスタンスや Trac 以外のアプリケーションで共有して使うのには候補なりません。" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "詳細 (プレビュー)" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "まずデフォルトの設定を適用してください。後から値を変更することができます。" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "ファイルによるパスワードストアを使用する。" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" "AccountManagerPlugin は一般的な Apache ファイルフォーマット 'htpasswd' と 'htdigest' " "をサポートし、svnserve のパスワードファイルファイルフォーマットの読み込みをサポートします。" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" "複数の Trac " "環境で同じファイルを使うことができます。これらのストアではディレクトリとファイルの権限を適切に設定することが重要ですが、この設定ウィザードでは取り扱いません。" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "'htdigest' フォーマット [1:([2:HtDigestStore])]" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "'htpasswd' フォーマット [1:([2:HtPasswdStore])]" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "svnserve パスワードファイルフォーマット [1:([2:SvnServePasswordStore])]" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "HTTP 認証を使用して認証を委譲する。" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" "AccountManagerPlugin は [1:HttpAuthStore] コンポーネントにより標準の HTTP " "認証を使用することができます。Basic 認証と Digest 認証の両方をサポートしています。" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "このパスワードストアは読み取り専用であるだけでなく、明らかな理由からユーザーの一覧表示もサポートしていません。" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "他のパスワードストアを使用する。" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" "AccountManagerPlugin " "のモジュール形式パスワードストアのコンセプトは、自身がサポートしているストア以外でもユーザ認証情報を提供できるようにすることです。これらサードパーティの認証プロバイダ向けに具体的なセットアップの支援は実装されていませんが、すでにインストールされているコンポーネントに対して適切な設定を以下で入力することができます。" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "そのコンポーネントのドキュメントで提供されている設定を入力し適用します。" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "パスワードストアの設定" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "有効なすべてのストアを以下に表示していますが、ほとんどは追加の設定無しには動作しません。[1:]現設定: [2:%(store_list)s]" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "これはエキスパート向けのストア設定です。" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "無効になっているコンポーネントが必要です: [1:%(components)s]" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "ストアを1つまたは複数選択し関連するオプションを設定してください。複数のパスワードストアの同時使用もサポートしています。" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "パスワードストアは指定した順に問い合わせを行います。" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "次回ログイン時にパスワードのハッシュを更新します。" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "ハッシュの変更後や新しいパスワードストアへの移行に使用します。" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "変更処理は一度だけ実行されます。全アカウントで手続きを再開することでその後の変更を反映することができます。" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "再実行" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "パスワードリフレッシュ" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "パスワードポリシールールの目的" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "AccountManagerPlugin は一般的にパスワードルールを矯正しませんが、パスワードの取り扱い方を変更する他の方法がいくつかあります。" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "パスワードリセットの手続きを有効にする。" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "Trac メール送信が機能しているかどうかに依存します (TracAnnouncer と TracNotification をサポートしています)。" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "ランダム生成するパスワードの長さ: [1:] 文字" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "代替のパスワードとして使用されます。" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "パスワードリセット後に必ずパスワードを変更させる。" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "アカウント承認" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "アカウント登録・確認ルールの目的" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "ユーザ登録処理の際に新規アカウントの管理者承認が必要になる場合があります。既存アカウントを即時にアクセス禁止にする機能は関連しているが別の機能となります。" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "管理用ユーザ ID の変更を許可する。" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "ユーザに新規登録を許可する。" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "ユーザに自身のアカウントの削除を許可する。" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "登録要求で確認に使用するチェック" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" "AccountManagerPlugin " "が提供しているチェックはデフォルトですべて有効になっていますが、一部は独自に設定することができます。[1:]現在設定されているもの: " "[2:%(check_list)s]" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "[1:BotTrapCheck] のようなチェックは追加設定しないとまったく動作しません。" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "チェックを選択してオプションを設定します。複数の登録チェックを同時に使用するのを推奨します。" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "チェックは順番に適用されるため、順番には気をつけてください。いくつかのチェックは管理者の操作を検証するのにも使われるのに注意してください。" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "その他のアカウントポリシーオプション" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "登録後に管理者によるアカウント承認を要求する。" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" "登録時に管理へ通知を行うため、Trac メール送信が機能しているかどうかに依存します (TracAnnouncer と " "TracNotification の両方をサポートしています)。" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "メールアドレスを必ず確認する。" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" "ユーザに認証トークンを送信するため、Trac メール送信が機能しているかどうかに依存します (TracAnnouncer と " "TracNotification の両方をサポートしています)。" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "アカウントガード" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "アカウント保護ルールの目的" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" "パスワードは注意深く作られるべきだがそうなっていないことが多い。また強力なパスフレーズであっても、攻撃者が数秒でないにしても数時間で何百万とテストできれば、見破られてしまうかもしれない。ファイアウォールや高機能な" " Web サーバではすでに高度な保護機能が提供されていて、利用できるなら、インストール、設定、メンテナンスを行います。" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" "[1:AccountGuard] コンポーネントはもう1つの選択肢になります。これは AccountManagerPlugin 自身の " "[2:LoginModule] アドオンでブルートフォースログイン試行を阻止することによってアカウント保護機能を提供します。" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "保護アドオンコンポーネントを有効にする。" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "AccountManagerPlugin の LoginModule は無効になっています。" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "ログイン失敗の最大試行回数:" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "失敗が指定の回数に到達したらアカウントをロックします。0は[1:無制限]となります。" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "[1:] 秒後にロックを解除する" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "0は[1:無期限]ロックになります。" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "ロック時間のプログレッションファクタ" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "ユーザアカウントのロック時間を段階的に延長します。ファクタを指数として対数計算を行います。値は1以上の実数を受け付けます。" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" "[1:ロックの解除前に失敗が起きた場合、1より大きな値でロック時間が蔵指します。例として '2' " "の場合][2:[3:[4:2回目の失敗後ではロック時間が2倍になり]][5:[6:3回目では4倍になり]][7:[8:4回目では8倍になります。]]]" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "ロックの解除後にログインに失敗した場合にはロックが発動し新しいロックのタイムアウトが設定されるだけで、ロックの総時間が延長することはありません。" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "ロック時間の上限: [1:] 秒 [2:(%(time)s)]" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "プログレッションファクタが1より大きい場合にのみ関連します。" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "追加準備の目的" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "この初期設定の先に進めるようにする。" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "初期管理アカウント" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "管理アカウントの追加:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" "ユーザには [1:TRAC_ADMIN] が割り当てられ、すべての有効な権限を継承します。このようなアカウントは管理 Web UI を介して " "Trac を管理するのに必要です。より限定的な管理アカウントや実際のユーザアカウントは、後からアカウント管理パネルで作成・管理することができます。" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" "具体的には、AccountManagerPlugin は通常のユーザ管理操作に [1:ACCTMGR_USER_ADMIN] " "を必要とし、後からこれらのページの参照や設定の変更に [2:ACCTMGR_CONFIG_ADMIN] が必要になります。どちらも " "[3:ACCTMGR_ADMIN] 権限から継承されます。権限を割り当てるには [5:PERMISSION_ADMIN] から継承される " "[4:PERMISSION_GRANT] も必要になります。" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "ユーザ名:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "ユーザ名には小文字のみが使えます" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "ユーザ名は HTTP 認証プロバイダが知っているものになるように注意してください。" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "設定されたパスワードストアは新規アカウント作成をサポートしていないため、有効なユーザ名であることに注意してください。" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " 追加 " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "診断" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "クリティカルと表示している問題をすべて解決してください。" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" "AccountManagerPlugin " "の設定はほぼ完了していますが、変更はまだ一時的なものです。必要に応じてテストを行い設定を調整する、もしくはキャンセルを行いすべての変更を元に戻してください。本当に変更を保存したい場合にのみ" " [1:trac.ini] に設定を適用してください。" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "このページから移動しない" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "変更を保存してウィザードを終了する" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "未保存の変更を破棄する" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "変更を破棄してウィザードを終了する" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "キャンセル" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "アカウント: クリーンアップ" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "属性" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "値" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "認証済みアカウント" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "選択した項目を削除" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "選択を元に戻す" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "ログイン" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "ログインを記憶させる" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "エラー" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "アカウント: 通知設定" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "アカウント通知機能" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "以下のオプションを設定することで、アカウント作成、パスワードリセット、アカウント削除を通知させることができます。" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "通知処理" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "[2:チェックボックス]の [1:on/off] で有効または無効にできる操作の一覧です。" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "アカウント作成を通知する" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "パスワードリセットを通知する" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "アカウント削除を通知する" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "通知先アドレス" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "上記通知を受け取るメールアドレスまたはユーザ名をスペース区切りで指定してください:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "アカウントの削除" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "アカウントの削除" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "パスワードの変更" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "旧パスワード:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "新パスワード:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "アカウントの登録" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "必須" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "オプション" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "名前:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "アカウントの作成" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "パスワードのリセット" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "パスワードを忘れてしまった時には、ユーザ名とメールアドレスを以下に入力してください。新しいパスワードが送信されます。" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "パスワードのリセット" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "名前" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "メールアドレス" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "最終ログイン" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "期限なしでロック中" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "メールを送信する" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "新規アカウントを追加:" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "このパスワードストアはユーザの列挙をサポートしていません。" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "1ページ辺りの最大アカウント数 [1:]" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "更新" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "アカウント [1:(%(count)s)]" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "フィルタ" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "ステータス" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "別のランダムなパスワードを送信" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "パスワードのリセット" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "保留中の登録を承認、またはアカウントをアクセス禁止・解除する" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "アカウントの承認状態を切り替える" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "アカウントを削除する" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "選択した項目を削除" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "アカウント属性を確認" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "メールアドレスの確認" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "新しいメールアドレスを確認するために確認用コードを記載したメールを %(email)s " "に送りました。メールを確認し、以下のフォームに確認用コードを入力してください。" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "間違っている場合には[1:メールアドレスを変更]できます。" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "確認用コード:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "確認" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "メール再送信" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "メールアドレス未確認" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "承認待ち" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "承認取り消し" trunk/acct_mgr/locale/messages.pot000644 000000 000000 00000204645 14414633245 015761 0ustar00000000 000000 # Translations template for TracAccountManager. # Copyright (C) 2023 ORGANIZATION # This file is distributed under the same license as the # TracAccountManager project. # FIRST AUTHOR , 2023. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is" " associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see " "last step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting" " the password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports" " setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "" "Account is pending approval. You may need to contact your " "administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to " "password file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own " "preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value " "of register_basic_token is the answer. Setting to empty string " "(default value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "" "The email address is required for Trac to send you a verification " "token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your " "password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if" " you ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a " "different one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input " "field.\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming " "policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define" " constraints for a valid email address. A custom pattern can narrow " "or widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a " "valid email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 #: acct_mgr/register.py:582 acct_mgr/register.py:615 acct_mgr/web_ui.py:359 #: acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account " "requires administrative approval. Please proceed according to local " "policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still" " requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your " "new email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by " "reading svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 #: acct_mgr/web_ui.py:132 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please " "use the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session " "because it's a registered username. Please login or choose another " "author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password " "change request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 #: acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 #: acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may" " not get authenticated and access to this [1:account might be " "effectively blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML " "login form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based" " on browser cookies. Therefore a number of options provide control " "over some critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like" " on Windows. Potentially troublesome, because [1:case matters for " "Trac permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "" "Lifetime of the authentication cookie: [1:] seconds " "[2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication " "information, and therefore, after how much inactivity a user will " "have to log in again. Default (0 s) makes cookie expire at browsing " "sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided" " by your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, " "if you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed " "by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule]" " accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some " "more options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of" " authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to " "re-authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site " "within 30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution " "to Trac instances with matching cookie path. Set this to a common " "base path of several Trac instances to share the cookie, providing a " "cheap [1:Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this " "password store has shortcomings as well. Notably it does not support " "seamless hash type migration, and its no candidate for shared use by " "multiple Trac instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change " "values afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for " "these stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even " "support listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages " "creation of more ways to provide user credential beyond the natively " "supported stores. While a specific setup assistance for these 3rd-" "party authentication providers is not implemented, you may fill-in " "appropriate configuration details for an already installed component " "below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all " "without additional configuration.[1:]Currently configured: " "[2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent " "use of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary " "password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all " "accounts allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in " "general, there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing " "accounts is another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, " "but some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent " "use of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks " "are used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working " "email sender for Trac, supporting both TracAnnouncer and " "TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working " "email sender for Trac, supporting both TracAnnouncer and " "TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. " "And even a strong passphrase could be sift out, if an attacker is " "able to test millions of variants in hours, if not seconds. Firewalls" " and full-featured web-servers already offer sophisticated " "protection, if one can afford them, handle their installation, " "configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. " "Value zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >=" " 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens " "before lock expiration. I.e. value '2' means][2:[3:[4:double lock " "time after 2nd failure,]][5:[6:four times the initial lock time after" " 3rd,]][7:[8:eight times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a" " lock and set a new lock timeout, but not extend the total lock " "duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all " "available permissions. One such account is required to configure Trac" " via the admin web-UI. Create and manage more limited admin accounts " "as well as actual user accounts on your own later via the Accounts " "admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing " "these pages and changing the configuration later. Both are inherited " "by [3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP " "authentication provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password" " store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but " "any changes are temporary yet. Please test and adjust the " "configuration as required, or cancel to revert all changes. Apply " "settings to [1:trac.ini] only if you really want to preserve them " "permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account " "creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by " "[1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email " "address below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new " "address. Please check your email and enter the token in the form " "below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" trunk/acct_mgr/locale/nl/000755 000000 000000 00000000000 14414633245 014024 5ustar00000000 000000 trunk/acct_mgr/locale/nl/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015611 5ustar00000000 000000 trunk/acct_mgr/locale/nl/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000217403 14414633245 017737 0ustar00000000 000000 # Dutch translations for TracAccountManagerPlugin. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Pander , 2011. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Pander \n" "Language: nl\n" "Language-Team: Dutch \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Gebruikersaccounts" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Gebruikers" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Aanmaken account" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Aanmaken account" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "De wachtwoorden moeten hetzelfde zijn." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Wijzig Wachtwoord" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Verwijder gebruikersaccount" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Opslaan" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Weet u zeker dat u uw gebruikersaccount wilt verwijderen?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Configuratie" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Notificatieacties" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Wachtwoord in incorrect." #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Gebruikersaccount" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Notificatie" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Wachtwoord Reset" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Gebruikersaccountnotificatie" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Beheer Gebruikersaccounts" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Configuratie" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Het wachtwoordbestand kon niet gelezen worden. Trac heeft lees- en " "schrijfrechten nodig op het wachtwoordbestand en de map waar deze is " "opgeslagen." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Het wachtwoordbestand kon niet worden bijgewerkt. Trac heeft lees- en " "schrijfrechten nodig op het wachtwoordbestand en de map waar deze is " "opgeslagen." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Notificatie" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Gebruikersnaam mag niet leeg gelaten worden." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "De gebruikersnaam mag geen van de volgende karakters bevatten: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Gebruikersnaam %(username)s is niet toegestaan." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Wachtwoord mag niet leeg gelaten worden." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-mailadres:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "U moet een geldig e-mailadres invoeren." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Registreren" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Uw rechten zijn ingeperkt tot u %(link)s" #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "Een e-mail is verstuurd naar <%(email)s> met een token naar %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "Meld u aan in om e-mailadres verificatieprocedure af te ronden." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Uw e-mailadres is al geverifieerd." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Een notificatiebericht is verstuurd naar <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Bedankt voor het verifiëren van uw e-mailadres." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Incorrect validatietoken" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Wachtwoord vergeten?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Gebruikersaccount" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "U bent al aangemeld. Als u uw wachtwoord\n" " wil wijzigen, gebruikt de\n" " [1:Gebruikersaccountvoorkeuren]-pagina." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Weet u zeker dat u uw gebruikersaccount wilt verwijderen?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Bedankt voor het wijzigen van uw wachtwoord." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" "U moet uw wachtwoord wijzigen wegens een recent verzoek tot wijziging van" " wachtwoord." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Oude wachtwoord is incorrect." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Oude wachtwoord mag niet leeg gelaten worden." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Wachtwoord is succesvol gewijzigd." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Wachtwoord in incorrect." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Gebruikersnaam is vereist" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "E-mailadres is vereist" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "Het e-mailadres en gebruikersnaam horen niet bij een gebruikersaccount." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "Een nieuw wachtwoord is naar u verstuurd via <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Ongeldige gebruikersnaam of wachtwoord" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Beheer Gebruikersaccounts" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Gebruikersnaam:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Registreren van een gebruikersaccount" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Ontvang notificaties van verwijderen van accounts" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Wachtwoord:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Bevestig Wachtwoord:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Verwijder gebruikersaccount" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "E-mailadres:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Gebruikersaccount: Configuratie" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "Sta toe dat de gebruiker onthouden wordt over verschillende sessies " "zonder herauthenticatie." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Wachtwoord in incorrect." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "De wachtwoordopslag ondersteunt geen overzichten van gebruikers." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Wachtwoord in incorrect." #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Forceer gebruikers om hun wachtwoord te wijzigen na het resetten er van." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Gebruikersaccount" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Forceer gebruikers om hun e-mailadres te verifiëren." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Gebruikersaccount" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Registreren van een gebruikersaccount" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Gebruikersnaam:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Voeg toe " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Aanmelden" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Onthoud mij" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Fout" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Gebruikersaccounts: Notificatieconfiguratie" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Gebruikersaccountnotificatie" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Stel de volgende opties in voor notificatie van\n" " aanmaken gebruikersaccount, resetten wachtwoord en verwijderen " "gebruikersaccount." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Notificatieacties" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Dit is een lijst van actie die u kan in- of uitschakelen\n" " door [1:aanvinken] van de [2:checkboxes]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Ontvang notificaties voor aanmaken van gebruikersaccounts" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Ontvang notificaties van resetten van wachtwoorden" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Ontvang notificaties van verwijderen van accounts" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Notificatie Ontvangstadressen" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Spatie-gescheiden lijst van e-mailadressen en/of\n" " gebruikersnamen die notificatie ontvangen van bovenstaande " "acties:" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Verwijder Gebruikersaccount" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Verwijder gebruikersaccount" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Wijzig Wachtwoord" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Oude Wachtwoord:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nieuw Wachtwoord:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Registreren van een gebruikersaccount" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Verplicht" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Optioneel" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Naam:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Aanmaken account" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Wachtwoord Resetten" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Als u uw wachtwoord bent vergeten, voeg uw gebruikersnaam en\n" " e-mailadres in en u ontvangt een e-mail met een nieuw wachtwoord." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Reset wachtwoord" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Naam" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "E-mailadres" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Laatste Aanmelding" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Nogmaals versturen e-mail" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Verwijder gebruikersaccount" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "De wachtwoordopslag ondersteunt geen overzichten van gebruikers." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Verwijder gebruikersaccount" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Verwijderen geselecteerde gebruikersaccounts" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Verifieer e-mailadres" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "Een e-mail is verzonden naar\n" " %(email)s met een token om uw nieuwe adres te verifiëren.\n" " Lees uw e-mail en voer het token hieronder in." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "" "U kan [1:uw e-mailadres\n" " wijzigen], al het onjuist is." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Verificatietoken:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Verifieer" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Nogmaals versturen e-mail" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Uw e-mailadres is al geverifieerd." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "Please change your password now." #~ msgstr "Wijzig nu uw wachtwoord." #~ msgid "Persistent Sessions" #~ msgstr "Persistente Sessies" #~ msgid "Verify email" #~ msgstr "Verifieer e-mailadres" #~ msgid " Change " #~ msgstr " Wijzig " #~ msgid "Already logged in" #~ msgstr "Al aangemeld" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Ongeldig type sleutel (%s) voor ExtensionOrder" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "De \"crypt\"-module is niet beschikbaar voor dit platform." #~ msgid "verify your email address" #~ msgstr "verifieer uw e-mailadres" #~ msgid "verify your new email address" #~ msgstr "verifieer uw nieuwe e-mailadres" #~ msgid "Account filters" #~ msgstr "Gebruikersaccounts" trunk/acct_mgr/locale/pl/000755 000000 000000 00000000000 14414633245 014026 5ustar00000000 000000 trunk/acct_mgr/locale/pl/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015613 5ustar00000000 000000 trunk/acct_mgr/locale/pl/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000206572 14414633245 017746 0ustar00000000 000000 # Polish translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Artur Frysiak , 2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Artur Frysiak \n" "Language: pl\n" "Language-Team: Polish (http://www.transifex.com/projects/p/Trac_Plugin-" "L10N/language/pl/)\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && " "(n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Użytkownicy" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Hasła nie są takie same." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Niepoprawne hasło." #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Konto" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Powiadomienie" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Powiadomienie" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Nazwa użytkownika nie może być pusta." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, fuzzy, python-format msgid "Username %(username)s is not allowed." msgstr "Niedozwolona nazwa użytkownika: %s." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Hasło nie może być puste." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Proszę podać poprawny adres email." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Konto" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Niepoprawne stare hasło." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Stare hasło nie może być puste." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Hasło zostało zaktualizowane." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Niepoprawne hasło." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Nazwa użytkownika jest wymagana." #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "Emial jest wymagany." #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "Email i nazwa użytkownika nie pasują do znanego konta." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Niepoprawne hasło." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Niepoprawne hasło." #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Konto" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Konto" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "Moduł \"crypt\" nie jest dostępny." #~ msgid "Password store icon" #~ msgstr "Niepoprawne hasło." trunk/acct_mgr/locale/pt_BR/000755 000000 000000 00000000000 14414633245 014421 5ustar00000000 000000 trunk/acct_mgr/locale/pt_BR/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 016206 5ustar00000000 000000 trunk/acct_mgr/locale/pt_BR/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000223217 14414633245 020334 0ustar00000000 000000 # Portuguese (Brazil) translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # , 2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Marco Tulio Costa \n" "Language: pt_BR\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p" "/Trac_Plugin-L10N/language/pt_BR/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "Trancar até %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Contas" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Usuários" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "Atualizado com sucesso: %(success)s" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Criar conta" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Criar conta" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "Por favor escolha a conta pela lista de nomes de usuário para prosseguir" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "Endereço de E-mail" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "Sobrenome (Apelido)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Senha" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "As senhas devem coincidir." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Falhas de autenticação do usuário %(user)s foram removidas." #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Alterar senha" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "O procedimento de redefinir senhas está ativado." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Remover conta" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "Este armazenamento de senhas não suporta remover usuários." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Salvar" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Tem certeza que deseja apagar sua conta?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Configuração" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Ações de Notificação" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Senha incorreta." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Senha" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Conta trancada" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Conta" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Notificação" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Redefinir Senha" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Notificação de Conta" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Gerenciar Contas de Usuários" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Configuração" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" "Nenhum dos componentes IPasswordStore configurados em trac.ini suportam " "alteração de senha ou criação de usuários." #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Tipo de hash padrão para senhas novas ou atualizadas." #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "URL do serviço de autenticação HTTP" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Notificação" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Nome de usuário não pode ser vazio." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "O nome de usuário não pode conter nenhum destes caractere: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Nome de usuário %(username)s não é permitido." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Senha não pode ser vazia." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 #, fuzzy msgid "The email address is required for Trac to send you a verification token." msgstr "Não há endereço de e-mail registrado para essa conta." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Você deve informar um endereço de e-mail válido." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Cadastrar" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Suas permissões foram limitadas até que você %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "Um e-mail foi enviado para <%(email)s> com um token para %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "Por favor autentique-se para terminar o processo de verificação de e-mail." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Seu e-mail já foi verificado." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Uma e-mail de notificação foi reenviado para <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Obrigado por verificar seu endereço de e-mail" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Token de verificação inválido." #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Esqueceu sua senha?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Conta" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Você já está autenticado. Se você precisar alterar sua senha por favor " "use a página de [1:Account Preferences]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Tem certeza que deseja apagar sua conta?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Obrigado por tomar o tempo para atualizar sua senha." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" "Você precisa alterar sua senha por causa de um pedido de alteração de " "senha recente." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Senha Antiga incorreta." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Senha Antiga é obrigatória." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Senha alterada com sucesso." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Senha incorreta." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Nome de usuário é obrigatório." #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "E-mail é obrigatório" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "E-mail e nome de usuário devem coincidir com uma conta existe." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "Uma nova senha foi enviada para seu e-mail <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Nome de usuário ou senha inválidos." #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Conta trancada" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "Entrou após %(attempts)s tentativa falha" msgstr[1] "Entrou após %(attempts)s tentativas falhas" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Gerenciar Contas de Usuários" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "para [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "para [1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Nome de usuário:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Cadastrar uma conta" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 #, fuzzy msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Receber notificação de remoção de contas" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Senha:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Confirmar Senha:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "Sobrenome (Apelido)" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Remover conta" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "Endereço de E-mail:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Status de Conta" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Esta conta foi trancada permanentemente." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Destrancar conta" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Destrancar" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "Condição de trava alcançada %(count)s vez até agora." msgstr[1] "Condição de trava alcançada %(count)s vezes até agora." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "Condição de trancamento ainda não foi alcançada." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "Nenhuma restrição foi atribuída a esta conta." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "Credenciais para este usuário estão armazenadas no AuthStore número\n" " [1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" "Diferenciação de nomes de usuário está no modo [1:não sensível a " "maiúsculas e minúsculas]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" "Diferenciação de nomes de usuário está no modo [1:sensível a maiúsculas e" " minúsculas]." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Endereço de e-mail atual: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Esse endereço foi verificado com sucesso." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "Verificação pendente [1:(token: %(token)s)]" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Esse endereço ainda não foi verificado." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Não há endereço de e-mail registrado para essa conta." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Histórico de Acesso" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Última autenticação: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "O usuário jamais se autenticou." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Total de tentativas falhas: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Tabela: Registro das últimas tentativas falhas de autenticação" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "Endereço de IP" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Remover registros de falha de autenticação" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Remover Registros" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "Não há registro de falhas de autenticação no momento." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "Atualizar Senha" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Contas: Configuração" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Senha incorreta." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Este armazenamento de senhas não suporta listar os usuários." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "Atualizar hashes de senha na próxima autenticação bem-sucedida." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Atualizar Senha" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "O procedimento de redefinir senhas está ativado." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Obriga os usuários a alterar suas senhas após redefini-las." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Conta" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Não há endereço de e-mail registrado para essa conta." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Obriga os usuários a verificar seus endereços de e-mail." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Conta" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Total de tentativas falhas: %(count)s" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Cadastrar uma conta" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "Adicionar/Editar Conta:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Nome de usuário:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Adicionar " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Entrar" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Lembrar minhas credenciais" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Erro" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Contas: Configuração de Notificação" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Notificação de Conta" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Ações de Notificação" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Receber notificação de criação de contas" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Receber notificação de redefinição de senhas" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Receber notificação de remoção de contas" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Endereço do Destinatário da Notificação" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Remover Conta" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Remover conta" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Alterar senha" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Senha Antiga:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nova Senha:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Cadastrar uma conta" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Obrigatório" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Opcional" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Nome:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Criar conta" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Redefinir Senha" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Redefinir senha" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Nome" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "E-mail" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Última Autenticação" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Permanentemente trancada" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Reenviar E-mail" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Adicionar/Editar Conta:" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Este armazenamento de senhas não suporta listar os usuários." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Atualizar" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "Redefinir senhas" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Remover conta" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Remover contas selecionadas" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Verificar E-mail" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "" "Você pode [1:change your\n" " email address] se o mesmo estiver incorreto." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Token de Verificação:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Verificar" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Reenviar E-mail" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Seu e-mail já foi verificado." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The password store does not support creating users." #~ msgstr "Este armazenamento de senhas não suporta criar usuários." #~ msgid "Unknown user %(user)s." #~ msgstr "Usuário desconhecido %(user)s." #~ msgid "" #~ "The password store does not support\n" #~ " changing passwords.\n" #~ " " #~ msgstr "" #~ "Este armazenamento de senhas não suporta\n" #~ " alterar senhas.\n" #~ " " #~ msgid "The email and username do not match a known account." #~ msgstr "E-mail e nome de usuário não pertencem a uma conta válida." #~ msgid "Please change your password now." #~ msgstr "Por favor altere sua senha agora." #~ msgid "Review User Account Details" #~ msgstr "Revisar Detalhes da Conta de Usuário" #~ msgid "Verification" #~ msgstr "Verificação" #~ msgid "Persistent Sessions" #~ msgstr "Sessões Persistentes" #~ msgid "Verify email" #~ msgstr "Verificar e-mail" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "Criar uma nova conta de usuários ou editar uma existente." #~ msgid "Already logged in" #~ msgstr "Você já está autenticado." #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Tipo de chave (%s) inválido para ExtensionOrder" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "O módulo \"crypt\" não está disponível nesta plataforma." #~ msgid "verify your email address" #~ msgstr "verifique seu endereço de e-mail" #~ msgid "verify your new email address" #~ msgstr "verifique seu novo endereço de e-mail" #~ msgid "Password store icon" #~ msgstr "Senha incorreta." #~ msgid "Account filters" #~ msgstr "Detalhes da Conta" trunk/acct_mgr/locale/ru/000755 000000 000000 00000000000 14414633245 014041 5ustar00000000 000000 trunk/acct_mgr/locale/ru/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015626 5ustar00000000 000000 trunk/acct_mgr/locale/ru/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000242707 14414633245 017761 0ustar00000000 000000 # Russian translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Dmitri Bogomolov <4glitch@gmail.com>, 2010. # Евгений Ковыряшкин , 2011. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Евгений Ковыряшкин \n" "Language: ru\n" "Language-Team: Russian \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "Заблокировано до %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Учетные записи" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Пользователи" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "Удачно обновлено: %(success)s" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Создать учетную запись" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Создать учетную запись" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "Пожалуйста выберите учетную запись из списка для продолжения." #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "Электронный адрес" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "Фамилия (ник)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Пароль" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Пароли должны совпадать." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Неудачные попытки входа для пользователя %(user)s удалены" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Изменить пароль" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "Процедура сброса пароля не разрешена." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Удалить учетную запись" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "Хранилище паролей не поддерживает удаление пользователей." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Сохранить" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Вы уверены, что хотите удалить свою учетную запись?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Настройки" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Варианты уведомлений" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Неправильный пароль." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Пароль" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Учетная запись заблокирована" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Учетная запись" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Уведомление" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Сброс пароля" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Уведомления" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Управление пользователями" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Настройки" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" "Ни один из компонентов IPasswordStore, перечисленных в trac.ini, не " "поддерживает установку пароля или создание пользователей." #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Не удалось прочитать файл паролей. Trac требуются права на чтение и " "запись файла паролей и его родительского каталога." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Не удалось обновить файл паролей. Trac требуются права на чтение и запись" " файла паролей и его родительского каталога." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Тип хэша поп умолчанию для новых/обновленных паролей" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "URL служба аутентификации по HTTP" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Уведомление" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Имя пользователя не может быть пустым." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Имя пользователя не должно содержать этих символов: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Имя пользователя %(username)s недопустимо." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Пароль не может быть пустым." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "Электронный адрес:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 #, fuzzy msgid "The email address is required for Trac to send you a verification token." msgstr "Для этой учетной записи не задан электронный адрес." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Нужно указать существующий электронный адрес." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Регистрация" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Ваши разрешения ограничены до тех пор, пока вы не %(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "На адрес <%(email)s> выслано письмо со словом для %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "Для завершения проверки электронного адреса пожалуйста выполните вход." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Ваш адрес уже проверен" #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "Уведомление повторно отправлено <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Спасибо за подтверждение электронного адреса" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Неправильное проверочное слово" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Забыли пароль?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Учетная запись" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Вы уже вошли. Если вам нужно сменить пароль, используйте страницу " "[1:Предпочтения]." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Вы уверены, что хотите удалить свою учетную запись?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Спасибо что нашли время для изменения своего пароля." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "Вам необходимо сменить пароль, из-за недавнего запроса на смену пароля." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Неправильный старый пароль." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Старый пароль не может быть пустым." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Пароль удачно изменен." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Неправильный пароль." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Требуется имя пользователя" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "Требуется электронный адрес" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "" "Имя пользователя и адрес должны соответствовать существующей учетной " "записи." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "Новый пароль отправлен на ваш адрес <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Неправильное имя или пароль" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" "Учетная запись заблокирована, пожалуйста повторите попытку через " "%(release_time)s" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Учетная запись заблокирована" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "Вход после %(attempts)s неудачной попытки" msgstr[1] "Вход после %(attempts)s неудачных попыток" msgstr[2] "Вход после %(attempts)s неудачных попыток" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Управление пользователями" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "для [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "для [1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Имя пользователя:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Зарегистрировать учетную запись" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Уведомлять об удалении учетных записей" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Пароль:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Подтверждение пароля:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "Фамилия (ник):" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Удалить учетную запись" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "Электронный адрес:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Состояние учетной записи" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, fuzzy, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" "[1:]\n" "Эта учетная запись заблокирована до %(time)s[2:]\n" "и даже корректные попытки входа будут игнорироваться." #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Эта учетная запись заблокирована навсегда." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Снять блокировку учетной записи" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Разблокировать" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "Условие блокирования выполнено %(count)s раз." msgstr[1] "Условие блокирования выполнено %(count)s раза." msgstr[2] "Условие блокирования выполнено %(count)s раз." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, fuzzy, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" "По этому после следующей неудачной попытки вход в эту учетную запись\n" "будет возможен только через %(time)s." #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "Условие блокирования еще не выполнено." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "Ограничения для этой учетной записи не заданы." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "Регистрационные данные этого пользователя хранятся в AuthStore\n" "[1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "Сравниние имен пользователей [1:нерегистрозависимо]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "Сравниние имен пользователей [1:регистрозависимо]" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 #, fuzzy msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" "Ни одно хранилище не содержит регистрационных данных этого пользователя,\n" "по этому пользователь не может быть опознан и\n" "доступ к [1:учетной записи фактически заблокирован],\n" "но детали учетной записи могут быть по-прежнему доступны." #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Текущий электронный адрес: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Этот адрес был удачно проверен." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "Проверка выполняется [1:(проверочное слово: %(token)s)]." #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Этот адрес еще не был проверен." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Для этой учетной записи не задан электронный адрес." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Предыстория доступа" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Последний вход: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "Пользователь еще не входил." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Всего неудачных попыток: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Таблица: просмотр журнала последних неудачных входов" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "IP адрес" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "Время записи" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Удалить журнал неудачных входов" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Удалить журнал" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "В данный момент нет записей о неудачных входах." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "Обновление пароля" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Учетные записи: настройки" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "Разрешить запоминать пользователей между посещениями и осуществлять вход " "без повторной аутентификации?" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Неправильный пароль." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Это хранилище паролей не поддерживает перечисление пользователей." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "Молча обновить хэш пароля при следующем удачном входе." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Обновление пароля" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "Процедура сброса пароля не разрешена." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Заставить пользователей менять пароль после его сброса." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Учетная запись" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Для этой учетной записи не задан электронный адрес." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Заставить пользователей подтверждать свой электронный адрес." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Учетная запись" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Всего неудачных попыток: %(count)s" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Зарегистрировать учетную запись" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "Добавить/изменить пользователя:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Имя пользователя:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Добавить " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Вход" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Запомнить меня" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Ошибка" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Учетные записи: настройки уведомлений" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Уведомления" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Выберите из следующих пунктов, чтобы получать уведомления о создании " "пользователей, сбросе пароля и удалении пользователей." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Варианты уведомлений" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Здесь перечень действий, которые вы можете включить или выключить, " "[1:установкой] [2:флажков]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Уведомлять о создании новых пользователей" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Уведомлять о сбросе паролей" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Уведомлять об удалении учетных записей" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Адреса получателей уведомлений" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Список электронных адресов и/или имен пользователей, которые уведомляются" " об этих действиях (через пробел):" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Удалить учетную запись" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Удалить учетную запись" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Изменить пароль" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Старый пароль:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Новый пароль:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Зарегистрировать учетную запись" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Обязательно" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "На выбор" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Имя:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Создать учетную запись" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Сбросить пароль" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Если вы забыли пароль, введите ваше имя пользователя и почтовый адрес " "ниже, и вам будет выслан новый пароль." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Сброс пароля" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Имя" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "Электронный адрес" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Последний вход" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Заблокирован навсегда" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Послать снова" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Добавить/изменить пользователя:" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Это хранилище паролей не поддерживает перечисление пользователей." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Обновить" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "Сбросить пароли" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Удалить учетную запись" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Удалить выбранных" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Подтверждения адреса" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "На адрес %(email)s отправлено письмо с кодовым словом, для проверки его " "правильности. Пожалуйста, проверьте электронную почту и введите " "полученное слово в следующее поле." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "Вы можете [1:Изменить свой адрес], если он неправильный." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Проверочное слово:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Проверить" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Послать снова" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Ваш адрес уже проверен" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The password store does not support creating users." #~ msgstr "Хранилище паролей не поддерживает создание пользователей." #~ msgid "Unknown user %(user)s." #~ msgstr "Неизвестный пользователь %(user)s." #~ msgid "" #~ "The password store does not support\n" #~ " changing passwords.\n" #~ " " #~ msgstr "Хранилище паролей не поддерживает изменение паролей." #~ msgid "" #~ "Path relative to Trac environment or full host machine\n" #~ " path to password file" #~ msgstr "" #~ "Путь к файлу паролей относительно " #~ "окружения Trac или полный путь на " #~ "сервере" #~ msgid "The email and username do not match a known account." #~ msgstr "Имя пользователя и адрес не соответствуют существующей учетной записи." #~ msgid "" #~ "Path to the users file; leave blank to locate\n" #~ " the users file by reading svnserve.conf" #~ msgstr "" #~ "Путь к файлу пользователей; оставьте пустым чтоб использовать\n" #~ "путь, заданный в svnserve.conf" #~ msgid "Please change your password now." #~ msgstr "Теперь, пожалуйста, смените пароль." #~ msgid "Review User Account Details" #~ msgstr "Проверьте детали учетной записи" #~ msgid "Verification" #~ msgstr "Проверка" #~ msgid "Persistent Sessions" #~ msgstr "Хранимые сеансы" #~ msgid "Verify email" #~ msgstr "Подтверждения адреса" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "Добавить нового пользователя или редактировать существующего." #~ msgid " Change " #~ msgstr " Изменить " #~ msgid "Already logged in" #~ msgstr "Вы уже вошли" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Недопустимый тип ключа (%s) для ExtensionOrder" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "Модуль \"crypt\" недоступен для этой платформы." #~ msgid "verify your email address" #~ msgstr "подтвердите свой электронный адрес" #~ msgid "verify your new email address" #~ msgstr "проверки вашего нового электронного адреса" #~ msgid "Password store icon" #~ msgstr "Неправильный пароль." #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "" #~ "Учетная запись заблокирована, пожалуйста " #~ "повторите попытку через %(release_time)s" #~ msgid "Account filters" #~ msgstr "Учетные записи" trunk/acct_mgr/locale/sv/000755 000000 000000 00000000000 14414633245 014043 5ustar00000000 000000 trunk/acct_mgr/locale/sv/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015630 5ustar00000000 000000 trunk/acct_mgr/locale/sv/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000227271 14414633245 017762 0ustar00000000 000000 # Swedish translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: mrelbe \n" "Language: sv\n" "Language-Team: Swedish \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "Låst till och med %(t_release)s" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Konton" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Användare" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "Uppdatering genomförd: %(success)s" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Skapa konto" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Skapa konto" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "Välj konto i listan med användarnamn för att fortsätta." #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "E-postadress" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "Förnamn/efternamn (Pseudonym)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Lösenord" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Lösenorden måste överensstämma." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" "Tog bort registrering av misslyckade inloggningsförsök för användaren " "%(user)s" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Ändra lösenord" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "Återställning av lösenord ej aktiverat." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Radera konto" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "Lösenordsförrådet medger ej borttagning av användare." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Spara" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Är du säker på att du vill radera ditt konto?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Inställningar" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Aviseringsåtgärder" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Lösenordet är felaktigt." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Lösenord" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Kontot låst" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Konto" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Avisering" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Återställ lösenord" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Kontoavisering" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Hantera användarkonton" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Inställningar" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, fuzzy, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "Autentiseringsmekanismen för användare %s medger ej att lösenordet sätts." #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" "Ingen av IPasswordStore-komponenterna som angivits i trac.ini medger att " "lösenord sätts, eller att användare skapas." #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Lösenordsfilen kunde ej läsas. Trac kräver läs- och skrivrättigheter till" " både lösenordsfilen samt katalogen den befinner sig i." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Lösenordsfilen kunde ej uppdateras. Trac kräver läs- och skrivrättigheter" " till både lösenordsfilen samt katalogen den befinner sig i." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Standardhash-typ för nya/uppdatera lösenord" #: acct_mgr/htfile.py:236 #, fuzzy msgid "Realm to select relevant htdigest file entries" msgstr "Namnrymd (realm) för val av relevanta poster i htdigest-filen" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "URL för den HTTP-baserade autentiseringstjänsten" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Avisering" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Användarnamn måste anges." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Användarnamnet får ej innehålla något av följande tecken: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "Användarnamnet %(username)s är ej tillåtet." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Lösenordet får ej vara tomt." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-post:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 #, fuzzy msgid "The email address is required for Trac to send you a verification token." msgstr "Ingen e-postadress är registrerad för detta konto." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Du måste ange en giltig e-postadress." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Registrering" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 #, fuzzy msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "Dina rättigheter har begränsats till dess att du%(link)s." #: acct_mgr/register.py:586 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "E-post har skickats till <%(email)s> med uppgifter för %(link)s." #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "Vänligen logga in för att fullborda bekräftning av e-postadressen." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "Din e-postadress är redan bekräftad." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "En e-postavisering har åter skickats till <%s>." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "Tack för att du bekräftade din e-postadress." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Ogiltiga bekräftelseuppgifter" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Glömt ditt lösenord?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Konto" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Du är redan inloggad. Se [1:kontoinställningar] om du vill ändra ditt " "lösenord." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Är du säker på att du vill radera ditt konto?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Tack för att du tog dig tid och uppdaterade ditt lösenord." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "Du måste byta lösenord då begäran om detta nyligen gjorts." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Gammalt lösenord är inkorrekt." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Gammalt lösenord får ej vara tomt." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Lösenordet har uppdaterats." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Lösenordet är felaktigt." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Användarnamn krävs" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "E-postadress krävs" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "" "E-postadress och användarnamn måste överensstämma med ett registrerat " "konto." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "Ett nytt lösenord har skickats till din e-postadress <%(email)s>." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Ogiltigt användarnamn eller lösenord" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "Konto är låst, vänligen försök igen efter %(release_time)s" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Kontot låst" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "Inloggad efter %(attempts)s misslyckad inloggning" msgstr[1] "Inloggad efter %(attempts)s misslyckade inloggningar" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Hantera användarkonton" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "för [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "för [1:%(user)s]" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Användarnamn:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Regstrera ett konto" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Erhåll avisering vid radering av konto" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Lösenord:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Konfirmera lösenord:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "Förnamn/efternamn (Pseudonym):" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Radera konto" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "E-postadress:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Kontostatus" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, fuzzy, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" "[1:]Detta konto är låst till %(time)s[2:]och även giltiga " "inloggningsförsök förhindras tills dess." #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Detta konto har låsts för gott." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Ta bort kontolåset" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Lås upp" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "Låsvillkor har uppfyllts %(count)s gång tills nu." msgstr[1] "Låsvillkor har uppfyllts %(count)s gånger tills nu." #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, fuzzy, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" "Ytterligare ett till misslyckat inloggningsförsök kommer därför medföra " "att autentisering för detta konto nekas under %(time)s." #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "Låsvillkor har ej uppfyllts än." #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "Inga begränsningar är uppsatta för detta konto." #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, fuzzy, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" "Uppgifter för denna användare är lagrade i AuthStore nummer " "[1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "Användarnamn är inställda att vara [1:okänsliga för skiftläge]." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "Användarnamn är inställda att vara [1:känsliga för skiftläge]." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 #, fuzzy msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" "Inget lösenordsförråd innehåller uppgifter om denna användare som därför " "ej kan autentiseras, tillgång till detta [1:konto är blockerat], men " "kontoinformation kan fortfarande finnas tillgängligt." #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Nuvarande e-postadress: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Denna adress har bekräftats." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "Utestående bekräftelse [1:(uppgifter: %(token)s)]" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Denna adress har ej ännu bekräftats." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Ingen e-postadress är registrerad för detta konto." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Inloggningshistorik" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Senast inloggad: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "Användaren har ej loggat in förut." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Antal misslyckade inloggningar: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Tabell: Senast registrerade misslyckade inloggningsförsök" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "IP-adress" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "Registrerad tid" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Radera registreringar av misslyckade inloggningar" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Radera logg" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "För närvarande finns inga registrerade misslyckade inloggningar." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "Uppdatera lösenord" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Konton: Inställningar" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "Kom ihåg användaren mellan sessioner utan att åter kräva autentisering." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Lösenordet är felaktigt." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Lösenordsförrådet medger ej listning av användare." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "Uppdatera lösenordshasharna vid nästa lyckade inloggning." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Uppdatera lösenord" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "Återställning av lösenord ej aktiverat." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Tvinga användarna att byta lösenord vid återställning av lösenord." #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Konto" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Ingen e-postadress är registrerad för detta konto." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Tvinga användare att bekräfta sin e-postadress." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Konto" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Antal misslyckade inloggningar: %(count)s" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Regstrera ett konto" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "Lägg till/redigera konto" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Användarnamn:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "Lägg till" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Logga in" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Kom ihåg mig" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Fel" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Konton: Konfigurering av aviseringar" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Kontoavisering" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 #, fuzzy msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" "Ställ in följande för att få aviseringar om nya konton, återställning av " "lösenord och vid radering av konton." #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Aviseringsåtgärder" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 #, fuzzy msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" "Här är en lista av åtgärder som du kan aktivera eller avaktivera genom " "att [1:kryssa] i [2:kryssrutorna]." #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Erhåll avisering när konto skapas" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Erhåll avisering vid återställning av lösenord" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Erhåll avisering vid radering av konto" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Mottagaradresser vid avisering" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 #, fuzzy msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" "Lista av mailadresser och/eller användarnamn, separerade med mellanslag, " "som ska aviseras vid ovanstående händelser." #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Radera konto" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Radera konto" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Ändra lösenord" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Gammalt lösenord:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Nytt lösenord:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Regstrera ett konto" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Nödvändiga uppgifter" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "Valfritt" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Namn:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Skapa konto" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Återställ lösenord" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Om du glömt ditt lösenord, ange ditt användarnamn och e-postadress nedan " "för att erhålla nytt lösenord via e-post." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Återställ lösenord" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Namn" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "E-post" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Senaste inloggad" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Permanent blockerad" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "Skicka om e-post" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Lägg till/redigera konto" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Lösenordsförrådet medger ej listning av användare." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Uppdatera" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "Återställ lösenord" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Radera konto" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Radera valda konton" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "Bekräfta e-postadress" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "E-post skickades till %(email)s med information för validering av din nya" " adress. Var vänlig kontrollera din e-post och ange denna information " "nedan." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "Du kan [1:ändra din e-postadress], om detta är fel." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Verifieringsinformation:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Verifiera" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "Skicka om e-post" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "Din e-postadress är redan bekräftad." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The password store does not support creating users." #~ msgstr "Lösenordsförrådet medger ej att användare läggs till." #~ msgid "Unknown user %(user)s." #~ msgstr "Okänd användare %(user)s." #~ msgid "" #~ "The password store does not support\n" #~ " changing passwords.\n" #~ " " #~ msgstr "Lösenordsförrådet medger ej ändring av lösenord." #~ msgid "" #~ "Path relative to Trac environment or full host machine\n" #~ " path to password file" #~ msgstr "" #~ "Sökväg till lösenordsfilen, relativt Trac-" #~ "miljön eller absolut sökväg från " #~ "systemets rotkatalog" #~ msgid "The email and username do not match a known account." #~ msgstr "E-post och användarnamn överensstämmer ej med något känt konto." #~ msgid "" #~ "Path to the users file; leave blank to locate\n" #~ " the users file by reading svnserve.conf" #~ msgstr "" #~ "Sökväg till lösenordsfilen (lämna blank " #~ "för att lokalisera den genom " #~ "svnserve.conf)" #~ msgid "Please change your password now." #~ msgstr "Var vänlig och ändra ditt lösenord nu." #~ msgid "Review User Account Details" #~ msgstr "Granska kontodetaljer" #~ msgid "Verification" #~ msgstr "Bekräftelse" #~ msgid "Persistent Sessions" #~ msgstr "Beständiga sessioner" #~ msgid "Verify email" #~ msgstr "Bekräfta e-post" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "Lägg till nytt konto eller redigera ett existerade." #~ msgid " Change " #~ msgstr "Ändra" #~ msgid "Already logged in" #~ msgstr "Redan inloggad" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "Ogiltig nyckeltyp (%s) för lösenordsförrådet" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "\"crypt\"-modulen ej tillgänglig på denna plattform." #~ msgid "verify your email address" #~ msgstr "bekräftat din e-postadress" #~ msgid "verify your new email address" #~ msgstr "bekräftande av din nya e-postadress" #~ msgid "Password store icon" #~ msgstr "Lösenordet är felaktigt." #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "" #~ "Konto är låst, vänligen försök igen " #~ "efter %(release_time)s " #~ msgid "Account filters" #~ msgstr "Kontodetaljer" trunk/acct_mgr/locale/te/000755 000000 000000 00000000000 14414633245 014023 5ustar00000000 000000 trunk/acct_mgr/locale/te/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015610 5ustar00000000 000000 trunk/acct_mgr/locale/te/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000211430 14414633245 017730 0ustar00000000 000000 # Telugu translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Veeven , 2011. # వీవెన్ , 2011. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Veeven \n" "Language: te\n" "Language-Team: Telugu (http://www.transifex.com/projects/p/Trac_Plugin-" "L10N/language/te/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "ఖాతాలు" #: acct_mgr/admin.py:213 msgid "Users" msgstr "వాడుకరులు" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "ఈమెయిలు చిరునామా" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "సంకేతపదం" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "సంకేతపదాలు ఖచ్చితంగా సరిపోవాలి." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "భద్రపరచు" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "స్వరూపణం" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "సంకేతపదం" #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "సంకేతపదం" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "ఖాతా" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "ఖాతా వివరాలు" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "స్వరూపణం" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "వాడుకరిపేరు ఖాళీగా ఉండకూడదు." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "సంకేతపదం ఖాళీగా ఉండకూడదు." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 #, fuzzy msgid "Email:" msgstr "ఈమెయిలు" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "నమోదవ్వండి" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "మీ సంకేతపదాన్ని మర్చిపోయారా?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "ఖాతా" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "పాత సంకేతపదం తప్పు." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "పాత సంకేతపదం ఖాళీగా ఉండకూడదు." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "సంకేతపదాన్ని విజయవంతంగా తాజాకరించాం." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "వాడుకరిపేరు తప్పనిసరి." #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "ఈమెయిలు తప్పనిసరి." #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "తప్పుడు వాడుకరి పేరు లేదా సంకేతపదం" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "వాడుకరిపేరు:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "సంకేతపదం:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "సంకేతపదం నిర్ధారణ:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "ఈమెయిలు చిరునామా:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "ఖాతా స్థితి" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "చివరి ప్రవేశం: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "ఐపీ చిరునామా" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "సంకేతపదం" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "సంకేతపదం" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "ఖాతా" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "ఖాతా" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "వాడుకరిపేరు:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " చేర్చు " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "నన్ను గుర్తుంచుకో" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "పొరపాటు" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "పాత సంకేతపదం:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "కొత్త సంకేతపదం:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "తప్పనిసరి" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "ఐచ్చికం" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "పేరు:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "పేరు" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "ఈమెయిలు" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "చివరి ప్రవేశం" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "ఖాతాలు" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "Please change your password now." #~ msgstr "ఇప్పుడు మీ సంకేతపదాన్ని మార్చుకోండి." #~ msgid " Change " #~ msgstr " మార్చు " #~ msgid "Already logged in" #~ msgstr "ఇప్పటికే ప్రవేశించారు" #~ msgid "Account filters" #~ msgstr "ఖాతా వివరాలు" trunk/acct_mgr/locale/tr/000755 000000 000000 00000000000 14414633245 014040 5ustar00000000 000000 trunk/acct_mgr/locale/tr/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015625 5ustar00000000 000000 trunk/acct_mgr/locale/tr/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000223372 14414633245 017755 0ustar00000000 000000 # Turkish translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # , 2012. # Erdem Artan , 2012. # , 2011-2012. # Muhammet Kara , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Erdem Artan \n" "Language: tr\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/Trac_Plugin-" "L10N/language/tr/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "%(t_release)s 'e dek kilitli" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "Hesaplar" #: acct_mgr/admin.py:213 msgid "Users" msgstr "Kullanıcılar" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:298 #, fuzzy, python-format msgid "Successfully deleted: %(account)s" msgstr "Başarıyla güncellendi: %(success)s" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "Hesap oluştur" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "Hesap oluştur" #: acct_mgr/admin.py:326 #, fuzzy msgid "Please choose account by username from the list to proceed." msgstr "Lütfen devam etmek için listeden bir kullanıcı hesabı seçin." #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "E-posta Adresi" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "Ön-/Soyadı (Takma isim)" #: acct_mgr/admin.py:358 msgid "Password" msgstr "Parola" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "Parolalar eşleşmiyor." #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "%(user)s kullanıcısı için geçersiz giriş denemeleri silindi." #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 #, fuzzy msgid "Change User ID" msgstr "Parola Değiştir" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "Parola sıfırlama prosedürü etkinleştirilmedi." #: acct_mgr/admin.py:633 #, fuzzy, python-format msgid "Deleted account: %(accounts)s" msgstr "Hesabı sil" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "Parola deposu kullanıcı silmeyi desteklemiyor." #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "Kaydet" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "Hesabınızı silmek istediğinizden emin misiniz?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "Yapılandırma" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 #, fuzzy msgid "Authentication Options" msgstr "Bildirim Eylemleri" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "Parola yanlış." #: acct_mgr/admin.py:1171 #, fuzzy msgid "Password Policy" msgstr "Parola" #: acct_mgr/admin.py:1172 #, fuzzy msgid "Account Policy" msgstr "Hesap kilitli" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "Hesap" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "Bildirim" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "Parola Sıfırla" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "Hesap Bildirimi" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "Kullanıcı Hesaplarını Yönet" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "Yapılandırma" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" "%(user)s kullanıcısı için yetkilendirme arka ucu parola belirlemeyi " "desteklemiyor." #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" "Parola dosyası okunamıyor. Trac hem parola dosyası hem de parola " "dosyasının bulunduğu dizini üzerinde okuma ve yazma iznine ihtiyaç " "duyuyor." #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" "Parola dosyası okunamıyor. Trac hem parola dosyası hem de parola " "dosyasının bulunduğu dizini üzerinde okuma ve yazma iznine ihtiyaç " "duyuyor." #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 #, fuzzy msgid "Default hash type of new/updated passwords" msgstr "Yeni/güncellenen parolalar için öntanımlı şifreleme algoritması" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 #, fuzzy msgid "URL of the HTTP authentication service" msgstr "HTTP yetkilendirme servisinin adresi" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "Bildirim" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "Kullanıcı adı boş olamaz." #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "Kullanıcı adı şu karakterlerden hiçbirini içermemelidir: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "%(username)s kullanıcı adına izin verilmiyor." #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "Parola boş olamaz." #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "E-posta:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 #, fuzzy msgid "The email address is required for Trac to send you a verification token." msgstr "Bu hesap için herhangi bir eposta adresi kaydedilmedi." #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "Geçerli bir e-posta adresi belirtmelisiniz." #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "Kayıt Ol" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "E-posta doğrulama işlemini tamamlamak için lütfen giriş yapın." #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "E-Posta adresiniz zaten doğrulanmış." #: acct_mgr/register.py:623 #, fuzzy, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "<%s> adresine bir e-posta bildirimi gönderildi." #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "E-Posta adresinizi doğruladığınız için teşekkürler." #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "Geçersiz doğrulama kodu" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "Parolanızı mı unuttunuz?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "Hesap" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 #, fuzzy msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" "Zaten kullanıcı girişi yaptınız. Parolanızı değiştirmek istiyorsanız\n" " [1:Hesap Seçenekleri] sayfasını\n" " kullanabilirsiniz." #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "Hesabınızı silmek istediğinizden emin misiniz?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "Parolanızı güncellemeye vakit ayırdığınız için teşekkür ederiz." #: acct_mgr/web_ui.py:258 #, fuzzy msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" "Parola değişikliği isteminiz nedeniyle parolanızı değiştirmeniz " "gerekmektedir." #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "Eski parola yanlış." #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "Eski parola boş olamaz." #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "Parola başarıyla güncellendi." #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "Parola yanlış." #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "Kullanıcı adı gerekli" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "E-posta gerekiyor" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "Eposta ve kullanıcı adı bilinen bir hesap ile eşleşmeli." #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, fuzzy, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "yeni bir parola <%(email)s> adresine gönderildi." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "Geçersiz kullanıcı adı ya da parola" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "Hesap kilitlendi, lütfen %(release_time)s sonra tekrar deneyin" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "Hesap kilitli" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "Kullanıcı Hesaplarını Yönet" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "Kullanıcı Adı:" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 #, fuzzy msgid "Assume existing account" msgstr "Bir hesap oluştur" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 #, fuzzy msgid "Skip final account deletion" msgstr "Hesap silindiğinde haber ver" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "Parola:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "Parolayı Onayla:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "Önad/Soyadı (Takma Adı):" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 #, fuzzy msgid "Delete value" msgstr "Hesabı sil" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "E-posta Adresi:" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "Hesap Durumu" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "Bu hesap kalıcı olarak kilitlendi." #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "Hesap kilidini kaldır" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "Kilidi Aç" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "Kullanıcı adı eşleşmesi [1:büyük küçük harf duyarlı değil] olarak seçildi." #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "Kullanıcı adı eşleşmesi [1:büyük küçük harf duyarlı] olarak seçildi." #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "Kullanımdaki eposta adresi: <%(email)s>" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "Bu adres başarıyla doğrulandı." #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, fuzzy, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "Doğrulama bekliyor [1:(token: %(token)s)]" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "Bu adres henüz doğrulanmadı." #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "Bu hesap için herhangi bir eposta adresi kaydedilmedi." #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "Erişim Geçmişi" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "Son giriş: %(time)s" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "Kullanıcı daha önce giriş yapmamış." #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Toplam başarısız deneme: %(count)s" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "Tablo: Son başarısız giriş denemelerinin kaydı" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "IP adresi" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "Kayıt zamanı" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "Geçersiz giriş kaydını sil" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "Kaydı Sil" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "Şu anda kayıtlarda başarısız giriş denemesi görünmüyor." #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 #, fuzzy msgid "Refresh" msgstr "Parola Yenile" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "Hesaplar: Yapılandırma" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 #, fuzzy msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" "Tekrar kimlik doğrulama yapmadan kullanıcının oturumlar arası " "hatırlanmasına izin ver." #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "Parola yanlış." #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 #, fuzzy msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "Bu parola deposu, kullanıcıları listelemeyi desteklemiyor." #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "Parola şifrelemelerini bir sonraki başarılı girişte sessizce güncelle." #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "Parola Yenile" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 #, fuzzy msgid "Enable the password reset procedure." msgstr "Parola sıfırlama prosedürü etkinleştirilmedi." #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "Kullanıcıları parola sıfırlaması ardından parola değiştirmeye zorla" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "Hesap" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 #, fuzzy msgid "Allow users to register for a new account." msgstr "Bu hesap için herhangi bir eposta adresi kaydedilmedi." #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "Kullanıcıları e-posta doğrulamasına zorla." #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "Hesap" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 #, fuzzy msgid "Failed login attempt count max:" msgstr "Toplam başarısız deneme: %(count)s" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 #, fuzzy msgid "Initial Admin Account" msgstr "Bir hesap oluştur" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 #, fuzzy msgid "Add Admin Account:" msgstr "Hesap Ekle/Düzenle:" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "Kullanıcı Adı:" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr " Ekle " #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "Giriş" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "Beni hatırla" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "Hata" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "Hesaplar: Bildirim Yapılandırması" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "Hesap Bildirimi" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "Bildirim Eylemleri" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "Yeni hesap oluşturulduğunda haber ver" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "Parola sıfırlandığında haber ver" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "Hesap silindiğinde haber ver" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "Bildirimin Gönderileceği Adresler" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "Hesabı Sil" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "Hesabı sil" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "Parola Değiştir" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "Eski Parola:" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "Yeni Parola:" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "Bir hesap oluştur" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "Gerekli" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "İsteğe bağlı" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "Ad:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "Hesap oluştur" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "Parola Sıfırla" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 #, fuzzy msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" "Parolanızı unuttuysanız, kullanıcı adınızı ve\n" " eposta adresinizi aşağıya girin. Size yeni bir parola " "gönderilecek." #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "Parola sıfırla" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "Ad" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "E-posta" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "Son Giriş" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "Kalıcı olarak kilitli" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "E-postayı Yeniden Gönder" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 #, fuzzy msgid "Add New Account:" msgstr "Hesap Ekle/Düzenle:" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "Bu parola deposu, kullanıcıları listelemeyi desteklemiyor." #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "Güncelle" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "Parolaları sıfırla" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "Hesabı sil" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 #, fuzzy msgid "Remove selected items" msgstr "Seçilen hesapları sil" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "E-posta Doğrula" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, fuzzy, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" "%(email)s adresine\n" " yeni adresinizi doğrulamanız için bir kod ile birlikte bir eposta" " gönderildi.\n" " Lütfen eposta kutunuzu kontrol edin ve kodu aşağıdaki forma girin." #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 #, fuzzy msgid "You can [1:change your email address], if it is incorrect." msgstr "" "Doğru değilse [1:eposta adresinizi\n" " değiştirebilirsiniz]." #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "Doğrulama Kodu:" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "Doğrula" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "E-postayı Yeniden Gönder" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "E-Posta adresiniz zaten doğrulanmış." #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "The password store does not support creating users." #~ msgstr "Parola deposu kullanıcı oluşturmayı desteklemiyor." #~ msgid "Unknown user %(user)s." #~ msgstr "Bilinmeyen kullanıcı %(user)s." #~ msgid "The email and username do not match a known account." #~ msgstr "E-posta ve kullanıcı adı bilinen bir hesap ile uyuşmuyor." #~ msgid "Please change your password now." #~ msgstr "Şimdi lütfen parolanızı değiştirin." #~ msgid "Review User Account Details" #~ msgstr "Kullanıcı Hesabı Ayrıntılarını Gözden Geçir" #~ msgid "Verification" #~ msgstr "Doğrulama" #~ msgid "Persistent Sessions" #~ msgstr "Kalıcı Oturumlar" #~ msgid "Verify email" #~ msgstr "E-Posta doğrula" #~ msgid "Add a new user account or edit an existing one." #~ msgstr "Yeni bir kullanıcı hesabı ekle ya da bir kullanıcı hesabı düzenle." #~ msgid " Change " #~ msgstr " Değiştir " #~ msgid "Already logged in" #~ msgstr "Zaten giriş yapılmış" #~ msgid "Invalid key type (%s) for ExtensionOrder" #~ msgstr "ExtensionOrder için geçersiz anahtar türü (%s)" #~ msgid "The \"crypt\" module is unavailable on this platform." #~ msgstr "Bu sistemde \"crypt\" modülü bulunamadı." #~ msgid "verify your email address" #~ msgstr "e-posta adresini doğrulayın" #~ msgid "verify your new email address" #~ msgstr "yeni e-posta adresini doğrulayın" #~ msgid "Password store icon" #~ msgstr "Parola yanlış." #~ msgid "" #~ "Drop lock after\n" #~ " [1:]\n" #~ " seconds" #~ msgstr "" #~ "Hesap kilitlendi, lütfen %(release_time)s sonra\n" #~ " tekrar deneyin\n" #~ " " #~ msgid "Account filters" #~ msgstr "Hesap Ayrıntıları" trunk/acct_mgr/locale/uk/000755 000000 000000 00000000000 14414633245 014032 5ustar00000000 000000 trunk/acct_mgr/locale/uk/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 015617 5ustar00000000 000000 trunk/acct_mgr/locale/uk/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000205142 14414633245 017742 0ustar00000000 000000 # Ukrainian translations for TracAccountManager. # Copyright (C) 2023 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \n" "Language: uk\n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p" "/Trac_Plugin-L10N/language/uk/)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 #, fuzzy msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 #, fuzzy msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 #, fuzzy msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 #, fuzzy msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, fuzzy, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" trunk/acct_mgr/locale/zh_CN/000755 000000 000000 00000000000 14414633245 014414 5ustar00000000 000000 trunk/acct_mgr/locale/zh_CN/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 016201 5ustar00000000 000000 trunk/acct_mgr/locale/zh_CN/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000207750 14414633245 020333 0ustar00000000 000000 # Chinese (China) translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # , 2012. # Shuning Hong <>, 2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Shuning Hong <>\n" "Language: zh_CN\n" "Language-Team: Chinese (China) \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "账户" #: acct_mgr/admin.py:213 msgid "Users" msgstr "用户" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "两次输入的口令不一致。" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 #, fuzzy msgid "active" msgstr "保存" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 #, fuzzy msgid "Are you sure you want to delete these accounts?" msgstr "确定要删除你的账号吗?" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "配置" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 #, fuzzy msgid "Password Store" msgstr "密码不正确。" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 #, fuzzy msgid "Account Guard" msgstr "账户" #: acct_mgr/admin.py:1174 #, fuzzy msgid "Initialization" msgstr "通知" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "密码重设" #: acct_mgr/admin.py:1439 #, fuzzy msgid "Account Registration" msgstr "账户:配置" #: acct_mgr/admin.py:1452 #, fuzzy msgid "Admin user account" msgstr "管理用户账号" #: acct_mgr/admin.py:1456 #, fuzzy msgid "Configuration Review" msgstr "配置" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "无法读取口令文件。 Trac需要对口令文件及其上层目录的读写权限。" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "无法更新口令文件。 Trac需要对口令文件及其上层目录的读写权限。" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "通知" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "用户名不能为空。" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "用户名不得使用以下字符: %(chars)s" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "不允许使用%(username)s作为用户名。" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "口令不能为空。" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "你必须提供有效的电子邮件地址。" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "注册" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "你的邮箱已经认证。" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "感谢你认证你的邮箱地址。" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "忘记口令?" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "账户" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "确定要删除你的账号吗?" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "感谢你花时间来更新你的密码。" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 #, fuzzy msgid "Old password is incorrect." msgstr "旧密码不正确。" #: acct_mgr/web_ui.py:272 #, fuzzy msgid "Old password cannot be empty." msgstr "旧密码不能为空。" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 #, fuzzy msgid "Password updated successfully." msgstr "密码更新成功。" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "密码不正确。" #: acct_mgr/web_ui.py:316 #, fuzzy msgid "Username is required." msgstr "用户名是必须的" #: acct_mgr/web_ui.py:318 #, fuzzy msgid "Email is required." msgstr "邮箱是必须的" #: acct_mgr/web_ui.py:325 #, fuzzy msgid "Email and username must match a known account." msgstr "找不到该邮箱和用户名对应的账户。" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "错误的用户名或密码。" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 #, fuzzy msgid "Manage User Account" msgstr "管理用户账号" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 #, fuzzy msgid "New Username:" msgstr "用户名" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "密码:" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "再次输入密码:" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "账户:配置" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 #, fuzzy msgid "Password store" msgstr "密码不正确。" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 #, fuzzy msgid "Password refresh" msgstr "密码不正确。" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "强迫用户当密码重置后设置新的密码。" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 #, fuzzy msgid "Account approval" msgstr "账户" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 #, fuzzy msgid "Account guard" msgstr "账户" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "用户名" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "添加" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "姓名:" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 #, fuzzy msgid "Send email" msgstr "认证邮箱" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 #, fuzzy msgid "Delete accounts" msgstr "账户" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 #, fuzzy msgid "Email not verified" msgstr "你的邮箱已经认证。" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" #~ msgid "Please change your password now." #~ msgstr "请立刻修改你的密码。" #~ msgid "verify your email address" #~ msgstr "认证你的邮箱地址" #~ msgid "verify your new email address" #~ msgstr "认证你的新邮箱地址" #~ msgid "Password store icon" #~ msgstr "密码不正确。" trunk/acct_mgr/locale/zh_TW/000755 000000 000000 00000000000 14414633245 014446 5ustar00000000 000000 trunk/acct_mgr/locale/zh_TW/LC_MESSAGES/000755 000000 000000 00000000000 14414633245 016233 5ustar00000000 000000 trunk/acct_mgr/locale/zh_TW/LC_MESSAGES/acct_mgr.po000644 000000 000000 00000204507 14414633245 020362 0ustar00000000 000000 # Chinese (Taiwan) translations for TracAccountManager. # Copyright (C) 2023 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.6\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2023-04-09 21:49+0000\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \n" "Language: zh_TW\n" "Language-Team: Chinese (Taiwan) \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" #: acct_mgr/admin.py:58 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:213 acct_mgr/admin.py:892 acct_mgr/notification.py:197 #: acct_mgr/templates/genshi/account_users.html:11 #: acct_mgr/templates/jinja2/account_users.html:7 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:213 msgid "Users" msgstr "" #: acct_mgr/admin.py:288 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:293 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:298 #, python-format msgid "Successfully deleted: %(account)s" msgstr "" #: acct_mgr/admin.py:310 msgid "Back to Account" msgstr "" #: acct_mgr/admin.py:313 acct_mgr/admin.py:537 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:326 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:356 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:357 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:358 msgid "Password" msgstr "" #: acct_mgr/admin.py:374 acct_mgr/admin.py:380 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:385 acct_mgr/register.py:121 acct_mgr/web_ui.py:278 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:419 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:431 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:446 #, python-format msgid "Table %(table)s column %(column)s%(constraint)s: %(result)s change" msgid_plural "Table %(table)s column %(column)s%(constraint)s: %(result)s changes" msgstr[0] "" #: acct_mgr/admin.py:494 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:500 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:528 msgid "Modify Account" msgstr "" #: acct_mgr/admin.py:530 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:534 msgid "Account Attributes" msgstr "" #: acct_mgr/admin.py:621 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:623 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:633 #, python-format msgid "Deleted account: %(accounts)s" msgstr "" #: acct_mgr/admin.py:635 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:644 msgid "active" msgstr "" #: acct_mgr/admin.py:645 msgid "revoked" msgstr "" #: acct_mgr/admin.py:646 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:649 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:670 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:710 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:727 acct_mgr/admin.py:1573 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:731 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:741 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:772 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:802 #, python-format msgid "" "Cannot send the new password to the user, because no email address is " "associated with %(username)s." msgstr "" #: acct_mgr/admin.py:810 acct_mgr/admin.py:824 acct_mgr/admin.py:837 #: acct_mgr/admin.py:1558 acct_mgr/register.py:428 acct_mgr/register.py:444 #: acct_mgr/register.py:580 acct_mgr/register.py:614 acct_mgr/web_ui.py:355 #: acct_mgr/web_ui.py:801 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:812 acct_mgr/admin.py:826 acct_mgr/admin.py:839 #: acct_mgr/admin.py:1560 acct_mgr/web_ui.py:357 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:855 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:866 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:869 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:892 acct_mgr/templates/genshi/account_config.html:450 #: acct_mgr/templates/jinja2/account_config.html:484 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:946 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1147 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1150 msgid "" "Your changes are cached until you either drop or save them all (see last " "step)." msgstr "" #: acct_mgr/admin.py:1169 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1170 acct_mgr/admin.py:1426 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1171 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1172 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1173 acct_mgr/admin.py:1445 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1174 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1218 acct_mgr/admin.py:1346 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1431 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1439 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1452 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1456 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1531 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/admin.py:1569 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/api.py:264 #, python-format msgid "" "The authentication backend for user %(user)s does not support setting the" " password." msgstr "" #: acct_mgr/api.py:281 #, python-format msgid "Password for user %(user)s existed, couldn't create." msgstr "" #: acct_mgr/api.py:286 msgid "" "None of the IPasswordStore components listed in the trac.ini supports " "setting the password or creating users." msgstr "" #: acct_mgr/api.py:475 msgid "Account is pending approval. You may need to contact your administrator." msgstr "" #: acct_mgr/db.py:25 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:100 #, python-format msgid "[%(section)s] %(name)s option for the password file is not configured" msgstr "" #: acct_mgr/htfile.py:115 msgid "" "The password file could not be read. Trac requires read and write access " "to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires read and write " "access to both the password file and its parent directory." msgstr "" #: acct_mgr/htfile.py:193 acct_mgr/htfile.py:233 msgid "" "Path relative to Trac environment or full host machine path to password " "file" msgstr "" #: acct_mgr/htfile.py:196 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:236 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:36 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:92 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:198 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:59 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:197 msgid "Neither passlib nor crypt module available" msgstr "" #: acct_mgr/register.py:35 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:55 msgid "" "A collection of basic checks.\n" "\n" "This includes checking for\n" " * emptiness (no user input for username and/or password)\n" " * some blacklisted username characters\n" " * upper-cased usernames (reserved for Trac permission actions)\n" " * some reserved usernames\n" " * a username duplicate in configured password stores\n" "\n" "''This check is bypassed for requests regarding user's own preferences.''" msgstr "" #: acct_mgr/register.py:80 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:89 #, python-format msgid "The username must not contain any of these characters: %(chars)s" msgstr "" #: acct_mgr/register.py:93 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:100 #, python-format msgid "Username %(username)s is not allowed." msgstr "" #: acct_mgr/register.py:114 acct_mgr/register.py:343 #, python-format msgid "" "Another account or group already exists, who's name differs from " "%(username)s only by case or is identical." msgstr "" #: acct_mgr/register.py:119 acct_mgr/web_ui.py:276 acct_mgr/web_ui.py:295 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:129 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:137 msgid "" "A question to ask instead of the standard prompt, to which the value of " "register_basic_token is the answer. Setting to empty string (default " "value) keeps the standard prompt." msgstr "" #: acct_mgr/register.py:142 msgid "A string required as input to pass verification." msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:156 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:165 #, python-format msgid "" "Please type [%(token)s] as verification token, exactly replicating " "everything within the braces." msgstr "" #: acct_mgr/register.py:167 msgid "Parole:" msgstr "" #: acct_mgr/register.py:176 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:188 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:196 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:207 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:217 msgid "The email address is required for Trac to send you a verification token." msgstr "" #: acct_mgr/register.py:220 msgid "" "Entering your email address will also enable you to reset your password " "if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:227 msgid "" "Entering your email address will enable you to reset your password if you" " ever forget it." msgstr "" #: acct_mgr/register.py:241 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:248 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:258 msgid "" "A collection of checks based on regular expressions.\n" "\n" "''It depends on !EmailCheck being enabled too for using it's input field." "\n" "Likewise email checking is bypassed, if account verification is\n" "disabled.''" msgstr "" #: acct_mgr/register.py:268 msgid "" "A validation regular expression describing new usernames. Define " "constraints for allowed user names corresponding to local naming policy." msgstr "" #: acct_mgr/register.py:274 msgid "" "A validation regular expression describing new account emails. Define " "constraints for a valid email address. A custom pattern can narrow or " "widen scope i.e. to accept UTF-8 characters." msgstr "" #: acct_mgr/register.py:291 #, python-format msgid "Username %(username)s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:301 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:311 msgid "" "Check for usernames referenced in the permission system.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #: acct_mgr/register.py:390 acct_mgr/templates/genshi/account_login.html:56 #: acct_mgr/templates/genshi/account_register.html:11 #: acct_mgr/templates/jinja2/account_login.html:65 #: acct_mgr/templates/jinja2/account_register.html:7 msgid "Register" msgstr "" #: acct_mgr/register.py:429 acct_mgr/register.py:446 acct_mgr/register.py:582 #: acct_mgr/register.py:615 acct_mgr/web_ui.py:359 acct_mgr/web_ui.py:803 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:452 msgid "" "Your username has been registered successfully, but your account requires" " administrative approval. Please proceed according to local policy." msgstr "" #: acct_mgr/register.py:462 #, python-format msgid "" "Your username has been successfully registered but your account still " "requires activation. Please login as user %(user)s, and follow the " "instructions." msgstr "" #: acct_mgr/register.py:467 #, python-format msgid "" "Registration has been finished successfully. You may log in as user " "%(user)s now." msgstr "" #: acct_mgr/register.py:553 msgid "" "Your permissions have been limited until you [1:verify your email " "address]." msgstr "" #: acct_mgr/register.py:586 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to [1:verify your new " "email address]." msgstr "" #: acct_mgr/register.py:601 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:605 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:623 #, python-format msgid "A notification email has been resent to <%(email)s>." msgstr "" #: acct_mgr/register.py:629 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:632 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:29 msgid "" "Path to the users file; leave blank to locate the users file by reading " "svnserve.conf from the default repository." msgstr "" #: acct_mgr/util.py:77 #, python-format msgid "%(datepart)s %(timepart)s" msgstr "" #: acct_mgr/templates/genshi/account_login.html:42 #: acct_mgr/templates/genshi/account_login.html:60 #: acct_mgr/templates/jinja2/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:70 acct_mgr/web_ui.py:107 msgid "Forgot your password?" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:22 #: acct_mgr/templates/genshi/account_prefs.html:39 #: acct_mgr/templates/genshi/account_user_table.html:20 #: acct_mgr/templates/jinja2/account_admin.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:22 #: acct_mgr/templates/jinja2/account_prefs.html:7 #: acct_mgr/templates/jinja2/account_user_table.html:17 acct_mgr/web_ui.py:132 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:156 #, python-format msgid "" "Sorry, but policy prohibits choosing '%(username)s' for an anonymous " "session. Login or choose another session ID, please." msgstr "" #: acct_mgr/web_ui.py:187 msgid "" "You're already logged in. If you need to change your password please use " "the [1:Account Preferences] page." msgstr "" #: acct_mgr/web_ui.py:232 #, python-format msgid "" "Policy prohibits choosing %(username)s for an anonymous session because " "it's a registered username. Please login or choose another author name." msgstr "" #: acct_mgr/web_ui.py:244 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:252 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:258 msgid "" "You are required to change password because of a recent password change " "request. [1:Please change your password now.]" msgstr "" #: acct_mgr/web_ui.py:270 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:272 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:280 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:287 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:297 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:316 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:318 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:325 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:348 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:370 #, python-format msgid "A new password has been sent to you at <%(email)s>." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:521 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:529 #, python-format msgid "Account locked, please try again after %(release_time)s" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:48 #: acct_mgr/templates/jinja2/account_user_table.html:54 acct_mgr/web_ui.py:532 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:537 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/opt/announcer/uid_chg.py:39 acct_mgr/opt/tracforms/uid_chg.py:37 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:22 #: acct_mgr/templates/jinja2/account_admin.html:24 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:25 #: acct_mgr/templates/jinja2/account_admin.html:27 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:28 #: acct_mgr/templates/jinja2/account_admin.html:30 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:30 #: acct_mgr/templates/jinja2/account_admin.html:35 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:53 #: acct_mgr/templates/jinja2/account_admin.html:67 msgid "New Username:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:54 #: acct_mgr/templates/jinja2/account_admin.html:69 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:62 #: acct_mgr/templates/jinja2/account_admin.html:77 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:64 #: acct_mgr/templates/jinja2/account_admin.html:79 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:70 #: acct_mgr/templates/jinja2/account_admin.html:85 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:72 #: acct_mgr/templates/jinja2/account_admin.html:87 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:78 #: acct_mgr/templates/jinja2/account_admin.html:93 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:80 #: acct_mgr/templates/jinja2/account_admin.html:95 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:90 #: acct_mgr/templates/genshi/account_config.html:915 #: acct_mgr/templates/genshi/account_login.html:35 #: acct_mgr/templates/genshi/account_prefs.html:23 #: acct_mgr/templates/genshi/account_register.html:43 #: acct_mgr/templates/genshi/account_users.html:93 #: acct_mgr/templates/jinja2/account_admin.html:106 #: acct_mgr/templates/jinja2/account_config.html:1029 #: acct_mgr/templates/jinja2/account_login.html:39 #: acct_mgr/templates/jinja2/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_register.html:52 #: acct_mgr/templates/jinja2/account_users.html:34 msgid "Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:98 #: acct_mgr/templates/genshi/account_config.html:921 #: acct_mgr/templates/genshi/account_prefs.html:63 #: acct_mgr/templates/genshi/account_register.html:49 #: acct_mgr/templates/genshi/account_users.html:101 #: acct_mgr/templates/jinja2/account_admin.html:113 #: acct_mgr/templates/jinja2/account_config.html:1036 #: acct_mgr/templates/jinja2/account_prefs.html:33 #: acct_mgr/templates/jinja2/account_register.html:58 #: acct_mgr/templates/jinja2/account_users.html:41 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:107 #: acct_mgr/templates/genshi/account_users.html:112 #: acct_mgr/templates/jinja2/account_admin.html:121 #: acct_mgr/templates/jinja2/account_users.html:49 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:111 #: acct_mgr/templates/genshi/account_admin.html:121 #: acct_mgr/templates/jinja2/account_admin.html:127 #: acct_mgr/templates/jinja2/account_admin.html:138 msgid "Delete value" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:117 #: acct_mgr/templates/genshi/account_reset_password.html:35 #: acct_mgr/templates/genshi/account_users.html:118 #: acct_mgr/templates/jinja2/account_admin.html:132 #: acct_mgr/templates/jinja2/account_reset_password.html:41 #: acct_mgr/templates/jinja2/account_users.html:55 msgid "Email Address:" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:128 #: acct_mgr/templates/genshi/account_users.html:124 #: acct_mgr/templates/jinja2/account_admin.html:145 #: acct_mgr/templates/jinja2/account_users.html:62 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:134 #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/genshi/account_notification.html:59 #: acct_mgr/templates/jinja2/account_admin.html:152 #: acct_mgr/templates/jinja2/account_config.html:1129 #: acct_mgr/templates/jinja2/account_config.html:1139 #: acct_mgr/templates/jinja2/account_notification.html:64 msgid "Apply changes" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:145 #: acct_mgr/templates/jinja2/account_admin.html:165 msgid "Account Status" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:150 #: acct_mgr/templates/jinja2/account_admin.html:175 #, python-format msgid "" "This account has been locked until %(time)s[1:]and even valid login " "attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:156 #: acct_mgr/templates/jinja2/account_admin.html:185 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:190 #: acct_mgr/templates/jinja2/account_admin.html:191 msgid "Release account lock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:160 #: acct_mgr/templates/jinja2/account_admin.html:192 msgid "Unlock" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:170 #, python-format msgid "Time lock condition has been met %(count)s time by now." msgid_plural "Time lock condition has been met %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/genshi/account_admin.html:174 #: acct_mgr/templates/jinja2/account_admin.html:210 #, python-format msgid "" "Therefore after another failed login attempt authentication for this " "account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:182 #: acct_mgr/templates/jinja2/account_admin.html:219 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:186 #: acct_mgr/templates/jinja2/account_admin.html:225 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:192 #: acct_mgr/templates/jinja2/account_admin.html:237 #, python-format msgid "" "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:196 #: acct_mgr/templates/jinja2/account_admin.html:245 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:199 #: acct_mgr/templates/jinja2/account_admin.html:251 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:204 #: acct_mgr/templates/jinja2/account_admin.html:262 msgid "" "No readable store provides credentials for this user, so the user may not" " get authenticated and access to this [1:account might be effectively " "blocked]." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:211 #: acct_mgr/templates/jinja2/account_admin.html:274 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:215 #: acct_mgr/templates/jinja2/account_admin.html:280 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:216 #: acct_mgr/templates/jinja2/account_admin.html:284 #, python-format msgid "Verification is pending [1:(token: %(token)s)]" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:219 #: acct_mgr/templates/jinja2/account_admin.html:290 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:225 #: acct_mgr/templates/jinja2/account_admin.html:298 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:230 #: acct_mgr/templates/jinja2/account_admin.html:306 msgid "Access History" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:309 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:231 #: acct_mgr/templates/jinja2/account_admin.html:311 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:237 #: acct_mgr/templates/jinja2/account_admin.html:317 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:238 #: acct_mgr/templates/jinja2/account_admin.html:321 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:243 #: acct_mgr/templates/jinja2/account_admin.html:326 msgid "IP address" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:244 #: acct_mgr/templates/jinja2/account_admin.html:327 msgid "Log time" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:342 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:255 #: acct_mgr/templates/jinja2/account_admin.html:343 msgid "Delete Log" msgstr "" #: acct_mgr/templates/genshi/account_admin.html:261 #: acct_mgr/templates/jinja2/account_admin.html:350 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/genshi/account_admin.html:266 #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_admin.html:357 #: acct_mgr/templates/jinja2/account_config.html:1132 msgid "Refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:11 #: acct_mgr/templates/genshi/account_config.html:24 #: acct_mgr/templates/jinja2/account_config.html:7 #: acct_mgr/templates/jinja2/account_config.html:14 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/jinja2/account_config.html:47 #: acct_mgr/templates/jinja2/account_config.html:1118 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:50 #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:985 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:48 #: acct_mgr/templates/jinja2/account_config.html:52 #: acct_mgr/templates/jinja2/account_config.html:1119 #: acct_mgr/templates/jinja2/account_config.html:1123 msgid "Previous" msgstr "" #: acct_mgr/templates/genshi/account_config.html:54 #: acct_mgr/templates/genshi/account_config.html:989 #: acct_mgr/templates/jinja2/account_config.html:51 #: acct_mgr/templates/jinja2/account_config.html:1122 msgid "Go back" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:57 #: acct_mgr/templates/jinja2/account_config.html:1134 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/genshi/account_config.html:57 #: acct_mgr/templates/genshi/account_config.html:1006 #: acct_mgr/templates/jinja2/account_config.html:58 #: acct_mgr/templates/jinja2/account_config.html:1135 msgid "Next" msgstr "" #: acct_mgr/templates/genshi/account_config.html:67 #: acct_mgr/templates/genshi/account_config.html:260 #: acct_mgr/templates/genshi/account_config.html:553 #: acct_mgr/templates/genshi/account_config.html:601 #: acct_mgr/templates/genshi/account_config.html:750 #: acct_mgr/templates/genshi/account_config.html:878 #: acct_mgr/templates/jinja2/account_config.html:68 #: acct_mgr/templates/jinja2/account_config.html:285 #: acct_mgr/templates/jinja2/account_config.html:610 #: acct_mgr/templates/jinja2/account_config.html:667 #: acct_mgr/templates/jinja2/account_config.html:838 #: acct_mgr/templates/jinja2/account_config.html:981 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/genshi/account_config.html:70 #: acct_mgr/templates/jinja2/account_config.html:71 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:71 #: acct_mgr/templates/jinja2/account_config.html:73 msgid "" "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:76 #: acct_mgr/templates/jinja2/account_config.html:78 msgid "" "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties." msgstr "" #: acct_mgr/templates/genshi/account_config.html:83 #: acct_mgr/templates/jinja2/account_config.html:83 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:88 #: acct_mgr/templates/jinja2/account_config.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:91 #: acct_mgr/templates/jinja2/account_config.html:93 msgid "" "Adapt to careless username typing, where casing does not matter, like on " "Windows. Potentially troublesome, because [1:case matters for Trac " "permission assignment lookup] anyway." msgstr "" #: acct_mgr/templates/genshi/account_config.html:101 #: acct_mgr/templates/jinja2/account_config.html:105 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:104 #: acct_mgr/templates/jinja2/account_config.html:108 msgid "" "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:114 #: acct_mgr/templates/jinja2/account_config.html:118 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/genshi/account_config.html:117 #: acct_mgr/templates/jinja2/account_config.html:121 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/genshi/account_config.html:128 #: acct_mgr/templates/jinja2/account_config.html:131 #, python-format msgid "Lifetime of the authentication cookie: [1:] seconds [2:(%(timedelta)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:141 #: acct_mgr/templates/jinja2/account_config.html:142 msgid "" "Determines how long the browser will cache authentication information, " "and therefore, after how much inactivity a user will have to log in " "again. Default (0 s) makes cookie expire at browsing sessions end." msgstr "" #: acct_mgr/templates/genshi/account_config.html:150 #: acct_mgr/templates/jinja2/account_config.html:150 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/genshi/account_config.html:156 #: acct_mgr/templates/jinja2/account_config.html:157 msgid "" "Use HTTP authentication and credentials as configured in and provided by " "your web-server." msgstr "" #: acct_mgr/templates/genshi/account_config.html:160 #: acct_mgr/templates/jinja2/account_config.html:163 msgid "" "You can still manage some password stores with AccountManagerPlugin, if " "you configure them in the next step." msgstr "" #: acct_mgr/templates/genshi/account_config.html:169 #: acct_mgr/templates/jinja2/account_config.html:172 msgid "" "Use a HTML login form backed by one or more password stores managed by " "AccountManagerPlugin." msgstr "" #: acct_mgr/templates/genshi/account_config.html:173 #: acct_mgr/templates/jinja2/account_config.html:179 msgid "" "AccountManagerPlugin provides a custom version of the [1:LoginModule] " "accompanied by a form-based HTML login page." msgstr "" #: acct_mgr/templates/genshi/account_config.html:178 #: acct_mgr/templates/jinja2/account_config.html:187 msgid "" "If you enable this feature, you'll want to review and adjust some more " "options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of " "authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:187 #: acct_mgr/templates/jinja2/account_config.html:198 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:192 #: acct_mgr/templates/jinja2/account_config.html:204 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/genshi/account_config.html:195 #: acct_mgr/templates/jinja2/account_config.html:209 msgid "" "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:216 #: acct_mgr/templates/jinja2/account_config.html:228 msgid "" "Allow the user to be remembered across sessions without needing to re-" "authenticate." msgstr "" #: acct_mgr/templates/genshi/account_config.html:220 #: acct_mgr/templates/jinja2/account_config.html:235 msgid "" "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site within " "30 days, he'll be remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/genshi/account_config.html:228 #: acct_mgr/templates/jinja2/account_config.html:246 msgid "Likelihood of session cookie ID change: [1:] % per work hour" msgstr "" #: acct_mgr/templates/genshi/account_config.html:235 #: acct_mgr/templates/jinja2/account_config.html:253 msgid "" "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:241 #: acct_mgr/templates/jinja2/account_config.html:262 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:247 #: acct_mgr/templates/jinja2/account_config.html:269 msgid "" "This enables AccountManagerPlugin's authentication data distribution to " "Trac instances with matching cookie path. Set this to a common base path " "of several Trac instances to share the cookie, providing a cheap [1" ":Single-Sign-On] experience." msgstr "" #: acct_mgr/templates/genshi/account_config.html:263 #: acct_mgr/templates/jinja2/account_config.html:288 msgid "Password store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:265 #: acct_mgr/templates/jinja2/account_config.html:291 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/genshi/account_config.html:266 #: acct_mgr/templates/jinja2/account_config.html:293 msgid "" "AccountManagerPlugin manages user credentials in a modular back-end " "providing access to at least one password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:273 #: acct_mgr/templates/jinja2/account_config.html:300 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/genshi/account_config.html:279 #: acct_mgr/templates/jinja2/account_config.html:307 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/genshi/account_config.html:282 #: acct_mgr/templates/jinja2/account_config.html:311 msgid "" "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/genshi/account_config.html:288 #: acct_mgr/templates/jinja2/account_config.html:319 msgid "" "While great to resolve some concurrent access issues too, this password " "store has shortcomings as well. Notably it does not support seamless hash" " type migration, and its no candidate for shared use by multiple Trac " "instances or even by applications beyond Trac." msgstr "" #: acct_mgr/templates/genshi/account_config.html:298 #: acct_mgr/templates/genshi/account_config.html:340 #: acct_mgr/templates/genshi/account_config.html:362 #: acct_mgr/templates/genshi/account_config.html:385 #: acct_mgr/templates/genshi/account_config.html:416 #: acct_mgr/templates/genshi/account_config.html:965 #: acct_mgr/templates/jinja2/account_config.html:328 #: acct_mgr/templates/jinja2/account_config.html:373 #: acct_mgr/templates/jinja2/account_config.html:396 #: acct_mgr/templates/jinja2/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:1096 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/genshi/account_config.html:301 #: acct_mgr/templates/genshi/account_config.html:343 #: acct_mgr/templates/genshi/account_config.html:365 #: acct_mgr/templates/genshi/account_config.html:388 #: acct_mgr/templates/genshi/account_config.html:419 #: acct_mgr/templates/jinja2/account_config.html:333 #: acct_mgr/templates/jinja2/account_config.html:377 #: acct_mgr/templates/jinja2/account_config.html:400 #: acct_mgr/templates/jinja2/account_config.html:423 #: acct_mgr/templates/jinja2/account_config.html:457 msgid "" "Please apply these default options first. You'll be able to change values" " afterwards." msgstr "" #: acct_mgr/templates/genshi/account_config.html:312 #: acct_mgr/templates/jinja2/account_config.html:344 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:315 #: acct_mgr/templates/jinja2/account_config.html:347 msgid "" "AccountManagerPlugin includes native support for common Apache file " "formats 'htpasswd' and 'htdigest' as well as support for reading " "svnserve's password file format." msgstr "" #: acct_mgr/templates/genshi/account_config.html:321 msgid "" "You may use the same file for several Trac environments. Note that " "setting appropriate directory and file permissions is crucial for these " "stores, but not covered by this configuration wizard." msgstr "" #: acct_mgr/templates/genshi/account_config.html:335 #: acct_mgr/templates/jinja2/account_config.html:368 msgid "'htdigest' format [1:([2:HtDigestStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:357 #: acct_mgr/templates/jinja2/account_config.html:391 msgid "'htpasswd' format [1:([2:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:379 #: acct_mgr/templates/jinja2/account_config.html:414 msgid "svnserve's password file format [1:([2:SvnServePasswordStore])]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:402 #: acct_mgr/templates/jinja2/account_config.html:436 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/genshi/account_config.html:405 #: acct_mgr/templates/jinja2/account_config.html:440 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported." msgstr "" #: acct_mgr/templates/genshi/account_config.html:410 #: acct_mgr/templates/jinja2/account_config.html:448 msgid "" "In addition to being read-only this password store does not even support " "listing users for obvious reasons." msgstr "" #: acct_mgr/templates/genshi/account_config.html:435 #: acct_mgr/templates/jinja2/account_config.html:471 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:438 #: acct_mgr/templates/jinja2/account_config.html:474 msgid "" "AccountManagerPlugin's modular password store concept encourages creation" " of more ways to provide user credential beyond the natively supported " "stores. While a specific setup assistance for these 3rd-party " "authentication providers is not implemented, you may fill-in appropriate " "configuration details for an already installed component below." msgstr "" #: acct_mgr/templates/genshi/account_config.html:453 #: acct_mgr/templates/jinja2/account_config.html:488 msgid "" "Type the custom configuration options as provided by that components " "documentation and apply it." msgstr "" #: acct_mgr/templates/genshi/account_config.html:464 #: acct_mgr/templates/jinja2/account_config.html:498 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/genshi/account_config.html:465 #: acct_mgr/templates/jinja2/account_config.html:501 #, python-format msgid "" "All enabled stores are listed below, but most won't work at all without " "additional configuration.[1:]Currently configured: [2:%(store_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:470 #: acct_mgr/templates/jinja2/account_config.html:511 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:475 #: acct_mgr/templates/genshi/account_config.html:655 #: acct_mgr/templates/jinja2/account_config.html:519 #: acct_mgr/templates/jinja2/account_config.html:734 #, python-format msgid "Required disabled component(s): [1:%(components)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:480 #: acct_mgr/templates/jinja2/account_config.html:528 msgid "" "Select one or more stores and configure related options. Concurrent use " "of multiple password stores is supported too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:485 #: acct_mgr/templates/jinja2/account_config.html:533 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/genshi/account_config.html:530 #: acct_mgr/templates/jinja2/account_config.html:585 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/genshi/account_config.html:533 #: acct_mgr/templates/jinja2/account_config.html:588 msgid "" "Use it after changing hash type or to migrate to a new primary password " "store." msgstr "" #: acct_mgr/templates/genshi/account_config.html:538 #: acct_mgr/templates/jinja2/account_config.html:593 msgid "" "The update will run only once. Restarting the procedure for all accounts " "allows to propagate subsequent changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:544 #: acct_mgr/templates/jinja2/account_config.html:599 msgid "Restart" msgstr "" #: acct_mgr/templates/genshi/account_config.html:556 #: acct_mgr/templates/jinja2/account_config.html:613 msgid "Password refresh" msgstr "" #: acct_mgr/templates/genshi/account_config.html:558 #: acct_mgr/templates/jinja2/account_config.html:616 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:559 #: acct_mgr/templates/jinja2/account_config.html:618 msgid "" "While AccountManagerPlugin does not enforce password rules in general, " "there are some other ways to alter password handling." msgstr "" #: acct_mgr/templates/genshi/account_config.html:569 #: acct_mgr/templates/jinja2/account_config.html:628 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/genshi/account_config.html:572 #: acct_mgr/templates/jinja2/account_config.html:631 msgid "" "It relies on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:579 #: acct_mgr/templates/jinja2/account_config.html:639 msgid "Length of the randomly-generated passwords: [1:] characters" msgstr "" #: acct_mgr/templates/genshi/account_config.html:585 #: acct_mgr/templates/jinja2/account_config.html:648 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/genshi/account_config.html:593 #: acct_mgr/templates/jinja2/account_config.html:657 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/genshi/account_config.html:604 #: acct_mgr/templates/jinja2/account_config.html:670 msgid "Account approval" msgstr "" #: acct_mgr/templates/genshi/account_config.html:606 #: acct_mgr/templates/jinja2/account_config.html:673 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:607 #: acct_mgr/templates/jinja2/account_config.html:676 msgid "" "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature." msgstr "" #: acct_mgr/templates/genshi/account_config.html:619 #: acct_mgr/templates/jinja2/account_config.html:686 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/genshi/account_config.html:628 #: acct_mgr/templates/jinja2/account_config.html:694 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:637 #: acct_mgr/templates/jinja2/account_config.html:702 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:642 #: acct_mgr/templates/jinja2/account_config.html:707 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/genshi/account_config.html:643 #: acct_mgr/templates/jinja2/account_config.html:711 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per default, but " "some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:649 #: acct_mgr/templates/jinja2/account_config.html:723 msgid "" "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:660 #: acct_mgr/templates/jinja2/account_config.html:743 msgid "" "Select one or more checks and configure related options. Concurrent use " "of multiple registration checks is encouraged." msgstr "" #: acct_mgr/templates/genshi/account_config.html:666 #: acct_mgr/templates/jinja2/account_config.html:748 msgid "" "Checks are applied in turn, so order matters. Note that some checks are " "used to validate admin user actions too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:714 #: acct_mgr/templates/jinja2/account_config.html:801 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/genshi/account_config.html:720 #: acct_mgr/templates/jinja2/account_config.html:808 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:723 #: acct_mgr/templates/jinja2/account_config.html:811 msgid "" "For admin notification on registration time it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:736 #: acct_mgr/templates/jinja2/account_config.html:823 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/genshi/account_config.html:739 #: acct_mgr/templates/jinja2/account_config.html:826 msgid "" "For sending a verification token to the user it relies on a working email" " sender for Trac, supporting both TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/genshi/account_config.html:753 #: acct_mgr/templates/jinja2/account_config.html:841 msgid "Account guard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:755 #: acct_mgr/templates/jinja2/account_config.html:844 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/genshi/account_config.html:756 #: acct_mgr/templates/jinja2/account_config.html:846 msgid "" "Passwords are often not constructed as carefully as they should be. And " "even a strong passphrase could be sift out, if an attacker is able to " "test millions of variants in hours, if not seconds. Firewalls and full-" "featured web-servers already offer sophisticated protection, if one can " "afford them, handle their installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/genshi/account_config.html:766 #: acct_mgr/templates/jinja2/account_config.html:857 msgid "" "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/genshi/account_config.html:779 #: acct_mgr/templates/jinja2/account_config.html:872 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/genshi/account_config.html:782 #: acct_mgr/templates/jinja2/account_config.html:876 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/genshi/account_config.html:788 #: acct_mgr/templates/jinja2/account_config.html:883 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:795 #: acct_mgr/templates/jinja2/account_config.html:891 msgid "" "Lock user account after the specified number of failed attempts. Value " "zero means [1:no limit]." msgstr "" #: acct_mgr/templates/genshi/account_config.html:802 #: acct_mgr/templates/jinja2/account_config.html:902 msgid "Drop lock after [1:] seconds" msgstr "" #: acct_mgr/templates/genshi/account_config.html:808 #: acct_mgr/templates/jinja2/account_config.html:909 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/genshi/account_config.html:814 #: acct_mgr/templates/jinja2/account_config.html:916 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:821 #: acct_mgr/templates/jinja2/account_config.html:922 msgid "" "Extend user account lock duration incrementally. It uses logarithmic " "calculation with the factor as exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:827 #: acct_mgr/templates/jinja2/account_config.html:929 msgid "" "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:842 #: acct_mgr/templates/jinja2/account_config.html:946 msgid "" "At any time after lock expiration a login failure will just trigger a " "lock and set a new lock timeout, but not extend the total lock duration." msgstr "" #: acct_mgr/templates/genshi/account_config.html:854 #: acct_mgr/templates/jinja2/account_config.html:958 #, python-format msgid "Upper lock time limit: [1:] seconds [2:(%(time)s)]" msgstr "" #: acct_mgr/templates/genshi/account_config.html:867 #: acct_mgr/templates/jinja2/account_config.html:969 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/genshi/account_config.html:882 #: acct_mgr/templates/jinja2/account_config.html:986 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/genshi/account_config.html:883 #: acct_mgr/templates/jinja2/account_config.html:988 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/genshi/account_config.html:884 #: acct_mgr/templates/jinja2/account_config.html:990 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/genshi/account_config.html:886 #: acct_mgr/templates/jinja2/account_config.html:992 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:887 #: acct_mgr/templates/jinja2/account_config.html:995 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that inherits all available " "permissions. One such account is required to configure Trac via the admin" " web-UI. Create and manage more limited admin accounts as well as actual " "user accounts on your own later via the Accounts admin panel." msgstr "" #: acct_mgr/templates/genshi/account_config.html:895 #: acct_mgr/templates/jinja2/account_config.html:1006 msgid "" "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing these " "pages and changing the configuration later. Both are inherited by " "[3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/genshi/account_config.html:906 #: acct_mgr/templates/genshi/account_login.html:30 #: acct_mgr/templates/genshi/account_register.html:33 #: acct_mgr/templates/genshi/account_reset_password.html:29 #: acct_mgr/templates/genshi/account_users.html:83 #: acct_mgr/templates/jinja2/account_config.html:1017 #: acct_mgr/templates/jinja2/account_login.html:33 #: acct_mgr/templates/jinja2/account_register.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:35 #: acct_mgr/templates/jinja2/account_users.html:21 msgid "Username:" msgstr "" #: acct_mgr/templates/genshi/account_config.html:910 #: acct_mgr/templates/genshi/account_register.html:38 #: acct_mgr/templates/genshi/account_users.html:87 #: acct_mgr/templates/jinja2/account_config.html:1023 #: acct_mgr/templates/jinja2/account_register.html:46 #: acct_mgr/templates/jinja2/account_users.html:27 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/genshi/account_config.html:927 #: acct_mgr/templates/jinja2/account_config.html:1043 msgid "" "Please take care, that the username is known by the HTTP authentication " "provider." msgstr "" #: acct_mgr/templates/genshi/account_config.html:932 #: acct_mgr/templates/jinja2/account_config.html:1049 msgid "" "Please take care for a valid username, because no configured password " "store supports creating a new account." msgstr "" #: acct_mgr/templates/genshi/account_config.html:938 #: acct_mgr/templates/genshi/account_users.html:130 #: acct_mgr/templates/jinja2/account_config.html:1055 #: acct_mgr/templates/jinja2/account_users.html:69 msgid " Add " msgstr "" #: acct_mgr/templates/genshi/account_config.html:942 #: acct_mgr/templates/jinja2/account_config.html:1061 msgid "Check-up" msgstr "" #: acct_mgr/templates/genshi/account_config.html:951 #: acct_mgr/templates/jinja2/account_config.html:1077 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/genshi/account_config.html:955 #: acct_mgr/templates/jinja2/account_config.html:1085 msgid "" "By now you did almost finish AccountManagerPlugin configuration, but any " "changes are temporary yet. Please test and adjust the configuration as " "required, or cancel to revert all changes. Apply settings to [1:trac.ini]" " only if you really want to preserve them permanently." msgstr "" #: acct_mgr/templates/genshi/account_config.html:993 #: acct_mgr/templates/jinja2/account_config.html:1128 msgid "Stay on page" msgstr "" #: acct_mgr/templates/genshi/account_config.html:997 #: acct_mgr/templates/jinja2/account_config.html:1138 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1002 #: acct_mgr/templates/jinja2/account_config.html:1131 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1142 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/genshi/account_config.html:1010 #: acct_mgr/templates/jinja2/account_config.html:1143 msgid "Cancel" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:11 #: acct_mgr/templates/genshi/account_db_cleanup.html:15 #: acct_mgr/templates/jinja2/account_db_cleanup.html:7 #: acct_mgr/templates/jinja2/account_db_cleanup.html:14 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:27 #: acct_mgr/templates/jinja2/account_db_cleanup.html:27 msgid "Attribute" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:28 #: acct_mgr/templates/jinja2/account_db_cleanup.html:28 msgid "Value" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:62 #: acct_mgr/templates/jinja2/account_db_cleanup.html:33 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:94 #: acct_mgr/templates/jinja2/account_db_cleanup.html:60 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/genshi/account_db_cleanup.html:96 #: acct_mgr/templates/jinja2/account_db_cleanup.html:62 msgid "Undo selection" msgstr "" #: acct_mgr/templates/genshi/account_login.html:11 #: acct_mgr/templates/genshi/account_login.html:23 #: acct_mgr/templates/genshi/account_login.html:50 #: acct_mgr/templates/jinja2/account_login.html:7 #: acct_mgr/templates/jinja2/account_login.html:24 #: acct_mgr/templates/jinja2/account_login.html:58 msgid "Login" msgstr "" #: acct_mgr/templates/genshi/account_login.html:47 #: acct_mgr/templates/jinja2/account_login.html:54 msgid "Remember me" msgstr "" #: acct_mgr/templates/genshi/account_login.html:70 #: acct_mgr/templates/genshi/account_register.html:24 #: acct_mgr/templates/jinja2/account_login.html:82 #: acct_mgr/templates/jinja2/account_register.html:28 msgid "Error" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:11 #: acct_mgr/templates/genshi/account_notification.html:15 #: acct_mgr/templates/jinja2/account_notification.html:7 #: acct_mgr/templates/jinja2/account_notification.html:14 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:19 #: acct_mgr/templates/jinja2/account_notification.html:20 msgid "Account Notification" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:20 #: acct_mgr/templates/jinja2/account_notification.html:22 msgid "" "Set the following options in order to be notified of account creation, " "password reset and account deletion." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:26 #: acct_mgr/templates/jinja2/account_notification.html:27 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:27 #: acct_mgr/templates/jinja2/account_notification.html:30 msgid "" "This is a list of actions which you can enable or disable by [1:checking]" " the [2:checkboxes]." msgstr "" #: acct_mgr/templates/genshi/account_notification.html:33 #: acct_mgr/templates/jinja2/account_notification.html:39 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:39 #: acct_mgr/templates/jinja2/account_notification.html:45 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:45 #: acct_mgr/templates/jinja2/account_notification.html:51 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:49 #: acct_mgr/templates/jinja2/account_notification.html:54 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/genshi/account_notification.html:50 #: acct_mgr/templates/jinja2/account_notification.html:56 msgid "" "Space-separated list of email addresses and/or usernames that get " "notified of the above actions:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:19 #: acct_mgr/templates/jinja2/account_prefs.html:45 msgid "Delete Account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:30 #: acct_mgr/templates/jinja2/account_prefs.html:57 msgid "Delete account" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:49 #: acct_mgr/templates/jinja2/account_prefs.html:22 msgid "Change Password" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:51 #: acct_mgr/templates/jinja2/account_prefs.html:25 msgid "Old Password:" msgstr "" #: acct_mgr/templates/genshi/account_prefs.html:57 #: acct_mgr/templates/jinja2/account_prefs.html:29 msgid "New Password:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:21 #: acct_mgr/templates/jinja2/account_register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/genshi/account_register.html:30 #: acct_mgr/templates/jinja2/account_register.html:36 msgid "Required" msgstr "" #: acct_mgr/templates/genshi/account_register.html:61 #: acct_mgr/templates/jinja2/account_register.html:71 msgid "Optional" msgstr "" #: acct_mgr/templates/genshi/account_register.html:63 #: acct_mgr/templates/jinja2/account_register.html:74 msgid "Name:" msgstr "" #: acct_mgr/templates/genshi/account_register.html:74 #: acct_mgr/templates/jinja2/account_register.html:86 msgid "Create account" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:11 #: acct_mgr/templates/genshi/account_reset_password.html:21 #: acct_mgr/templates/jinja2/account_reset_password.html:7 #: acct_mgr/templates/jinja2/account_reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:22 #: acct_mgr/templates/jinja2/account_reset_password.html:26 msgid "" "If you've forgotten your password, enter your username and email address " "below, and a new password will be sent to you." msgstr "" #: acct_mgr/templates/genshi/account_reset_password.html:40 #: acct_mgr/templates/jinja2/account_reset_password.html:46 msgid "Reset password" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:21 #: acct_mgr/templates/jinja2/account_user_table.html:19 msgid "Name" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:22 #: acct_mgr/templates/jinja2/account_user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:23 #: acct_mgr/templates/jinja2/account_user_table.html:24 msgid "Last Login" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:51 #: acct_mgr/templates/jinja2/account_user_table.html:57 #: acct_mgr/templates/jinja2/account_user_table.html:58 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/genshi/account_user_table.html:58 #: acct_mgr/templates/jinja2/account_user_table.html:70 msgid "Send email" msgstr "" #: acct_mgr/templates/genshi/account_users.html:81 #: acct_mgr/templates/jinja2/account_users.html:18 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/genshi/account_users.html:138 #: acct_mgr/templates/jinja2/account_users.html:78 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/genshi/account_users.html:143 #: acct_mgr/templates/jinja2/account_users.html:86 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:149 #: acct_mgr/templates/genshi/account_users.html:172 #: acct_mgr/templates/jinja2/account_users.html:90 #: acct_mgr/templates/jinja2/account_users.html:123 msgid "Update" msgstr "" #. Position (# to # of #) or total, if not paginating #: acct_mgr/templates/genshi/account_users.html:155 #: acct_mgr/templates/jinja2/account_users.html:100 #, python-format msgid "Accounts [1:(%(count)s)]" msgstr "" #: acct_mgr/templates/genshi/account_users.html:161 #: acct_mgr/templates/genshi/account_users.html:162 #: acct_mgr/templates/jinja2/account_users.html:107 #: acct_mgr/templates/jinja2/account_users.html:108 msgid "Filters" msgstr "" #: acct_mgr/templates/genshi/account_users.html:163 #: acct_mgr/templates/jinja2/account_users.html:109 msgid "Status" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:148 msgid "Send another random password" msgstr "" #: acct_mgr/templates/genshi/account_users.html:186 #: acct_mgr/templates/jinja2/account_users.html:149 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:152 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:190 #: acct_mgr/templates/jinja2/account_users.html:153 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:156 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/genshi/account_users.html:193 #: acct_mgr/templates/jinja2/account_users.html:157 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/genshi/account_users.html:197 #: acct_mgr/templates/jinja2/account_users.html:161 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:11 #: acct_mgr/templates/genshi/account_verify_email.html:21 #: acct_mgr/templates/jinja2/account_verify_email.html:7 #: acct_mgr/templates/jinja2/account_verify_email.html:23 msgid "Verify Email" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:23 #: acct_mgr/templates/jinja2/account_verify_email.html:26 #, python-format msgid "" "An email was sent to %(email)s with a token to verify your new address. " "Please check your email and enter the token in the form below." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:29 #: acct_mgr/templates/jinja2/account_verify_email.html:33 msgid "You can [1:change your email address], if it is incorrect." msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:34 #: acct_mgr/templates/jinja2/account_verify_email.html:41 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:39 #: acct_mgr/templates/jinja2/account_verify_email.html:47 msgid "Verify" msgstr "" #: acct_mgr/templates/genshi/account_verify_email.html:41 #: acct_mgr/templates/jinja2/account_verify_email.html:49 msgid "Resend Email" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:32 msgid "Email not verified" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:34 msgid "Approval pending" msgstr "" #: acct_mgr/templates/jinja2/account_user_table.html:36 msgid "Approval revoked" msgstr "" trunk/acct_mgr/macros.py000644 000000 000000 00000013747 14413553530 014023 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann from trac.core import Component, implements from trac.perm import PermissionSystem from trac.util.html import html as tag from trac.web.chrome import Chrome from trac.wiki.api import IWikiMacroProvider, WikiSystem, parse_args from trac.wiki.formatter import format_to_oneliner from .admin import fetch_user_data from .api import AccountManager, tag_ from .guard import AccountGuard class AccountManagerWikiMacros(Component): """Provides wiki macros related to Trac accounts/authenticated users.""" implements(IWikiMacroProvider) # IWikiMacroProvider def get_macros(self): yield 'ProjectStats' yield 'UserQuery' def get_macro_description(self, name): if name == 'ProjectStats': return """Wiki macro listing some generic Trac statistics. This macro accepts a comma-separated list of keyed parameters, in the form "key=value". Valid keys: * '''wiki''' -- statistics for TracWiki, values: * ''count'' -- show wiki page count * '''prefix''' -- use with ''wiki'' key: only names that start with that prefix are included 'count' is also recognized without prepended key name. """ elif name == 'UserQuery': return """Wiki macro listing users that match certain criteria. This macro accepts a comma-separated list of keyed parameters, in the form "key=value". Valid keys: * '''perm''' -- show only that users, a permission action given by ''value'' has been granted to * '''locked''' -- retrieve users, who's account has/has not been locked depending on boolean value * '''format''' -- output style: 'count', 'list' or comma-separated values (default) * '''nomatch''' -- replacement wiki markup that is displayed, if there's no match and output style isn't 'count' either 'count' is also recognized without prepended key name. Other non-keyed parameters are: * '''locked''' -- alias for 'locked=True' * '''visit''' -- show a list of accounts with last-login information, only available in table format * '''name''' -- forces replacement of matching username with their corresponding full names, if available; adds a full names column if combined with 'visit' * '''email''' -- append email address to usernames, if available Requires `USER_VIEW` permission for output in any format other then 'count'. A misc placeholder with this statement is presented to unprivileged users. """ def expand_macro(self, formatter, name, content): env = formatter.env req = formatter.req if not content: args = [] kw = {} else: args, kw = parse_args(content) if name == 'ProjectStats': if 'wiki' in kw: prefix = 'prefix' in kw and kw['prefix'] or None wiki = WikiSystem(env) if kw['wiki'] == 'count' or 'count' in args: return tag(len(list(wiki.get_pages(prefix)))) elif name == 'UserQuery': msg_no_perm = tag.p(tag_("(required %(perm)s missing)", perm=tag.strong('USER_VIEW')), class_='hint') if 'perm' in kw: perm_sys = PermissionSystem(self.env) users = perm_sys.get_users_with_permission(kw['perm'].upper()) else: acct_mgr = AccountManager(env) users = list(set(acct_mgr.get_users())) if 'locked' in kw or 'locked' in args: guard = AccountGuard(env) locked = [] for user in users: if guard.user_locked(user): locked.append(user) if kw.get('locked', 'True').lower() in ('true', 'yes', '1'): users = locked else: users = list(set(users) - set(locked)) elif 'visit' in kw or 'visit' in args: if 'USER_VIEW' not in req.perm: return msg_no_perm cols = [] data = {'accounts': fetch_user_data(env, req), 'cls': 'wiki'} for col in ('email', 'name'): if col in args: cols.append(col) data['cols'] = cols return Chrome(env).render_template( req, 'account_user_table.html', data, 'text/html', True) if kw.get('format') == 'count' or 'count' in args: return tag(len(users)) if 'USER_VIEW' not in req.perm: return msg_no_perm if 'email' in args or 'name' in args: # Replace username with full name, add email if available. for username, name, email in self.env.get_known_users(): if username in users: if 'name' not in args or name is None: name = username if 'email' in args and email is not None: email = ''.join(['<', email, '>']) name = ' '.join([name, email]) if not username == name: users.pop(users.index(username)) users.append(name) if not users and 'nomatch' in kw: return format_to_oneliner(env, formatter.context, kw['nomatch']) users = sorted(users) if kw.get('format') == 'list': return tag.ul([tag.li(Chrome(env).format_author(req, user)) for user in users]) else: # Default output format: comma-separated list. return tag(', '.join([Chrome(env).format_author(req, user) for user in users])) trunk/acct_mgr/model.py000644 000000 000000 00000051620 14413553530 013627 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2012-2014 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # import hashlib import re from trac.util import as_int from trac.util.text import exception_to_unicode, to_unicode from .api import GenericUserIdChanger from .compat import iteritems _USER_KEYS = { 'auth_cookie': 'name', 'permission': 'username', } def _get_cc_list(cc_value): """Parse cc list. Derived from from trac.ticket.model._fixup_cc_list (Trac-1.0). """ cclist = [] for cc in re.split(r'[;,\s]+', cc_value): if cc and cc not in cclist: cclist.append(cc) return cclist def _get_db_exc(env): exc = env.db_exc return exc.InternalError, exc.OperationalError, exc.ProgrammingError class PrimitiveUserIdChanger(GenericUserIdChanger): """Handle the simple owner-column replacement case.""" abstract = True column = 'author' table = None # IUserIdChanger method def replace(self, old_uid, new_uid): result = 0 try: with self.env.db_transaction as db: for count, in db(""" SELECT COUNT(*) FROM %s WHERE %s=%%s """ % (self.table, self.column), (old_uid,)): if count: db("UPDATE %s SET %s=%%s WHERE %s=%%s" % (self.table, self.column, self.column), (new_uid, old_uid)) result = int(count) self.log.debug(self.msg(old_uid, new_uid, self.table, self.column, result='%s time(s)' % result)) except _get_db_exc(self.env) as e: result = exception_to_unicode(e) msg = 'failed: %s' % exception_to_unicode(e, traceback=True) self.log.debug(self.msg(old_uid, new_uid, self.table, self.column, result=msg)) return dict(error={(self.table, self.column, None): result}) return {(self.table, self.column, None): result} class UniqueUserIdChanger(PrimitiveUserIdChanger): """Handle columns, where user IDs are an unique key or part of it.""" abstract = True column = 'sid' # IUserIdChanger method def replace(self, old_uid, new_uid): try: self.env.db_transaction(""" DELETE FROM %s WHERE %s=%%s """ % (self.table, self.column), (new_uid,)) except _get_db_exc(self.env) as e: result = exception_to_unicode(e) msg = 'failed: %s' % exception_to_unicode(e, traceback=True) self.log.debug(self.msg(old_uid, new_uid, self.table, self.column, result=msg)) return dict(error={(self.table, self.column, None): result}) return super(UniqueUserIdChanger, self).replace(old_uid, new_uid) class AttachmentUserIdChanger(PrimitiveUserIdChanger): """Change user IDs in attachments.""" table = 'attachment' class AuthCookieUserIdChanger(UniqueUserIdChanger): """Change user IDs for authentication cookies.""" column = 'name' table = 'auth_cookie' class ComponentUserIdChanger(PrimitiveUserIdChanger): """Change user IDs in components.""" column = 'owner' table = 'component' class PermissionUserIdChanger(UniqueUserIdChanger): """Change user IDs for permissions.""" column = 'username' table = 'permission' class ReportUserIdChanger(PrimitiveUserIdChanger): """Change user IDs in reports.""" table = 'report' class RevisionUserIdChanger(PrimitiveUserIdChanger): """Change user IDs in changesets.""" table = 'revision' class TicketUserIdChanger(PrimitiveUserIdChanger): """Change all user IDs in tickets.""" table = 'ticket' # IUserIdChanger method def replace(self, old_uid, new_uid): results = {} with self.env.db_transaction as db: self.column = 'owner' result = super(TicketUserIdChanger, self).\ replace(old_uid, new_uid) if 'error' in result: return result results.update(result) self.column = 'reporter' result = super(TicketUserIdChanger, self).\ replace(old_uid, new_uid) if 'error' in result: return result results.update(result) # Replace user ID in Cc ticket column. result = 0 for row in db(""" SELECT id,cc FROM ticket WHERE cc %s """ % db.like(), ('%' + db.like_escape(old_uid) + '%',)): cc = _get_cc_list(row[1]) for i in [i for i, r in enumerate(cc) if r == old_uid]: cc[i] = new_uid try: db("UPDATE ticket SET cc=%s WHERE id=%s", (', '.join(cc), int(row[0]))) result += 1 except _get_db_exc(self.env) as e: result = exception_to_unicode(e) msg = 'failed: %s' \ % exception_to_unicode(e, traceback=True) self.log.debug( self.msg(old_uid, new_uid, self.table, 'cc', result=msg)) return dict(error={(self.table, 'cc', None): result}) self.log.debug(self.msg(old_uid, new_uid, self.table, 'cc', result='%s time(s)' % result)) results.update({(self.table, 'cc', None): result}) table = 'ticket_change' self.column = 'author' self.table = table result = super(TicketUserIdChanger, self).replace(old_uid, new_uid) if 'error' in result: return result results.update(result) constraint = "field='owner'|'reporter'" for column in ('oldvalue', 'newvalue'): for count, in db(""" SELECT COUNT(*) FROM %s WHERE %s=%%s AND (field='owner' OR field='reporter') """ % (table, column), (old_uid,)): result = int(count) if result: try: db(""" UPDATE %s SET %s=%%s WHERE %s=%%s AND (field='owner' OR field='reporter') """ % (table, column, column), (new_uid, old_uid)) except _get_db_exc(self.env) as e: result = exception_to_unicode(e) msg = 'failed: %s' % \ exception_to_unicode(e, traceback=True) self.log.debug( self.msg(old_uid, new_uid, table, column, constraint, result=msg)) return dict(error={(self.table, column, constraint): result}) self.log.debug(self.msg(old_uid, new_uid, table, column, constraint, result='%s time(s)' % result)) results.update({(table, column, constraint): result}) # Replace user ID in Cc ticket field changes too. constraint = "field='cc'" for column in ('oldvalue', 'newvalue'): result = 0 for row in db(""" SELECT ticket,time,%s FROM %s WHERE field='cc' AND %s %s """ % (column, table, column, db.like()), ('%' + db.like_escape(old_uid) + '%',)): cc = _get_cc_list(row[2]) for i in [i for i, r in enumerate(cc) if r == old_uid]: cc[i] = new_uid try: db(""" UPDATE %s SET %s=%%s WHERE ticket=%%s AND time=%%s AND field='cc' """ % (table, column), (', '.join(cc), int(row[0]), int(row[1]))) result += 1 except _get_db_exc(self.env) as e: result = exception_to_unicode(e) msg = 'failed: %s' % \ exception_to_unicode(e, traceback=True) self.log.debug( self.msg(old_uid, new_uid, table, column, constraint, result=msg)) return dict(error={(self.table, column, constraint): result}) self.log.debug(self.msg(old_uid, new_uid, table, column, constraint, result='%s time(s)' % result)) results.update({(table, column, constraint): result}) return results class WikiUserIdChanger(PrimitiveUserIdChanger): """Change user IDs in wiki pages.""" table = 'wiki' # Public functions def email_associated(env, email): """Returns whether an authenticated user account with that email address exists. """ for _ in env.db_query(""" SELECT value FROM session_attribute WHERE authenticated=1 AND name='email' AND value=%s """, (email,)): return True return False def email_verified(env, user, email): """Returns whether the account and email has been verified. """ if not user_known(env, user) or not email: return None # Nothing more to check here. return email_verification_token(env, user, email) is None def email_verification_token(env, user, email): """Returns the email verification token, or `None` if the email has been verified. Returns an empty string if the email verification token has been sent to an address different from the one currently set in the session preferences. """ with env.db_query as db: for row in db(""" SELECT value FROM session_attribute WHERE sid=%s AND name='email_verification_sent_to' """, (user,)): env.log.debug('AcctMgr:model:email_verified for user "%s", email ' '"%s": %s', user, email, row[0]) if row[0] != email: # verification has been sent to different email address return '' for row in db(""" SELECT value FROM session_attribute WHERE sid=%s AND name='email_verification_token' """, (user,)): env.log.debug('AcctMgr:model:email_verified for user "%s", email ' '"%s": %s', user, email, row[0]) return row[0] def user_known(env, user): """Returns whether the user has ever been authenticated before.""" for _ in env.db_query(""" SELECT 1 FROM session WHERE authenticated=1 AND sid=%s """, (user,)): return True return False # Utility functions def change_uid(env, old_uid, new_uid, changers, attr_overwrite): """Handle user ID transition for all supported Trac realms.""" with env.db_transaction as db: # Handle the single unique Trac user ID reference first. db(""" DELETE FROM session WHERE authenticated=1 AND sid=%s """, (new_uid,)) db(""" INSERT INTO session (sid,authenticated,last_visit) VALUES (%s,1,(SELECT last_visit FROM session WHERE sid=%s)) """, (new_uid, old_uid)) # Process related attributes. attr_count = _copy_user_attributes(env, old_uid, new_uid, attr_overwrite) # May want to keep attributes, if not copied completely. if attr_overwrite: del_user_attribute(env, old_uid) results = dict() results.update({('session_attribute', 'sid', None): attr_count}) for changer in changers: result = changer.replace(old_uid, new_uid) if 'error' in result: return result results.update(result) # Finally delete old user ID reference after moving everything else. db(""" DELETE FROM session WHERE authenticated=1 AND sid=%s """, (old_uid,)) results.update({('session', 'sid', None): 1}) if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() return results def _copy_user_attributes(env, username, new_uid, overwrite): """Duplicate attributes for another user, optionally preserving existing values. Returns the number of changed attributes. """ count = 0 with env.db_transaction as db: attrs = get_user_attribute(env, username) if attrs and username in attrs and attrs[username].get(1): attrs_new = get_user_attribute(env, new_uid) if not (attrs_new and new_uid in attrs_new and attrs_new[new_uid].get(1)): # No attributes found. attrs_new = None # Remove value id hashes. attrs[username][1].pop('id') for attribute, value in iteritems(attrs[username][1]): if not (attrs_new and attribute in attrs_new[new_uid][1]): db(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,1,%s,%s) """, (new_uid, attribute, value)) count += 1 elif overwrite: db(""" UPDATE session_attribute SET value=%s WHERE sid=%s AND authenticated=1 AND name=%s """, (value, new_uid, attribute)) count += 1 if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() return count def get_user_attribute(env, username=None, authenticated=1, attribute=None, value=None): """Return user attributes.""" all_cols = ('sid', 'authenticated', 'name', 'value') columns = [] constraints = [] if username is not None: columns.append('sid') constraints.append(username) if authenticated is not None: columns.append('authenticated') constraints.append(as_int(authenticated, 0, min=0, max=1)) if attribute is not None: columns.append('name') constraints.append(attribute) if value is not None: columns.append('value') constraints.append(to_unicode(value)) sel_columns = [col for col in all_cols if col not in columns] if len(sel_columns) == 0: # No variable left, so only COUNTing is as a sensible task here. sel_stmt = 'COUNT(*)' else: if 'sid' not in sel_columns: sel_columns.append('sid') sel_stmt = ','.join(sel_columns) if len(columns) > 0: where_stmt = ''.join(['WHERE ', '=%s AND '.join(columns), '=%s']) else: where_stmt = '' sql = """ SELECT %s FROM session_attribute %s """ % (sel_stmt, where_stmt) sql_args = tuple(constraints) def unique_id(*values): # Generate sha1 digest from NUL value1 NUL value2 NUL value3 NUL m = hashlib.sha1() m.update(b'\0') for value in values: if isinstance(value, str): value = value.encode('utf-8') elif not isinstance(value, str): value = bytes([value]) m.update(value) m.update(b'\0') return m.hexdigest() res = {} for row in env.db_query(sql, sql_args): if sel_stmt == 'COUNT(*)': return [row[0]] res_row = {} res_row.update(zip(sel_columns, row)) # Merge with constraints, that are constants for this SQL query. res_row.update(zip(columns, constraints)) account = res_row.pop('sid') authenticated = res_row.pop('authenticated') # Create single unique attribute ID. row_id = unique_id(account, authenticated, res_row.get('name')) if account in res: if authenticated in res[account]: res[account][authenticated].update({ res_row['name']: res_row['value'] }) res[account][authenticated]['id'].update({ res_row['name']: row_id }) else: res[account][authenticated] = { res_row['name']: res_row['value'], 'id': {res_row['name']: row_id} } # Create account ID for additional authentication state. res[account]['id'][authenticated] = unique_id(account, authenticated) else: # Create account ID for authentication state. res[account] = { authenticated: { res_row['name']: res_row['value'], 'id': {res_row['name']: row_id} }, 'id': {authenticated: unique_id(account, authenticated)} } return res def prime_auth_session(env, username): """Prime session for registered users before initial login. """ with env.db_transaction as db: for count, in db(""" SELECT COUNT(*) FROM session WHERE sid=%s AND authenticated=1 """, (username,)): if not count: db(""" INSERT INTO session (sid,authenticated,last_visit) VALUES (%s,1,0) """, (username,)) if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() def set_user_attribute(env, username, attribute, value): """Set or update a Trac user attribute within an atomic db transaction.""" sql = "WHERE sid=%s AND authenticated=1 AND name=%s" with env.db_transaction as db: db(""" UPDATE session_attribute SET value=%s """ + sql, (value, username, attribute)) for _, in db(""" SELECT value FROM session_attribute """ + sql, (username, attribute)): break else: db(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,1,%s,%s) """, (username, attribute, value)) if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() def del_user_attribute(env, username=None, authenticated=1, attribute=None): """Delete one or more Trac user attributes for one or more users.""" columns = [] constraints = [] if username is not None: columns.append('sid') constraints.append(username) if authenticated is not None: columns.append('authenticated') constraints.append(as_int(authenticated, 0, min=0, max=1)) if attribute is not None: columns.append('name') constraints.append(attribute) if len(columns) > 0: where_stmt = ''.join(['WHERE ', '=%s AND '.join(columns), '=%s']) else: where_stmt = '' sql = "DELETE FROM session_attribute %s" % where_stmt sql_args = tuple(constraints) env.db_transaction(sql, sql_args) if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() def delete_user(env, user): # Delete session attributes, session and any custom permissions # set for the user. with env.db_transaction as db: for table in ['auth_cookie', 'session_attribute', 'session', 'permission']: # Pre-seed, since variable table and column names aren't allowed # as SQL arguments (security measure against SQL injections). sql = """ DELETE FROM %s WHERE %s=%%s """ % (table, _USER_KEYS.get(table, 'sid')) db(sql, (user,)) env.log.debug("Purged session data and permissions for user '%s'", user) if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() def last_seen(env, user=None): sql = """ SELECT sid,last_visit FROM session WHERE authenticated=1 """ if user: sql += " AND sid=%s" return list(env.db_query(sql, (user,))) else: return list(env.db_query(sql)) trunk/acct_mgr/notification.py000644 000000 000000 00000020100 14416345315 015205 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2008 Pedro Algarvio # Copyright (C) 2013-2015 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Pedro Algarvio from trac.admin.api import IAdminPanelProvider from trac.config import ListOption from trac.core import Component, TracError, implements from trac.notification.api import ( IEmailDecorator, INotificationFormatter, NotificationEvent, NotificationSystem) from trac.notification.mail import RecipientMatcher, set_header from trac.util.text import exception_to_unicode from trac.util.translation import deactivate, dgettext, reactivate from trac.web.chrome import Chrome from .api import IAccountChangeListener, _ from .compat import iteritems, use_jinja2 from .util import i18n_tag class NotificationError(TracError): pass class AccountChangeEvent(NotificationEvent): realm = 'account' def __init__(self, category, username, data): super(AccountChangeEvent, self).__init__(self.realm, category, None, None, username) self.data = data class AccountChangeListener(Component): implements(IAccountChangeListener) _notify_actions = ListOption( 'account-manager', 'notify_actions', [], doc="""Comma separated list of notification actions. Available actions are 'new', 'change', 'delete'. """) _account_change_recipients = ListOption( 'account-manager', 'account_changes_notify_addresses', [], doc="""Email addresses to notify on account created, password changed and account deleted. """) action_category_map = { 'new': 'created', 'change': 'password changed', 'delete': 'deleted' } def __init__(self): self._notify_categories = [category for action, category in iteritems(self.action_category_map) if action in self._notify_actions] # IAccountChangeListener methods def user_created(self, username, password): data = {'password': password} self._send_notification('created', username, data) def user_password_changed(self, username, password): data = {'password': password} self._send_notification('password changed', username, data) def user_deleted(self, username): self._send_notification('deleted', username) def user_password_reset(self, username, email, password): data = {'password': password, 'email': email} self._send_notification('password reset', username, data) def user_email_verification_requested(self, username, token): data = {'token': token} self._send_notification('verify email', username, data) def user_registration_approval_required(self, username): self._send_notification('verify email', username) # Helper method def _send_notification(self, category, username, data=None): event = AccountChangeEvent(category, username, data) subscriptions = self._subscriptions(event) try: NotificationSystem(self.env).distribute_event(event, subscriptions) except Exception as e: self.log.error("Failure sending notification for '%s' for user " "%s: %s", category, username, exception_to_unicode(e)) raise NotificationError(e) def _subscriptions(self, event): matcher = RecipientMatcher(self.env) transport_and_format = ('email', 'text/plain') if event.category in ('verify email', 'password reset'): recipient = matcher.match_recipient(event.author) if recipient: yield recipient + transport_and_format elif event.category in self._notify_categories: for r in self._account_change_recipients: recipient = matcher.match_recipient(r) if recipient: yield recipient + transport_and_format class AccountNotificationFormatter(Component): implements(IEmailDecorator, INotificationFormatter) realm = 'account' # IEmailDecorator methods def decorate_message(self, event, message, charset): if event.realm != self.realm: return # Someday replace with method added in trac:#13208 prefix = self.config.get('notification', 'smtp_subject_prefix') subject = '[%s]' % self.env.project_name \ if prefix == '__default__' else prefix if event.category in ('created', 'password changed', 'deleted'): subject += " Account %s: %s" % (event.category, event.author) elif event.category == 'password reset': subject += " Account password reset: %s" % event.author elif event.category == 'verify email': subject += " Account email verification: %s" % event.author set_header(message, 'Subject', subject, charset) # INotificationFormatter methods def get_supported_styles(self, transport): yield 'text/plain', self.realm def format(self, transport, style, event): if event.realm != self.realm: return data = { 'account': {'username': event.author}, 'login': {'link': self.env.abs_href.login()}, } if event.category in ('created', 'password changed', 'deleted'): data['account']['action'] = event.category template_name = 'account_user_changes_email.txt' elif event.category == 'password reset': data['account']['password'] = event.data['password'] template_name = 'account_reset_password_email.txt' elif event.category == 'verify email': token = event.data['token'] data['account']['token'] = token data['verify'] = { 'link': self.env.abs_href.verify_email(token=token, verify=1) } template_name = 'account_verify_email.txt' t = deactivate() # don't translate the e-mail stream try: return self._format_body(data, template_name) finally: reactivate(t) # Internal methods def _format_body(self, data, template_name): chrome = Chrome(self.env) data = chrome.populate_data(None, data) if use_jinja2: template = chrome.load_template(template_name, text=True) body = chrome.render_template_string(template, data, text=True) return body.encode('utf-8') else: template = chrome.load_template(template_name, method='text') stream = template.generate(**data) return stream.render('text', encoding='utf-8') class AccountChangeNotificationAdminPanel(Component): implements(IAdminPanelProvider) # IAdminPageProvider methods def get_admin_panels(self, req): if 'ACCTMGR_CONFIG_ADMIN' in req.perm: yield ('accounts', _("Accounts"), 'notification', _("Notification")) def render_admin_panel(self, req, cat, page, path_info): if page == 'notification': return self._do_config(req) def _do_config(self, req): cfg = self.config['account-manager'] if req.method == 'POST': cfg.set('account_changes_notify_addresses', ' '.join(req.args.getlist('notify_addresses'))) cfg.set('notify_actions', ','.join(req.args.getlist('notify_actions'))) self.config.save() req.redirect(req.href.admin('accounts', 'notification')) notify_addresses = cfg.getlist('account_changes_notify_addresses', sep=' ') notify_actions = cfg.getlist('notify_actions') data = { 'i18n_tag': i18n_tag, 'notify_actions': notify_actions, 'notify_addresses': notify_addresses } return 'account_notification.html', data trunk/acct_mgr/opt/000755 000000 000000 00000000000 14711041732 012750 5ustar00000000 000000 trunk/acct_mgr/opt/__init__.py000644 000000 000000 00000000000 12121353740 015045 0ustar00000000 000000 trunk/acct_mgr/opt/announcer/000755 000000 000000 00000000000 14413553530 014743 5ustar00000000 000000 trunk/acct_mgr/opt/announcer/__init__.py000644 000000 000000 00000000000 12121353740 017035 0ustar00000000 000000 trunk/acct_mgr/opt/announcer/uid_chg.py000644 000000 000000 00000003661 14413553530 016725 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann from announcer.api import AnnouncementSystem from ...api import _ from ...model import PrimitiveUserIdChanger class TracAnnouncerUserIdChanger(PrimitiveUserIdChanger): """Change user IDs for TracAnnouncer tables, schema version > 2.""" enabled = False def __init__(self): try: schema_ver = AnnouncementSystem(self.env).get_schema_version() if schema_ver > 2: # Support only current db schema versions. # For older ones at least information stored in # 'session_attribute' is already handled by the # respective user ID changer component for Trac core. self.enabled = True except AttributeError: # Some older plugin version found. pass # IUserIdChanger method def replace(self, old_uid, new_uid): if not self.enabled: plugin = 'TracAnnouncer' result = _("Unsupported db schema version, please update " "%(plugin)s to a recent version.", plugin=plugin) return dict(error={('subscriptions', 'sid', None): result}) results = {} self.column = 'sid' self.table = 'subscription' result = super(TracAnnouncerUserIdChanger, self).\ replace(old_uid, new_uid) if 'error' in result: return result results.update(result) self.table = 'subscription_attribute' result = super(TracAnnouncerUserIdChanger, self).\ replace(old_uid, new_uid) if 'error' in result: return result results.update(result) return results trunk/acct_mgr/opt/radius.py000644 000000 000000 00000011031 14413553530 014610 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2010 Chris Shenton # Copyright (C) 2015 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Chris Shenton from io import StringIO from trac.config import IntOption, Option from trac.core import Component, implements from trac.util.text import unicode_passwd from ..api import IPasswordStore DICTIONARY = u""" ATTRIBUTE User-Name 1 string ATTRIBUTE User-Password 2 string encrypt=1 """ class RadiusAuthStore(Component): """[extra] Provides RADIUS authentication support. Custom configuration is mandatory. Provide IP address and authentication port of your RADIUS server. RADIUS uses UDP port 1812 for authentication as per IETF RFC2865, but old servers may still use 1645. You must also supply a shared secret, which the RADIUS server admin must disclose to you. """ implements(IPasswordStore) radius_server = Option('account-manager', 'radius_server', doc="RADIUS server IP address, required.") radius_authport = IntOption('account-manager', 'radius_authport', 1812, doc="RADIUS server authentication port, defaults to 1812.") # Conceal shared secret. radius_secret = unicode_passwd(Option('account-manager', 'radius_secret', doc="RADIUS server shared secret, required.")) def get_users(self): """Returns an iterable of the known usernames.""" return [] def has_user(self, user): """Returns whether the user account exists.""" # DEVEL: Shall we really deny knowing a specified user? return False def check_password(self, username, password): """Checks if the password is valid for the user.""" # Handle pyrad lib absence and upstream incompatibilities gracefully. try: import pyrad.packet from pyrad.client import Client, Timeout from pyrad.dictionary import Dictionary except ImportError as e: self.log.error("RADIUS auth store could not import pyrad, " "need to install the egg: %s", e) return self.log.debug("RADIUS server=%s:%s (authport), secret='%s'", self.radius_server, self.radius_authport, self.radius_secret) self.log.debug("RADIUS auth callenge for username=%s password=%s", username, unicode_passwd(password)) client = Client(server=self.radius_server, authport=self.radius_authport, secret=self.radius_secret.encode('utf-8'), dict=Dictionary(StringIO(DICTIONARY)), ) req = client.CreateAuthPacket(code=pyrad.packet.AccessRequest, User_Name=username.encode('utf-8')) req['User-Password'] = req.PwCrypt(password) self.log.debug("RADIUS auth sending packet req=%s", req) try: reply = client.SendPacket(req) except Timeout as e: self.log.error("RADIUS timeout contacting server=%s:%s (%s)", self.radius_server, self.radius_authport, e) return # DEVEL: Too broad, narrow down that exception handler scope. except Exception as e: self.log.error("RADIUS error while using server=%s:%s: (%s)", self.radius_server, self.radius_authport, e) return self.log.debug("RADIUS authentication reply code=%s", reply.code) if pyrad.packet.AccessAccept == reply.code: self.log.debug("RADIUS Accept for username=%s", username) return True # Rejection of login attempt, stopping further auth store interaction. elif pyrad.packet.AccessReject == reply.code: self.log.debug("RADIUS Reject for username=%s", username) return False # DEVEL: Any way to alert users that RSA token is in 'Next Token' mode # so they know to fix it? elif pyrad.packet.AccessChallenge == reply.code: self.log.info("RADIUS returned Challenge for username=%s; " "on RSA servers this indicates 'Next Token' mode.", username) return else: self.log.warning("RADIUS Unknown reply code (%s) for username=%s", reply.code, username) return trunk/acct_mgr/opt/tests/000755 000000 000000 00000000000 14711041732 014112 5ustar00000000 000000 trunk/acct_mgr/opt/tests/__init__.py000644 000000 000000 00000003271 14406253616 016235 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (c) 2013-2015 Steffen Hoffmann # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # import unittest def test_suite(): msg_fail = 'Issue with %s (%s): skipping acct_mgr.opt.tests.%s' suite = unittest.TestSuite() try: import acct_mgr.opt.tests.announcer except ImportError as e: print(msg_fail % ('UID changer for TracAnnouncer', e, 'announcer')) else: suite.addTest(acct_mgr.opt.tests.announcer.test_suite()) try: import acct_mgr.opt.tests.tracforms except ImportError as e: print(msg_fail % ('UID changer for TracForms', e, 'tracforms')) else: suite.addTest(acct_mgr.opt.tests.tracforms.test_suite()) try: import acct_mgr.opt.tests.tracscreenshots except ImportError as e: print(msg_fail % ('UID changer for TracScreenshots', e, 'tracscreenshots')) else: suite.addTest(acct_mgr.opt.tests.tracscreenshots.test_suite()) try: import acct_mgr.opt.tests.tracvote except ImportError as e: print(msg_fail % ('UID changer for TracVote', e, 'tracvote')) else: suite.addTest(acct_mgr.opt.tests.tracvote.test_suite()) try: import acct_mgr.opt.tests.radius except ImportError as e: print(msg_fail % ('RADIUS auth', e, 'radius')) else: suite.addTest(acct_mgr.opt.tests.radius.test_suite()) return suite # Start test suite directly from command line like so: # $> PYTHONPATH=$PWD python announcer/opt/tests/__init__.py if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/opt/tests/radius.py000644 000000 000000 00000003717 14711041732 015763 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2015 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann import os.path import shutil import tempfile import unittest from trac.test import EnvironmentStub from ..radius import RadiusAuthStore from ...tests import makeSuite class _BaseTestCase(unittest.TestCase): def setUp(self): self.basedir = os.path.realpath(tempfile.mkdtemp()) self.env = EnvironmentStub(default_data=True, enable= ['trac.*', 'acct_mgr.api.*', 'acct_mgr.opt.radius.RadiusAuthStore']) self.env.path = os.path.join(self.basedir, 'trac-tempenv') os.mkdir(self.env.path) def tearDown(self): shutil.rmtree(self.basedir) class RadiusAuthTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.env.config.set('account-manager', 'password_store', 'RadiusAuthStore') self.env.config.set('account-manager', 'radius_secret', 'shared_secret') self.store = RadiusAuthStore(self.env) def test_obfuscate_shared_secret(self): self.assertEqual(set(['*']), set([c for c in repr(self.store.radius_secret)])) def test_get_users(self): self.assertEqual([], self.store.get_users()) def test_has_user(self): self.assertFalse(self.store.has_user('user')) def test_check_password(self): self.assertEqual(None, self.store.check_password('user', 'password')) def test_update_password(self): self.assertFalse(hasattr(self.store, 'set_password')) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(RadiusAuthTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/opt/tracforms/000755 000000 000000 00000000000 14413553530 014753 5ustar00000000 000000 trunk/acct_mgr/opt/tracforms/__init__.py000644 000000 000000 00000000000 12121353740 017045 0ustar00000000 000000 trunk/acct_mgr/opt/tracforms/uid_chg.py000644 000000 000000 00000003532 14413553530 016732 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann from tracforms.tracdb import DBComponent from ...api import _ from ...model import PrimitiveUserIdChanger class TracFormsUserIdChanger(PrimitiveUserIdChanger): """Change user IDs for TracForms tables, schema version > 12.""" enabled = False def __init__(self): try: schema_ver = int( DBComponent(self.env).get_installed_version(None)) if schema_ver > 12: # Support only current db schema versions. self.enabled = True except ValueError: # Some older plugin version found. pass # IUserIdChanger method def replace(self, old_uid, new_uid): if not self.enabled: plugin = 'TracForms' result = _("Unsupported db schema version, please update " "%(plugin)s to a recent version.", plugin=plugin) return dict(error={('forms', 'author', None): result}) results = dict() self.table = 'forms' result = super(TracFormsUserIdChanger, self).replace(old_uid, new_uid) if 'error' in result: return result results.update(result) self.table = 'forms_fields' result = super(TracFormsUserIdChanger, self).replace(old_uid, new_uid) if 'error' in result: return result results.update(result) self.table = 'forms_history' result = super(TracFormsUserIdChanger, self).replace(old_uid, new_uid) if 'error' in result: return result results.update(result) return results trunk/acct_mgr/opt/tracscreenshots/000755 000000 000000 00000000000 14413553530 016165 5ustar00000000 000000 trunk/acct_mgr/opt/tracscreenshots/__init__.py000644 000000 000000 00000000000 12121353740 020257 0ustar00000000 000000 trunk/acct_mgr/opt/tracscreenshots/uid_chg.py000644 000000 000000 00000000717 14413553530 020146 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann from ...model import PrimitiveUserIdChanger class TracScreenshotsUserIdChanger(PrimitiveUserIdChanger): """Change user IDs for TracScreenshots table.""" table = 'screenshot' trunk/acct_mgr/opt/tracvote/000755 000000 000000 00000000000 14413553530 014602 5ustar00000000 000000 trunk/acct_mgr/opt/tracvote/__init__.py000644 000000 000000 00000000000 12121353740 016674 0ustar00000000 000000 trunk/acct_mgr/opt/tracvote/uid_chg.py000644 000000 000000 00000000724 14413553530 016561 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann from ...model import PrimitiveUserIdChanger class TracVoteUserIdChanger(PrimitiveUserIdChanger): """Change user IDs for TracVote table.""" column = 'username' table = 'votes' trunk/acct_mgr/pwhash.py000644 000000 000000 00000014553 14413553530 014025 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2007 Matthew Good # Copyright (C) 2011 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import base64 import hashlib try: import passlib except ImportError: passlib = None try: import crypt except ImportError: crypt = None from trac.config import Option from trac.core import Component, Interface, implements from .api import _, N_ from .compat import compare_digest, unicode class IPasswordHashMethod(Interface): def generate_hash(user, password): pass def check_hash(user, password, hash): pass class HtPasswdHashMethod(Component): implements(IPasswordHashMethod) hash_type = Option('account-manager', 'db_htpasswd_hash_type', 'crypt', doc="Default hash type of new/updated passwords") def generate_hash(self, user, password): return generate_hash(password, self.hash_type) def check_hash(self, user, password, hash): return check_hash(password, hash) class HtDigestHashMethod(Component): implements(IPasswordHashMethod) realm = Option('account-manager', 'db_htdigest_realm', '', doc=N_("Realm to select relevant htdigest db entries")) def generate_hash(self, user, password): hash_ = htdigest(user, self.realm, password) return '%s:%s' % (self.realm, hash_) def check_hash(self, user, password, hash): return compare_digest(hash, self.generate_hash(user, password)) def htdigest(user, realm, password): p = ':'.join([user, realm, password]).encode('utf-8') return hashlib.md5(p).hexdigest() if passlib: from passlib.context import CryptContext from passlib.hash import bcrypt from .compat import itervalues _passlib_schemes = { 'sha256': 'sha256_crypt', 'sha512': 'sha512_crypt', 'md5': 'apr_md5_crypt', 'crypt': 'des_crypt', } try: bcrypt.get_backend() except passlib.exc.MissingBackendError: pass else: _passlib_schemes['bcrypt'] = 'bcrypt' _passlib_context = CryptContext(schemes=list(itervalues(_passlib_schemes))) if not hasattr(_passlib_context, 'handler'): # passlib 1.5 and early def _passlib_hash(password, scheme): return _passlib_context.encrypt(password, scheme=scheme) elif hasattr(_passlib_context.handler('sha512_crypt'), 'hash'): # passlib 1.7+ def _passlib_hash(password, scheme): handler = _passlib_context.handler(scheme) return handler.hash(password) else: # passlib 1.6 def _passlib_hash(password, scheme): handler = _passlib_context.handler(scheme) return handler.encrypt(password) def _passlib_generate_hash(password, method): if method == 'sha': return _sha_digest(password) if method not in _passlib_schemes: method = 'crypt' scheme = _passlib_schemes[method] return _passlib_hash(password, scheme) def _passlib_check_hash(password, the_hash): if the_hash.startswith('{SHA}'): return compare_digest(the_hash, _sha_digest(password)) try: return _passlib_context.verify(password, the_hash) except ValueError: return False else: _passlib_generate_hash = _passlib_check_hash = None if not crypt: _crypt_generate_hash = _crypt_check_hash = None elif hasattr(crypt, 'methods'): # Python 3 from trac.util import salt, md5crypt def _crypt_methods(): pairs = [ ('crypt', 'METHOD_CRYPT'), ('sha256', 'METHOD_SHA256'), ('sha512', 'METHOD_SHA512'), ('bcrypt', 'METHOD_BLOWFISH'), ] pairs = [(name, getattr(crypt, method, None)) for name, method in pairs] return dict((name, method) for name, method in pairs if method) _crypt_methods = _crypt_methods() def _crypt_generate_hash(password, method): if method == 'md5': return md5crypt(password, salt(), '$apr1$') if method == 'sha': return _sha_digest(password) if method not in _crypt_methods: method = 'crypt' return crypt.crypt(password, crypt.mksalt(_crypt_methods[method])) def _crypt_check_hash(password, the_hash): if the_hash.startswith('$apr1$'): salt = the_hash[6:].split('$', 1)[0] hash_ = md5crypt(password, salt, '$apr1$') elif the_hash.startswith('{SHA}'): hash_ = _sha_digest(password) else: hash_ = crypt.crypt(password, the_hash) return compare_digest(hash_, the_hash) else: # Python 2 from trac.util import salt, md5crypt def _crypt_generate_hash(password, method): password = password.encode('utf-8') \ if isinstance(password, unicode) else password if method == 'md5': return md5crypt(password, salt(2), '$apr1$') if method == 'sha': return _sha_digest(password) return crypt.crypt(password, salt(2)) def _crypt_check_hash(password, the_hash): password = password.encode('utf-8') \ if isinstance(password, unicode) else password if the_hash.startswith('$apr1$'): salt = the_hash[6:].split('$', 1)[0] hash_ = md5crypt(password, salt, '$apr1$') elif the_hash.startswith('{SHA}'): hash_ = _sha_digest(password) else: hash_ = crypt.crypt(password, the_hash) return compare_digest(hash_, the_hash) def _sha_digest(password): digest = hashlib.sha1(password.encode('utf-8')).digest() return u'{SHA}' + unicode(base64.b64encode(digest), 'ascii') def _unavai_error(): return NotImplementedError(_("Neither passlib nor crypt module available")) def _unavai_generate_hash(password, method): raise _unavai_error() def _unavai_check_hash(password, the_hash): raise _unavai_error() if passlib: generate_hash = _passlib_generate_hash check_hash = _passlib_check_hash elif crypt: generate_hash = _crypt_generate_hash check_hash = _crypt_check_hash else: generate_hash = _unavai_generate_hash check_hash = _unavai_check_hash trunk/acct_mgr/pwhash.pyi000644 000000 000000 00000002351 14413553530 014167 0ustar00000000 000000 from trac.core import Component, Interface class IPasswordHashMethod(Interface): def generate_hash(user: str, password: str) -> str: ... def check_hash(user: str, password: str, hash: str) -> bool: ... class HtPasswdHashMethod(Component): def generate_hash(self, user: str, password: str) -> str: ... def check_hash(self, user: str, password: str, hash: str) -> bool: ... class HtDigestHashMethod(Component): def generate_hash(self, user: str, password: str) -> str: ... def check_hash(self, user: str, password: str, hash: str) -> bool: ... def htdigest(user: str, realm: str, password: str) -> str: ... def generate_hash(password: str, method: str) -> str: ... def check_hash(password: str, the_hash: str) -> bool: ... def _sha_digest(password: str) -> str: ... def _passlib_generate_hash(password: str, method: str) -> str: ... def _passlib_check_hash(password: str, the_hash: str) -> bool: ... def _crypt_generate_hash(password: str, method: str) -> str: ... def _crypt_check_hash(password: str, the_hash: str) -> bool: ... def _mksalt(method: str) -> str: ... def _unavai_error(): ... def _unavai_generate_hash(password: str, method: str) -> str: ... def _unavai_check_hash(password: str, the_hash: str) -> bool: ... trunk/acct_mgr/register.py000644 000000 000000 00000070362 14711046500 014352 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2010-2014 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import base64 import os import re try: import secrets except ImportError: secrets = None from trac import perm from trac.config import BoolOption, Option from trac.core import Component, TracError, implements from trac.util.html import html as tag from trac.util.text import exception_to_unicode from trac.web import HTTPBadRequest, auth, chrome from trac.web.main import IRequestFilter, IRequestHandler from .api import (AccountManager, IAccountRegistrationInspector, _, N_, cleandoc_, tag_) from .compat import process_request_compat from .model import email_associated, get_user_attribute, set_user_attribute from .notification import NotificationError from .util import contains_any, i18n_tag if secrets: def _gen_token(): return secrets.token_urlsafe(6) else: def _gen_token(): token = os.urandom(6) token = base64.urlsafe_b64encode(token) return token.decode('ascii') class RegistrationError(TracError): """Exception raised when a registration check fails.""" title = N_("Registration Error") def __init__(self, message, *args, **kwargs): """TracError sub-class with extended i18n support. It eases error initialization with messages optionally including arguments meant for string substitution after deferred translation. """ tb = 'show_traceback' # Care for the 2nd TracError standard keyword argument only. show_traceback = tb in kwargs and kwargs.pop(tb, False) TracError.__init__(self, message, self.title, show_traceback) self.msg_args = args class BasicCheck(Component): implements(IAccountRegistrationInspector) _domain = 'acct_mgr' _description = cleandoc_(""" A collection of basic checks. This includes checking for * emptiness (no user input for username and/or password) * some blacklisted username characters * upper-cased usernames (reserved for Trac permission actions) * some reserved usernames * a username duplicate in configured password stores ''This check is bypassed for requests regarding user's own preferences.'' """) def render_registration_fields(self, req, data): return None, None def validate_registration(self, req): if req.path_info == '/prefs': return acctmgr = AccountManager(self.env) username = acctmgr.handle_username_casing( req.args.get('username', '').strip()) if not username: raise RegistrationError(_("Username cannot be empty.")) # Always exclude some special characters, i.e. # ':' can't be used in HtPasswdStore # '[' and ']' can't be used in SvnServePasswordStore blacklist = acctmgr.username_char_blacklist if contains_any(username, blacklist): raise RegistrationError(tag_( "The username must not contain any of these characters: " "%(chars)s", chars=tag.tt(' '.join(blacklist)))) # All upper-cased names are reserved for permission action names. if username.isupper(): raise RegistrationError(_("A username with only upper-cased " "characters is not allowed.")) # Prohibit some user names, that are important for Trac and therefore # reserved, even if not in the permission store for some reason. if username.lower() in ['anonymous', 'authenticated']: raise RegistrationError(tag_("Username %(username)s is not " "allowed.", username=tag.b(username))) # NOTE: A user may exist in a password store but not in the permission # store. I.e. this happens, when the user (from the password store) # never logged in into Trac. So we have to perform this test here # and cannot just check for the user being in the permission store. # And better obfuscate whether an existing user or group name # was responsible for rejection of this user name. for store_user in acctmgr.get_users(): # Do it carefully by disregarding case. if store_user.lower() == username.lower(): raise RegistrationError(tag_( "Another account or group already exists, who's name " "differs from %(username)s only by case or is identical.", username=tag.b(username))) # Password consistency checks follow. password = req.args.get('password') if not password: raise RegistrationError(_("Password cannot be empty.")) elif password != req.args.get('password_confirm'): raise RegistrationError(_("The passwords must match.")) class BotTrapCheck(Component): implements(IAccountRegistrationInspector) _domain = 'acct_mgr' _description = cleandoc_(""" A collection of simple bot checks. ''This check is bypassed for requests by an authenticated user.'' """) reg_basic_question = Option( 'account-manager', 'register_basic_question', '', doc=N_("A question to ask instead of the standard prompt, to which " "the value of register_basic_token is the answer. Setting to " "empty string (default value) keeps the standard prompt.")) reg_basic_token = Option( 'account-manager', 'register_basic_token', '', doc=N_("A string required as input to pass verification.")) def render_registration_fields(self, req, data): """Add a hidden text input field to the registration form, and a visible one with mandatory input as well, if token is configured. """ if self.reg_basic_token: # Preserve last input for editing on failure instead of typing # everything again. old_value = req.args.get('basic_token', '') if self.reg_basic_question: # TRANSLATOR: Question-style hint for visible bot trap # registration input field. hint = tag.p(_("Please answer above: %(question)s", question=self.reg_basic_question), class_='hint') else: # TRANSLATOR: Verbatim token hint for visible bot trap # registration input field. hint = tag.p(tag_( "Please type [%(token)s] as verification token, " "exactly replicating everything within the braces.", token=tag.b(self.reg_basic_token)), class_='hint') insert = tag( tag.label(_("Parole:"), tag.input(type='text', name='basic_token', size=20, class_='textwidget', value=old_value)), hint) else: insert = None # TRANSLATOR: Registration form hint for hidden bot trap input field. insert = tag(insert, tag.input(type='hidden', name='sentinel', title=_("Better do not fill this field."))) return insert, data def validate_registration(self, req): if req.authname and req.authname != 'anonymous': return # Input must be an exact replication of the required token. basic_token = req.args.get('basic_token', '') # Unlike the former, the hidden bot-trap input field must stay empty. keep_empty = req.args.get('sentinel', '') if keep_empty or self.reg_basic_token and \ self.reg_basic_token != basic_token: raise RegistrationError(_("Are you human? If so, try harder!")) class EmailCheck(Component): implements(IAccountRegistrationInspector) _domain = 'acct_mgr' _description = cleandoc_(""" A collection of checks for email addresses. ''This check is bypassed, if account verification is disabled.'' """) def render_registration_fields(self, req, data): """Add an email address text input field to the registration form.""" # Preserve last input for editing on failure instead of typing # everything again. old_value = req.args.get('email', '').strip() insert = tag.label(_("Email:"), tag.input(type='text', name='email', size=20, class_='textwidget', value=old_value)) # Deferred import required to avoid circular import dependencies. from .web_ui import AccountModule reset_password = AccountModule(self.env).reset_password_enabled verify_account = self.env.is_enabled(EmailVerificationModule) and \ EmailVerificationModule(self.env).verify_email if verify_account: # TRANSLATOR: Registration form hints for a mandatory input field. hint = tag.p(_("The email address is required for Trac to send " "you a verification token."), class_='hint') if reset_password: hint = tag(hint, tag.p(_("Entering your email address will " "also enable you to reset your " "password if you ever forget it."), class_='hint')) return tag(insert, hint), data elif reset_password: # TRANSLATOR: Registration form hint, if email input is optional. hint = tag.p(_("Entering your email address will enable you to " "reset your password if you ever forget it."), class_='hint') return dict(optional=tag(insert, hint)), data else: # Always return the email text input itself as optional field. return dict(optional=insert), data def validate_registration(self, req): email = req.args.get('email', '').strip() if self.env.is_enabled(EmailVerificationModule) and \ EmailVerificationModule(self.env).verify_email: # Initial configuration case. if not email and not req.args.get('active'): raise RegistrationError(_( "You must specify a valid email address.")) # User preferences case. elif req.path_info == '/prefs' and \ email == req.session.get('email'): return elif email_associated(self.env, email): raise RegistrationError(_( "The email address specified is already in use. " "Please specify a different one.")) class RegExpCheck(Component): implements(IAccountRegistrationInspector) _domain = 'acct_mgr' _description = cleandoc_(""" A collection of checks based on regular expressions. ''It depends on !EmailCheck being enabled too for using it's input field. Likewise email checking is bypassed, if account verification is disabled.'' """) username_regexp = Option('account-manager', 'username_regexp', r'(?i)^[A-Z0-9.\-_]{5,}$', doc=N_("A validation regular expression describing new usernames. " "Define constraints for allowed user names corresponding to " "local naming policy.")) email_regexp = Option('account-manager', 'email_regexp', r'(?i)^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z0-9-]{2,63}$', doc=N_("A validation regular expression describing new account " "emails. Define constraints for a valid email address. A " "custom pattern can narrow or widen scope i.e. to accept UTF-8 " "characters.")) def render_registration_fields(self, req, data): return None, None def validate_registration(self, req): acctmgr = AccountManager(self.env) username = acctmgr.handle_username_casing( req.args.get('username', '').strip()) if req.path_info != '/prefs' and self.username_regexp != '' and \ not re.match(self.username_regexp.strip(), username): raise RegistrationError(tag_( "Username %(username)s doesn't match local naming policy.", username=tag.b(username) )) email = req.args.get('email', '').strip() if self.env.is_enabled(EmailCheck) and \ self.env.is_enabled(EmailVerificationModule) and \ EmailVerificationModule(self.env).verify_email: if self.email_regexp.strip() != '' and \ not re.match(self.email_regexp.strip(), email) and \ not req.args.get('active'): raise RegistrationError(_( "The email address specified appears to be invalid. " "Please specify a valid email address.")) class UsernamePermCheck(Component): implements(IAccountRegistrationInspector) _domain = 'acct_mgr' _description = cleandoc_(""" Check for usernames referenced in the permission system. ''This check is bypassed for requests by an authenticated user.'' """) def render_registration_fields(self, req, data): return None, None def validate_registration(self, req): if req.authname and req.authname != 'anonymous': return username = AccountManager(self.env).handle_username_casing( req.args.get('username', '').strip()) # NOTE: We can't use 'get_user_permissions(username)' here # as this always returns a list - even if the user doesn't exist. # In this case the permissions of "anonymous" are returned. # # Also note that we can't simply compare the result of # 'get_user_permissions(username)' to some known set of permission, # i.e. "get_user_permissions('authenticated') as this is always # false when 'username' is the name of an existing permission group. # # And again obfuscate whether an existing user or group name # was responsible for rejection of this username. for (perm_user, perm_action) in \ perm.PermissionSystem(self.env).get_all_permissions(): if perm_user.lower() == username.lower(): raise RegistrationError(tag_( "Another account or group already exists, who's name " "differs from %(username)s only by case or is identical.", username=tag.b(username))) class RegistrationModule(Component): """Provides users the ability to register a new account. Requires configuration of the AccountManager module in trac.ini. """ implements(chrome.INavigationContributor, IRequestHandler) require_approval = BoolOption( 'account-manager', 'require_approval', False, doc=""" Whether account registration requires administrative approval to enable the account or not. """) def __init__(self): self.acctmgr = AccountManager(self.env) self._enable_check(log=True) def _enable_check(self, log=False): env = self.env writable = self.acctmgr.supports('set_password') ignore_case = auth.LoginModule(env).ignore_case if log: if not writable: self.log.warning("RegistrationModule is disabled because the " "password store does not support writing.") if ignore_case: self.log.debug("RegistrationModule will allow lowercase " "usernames only and convert them forcefully " "as required, while 'ignore_auth_case' is " "enabled in [trac] section of your trac.ini.") return env.is_enabled(self.__class__) and writable enabled = property(_enable_check) # INavigationContributor methods def get_active_navigation_item(self, req): return 'register' def get_navigation_items(self, req): if not self.enabled: return if req.authname == 'anonymous': yield 'metanav', 'register', tag.a(_("Register"), href=req.href.register()) # IRequestHandler methods def match_request(self, req): return req.path_info == '/register' and self._enable_check(log=True) @process_request_compat def process_request(self, req): acctmgr = self.acctmgr if req.authname != 'anonymous': req.redirect(req.href.prefs('account')) action = req.args.get('action') name = req.args.get('name', '') if isinstance(name, list): raise HTTPBadRequest("Invalid request arguments") name = name.strip() username = req.args.get('username', '') if isinstance(username, list): raise HTTPBadRequest("Invalid request arguments") username = acctmgr.handle_username_casing(username.strip()) data = { 'i18n_tag': i18n_tag, 'acctmgr': {'name': name, 'username': username}, 'ignore_auth_case': self.config.getbool('trac', 'ignore_auth_case') } verify_enabled = self.env.is_enabled(EmailVerificationModule) and \ EmailVerificationModule(self.env).verify_email data['verify_account_enabled'] = verify_enabled if req.method == 'POST' and action == 'create': try: try: # Check request and prime account on success. acctmgr.validate_account(req, True) except NotificationError as e: chrome.add_warning(req, '%s %s' % ( _("Error raised while sending a change notification."), _("You should report that issue to a Trac admin."))) self.log.error( 'Unable to send registration notification: %s', exception_to_unicode(e, traceback=True)) except RegistrationError as e: chrome.add_warning(req, e) else: if self.require_approval: set_user_attribute(self.env, username, 'approval', 'pending') # Notify admin user about registration pending for review. try: acctmgr._notify('registration_approval_required', username) except NotificationError as e: chrome.add_warning(req, _( "Error raised while sending a change " "notification.") + _( "You should report that issue to a Trac admin.")) self.log.error( 'Unable to send admin notification: %s', exception_to_unicode(e, traceback=True)) else: chrome.add_notice(req, tag_( "Your username has been registered successfully, " "but your account requires administrative " "approval. Please proceed according to local " "policy.")) if verify_enabled: chrome.add_notice(req, tag_( "Your username has been successfully registered but " "your account still requires activation. Please " "login as user %(user)s, and follow the " "instructions.", user=tag.strong(username))) req.redirect(req.href.login()) chrome.add_notice(req, tag_( "Registration has been finished successfully. " "You may log in as user %(user)s now.", user=tag.b(username))) req.redirect(req.href.login()) # Collect additional fields from IAccountRegistrationInspector's. fragments = dict(required=[], optional=[]) for inspector in acctmgr.register_checks: try: fragment, f_data = inspector.render_registration_fields(req, data) except TypeError as e: # Add some robustness by logging the most likely errors. self.log.warning("%s.render_registration_fields failed: %s", inspector.__class__.__name__, e) fragment = None if fragment: try: if 'optional' in fragment.keys(): fragments['optional'].append(fragment['optional']) except AttributeError: # No dict, just append Genshi Fragment or str/unicode. fragments['required'].append(fragment) else: fragments['required'].append(fragment.get('required', '')) finally: data.update(f_data) data['required_fields'] = fragments['required'] data['optional_fields'] = fragments['optional'] return 'account_register.html', data class EmailVerificationModule(Component): """Performs email verification on every new or changed address. A working email sender for Trac (!TracNotification or !TracAnnouncer) is strictly required to enable this module's functionality. Anonymous users should register and perms should be tweaked, so that anonymous users can't edit wiki pages and change or create tickets. So this email verification code won't be used on them. """ implements(IRequestFilter, IRequestHandler) verify_email = BoolOption( 'account-manager', 'verify_email', True, doc="Verify the email address of Trac users.") def __init__(self, *args, **kwargs): self.email_enabled = True if self.config.getbool('announcer', 'email_enabled') and \ self.config.getbool('notification', 'smtp_enabled'): self.email_enabled = False if self.env.is_enabled(self.__class__): self.log.warning("%s can't work because of missing email " "setup.", self.__class__.__name__) # IRequestFilter methods def pre_process_request(self, req, handler): if not req.authname or req.authname == 'anonymous': # Permissions for anonymous users remain unchanged. return handler elif req.path_info == '/prefs' and \ req.method == 'POST' and \ 'restore' not in req.args and \ req.get_header( 'X-Requested-With') != 'XMLHttpRequest': try: AccountManager(self.env).validate_account(req) # Check passed without error: New email address seems good. except RegistrationError as e: # Always warn about issues. chrome.add_warning(req, e) # Look, if the issue existed before. attributes = get_user_attribute(self.env, req.authname, attribute='email') email = req.authname in attributes and \ attributes[req.authname][1].get('email') or None new_email = req.args.get('email', '').strip() if (email or new_email) and email != new_email: # Attempt to change email to an empty or invalid # address detected, resetting to previously stored value. req.redirect(req.href.prefs(None)) if self.verify_email and handler is not self and \ 'email_verification_token' in req.session and \ 'ACCTMGR_ADMIN' not in req.perm: message = i18n_tag( _("Your permissions have been limited until you [1:verify " "your email address]."), tag.a(href=req.href('verify_email')), ) chrome.add_warning(req, message) req.perm = perm.PermissionCache(self.env, 'anonymous') return handler def post_process_request(self, req, template, data, content_type): if template is None or not req.session.authenticated: # Don't start the email verification procedure on anonymous users. return template, data, content_type email = req.session.get('email') # Only send verification if the user entered an email address. if self.verify_email and self.email_enabled is True and email and \ email != req.session.get('email_verification_sent_to') and \ 'ACCTMGR_ADMIN' not in req.perm: req.session['email_verification_token'] = _gen_token() req.session['email_verification_sent_to'] = email try: AccountManager(self.env)._notify( 'email_verification_requested', req.authname, req.session['email_verification_token'] ) except NotificationError as e: chrome.add_warning(req, _( "Error raised while sending a change notification." ) + _("You should report that issue to a Trac admin.")) self.log.error('Unable to send registration notification: %s', exception_to_unicode(e, traceback=True)) else: message = i18n_tag(_("An email has been sent to <%(email)s> " "with a token to [1:verify your new " "email address].", email=email), tag.a(href=req.href('verify_email'))) chrome.add_notice(req, message) return template, data, content_type # IRequestHandler methods def match_request(self, req): return req.path_info == '/verify_email' @process_request_compat def process_request(self, req): if not req.session.authenticated: chrome.add_warning(req, tag_( "Please log in to finish email verification procedure.")) req.redirect(req.href.login()) if 'email_verification_token' not in req.session: chrome.add_notice(req, _("Your email is already verified.")) elif req.method == 'POST' and 'resend' in req.args: try: AccountManager(self.env)._notify( 'email_verification_requested', req.authname, req.session['email_verification_token'] ) except NotificationError as e: chrome.add_warning(req, _("Error raised while sending a " "change notification.") + _( "You should " "report that issue to a Trac admin.")) self.log.error('Unable to send verification notification: %s', exception_to_unicode(e, traceback=True)) else: chrome.add_notice(req, _("A notification email has been " "resent to <%(email)s>.", email=req.session.get('email'))) elif 'verify' in req.args: # allow via POST or GET (the latter for email links) if req.args['token'] == req.session['email_verification_token']: del req.session['email_verification_token'] chrome.add_notice( req, _("Thank you for verifying your email address.")) req.redirect(req.href.prefs()) else: chrome.add_warning(req, _("Invalid verification token")) data = {'i18n_tag': i18n_tag} if 'token' in req.args: data['token'] = req.args['token'] data['button_disabled'] = 'email_verification_token' not in req.session return 'account_verify_email.html', data trunk/acct_mgr/svnserve.py000644 000000 000000 00000005411 14413553530 014377 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import os from trac.config import Configuration from trac.core import Component, implements from trac.versioncontrol.api import RepositoryManager from trac.versioncontrol.cache import CachedRepository from .api import IPasswordStore, N_ from .util import EnvRelativePathOption class SvnServePasswordStore(Component): """PasswordStore implementation for reading svnserve's password file format """ implements(IPasswordStore) filename = EnvRelativePathOption('account-manager', 'password_file', doc=N_("Path to the users file; leave blank to locate the users file " "by reading svnserve.conf from the default repository.")) _userconf = None @property def _config(self): filename = self.filename or self._get_password_file() if self._userconf is None or filename != self._userconf.filename: self._userconf = Configuration(filename) # Overwrite default with str class to preserve case. self._userconf.parser.optionxform = str self._userconf.parse_if_needed(force=True) else: self._userconf.parse_if_needed() return self._userconf def _get_password_file(self): repos = RepositoryManager(self.env).get_repository('') if not repos: return None if isinstance(repos, CachedRepository): repos = repos.repos if repos.params['type'] in ('svn', 'svnfs', 'direct-svnfs'): conf = Configuration(os.path.join(repos.path, 'conf', 'svnserve.conf')) return conf['general'].getpath('password-db') # IPasswordStore methods def get_users(self): return [user for (user, password) in self._config.options('users')] def has_user(self, user): return user in self._config['users'] def set_password(self, user, password, old_password=None, overwrite=True): cfg = self._config new_acct = not self.has_user(user) if not new_acct and not overwrite: return new_acct cfg.set('users', user, password) cfg.save() return new_acct def check_password(self, user, password): if self.has_user(user): return password == self._config.get('users', user) return None def delete_user(self, user): if not self.has_user(user): return False cfg = self._config cfg.remove('users', user) cfg.save() return not self.has_user(user) trunk/acct_mgr/templates/000755 000000 000000 00000000000 14524423364 014153 5ustar00000000 000000 trunk/acct_mgr/templates/genshi/000755 000000 000000 00000000000 14414633245 015427 5ustar00000000 000000 trunk/acct_mgr/templates/genshi/account_admin.html000644 000000 000000 00000026460 14413553530 021126 0ustar00000000 000000 Account

Manage User Account

for ${acctmgr.name} ($user) for $user ${''}



This account has been locked until ${release_time}
and even valid login attempts are rejected meanwhile.
This account has been locked permanently.

Time lock condition has been met ${lock_count} time by now.

Time lock condition has been met ${lock_count} times by now.

${ dgettext("acct_mgr", "Therefore after another failed login attempt " "authentication for this account would be retarded " "by %(time)s.", time=pretty_lock_time) }

Lock condition has not been met yet.

No constraints are set for this account.


Credentials for this user are stored in AuthStore number ${store_order_num} (${user_store}).

Username matching is set to not case-sensitive.

Username matching is set to case-sensitive.

No readable store provides credentials for this user, so the user may not get authenticated and access to this account might be effectively blocked.

Current email address: <${acctmgr.email}>

This address has been verified successfully.

Verification is pending (token: ${email_verification_token})

This address has not been verified yet.

No email address is registered for this account.

${ dgettext('acct_mgr', 'Last login: %(time)s', time=format_datetime(last_visit)) \ if last_visit else \ dgettext('acct_mgr', 'The user has not logged in before.') }

Total failed attempts: ${attempts_count}

Table: Last failed login attempts log view

IP address Log time
${attempt.ipnr} ${format_datetime(attempt.time)}

There is currently no failed login attempt logged.

trunk/acct_mgr/templates/genshi/account_config.html000644 000000 000000 00000137403 14414633245 021306 0ustar00000000 000000 Accounts: Configuration

Accounts: Configuration

Step ${str(active + 1)}: ${steps[active].label}

Objective for setting Authentication Options

${ dgettext("acct_mgr", "Decide, whether to use HTTP authentication (Trac default) or a HTML login" " form provided by AccountManagerPlugin.") }

${ dgettext("acct_mgr", "After initial login Trac sessions are authenticated per request based on " "browser cookies. Therefore a number of options provide control over some " "critical browser cookie properties.") }

Provider-agnostic Authentication Options

Adapt to careless username typing, where casing does not matter, like on Windows. Potentially troublesome, because case matters for Trac permission assignment lookup anyway.

${ dgettext("acct_mgr", "Potentially troublesome for users with dynamic IP address, but " "disregarded for persistent sessions.") }

Required, if the Trac instance is only accessible through HTTPS.

${ dgettext("acct_mgr", "Determines how long the browser will cache authentication " "information, and therefore, after how much inactivity a user will " "have to log in again. Default (0 s) makes cookie expire at " "browsing sessions end.") }

Authentication Front-end

${ dgettext("acct_mgr", "You can still manage some password stores with " "AccountManagerPlugin, if you configure them in the next step.") }

AccountManagerPlugin provides a custom version of the LoginModule accompanied by a form-based HTML login page.

If you enable this feature, you'll want to review and adjust some more options related to session authentication. Note, that AccountManagerPlugin's LoginModule changes the default lifetime of authentication cookies to 30 days.

AccountManagerPlugin Authentication Options

${ i18n_tag( dgettext( "acct_mgr", "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" ), ('p', {'class': 'hint'}), 'ul', 'li', ('span', {'class': 'hint'}), 'li', ('span', {'class': 'hint'}), ('p', {'class': 'hint'}), ) }

This is, user checks a "Remember Me" checkbox in the AccountManagerPlugin login form and, next time he visits the site within 30 days, he'll be remembered and authenticated automatically.

Driving a refresh process to decrease vulnerability of long-lasting sessions. Zero means never.

This enables AccountManagerPlugin's authentication data distribution to Trac instances with matching cookie path. Set this to a common base path of several Trac instances to share the cookie, providing a cheap Single-Sign-On experience.

Step ${str(active + 1)}: ${steps[active].label} Password store

Objective for configuring a Password Store

${ dgettext("acct_mgr", "AccountManagerPlugin manages user credentials in a modular " "back-end providing access to at least one password store.") }

Initial Authentication Back-end selection

The SessionStore implements password storage in Trac db table 'session_attribute'. Its the default choice mainly for avoiding additional dependencies like directory and file permissions.

${ dgettext( "acct_mgr", "While great to resolve some concurrent access issues too, " "this password store has shortcomings as well. Notably it " "does not support seamless hash type migration, and its no " "candidate for shared use by multiple Trac instances or even " "by applications beyond Trac.") }

Details (Preview)
$init_store_hint.db

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${ dgettext("acct_mgr", "AccountManagerPlugin includes native support for common " "Apache file formats 'htpasswd' and 'htdigest' as well as " "support for reading svnserve's password file format.") }

${ dgettext("acct_mgr", "You may use the same file for several Trac environments. " "Note that setting appropriate directory and file permissions " "is crucial for these stores, but not covered by this " "configuration wizard.") }

Details (Preview)
$init_store_hint.htdigest

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

Details (Preview)
$init_store_hint.htpasswd

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

Details (Preview)
$init_store_hint.svn_file

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

AccountManagerPlugin enables use of standard HTTP-Auth by its HttpAuthStore component. Both Basic and Digest authentication challenges are supported.

${ dgettext("acct_mgr", "In addition to being read-only this password store does " "not even support listing users for obvious reasons.") }

Details (Preview)
$init_store_hint.http

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${ dgettext( "acct_mgr", "AccountManagerPlugin's modular password store concept " "encourages creation of more ways to provide user credential " "beyond the natively supported stores. While a specific setup " "assistance for these 3rd-party authentication providers is not " "implemented, you may fill-in appropriate configuration details " "for an already installed component below.") }

Configuration

${ dgettext("acct_mgr", "Type the custom configuration options as provided by " "that components documentation and apply it.") }

Password Store Configuration

All enabled stores are listed below, but most won't work at all without additional configuration.
Currently configured: ${', '.join(password_store)}

This is an experts-only type of store configuration.

Required disabled component(s): ${', '.join(disabled_store)}

${ dgettext("acct_mgr", "Select one or more stores and configure related options. " "Concurrent use of multiple password stores is supported too.") }

Password stores are queried in turn, so order matters.

$option.doc

${ dgettext("acct_mgr", "Use it after changing hash type or to migrate to a new " "primary password store.") }

${ dgettext("acct_mgr", "The update will run only once. Restarting the procedure " "for all accounts allows to propagate subsequent changes.") }

Step ${str(active + 1)}: ${steps[active].label} Password refresh

Objective for Password Policy rules

${ dgettext("acct_mgr", "While AccountManagerPlugin does not enforce password rules in " "general, there are some other ways to alter password handling.") }

${ dgettext("acct_mgr", "It relies on a working email sender for Trac, supporting " "both TracAnnouncer and TracNotification.") }

These passwords are used as alternative passwords on request.

Step ${str(active + 1)}: ${steps[active].label} Account approval

Objective for Account Registration and Verification rules

${ dgettext( "acct_mgr", "You may require administrative approval of new accounts for the user " "registration process. The ability to immediately ban existing accounts is" " another, related but independent feature.") }

Checks to use for validating Registration requests

All checks provided by AccountManagerPlugin are enabled per default, but some are configurable on their own.
Currently configured: ${', '.join(register_check)}

Checks like BotTrapCheck won't work at all without additional configuration.

Required disabled component(s): ${', '.join(disabled_check)}

${ dgettext( "acct_mgr", "Select one or more checks and configure related options. " "Concurrent use of multiple registration checks is encouraged.") }

${ dgettext( "acct_mgr", "Checks are applied in turn, so order matters. Note that some " "checks are used to validate admin user actions too.") }

${safe_wiki_to_html(context, section.doc)}

$option.doc

Other Account Policy options

${ dgettext( "acct_mgr", "For admin notification on registration time it relies on a " "working email sender for Trac, supporting both TracAnnouncer " "and TracNotification.") }

${ dgettext( "acct_mgr", "For sending a verification token to the user it relies on a working email " "sender for Trac, supporting both TracAnnouncer and TracNotification.") }

Step ${str(active + 1)}: ${steps[active].label} Account guard

Objective for Account Protection rules

${ dgettext( "acct_mgr", "Passwords are often not constructed as carefully as they should " "be. And even a strong passphrase could be sift out, if an " "attacker is able to test millions of variants in hours, if not " "seconds. Firewalls and full-featured web-servers already offer " "sophisticated protection, if one can afford them, handle their " "installation, configuration and maintenance.") }

The AccountGuard component is another option. It is an add-on to AccountManagerPlugin's own LoginModule and provides account protection by discouraging brute-force login attempts.

AccountManagerPlugin's LoginModule is disabled.

Lock user account after the specified number of failed attempts. Value zero means no limit.

Zero means unlimited lock time here.

${ dgettext("acct_mgr", "Extend user account lock duration incrementally. " "It uses logarithmic calculation with the factor as " "exponent, accepting decimal numbers >= 1.") }

${ i18n_tag( dgettext( "acct_mgr", "[1:Lock time will grow for any value > 1, if the failure happens before " "lock expiration. I.e. value '2' means][2:[3:[4:double lock time after 2nd" " failure,]][5:[6:four times the initial lock time after 3rd,]][7:[8:eight" " times as long after 4th failure, etc.]]]"), ('p', {'class': 'hint'}), 'ul', 'li', ('span', {'class': 'hint'}), 'li', ('span', {'class': 'hint'}), 'li', ('span', {'class': 'hint'}), ) }

${ dgettext("acct_mgr", "At any time after lock expiration a login failure will " "just trigger a lock and set a new lock timeout, but not " "extend the total lock duration.") }

This is relevant only with a progression factor > 1.

Step ${str(active + 1)}: ${steps[active].label}

Objective for additional preparation

Enable yourself to proceed beyond this initial setup.

Initial Admin Account

Add Admin Account:

The user will get TRAC_ADMIN assigned, that inherits all available permissions. One such account is required to configure Trac via the admin web-UI. Create and manage more limited admin accounts as well as actual user accounts on your own later via the Accounts admin panel.

In detail: AccountManagerPlugin requires ACCTMGR_USER_ADMIN for regular user administration, ACCTMGR_CONFIG_ADMIN for viewing these pages and changing the configuration later. Both are inherited by ACCTMGR_ADMIN permission. To assign permissions you'll need PERMISSION_GRANT inherited by PERMISSION_ADMIN too.

Only lowercase usernames allowed

${ dgettext("acct_mgr", "Please take care, that the username is known by " "the HTTP authentication provider.") }

${ dgettext("acct_mgr", "Please take care for a valid username, because no configured " "password store supports creating a new account.") }

Check-up

Please resolve all issues marked as critical.

By now you did almost finish AccountManagerPlugin configuration, but any changes are temporary yet. Please test and adjust the configuration as required, or cancel to revert all changes. Apply settings to trac.ini only if you really want to preserve them permanently.

Details (Preview)
[$section]
${option} = ${value}

trunk/acct_mgr/templates/genshi/account_db_cleanup.html000644 000000 000000 00000007005 14413553530 022124 0ustar00000000 000000 Accounts: Cleanup

Accounts: Cleanup

  Account
    Attribute Value
Authenticated Accounts
'${account}'
  '${name}' '${value}'
trunk/acct_mgr/templates/genshi/account_login.html000644 000000 000000 00000005056 14413553530 021144 0ustar00000000 000000 Login

Error

${login_error}

trunk/acct_mgr/templates/genshi/account_notification.html000644 000000 000000 00000004427 14413553530 022523 0ustar00000000 000000 Accounts: Notification Configuration

Accounts: Notification Configuration

Account Notification

${ dgettext("acct_mgr", "Set the following options in order to be notified of " "account creation, password reset and account deletion.") }

Notification Actions

This is a list of actions which you can enable or disable by checking the checkboxes.



Notification Recipient Addresses

${ dgettext("acct_mgr", "Space-separated list of email addresses and/or usernames " "that get notified of the above actions:") }

trunk/acct_mgr/templates/genshi/account_prefs.html000644 000000 000000 00000004200 14413553530 021141 0ustar00000000 000000
${select('*')}

Delete Account

Account

Change Password

trunk/acct_mgr/templates/genshi/account_register.html000644 000000 000000 00000004730 14413553530 021656 0ustar00000000 000000 Register

Register an account

Error

$registration_error

Required

Only lowercase usernames allowed

${field}
Optional
${field}
trunk/acct_mgr/templates/genshi/account_reset_password.html000644 000000 000000 00000002615 14413553530 023076 0ustar00000000 000000 Reset Password

Reset Password

If you've forgotten your password, enter your username and email address below, and a new password will be sent to you.

trunk/acct_mgr/templates/genshi/account_reset_password_email.txt000644 000000 000000 00000000326 14413553530 024115 0ustar00000000 000000 Your Trac password has been reset. Here is your account information: Login URL: <${login.link}> Username: ${account.username} Password: ${account.password} -- ${project.name} <${project.url}> ${project.descr} trunk/acct_mgr/templates/genshi/account_user_changes_email.txt000644 000000 000000 00000000151 14413553530 023513 0ustar00000000 000000 Account ${account.action} for ${account.username} -- ${project.name} <${project.url}> ${project.descr} trunk/acct_mgr/templates/genshi/account_user_table.html000644 000000 000000 00000004513 14413553530 022156 0ustar00000000 000000
  Account Name Email Last Login
${acct.username} Account locked Permanently locked ${acct.name} ${acct.email} ${pretty_dateinfo(acct.last_visit) if acct.last_visit else ''}
trunk/acct_mgr/templates/genshi/account_users.html000644 000000 000000 00000020757 14413553530 021202 0ustar00000000 000000 Accounts
Add New Account:

Only lowercase usernames allowed


This password store does not support listing users.

Accounts ($displayed_items)

Filters
Status
trunk/acct_mgr/templates/genshi/account_verify_email.html000644 000000 000000 00000003364 14413553530 022507 0ustar00000000 000000 ${dgettext('acct_mgr', 'Verify Email')}

${dgettext('acct_mgr', 'Verify Email')}

${ dgettext('acct_mgr', 'An email was sent to %(email)s with a token to verify your ' 'new address. Please check your email and enter the token in ' 'the form below.', email=req.session.email) }

You can change your email address, if it is incorrect.

trunk/acct_mgr/templates/genshi/account_verify_email.txt000644 000000 000000 00000000333 14413553530 022353 0ustar00000000 000000 Please visit the following URL to confirm your email address. Verification URL: <${verify.link}> Username: ${account.username} Verification Token: ${account.token} -- ${project.name} <${project.url}> ${project.descr} trunk/acct_mgr/templates/jinja2/000755 000000 000000 00000000000 14524423364 015330 5ustar00000000 000000 trunk/acct_mgr/templates/jinja2/account_admin.html000644 000000 000000 00000032173 14413553530 021024 0ustar00000000 000000 # extends 'admin.html' # block admintitle ${dgettext("acct_mgr", "Account")} # endblock admintitle # block head ${ super() } # endblock head # block adminpanel

${dgettext("acct_mgr", "Manage User Account")}

${ i18n_tag(dgettext('acct_mgr', 'for [1:%(name)s] ([2:%(user)s])'), 'strong', 'em', name=acctmgr.name, user=user) if acctmgr.name else i18n_tag(dgettext('acct_mgr', 'for [1:%(user)s]'), 'strong', user=user) } # if not change_uid_enabled # endif

## Account property editor
${jmacros.form_token_input()} # if len(forms) > 1
    # for name, label in sorted(forms)
  • # if name == active_form ${label} # else ${label} # endif
  • # endfor
# endif
# if active_form == 'uid'
# else
# if acctmgr.name # endif
# if acctmgr.email # endif
# if verify_enabled # endif
# endif
# if not action_aside
# endif
# if approval or user_locked

# if release_time and not approval ${ i18n_tag( dgettext( "acct_mgr", "This account has been locked until %(time)s[1:]and " "even valid login attempts are rejected meanwhile."), 'br', time=release_time) } # elif approval or not release_time ${dgettext('acct_mgr', 'This account has been locked permanently.')} # endif

# endif # if lock_count
# if not lock_count == 0

${ dngettext("acct_mgr", "Time lock condition has been met %(count)s time by now." "Time lock condition has been met %(count)s times by now.", count=lock_count) }

# if not (approval or (user_locked and not release_time))

${ dgettext("acct_mgr", "Therefore after another failed login attempt " "authentication for this account would be retarded " "by %(time)s.", time=pretty_lock_time) }

# endif
# else

${dgettext('acct_mgr', 'Lock condition has not been met yet.')}

# endif
# elif not (approval or lock_count)

${dgettext('acct_mgr', 'No constraints are set for this account.')}

# endif # if user_locked or approval
# endif # if user_store

${ i18n_tag( dgettext("acct_mgr", "Credentials for this user are stored in AuthStore number " "[1:%(order_num)s] (%(store)s)."), 'em', order_num=store_order_num, store=user_store, ) }

# if ignore_auth_case

${ i18n_tag(dgettext('acct_mgr', 'Username matching is set to [1:not case-sensitive].'), 'strong') }

# else

${ i18n_tag(dgettext('acct_mgr', 'Username matching is set to [1:case-sensitive].'), 'strong') }

# endif
# endif # if not (approval or user_store)

${ i18n_tag(dgettext("acct_mgr", "No readable store provides credentials for this user, so the user may" " not get authenticated and access to this [1:account might be " "effectively blocked]."), 'em') }

# endif # if acctmgr.email

${ dgettext("acct_mgr", "Current email address: <%(email)s>", email=acctmgr.email) }

# if verification # if email_verified

${ dgettext('acct_mgr', 'This address has been verified successfully.') }

# elif not email_verified and email_verification_token

${ i18n_tag(dgettext("acct_mgr", "Verification is pending [1:(token: %(token)s)]"), tag.span(class_='hint'), token=email_verification_token) }

# else

${ dgettext('acct_mgr', 'This address has not been verified yet.') }

# endif # endif
# else

${ dgettext('acct_mgr', 'No email address is registered for this account.') }

# endif

${ dgettext('acct_mgr', 'Last login: %(time)s', time=format_datetime(last_visit)) if last_visit else dgettext('acct_mgr', 'The user has not logged in before.') }

# if attempts_count

${ dgettext("acct_mgr", "Total failed attempts: %(count)s", count=attempts_count) }

${ dgettext('acct_mgr', 'Table: Last failed login attempts log view') }

# for attempt in attempts # endfor
${dgettext('acct_mgr', 'IP address')} ${dgettext('acct_mgr', 'Log time')}
${attempt.ipnr} ${format_datetime(attempt.time)}
# if not user_locked
# endif
# else

${ dgettext('acct_mgr', 'There is currently no failed login attempt logged.') }

# endif
# endblock adminpanel trunk/acct_mgr/templates/jinja2/account_config.html000644 000000 000000 00000143334 14524423364 021207 0ustar00000000 000000 # extends 'admin.html' # block admintitle ${dgettext("acct_mgr", "Accounts: Configuration")} # endblock admintitle # block adminpanel

${dgettext("acct_mgr", "Accounts: Configuration")}

${jmacros.form_token_input()} ## Top navigation
# if active > 0 # if active < len(steps) - 1 # else # endif # endif # if active < len(steps) - 1 # endif ## Last value cache for stepping through pages back and forth
# if active == 0 ## Page 1
${ dgettext("acct_mgr", "Step %(step)s: %(label)s", step=active + 1, label=steps[active].label) }

${dgettext('acct_mgr', 'Objective for setting Authentication Options')}

${ dgettext("acct_mgr", "Decide, whether to use HTTP authentication (Trac default) or " "a HTML login form provided by AccountManagerPlugin.") }

${ dgettext("acct_mgr", "After initial login Trac sessions are authenticated per request " "based on browser cookies. Therefore a number of options provide " "control over some critical browser cookie properties.") }

${dgettext('acct_mgr', 'Provider-agnostic Authentication Options')}

${ i18n_tag( dgettext("acct_mgr", "Adapt to careless username typing, where casing does not matter, like" " on Windows. Potentially troublesome, because [1:case matters for " "Trac permission assignment lookup] anyway."), 'tt') }

${ dgettext("acct_mgr", "Potentially troublesome for users with dynamic IP " "address, but disregarded for persistent sessions.") }

${ dgettext('acct_mgr', 'Required, if the Trac instance is only accessible through HTTPS.') }

## Last value cache for JS code # set lifetime_value = (auth_cookie_lifetime or 2592000) if acctmgr_login else auth_cookie_lifetime

${ dgettext("acct_mgr", "Determines how long the browser will cache authentication " "information, and therefore, after how much inactivity a user will " "have to log in again. Default (0 s) makes cookie expire at " "browsing sessions end.") }

${dgettext('acct_mgr', 'Authentication Front-end')}

${ dgettext("acct_mgr", "You can still manage some password stores with " "AccountManagerPlugin, if you configure them in the next step.") }

${ i18n_tag( dgettext( "acct_mgr", "AccountManagerPlugin provides a custom version of the [1:LoginModule]" " accompanied by a form-based HTML login page."), 'strong') }

${ i18n_tag( dgettext( "acct_mgr", "If you enable this feature, you'll want to review and adjust some " "more options related to session authentication. Note, that " "AccountManagerPlugin's LoginModule [1:changes the default lifetime of" " authentication cookies to 30 days]."), 'tt') }

${dgettext('acct_mgr', 'AccountManagerPlugin Authentication Options')}

${ i18n_tag( dgettext( "acct_mgr", "[1:If enabled, links to][2:[3:[4:Lost password/Password " "reset]][5:[6:Registration for new users]]][7:that normally reside in " "Trac's meta-navigation bar, will appear inside the login form. CSS " "styling allows further customization of the login prompt.]" ), tag.p(class_='hint'), 'ul', 'li', tag.span(class_='hint'), 'li', tag.span(class_='hint'), tag.p(class_='hint'), ) }

${ i18n_tag( dgettext( "acct_mgr", "This is, user checks a \"Remember Me\" [1:checkbox] in the " "AccountManagerPlugin login form and, next time he visits the site " "within 30 days, he'll be remembered and authenticated automatically."), 'tt') }

${ i18n_tag( dgettext( "acct_mgr", "Driving a refresh process to decrease vulnerability of long-lasting " "sessions. Zero means [1:never]."), 'tt') }

${ i18n_tag( dgettext( "acct_mgr", "This enables AccountManagerPlugin's authentication data distribution " "to Trac instances with matching cookie path. Set this to a common " "base path of several Trac instances to share the cookie, providing a " "cheap [1:Single-Sign-On] experience."), 'tt') }

# elif active == 1 ## Page 2
${ dgettext("acct_mgr", "Step %(step)s: %(label)s", step=active + 1, label=steps[active].label) } ${dgettext('acct_mgr', 'Password store')}

${dgettext('acct_mgr', 'Objective for configuring a Password Store')}

${ dgettext("acct_mgr", "AccountManagerPlugin manages user credentials in a modular " "back-end providing access to at least one password store.") }

# if len(password_store) == 0

${dgettext('acct_mgr', 'Initial Authentication Back-end selection')}

## Initial setup content

${ i18n_tag( dgettext( "acct_mgr", "The [1:SessionStore] implements password storage in Trac db table " "'session_attribute'. Its the default choice mainly for avoiding " "additional dependencies like directory and file permissions."), 'strong') }

${ dgettext("acct_mgr", "While great to resolve some concurrent access issues too, this " "password store has shortcomings as well. Notably it does not " "support seamless hash type migration, and its no candidate for " "shared use by multiple Trac instances or even by applications " "beyond Trac.") }

${ dgettext("acct_mgr", "Details (Preview)") }
${init_store_hint.db}

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${ dgettext("acct_mgr", "AccountManagerPlugin includes native support for common Apache " "file formats 'htpasswd' and 'htdigest' as well as support for " "reading svnserve's password file format.") }

${ dgettext("acct_mgr", "You may use the same file for several Trac environments. Note " "that setting appropriate directory and file permissions is " "crucial for these stores, but not covered by this configuration " "wizard.") }

${dgettext("acct_mgr", "Details (Preview)")}
${init_store_hint.htdigest}

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${dgettext("acct_mgr", "Details (Preview)")}
${init_store_hint.htpasswd}

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${dgettext("acct_mgr", "Details (Preview)")}
${init_store_hint.svn_file}

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${ i18n_tag( dgettext( "acct_mgr", "AccountManagerPlugin enables use of standard HTTP-Auth by its " "[1:HttpAuthStore] component. Both Basic and Digest authentication " "challenges are supported."), 'strong') }

${ dgettext("acct_mgr", "In addition to being read-only this password store does " "not even support listing users for obvious reasons.") }

${dgettext("acct_mgr", "Details (Preview)")}
${init_store_hint.http}

${ dgettext("acct_mgr", "Please apply these default options first. " "You'll be able to change values afterwards.") }

${ dgettext("acct_mgr", "AccountManagerPlugin's modular password store concept " "encourages creation of more ways to provide user credential " "beyond the natively supported stores. While a specific setup " "assistance for these 3rd-party authentication providers is not " "implemented, you may fill-in appropriate configuration details " "for an already installed component below.") }

${dgettext('acct_mgr', 'Configuration')}

${ dgettext("acct_mgr", "Type the custom configuration options as provided " "by that components documentation and apply it.") }

# else
## Standard page content

${dgettext('acct_mgr', 'Password Store Configuration')}

${ i18n_tag( dgettext( "acct_mgr", "All enabled stores are listed below, but most won't work at all " "without additional configuration.[1:]Currently configured: " "[2:%(store_list)s]"), 'br', tag.em(title='[account-manager] password_store'), store_list=', '.join(password_store)) }

# if len(password_store) > 1

${ dgettext('acct_mgr', 'This is an experts-only type of store configuration.') }

# endif # if disabled_store

${ i18n_tag(dgettext("acct_mgr", "Required disabled component(s): [1:%(components)s]"), 'em', components=', '.join(disabled_store)) }

# endif

${ dgettext("acct_mgr", "Select one or more stores and configure related options. " "Concurrent use of multiple password stores is supported too.") }

${ dgettext('acct_mgr', 'Password stores are queried in turn, so order matters.') }

# for section in store_list
# for option in section.options
# if option.doc

${option.doc}

# endif
# endfor
# endfor

${ dgettext("acct_mgr", "Use it after changing hash type or to migrate to a " "new primary password store.") }

${ dgettext("acct_mgr", "The update will run only once. Restarting the procedure " "for all accounts allows to propagate subsequent changes.") }

# endif
# elif active == 2 ## Page 3
${ dgettext("acct_mgr", "Step %(step)s: %(label)s", step=active + 1, label=steps[active].label) } ${dgettext('acct_mgr', 'Password refresh')}

${dgettext('acct_mgr', 'Objective for Password Policy rules')}

${ dgettext("acct_mgr", "While AccountManagerPlugin does not enforce password rules in " "general, there are some other ways to alter password handling.") }

${ dgettext("acct_mgr", "It relies on a working email sender for Trac, " "supporting both TracAnnouncer and TracNotification.") }

${ dgettext("acct_mgr", "These passwords are used as alternative passwords on request.") }

# elif active == 3
${ dgettext("acct_mgr", "Step %(step)s: %(label)s", step=active + 1, label=steps[active].label) } ${dgettext('acct_mgr', 'Account approval')}

${ dgettext('acct_mgr', 'Objective for Account Registration and Verification rules') }

${ dgettext("acct_mgr", "You may require administrative approval of new accounts for the " "user registration process. The ability to immediately ban existing " "accounts is another, related but independent feature.") }

${ dgettext('acct_mgr', 'Checks to use for validating Registration requests') }

${ i18n_tag( dgettext( "acct_mgr", "All checks provided by AccountManagerPlugin are enabled per default, " "but some are configurable on their own.[1:]Currently configured: " "[2:%(check_list)s]"), 'br', tag.em(title='[account-manager] register_check'), check_list=', '.join(register_check), ) }

${ i18n_tag( dgettext( "acct_mgr", "Checks like [1:BotTrapCheck] won't work at all without additional " "configuration."), 'strong') }

# if disabled_check

${ i18n_tag( dgettext("acct_mgr", "Required disabled component(s): [1:%(components)s]"), 'em', components=', '.join(disabled_check)) }

# endif

${ dgettext("acct_mgr", "Select one or more checks and configure related options. " "Concurrent use of multiple registration checks is encouraged.") }

${ dgettext("acct_mgr", "Checks are applied in turn, so order matters. Note that " "some checks are used to validate admin user actions too.") }

# for section in check_list
# if section.doc
${safe_wiki_to_html(context, section.doc)}
# endif # for option in section.options
# if option.doc

${option.doc}

# endif
# endfor
# endfor

${dgettext('acct_mgr', 'Other Account Policy options')}

${ dgettext("acct_mgr", "For admin notification on registration time it " "relies on a working email sender for Trac, " "supporting both TracAnnouncer and TracNotification.") }

${ dgettext("acct_mgr", "For sending a verification token to the user it relies " "on a working email sender for Trac, supporting both " "TracAnnouncer and TracNotification.") }

# elif active == 4 ## Page 5
${ dgettext("acct_mgr", "Step %(step)s: %(label)s", step=active + 1, label=steps[active].label) } ${dgettext('acct_mgr', 'Account guard')}

${dgettext('acct_mgr', 'Objective for Account Protection rules')}

${ dgettext( "acct_mgr", "Passwords are often not constructed as carefully as they should be. " "And even a strong passphrase could be sift out, if an attacker is " "able to test millions of variants in hours, if not seconds. " "Firewalls and full-featured web-servers already offer sophisticated " "protection, if one can afford them, handle their installation, " "configuration and maintenance.") }

${ i18n_tag( dgettext( "acct_mgr", "The [1:AccountGuard] component is another option. It is an add-on to " "AccountManagerPlugin's own [2:LoginModule] and provides account " "protection by discouraging brute-force login attempts."), 'strong', 'strong') }

# if not acctmgr_login

${dgettext('acct_mgr', "AccountManagerPlugin's LoginModule is disabled.")}

# endif

${ i18n_tag( dgettext( "acct_mgr", "Lock user account after the specified number of failed attempts. " "Value zero means [1:no limit]."), 'strong') }

${ i18n_tag( dgettext("acct_mgr", "Zero means [1:unlimited] lock time here."), 'strong') }

${ dgettext("acct_mgr", "Extend user account lock duration incrementally. " "It uses logarithmic calculation with the factor " "as exponent, accepting decimal numbers >= 1.") }

${ i18n_tag( dgettext( "acct_mgr", "[1:Lock time will grow for any value > 1, if the failure " "happens before lock expiration. I.e. value '2' means][2:" "[3:[4:double lock time after 2nd failure,]]" "[5:[6:four times the initial lock time after 3rd,]]" "[7:[8:eight times as long after 4th failure, etc.]]" "]", ), tag.p(class_='hint'), 'ul', 'li', tag.span(class_='hint'), 'li', tag.span(class_='hint'), 'li', tag.span(class_='hint'), ) }

${ dgettext("acct_mgr", "At any time after lock expiration a login failure " "will just trigger a lock and set a new lock timeout, " "but not extend the total lock duration.") }

## Last value cache for JS code

${ dgettext('acct_mgr', 'This is relevant only with a progression factor > 1.') }

# else ## Page 6
${ dgettext("acct_mgr", "Step %(step)s: %(label)s", step=active + 1, label=steps[active].label) } # if not admin_available

${dgettext('acct_mgr', 'Objective for additional preparation')}

${ dgettext('acct_mgr', 'Enable yourself to proceed beyond this initial setup.') }

${dgettext('acct_mgr', 'Initial Admin Account')}

${dgettext('acct_mgr', 'Add Admin Account:')}

${ i18n_tag( dgettext( "acct_mgr", "The user will get [1:TRAC_ADMIN] assigned, that inherits all " "available permissions. One such account is required to configure Trac" " via the admin web-UI. Create and manage more limited admin accounts " "as well as actual user accounts on your own later via the Accounts " "admin panel."), 'strong') }

${ i18n_tag( dgettext( "acct_mgr", "In detail: AccountManagerPlugin requires [1:ACCTMGR_USER_ADMIN] for " "regular user administration, [2:ACCTMGR_CONFIG_ADMIN] for viewing " "these pages and changing the configuration later. Both are inherited " "by [3:ACCTMGR_ADMIN] permission. To assign permissions you'll need " "[4:PERMISSION_GRANT] inherited by [5:PERMISSION_ADMIN] too."), 'strong', 'strong', 'strong', 'strong', 'strong') }

# if ignore_auth_case

${ dgettext('acct_mgr', 'Only lowercase usernames allowed') }

# endif
# if not password_store

${ dgettext("acct_mgr", "Please take care, that the username is known by the " "HTTP authentication provider.") }

# elif not set_password

${ dgettext("acct_mgr", "Please take care for a valid username, because no configured " "password store supports creating a new account.") }

# endif
# endif

${dgettext('acct_mgr', 'Check-up')}

    # for goal in completion.details
  • # if goal.step ${goal.desc} # else ${goal.desc} # endif
  • # endfor
# if admin_available and not completion.ready

${ dgettext('acct_mgr', 'Please resolve all issues marked as critical.') }

# endif # if completion.ready

${ i18n_tag( dgettext( "acct_mgr", "By now you did almost finish AccountManagerPlugin configuration, but " "any changes are temporary yet. Please test and adjust the " "configuration as required, or cancel to revert all changes. Apply " "settings to [1:trac.ini] only if you really want to preserve them " "permanently."), 'em') }

## Final configuration preview listing
${dgettext('acct_mgr', 'Details (Preview)')}
# for section, options in roundup|dictsort [${section}]
# for option, value in options|sort(attribute=0) ${option} = ${value}
# endfor
# endfor
# endif
# endif ## Bottom navigation
# if active > 0 # if active < len(steps) - 1 # else # endif # endif # if active < len(steps) - 1 # else # endif
# endblock adminpanel trunk/acct_mgr/templates/jinja2/account_db_cleanup.html000644 000000 000000 00000004251 14413553530 022024 0ustar00000000 000000 # extends 'admin.html' # block admintitle ${dgettext('acct_mgr', 'Accounts: Cleanup')} # endblock admintitle # block adminpanel

${dgettext('acct_mgr', 'Accounts: Cleanup')}

${jmacros.form_token_input()}
# for account, states in attr.items() # for name, value in states[1].items() # if name != 'id' and value is not mapping # endif # endfor # endfor
  ${dgettext('acct_mgr', 'Account')}
    ${dgettext('acct_mgr', 'Attribute')} ${dgettext('acct_mgr', 'Value')}
${dgettext('acct_mgr', 'Authenticated Accounts')}
'${account}'
  '${name}' '${value}'
# endblock adminpanel trunk/acct_mgr/templates/jinja2/account_login.html000644 000000 000000 00000005451 14413553530 021043 0ustar00000000 000000 # extends 'layout.html' # block title ${dgettext("acct_mgr", "Login")} # endblock title # block head ${ super() } # endblock head # block content # if login_error

${dgettext('acct_mgr', 'Error')}

${login_error}

# else
# endif ${ super() } # endblock content trunk/acct_mgr/templates/jinja2/account_notification.html000644 000000 000000 00000004617 14413553530 022424 0ustar00000000 000000 #extends 'admin.html' # block admintitle ${dgettext('acct_mgr', 'Accounts: Notification Configuration')} # endblock admintitle # block adminpanel

${dgettext('acct_mgr', 'Accounts: Notification Configuration')}

${jmacros.form_token_input()}
${dgettext('acct_mgr', 'Account Notification')}

${ dgettext("acct_mgr", "Set the following options in order to be notified of " "account creation, password reset and account deletion.") }

${dgettext("acct_mgr", "Notification Actions")}

${ i18n_tag( dgettext( "acct_mgr", "This is a list of actions which you can enable or disable by " "[1:checking] the [2:checkboxes]."), 'em', 'em') }



${dgettext('acct_mgr', 'Notification Recipient Addresses')}

${ dgettext("acct_mgr", "Space-separated list of email addresses and/or usernames " "that get notified of the above actions:") }

# endblock adminpanel trunk/acct_mgr/templates/jinja2/account_prefs.html000644 000000 000000 00000003622 14413553530 021050 0ustar00000000 000000 # extends 'prefs.html' # block preftitle ${dgettext('acct_mgr', "Account")} # endblock preftitle # block head ${ super() } # endblock head # block prefpanel

${dgettext('acct_mgr', 'Change Password')}

# endblock prefpanel # block content ${ super() } # if delete_enabled

${dgettext('acct_mgr', 'Delete Account')}

${jmacros.form_token_input()}
# endif # endblock content trunk/acct_mgr/templates/jinja2/account_register.html000644 000000 000000 00000005213 14413553530 021553 0ustar00000000 000000 # extends 'layout.html' # block title ${dgettext('acct_mgr', "Register")} # endblock title # block head ${ super() } # endblock head # block content

${dgettext('acct_mgr', 'Register an account')}

# if registration_error

${dgettext('acct_mgr', 'Error')}

${registration_error}

# endif
${jmacros.form_token_input()}
${dgettext('acct_mgr', 'Required')}
# if ignore_auth_case

${dgettext('acct_mgr', 'Only lowercase usernames allowed')}

# endif
# for field in required_fields
## Additional required fields can be included below ${field}
# endfor
${dgettext('acct_mgr', 'Optional')}
# for field in optional_fields
## Additional optional fields can be included below ${field}
# endfor
# endblock content trunk/acct_mgr/templates/jinja2/account_reset_password.html000644 000000 000000 00000002653 14413553530 023000 0ustar00000000 000000 # extends 'layout.html' # block title ${dgettext('acct_mgr', 'Reset Password')} # endblock title # block head ${ super() } # endblock head # block content # if not authenticated

${dgettext('acct_mgr', 'Reset Password')}

${ dgettext("acct_mgr", "If you've forgotten your password, enter your username and email " "address below, and a new password will be sent to you.") }

${jmacros.form_token_input()}
# endif # endblock content trunk/acct_mgr/templates/jinja2/account_reset_password_email.txt000644 000000 000000 00000000326 14413553530 024015 0ustar00000000 000000 Your Trac password has been reset. Here is your account information: Login URL: <${login.link}> Username: ${account.username} Password: ${account.password} -- ${project.name} <${project.url}> ${project.descr} trunk/acct_mgr/templates/jinja2/account_user_changes_email.txt000644 000000 000000 00000000151 14413553530 023413 0ustar00000000 000000 Account ${account.action} for ${account.username} -- ${project.name} <${project.url}> ${project.descr} trunk/acct_mgr/templates/jinja2/account_user_table.html000644 000000 000000 00000004764 14413553530 022066 0ustar00000000 000000 {# Table style account/user list. Arguments: - accounts: - delete_enabled: - cls: - cols: #}
# if delete_enabled # endif # if 'name' in cols # endif # if 'email' in cols # endif # for account in accounts # if not account.approval # set title = None # elif 'email' in account.approval # set title = dgettext('acct_mgr', 'Email not verified') # elif account.approval[0] == 'pending' # set title = dgettext('acct_mgr', 'Approval pending') # elif account.approval[0] == 'revoked' # set title = dgettext('acct_mgr', 'Approval revoked') # else # set title = None # endif # if delete_enabled # endif # if 'name' in cols # endif # if 'email' in cols # endif # endfor
 ${dgettext('acct_mgr', 'Account')}${dgettext('acct_mgr', 'Name')}${dgettext('acct_mgr', 'Email')}${dgettext('acct_mgr', 'Last Login')}
${account.username} ## Additional account status icons # if account.locked # if account.release_hint ${dgettext('acct_mgr', 'Account locked')} # else ${dgettext('acct_mgr', 'Permanently locked')} # endif # endif ${account.name} # if not account.email or account.email.endswith('…') ${account.email} # else ${account.email} # endif ${pretty_dateinfo(account.last_visit) if account.last_visit}
trunk/acct_mgr/templates/jinja2/account_users.html000644 000000 000000 00000020213 14413553530 021065 0ustar00000000 000000 # extends 'admin.html' # block admintitle ${dgettext('acct_mgr', 'Accounts')} # endblock admintitle # block adminpanel ## Account property editor
${jmacros.form_token_input()}
${dgettext('acct_mgr', 'Add New Account:')}
# if ignore_auth_case

${dgettext('acct_mgr', 'Only lowercase usernames allowed')}

# endif

# if verify_enabled # endif
# if create_enabled # endif
# if not listing_enabled

${dgettext('acct_mgr', 'This password store does not support listing users.')}

# else
# endif ## TRANSLATOR: Position (# to # of #) or total, if not paginating

${ i18n_tag( dgettext("acct_mgr", "Accounts [1:(%(count)s)]"), tag.span(class_='trac-count'), count=displayed_items) }

${dgettext('acct_mgr', 'Filters')}
${dgettext('acct_mgr', 'Status')} # for filter in filters # endfor
${jmacros.form_token_input()} # with # set paginator = accounts # include "page_index.html" # endwith ## Main account list # include "account_user_table.html" # with # set paginator = accounts # include "page_index.html" # endwith
# if password_reset_enabled # endif # if delete_enabled # endif # if 'ACCTMGR_ADMIN' in req.perm # endif
# endblock adminpanel trunk/acct_mgr/templates/jinja2/account_verify_email.html000644 000000 000000 00000003345 14413553530 022406 0ustar00000000 000000 # extends 'layout.html' # block title ${dgettext('acct_mgr', 'Verify Email')} # endblock title # block head ${ super() } # endblock head # block content

${dgettext('acct_mgr', 'Verify Email')}

${ dgettext('acct_mgr', 'An email was sent to %(email)s with a token to verify your ' 'new address. Please check your email and enter the token in ' 'the form below.', email=req.session.email) }

${ i18n_tag( dgettext("acct_mgr", "You can [1:change your email address], if it is incorrect."), tag.a(href=href('prefs'))) }

${jmacros.form_token_input()}
# endblock content trunk/acct_mgr/templates/jinja2/account_verify_email.txt000644 000000 000000 00000000333 14413553530 022253 0ustar00000000 000000 Please visit the following URL to confirm your email address. Verification URL: <${verify.link}> Username: ${account.username} Verification Token: ${account.token} -- ${project.name} <${project.url}> ${project.descr} trunk/acct_mgr/tests/000755 000000 000000 00000000000 14711401206 013304 5ustar00000000 000000 trunk/acct_mgr/tests/__init__.py000644 000000 000000 00000003433 14711401206 015420 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2015 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import os import sys import unittest _twill_required = 'Twill>=2' try: import twill except ImportError: twill = None INCLUDE_FUNCTIONAL_TESTS = False else: # XXX Avoid tracenv log writing to stdout via twill.log if hasattr(twill, 'log') and hasattr(twill, 'handler'): twill.log.removeHandler(twill.handler) import pkg_resources try: pkg_resources.require(_twill_required) except: INCLUDE_FUNCTIONAL_TESTS = False twill = None else: INCLUDE_FUNCTIONAL_TESTS = os.environ.get('SKIP_FUNCTIONAL_TESTS') \ != '1' def makeSuite(test): return unittest.defaultTestLoader.loadTestsFromTestCase(test) def test_suite(): from . import (admin, api, db, guard, htfile, model, pwhash, register, svnserve, util, web_ui) from ..opt import tests as opt_tests suite = unittest.TestSuite() for mod in (admin, api, db, guard, htfile, model, pwhash, register, svnserve, util, web_ui, opt_tests): suite.addTest(mod.test_suite()) if INCLUDE_FUNCTIONAL_TESTS: from . import functional suite.addTest(functional.test_suite()) elif not twill: sys.stderr.write('SKIP: functional tests (%s unavailable)\n' % _twill_required) else: sys.stderr.write('SKIP: functional tests\n') return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/admin.py000644 000000 000000 00000017432 14711041732 014761 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann import shutil import tempfile import unittest from trac.core import Component, implements from trac.perm import PermissionCache, PermissionSystem from trac.test import EnvironmentStub, Mock from ..admin import ExtensionOrder, ConfigurationAdminPanel, UserAdminPanel from ..api import AccountManager, IAccountRegistrationInspector from ..db import SessionStore from ..register import BasicCheck, RegistrationError from . import makeSuite class BadCheck(Component): """Attributes/methods left out intentionally for testing.""" implements(IAccountRegistrationInspector) class DisabledCheck(BadCheck): """Won't even enable this one.""" class DummyCheck(Component): implements(IAccountRegistrationInspector) _domain = '' _description = \ """A dummy check for unit-testing the interface.""" def render_registration_fields(self, req, data): return None, None def validate_registration(self, req): if req.args.get('username') == 'dummy': raise RegistrationError('Dummy check error') return class _BaseTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(enable=[ 'trac.*', 'acct_mgr.api.*', 'acct_mgr.admin.*', 'acct_mgr.db.*', 'acct_mgr.register.*', 'acct_mgr.pwhash.HtDigestHashMethod', 'acct_mgr.tests.admin.BadCheck', 'acct_mgr.tests.admin.DummyCheck' ]) self.env.path = tempfile.mkdtemp() self.perm = PermissionSystem(self.env) # Create a user reference in the permission system. self.perm.grant_permission('admin', 'ACCTMGR_ADMIN') # Prepare a generic request object for admin actions. self.req = Mock(authname='admin', method='GET', args=dict(), abs_href=self.env.abs_href, chrome=dict(notices=[], warnings=[]), href=self.env.abs_href, locale='', redirect=lambda x: None, session=dict(), tz='' ) self.req.perm = PermissionCache(self.env, 'admin') self.acctmgr = AccountManager(self.env) def tearDown(self): shutil.rmtree(self.env.path) class ExtensionOrderTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.checks = ExtensionOrder(components=self.acctmgr.checks, list=self.acctmgr.register_checks) self.check_list = ['BasicCheck', 'EmailCheck', 'BotTrapCheck', 'RegExpCheck', 'UsernamePermCheck'] # Mock _setorder function call. for c in self.checks.get_all_components(): c_name = c.__class__.__name__ self.checks[c] = c_name in self.check_list and \ self.check_list.index(c_name) + 1 or 0 continue def test_component_count(self): self.assertEqual(self.checks.component_count(), 7) def test_get_enabled_components(self): enabled_components_count = 0 for c in self.checks.get_enabled_components(): c_name = c.__class__.__name__ self.assertTrue(c_name in self.check_list + ['BadCheck', 'DummyCheck']) self.assertFalse(c_name in ['DisabledCheck']) enabled_components_count += 1 self.assertEqual(enabled_components_count, 5) def test_get_enabled_component_names(self): self.assertEqual(self.checks.get_enabled_component_names(), self.check_list) def test_get_all_components(self): all_components_count = 0 for c in self.checks.get_all_components(): c_name = c.__class__.__name__ self.assertTrue(c_name in self.check_list + ['BadCheck', 'DummyCheck']) self.assertFalse(c_name in ['DisabledCheck']) all_components_count += 1 self.assertEqual(all_components_count, 7) class AccountManagerAdminPanelTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.cfg_panel_template = 'account_config.html' self.env.config.set('account-manager', 'password_store', 'SessionStore') self.admin = ConfigurationAdminPanel(self.env) self.bad_check = BadCheck(self.env) self.basic_check = BasicCheck(self.env) self.dummy_check = DummyCheck(self.env) self.store = SessionStore(self.env) def test_render_cfg_admin_panel(self): # Default configuration - all registration checks enabled. self.req.args['active'] = '3' response = self.admin.render_admin_panel(self.req, 'accounts', 'config', '') # Panel must use the appropriate template. self.assertEqual(response[0], self.cfg_panel_template) self._assert_no_msg(self.req) # Doc-string extraction must work. self.env.config.set('account-manager', 'register_check', 'DummyCheck') response = self.admin.render_admin_panel(self.req, 'accounts', 'config', '') check_list = response[1].get('check_list', []) self.assertEqual([check['doc'] for check in check_list if check['classname'] == 'DummyCheck'], ['A dummy check for unit-testing the interface.']) self.assertEqual(response[0], self.cfg_panel_template) self._assert_no_msg(self.req) # Even using badly defined checks should not stop panel rendering. self.env.config.set('account-manager', 'register_check', 'BadCheck, DisabledCheck') response = self.admin.render_admin_panel(self.req, 'accounts', 'config', '') self.assertEqual(response[1].get('disabled_check'), frozenset(['DisabledCheck'])) self.assertEqual(response[0], self.cfg_panel_template) self._assert_no_msg(self.req) # Another custom configuration: No check at all, if you insist. self.env.config.set('account-manager', 'register_check', '') self.assertFalse(self.acctmgr.register_checks) response = self.admin.render_admin_panel(self.req, 'accounts', 'config', '') self.assertEqual(response[0], self.cfg_panel_template) self._assert_no_msg(self.req) def _assert_no_msg(self, req): self.assertEqual(req.chrome['notices'], []) self.assertEqual(req.chrome['warnings'], []) class UserAdminPanelTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.user_panel_template = 'account_users.html' self.admin = UserAdminPanel(self.env) def test_render_user_admin_panel(self): response = self.admin.render_admin_panel(self.req, 'accounts', 'users', '') # Panel must use the appropriate template. self.assertEqual(response[0], self.user_panel_template) self._assert_no_msg(self.req) def _assert_no_msg(self, req): self.assertEqual(req.chrome['notices'], []) self.assertEqual(req.chrome['warnings'], []) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(ExtensionOrderTestCase)) suite.addTest(makeSuite(AccountManagerAdminPanelTestCase)) suite.addTest(makeSuite(UserAdminPanelTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/api.py000644 000000 000000 00000017021 14711041732 014434 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2012,2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann import shutil import tempfile import unittest from trac.core import TracError from trac.perm import PermissionCache, PermissionSystem from trac.test import EnvironmentStub, MockRequest from trac.web.session import Session from ..api import AccountManager from ..db import SessionStore from . import makeSuite class _BaseTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True, enable=['trac.*', 'acct_mgr.api.*', 'acct_mgr.db.SessionStore', 'acct_mgr.pwhash.*', 'acct_mgr.htfile.HtDigestStore'] ) self.env.path = tempfile.mkdtemp() self.perm = PermissionSystem(self.env) def tearDown(self): # Really close db connections. self.env.shutdown() shutil.rmtree(self.env.path) class AccountManagerTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.mgr = AccountManager(self.env) self.store = SessionStore(self.env) self.store.set_password('user', 'passwd') args = dict(username='user', name='', email='') self.req = MockRequest(self.env, authname='user1', args=args) def test_set_password(self): # Can't work without at least one password store. self.assertRaises(TracError, self.mgr.set_password, 'user', 'passwd') self.env.config.set( 'account-manager', 'password_store', 'SessionStore') self.mgr.set_password('user', 'passwd') # Refuse to overwrite existing credentials, if requested. self.assertRaises(TracError, self.mgr.set_password, 'user', 'passwd', overwrite=False) def test_approval_admin_keep_perm(self): self.perm.grant_permission('admin', 'ACCTMGR_ADMIN') # Some elevated permission action. action = 'USER_VIEW' self.assertFalse(action in PermissionCache(self.env)) req = self.req req.perm = PermissionCache(self.env, 'admin') req.session = Session(self.env, req) req.session.save() self.mgr.pre_process_request(req, None) self.assertTrue(action in req.perm) # Mock an authenticated request with account approval pending. req.session['approval'] = 'pending' req.session.save() # Don't touch admin user requests. self.mgr.pre_process_request(req, None) self.assertTrue(action in req.perm) def test_approval_user_strip_perm(self): # Some elevated permission action. action = 'USER_VIEW' self.assertFalse(action in PermissionCache(self.env)) self.perm.grant_permission('user', action) req = self.req req.perm = PermissionCache(self.env, 'user') req.session = Session(self.env, req) req.session.save() self.mgr.pre_process_request(req, None) self.assertTrue(action in req.perm) # Mock an authenticated request with account approval pending. req.session['approval'] = 'pending' req.session.save() # Remove elevated permission, if account approval is pending. self.mgr.pre_process_request(req, None) self.assertFalse(action in req.perm) def test_maybe_update_hash(self): # Configure another, primary password store. self.env.config.set('account-manager', 'password_store', 'HtDigestStore, SessionStore') self.env.config.set('account-manager', 'htdigest_file', '.htdigest') self.env.db_transaction(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,%s,%s,%s) """, ('user', 1, 'password_refreshed', '1')) # Refresh not happening due to 'password_refreshed' attribute. self.mgr._maybe_update_hash('user', 'passwd') for _, in self.env.db_query(""" SELECT value FROM session_attribute WHERE sid='user' AND authenticated=1 AND name='password' """): break else: self.fail("Session attribute 'password' not found.") self.env.db_transaction(""" DELETE FROM session_attribute WHERE sid='user' AND authenticated=1 AND name='password_refreshed' """) # Refresh (and effectively migrate) user credentials. self.mgr._maybe_update_hash('user', 'passwd') for _, in self.env.db_query(""" SELECT value FROM session_attribute WHERE sid='user' AND authenticated=1 AND name='password' """): self.fail("Session attribute 'password' should not be found.") for value, in self.env.db_query(""" SELECT value FROM session_attribute WHERE sid='user' AND authenticated=1 AND name='password_refreshed' """): self.assertEqual('1', value) break else: self.fail("Session attribute 'password_refreshed' not found.") class PermissionTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.req = MockRequest(self.env) self.actions = ['ACCTMGR_ADMIN', 'ACCTMGR_CONFIG_ADMIN', 'ACCTMGR_USER_ADMIN', 'EMAIL_VIEW', 'USER_VIEW'] # Tests def test_available_actions(self): for action in self.actions: self.assertFalse(action not in self.perm.get_actions()) def test_available_actions_no_perms(self): for action in self.actions: self.assertFalse(self.perm.check_permission(action, 'anonymous')) def test_available_actions_config_admin(self): user = 'config_admin' self.perm.grant_permission(user, 'ACCTMGR_CONFIG_ADMIN') actions = [self.actions[0]] + self.actions[2:] for action in actions: self.assertFalse(self.perm.check_permission(action, user)) def test_available_actions_user_admin(self): user = 'user_admin' self.perm.grant_permission(user, 'ACCTMGR_USER_ADMIN') for action in self.actions[2:]: self.assertTrue(self.perm.check_permission(action, user)) for action in self.actions[:2] + ['TRAC_ADMIN']: self.assertFalse(self.perm.check_permission(action, user)) def test_available_actions_full_perms(self): perm_map = dict(acctmgr_admin='ACCTMGR_ADMIN', trac_admin='TRAC_ADMIN') for user in perm_map: self.perm.grant_permission(user, perm_map[user]) for action in self.actions: self.assertTrue(self.perm.check_permission(action, user)) if user != 'trac_admin': self.assertFalse(self.perm.check_permission('TRAC_ADMIN', user)) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(AccountManagerTestCase)) suite.addTest(makeSuite(PermissionTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/db.py000644 000000 000000 00000007374 14711041732 014262 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2007 Matthew Good # Copyright (C) 2011,2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import unittest from trac.test import EnvironmentStub from ..db import SessionStore from . import makeSuite class _BaseTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(enable=['trac.*', 'acct_mgr.*']) self.env.config.set('account-manager', 'password_store', 'SessionStore') self.store = SessionStore(self.env) def test_get_users(self): with self.env.db_transaction as db: db.executemany(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,1,'password',%s) """, [('a', 'a'), ('b', 'b'), ('c', 'c')]) self.assertEqual(set(['a', 'b', 'c']), set(self.store.get_users())) def test_has_user(self): self.env.db_transaction(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,'1','password',%s) """, ('bar', 'bar')) self.assertFalse(self.store.has_user('foo')) self.assertTrue(self.store.has_user('bar')) def test_create_user(self): self.assertFalse(self.store.has_user('foo')) self.store.set_password('foo', 'password') self.assertTrue(self.store.has_user('foo')) def test_overwrite(self): self.assertTrue(self.store.set_password('foo', 'pass1')) self.assertFalse(self.store.set_password('foo', 'pass2', overwrite=False)) self.assertTrue(self.store.check_password('foo', 'pass1')) self.assertTrue(self.store.set_password('bar', 'pass', overwrite=False)) def test_update_password(self): self.store.set_password('foo', 'pass1') self.assertFalse(self.store.check_password('foo', 'pass2')) self.store.set_password('foo', 'pass2') self.assertTrue(self.store.check_password('foo', 'pass2')) self.store.set_password('foo', 'pass3', 'pass2') self.assertTrue(self.store.check_password('foo', 'pass3')) def test_delete_user(self): self.store.set_password('foo', 'password') self.assertTrue(self.store.has_user('foo')) self.assertTrue(self.store.delete_user('foo')) self.assertFalse(self.store.has_user('foo')) def test_delete_nonexistant_user(self): self.assertFalse(self.store.has_user('foo')) self.assertFalse(self.store.delete_user('foo')) def test_unicode_username_and_password(self): username = u'\u4e60' password = u'\u4e61' self.store.set_password(username, password) self.assertTrue(self.store.check_password(username, password)) class HtDigestTestCase(_BaseTestCase): def setUp(self): super(HtDigestTestCase, self).setUp() self.env.config.set('account-manager', 'hash_method', 'HtDigestHashMethod') self.env.config.set('account-manager', 'db_htdigest_realm', 'TestRealm') class HtPasswdTestCase(_BaseTestCase): def setUp(self): super(HtPasswdTestCase, self).setUp() self.env.config.set('account-manager', 'hash_method', 'HtPasswdHashMethod') def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(HtDigestTestCase)) suite.addTest(makeSuite(HtPasswdTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/functional/000755 000000 000000 00000000000 14711046500 015450 5ustar00000000 000000 trunk/acct_mgr/tests/functional/__init__.py000644 000000 000000 00000005665 14413553530 017602 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2008 Matthew Good # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Pedro Algarvio import io import os import unittest import twill try: import tidylib except ImportError: tidylib = None class TwillCommands(object): def __init__(self, commands): self.commands = commands self.browser = commands.browser def __getattr__(self, name): value = getattr(self.commands, name) if not callable(value): return value def wrapper(*args, **kwargs): prev = self.browser.result try: try: return value(*args, **kwargs) finally: result = self.browser.result if result is not prev and 200 <= result.http_code < 300: self.commands.tidy_ok() except twill.errors.TwillException as e: testname = _state.testname if not testname: raise filename = os.path.join(_state.testenv.tracdir, 'log', testname + '.html') html = self.browser.html with io.open(filename, 'w', encoding='utf-8') as f: f.write(html) raise twill.errors.TwillAssertionError('%s at %s' % (e, filename)) return wrapper tc = TwillCommands(twill.commands) if tidylib: twill.commands.config('require_tidy', 1) twill.commands.config('tidy_show_warnings', 'no') class FunctionalTestState(object): testenv = None tester = None testname = None _state = FunctionalTestState() class FunctionalTestSuite(unittest.TestSuite): def run(self, result): if _state.testenv: testenv = None else: from .testenv import TestEnvironment from .tester import FunctionalTester testenv = TestEnvironment() testenv.init() _state.testenv = testenv _state.tester = FunctionalTester(testenv.url) try: return super(FunctionalTestSuite, self).run(result) finally: if testenv: testenv.cleanup() class FunctionalTestCaseSetup(unittest.TestCase): @property def _testenv(self): return _state.testenv @property def _tester(self): return _state.tester @property def _smtpd(self): return _state.testenv.smtpd def setUp(self): _state.testname = self.__class__.__name__ def tearDown(self): _state.testname = None def test_suite(): from . import testcases return testcases.test_suite() if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/functional/smtpd.py000644 000000 000000 00000013351 14607366611 017170 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2008 Matthew Good # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Pedro Algarvio from __future__ import absolute_import import threading try: import aiosmtpd except ImportError: import asyncore, smtpd aiosmtpd = None else: import asyncio from aiosmtpd.controller import UnthreadedController from aiosmtpd.handlers import Message class NonForgetingSMTPServerStore(object): """ Non forgetting store for SMTP data. """ # We override trac's implementation of a mailstore because if forgets # the last message when a new one arrives. # Account Manager at times sends more than one email and we need to be # able to test both def __init__(self): self.messages = {} self.last_message = {} @property def recipients(self): return self.last_message.get('recipients') @property def sender(self): return self.last_message.get('sender') @property def message(self): return self.last_message.get('message') def process_message(self, mailfrom, rcpttos, data, **kwargs): message = {'recipients': rcpttos, 'sender': mailfrom, 'message': data} self.messages.update((recipient, message) for recipient in rcpttos) self.last_message = message def full_reset(self): self.messages.clear() self.last_message.clear() class SMTPThreadedServerMethods(object): """ Run a SMTP server for a single connection, within a dedicated thread """ host = 'localhost' def get_sender(self, recipient=None): """Return the sender of a message. If recipient is passed, return the sender for the message sent to that recipient, else, send the sender for last message""" try: return self.store.messages[recipient]['sender'] except KeyError: return self.store.sender def get_recipients(self, recipient=None): """Return the recipients of a message. If recipient is passed, return the recipients for the message sent to that recipient, else, send recipients for last message""" try: return self.store.messages[recipient]['recipients'] except KeyError: return self.store.recipients def get_message(self, recipient=None): """Return the message of a message. If recipient is passed, return the actual message for the message sent to that recipient, else, send the last message""" try: return self.store.messages[recipient]['message'] except KeyError: return self.store.message def get_message_parts(self, recipient): """Return the message parts(dict). If recipient is passed, return the parts for the message sent to that recipient, else, send the parts for last message""" try: return self.store.messages[recipient] except KeyError: return None def full_reset(self): self.store.full_reset() if aiosmtpd: class Handler(Message): store = None def __init__(self, store): self.store = store def handle_message(self, message): pass def prepare_message(self, session, envelope): content = envelope.content if content.endswith(b'\r\n'): content = content[:-2] data = content.decode('utf-8') mailfrom = envelope.mail_from recipients = envelope.rcpt_tos self.store.process_message(mailfrom, recipients, data) return None class Controller(UnthreadedController): def _create_server(self): return self.loop.create_server( self._factory_invoker, host=self.hostname, port=self.port, ssl=self.ssl_context, reuse_address=True) class SMTPThreadedServer(threading.Thread, SMTPThreadedServerMethods): def __init__(self, port): self.port = port self.store = NonForgetingSMTPServerStore() loop = asyncio.new_event_loop() handler = Handler(self.store) controller = Controller(handler, loop=loop, hostname=self.host, port=port) self.loop = loop self.controller = controller controller.begin() super().__init__(target=loop.run_forever) self.daemon = True def stop(self): if self.loop.is_running(): self.loop.call_soon_threadsafe(self.loop.stop) while self.is_alive(): self.join(0.1) self.controller.end() self.loop.close() else: class SMTPServer(smtpd.SMTPServer): store = None def __init__(self, localaddr, store): smtpd.SMTPServer.__init__(self, localaddr, None) self.store = store def process_message(self, peer, mailfrom, rcpttos, data, **kwargs): self.store.process_message(mailfrom, rcpttos, data) class SMTPThreadedServer(threading.Thread, SMTPThreadedServerMethods): def __init__(self, port): self.port = port self.store = NonForgetingSMTPServerStore() super(SMTPThreadedServer, self).__init__(target=asyncore.loop, args=(0.1, True)) self.daemon = True def start(self): self.server = SMTPServer((self.host, self.port), self.store) super(SMTPThreadedServer, self).start() def stop(self): self.server.close() self.join() trunk/acct_mgr/tests/functional/testcases.py000644 000000 000000 00000037403 14711046500 020027 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2008 Matthew Good # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Pedro Algarvio import base64 import email import re import unittest from . import FunctionalTestSuite, FunctionalTestCaseSetup, tc def parse_smtp_message(data): assert data is not None if isinstance(data, bytes): data = data.decode('utf-8') message = email.message_from_string(data) headers = dict(message.items()) if message.is_multipart(): for part in message.walk(): if part.get_content_type() == 'text/plain': break else: return headers, u'' else: part = message payload = part.get_payload(decode=True) encoding = part.get_content_charset() body = payload.decode(encoding) return headers, body class TestInitialSetup(FunctionalTestCaseSetup): def runTest(self): """initial Trac authentication setup""" tc.find('Login') tc.follow('Login') tc.find(r'logged in as ]+>setup') # step 1 tc.find(r'>\s*Step 1: Authentication Options\s*') tc.formvalue('cfg_wiz', 'acctmgr_login', '1') tc.formvalue('cfg_wiz', 'next', '1') tc.submit() # step 2 tc.find(r'>\s*Step 2: Password Store\s*') tc.formvalue('cfg_wiz', 'init_store', 'file') tc.formvalue('cfg_wiz', 'init_store_file', 'htpasswd') tc.formvalue('cfg_wiz', 'next', '1') tc.submit() # step 3 tc.find(r'>\s*Step 3: Password Policy\s*') tc.formvalue('cfg_wiz', 'next', '1') tc.submit() # step 4 tc.find(r'>\s*Step 4: Account Policy\s*') tc.formvalue('cfg_wiz', 'acctmgr_register', 'true') tc.formvalue('cfg_wiz', 'BasicCheck', '1') tc.formvalue('cfg_wiz', 'EmailCheck', '2') tc.formvalue('cfg_wiz', 'RegExpCheck', '3') tc.formvalue('cfg_wiz', 'RegExpCheck.username_regexp', '^[-A-Za-z0-9._]{3,}$') tc.formvalue('cfg_wiz', 'UsernamePermCheck', '4') tc.formvalue('cfg_wiz', 'next', '1') tc.submit() # step 5 tc.find(r'>\s*Step 5: Account Guard\s*') tc.formvalue('cfg_wiz', 'next', '1') tc.submit() # step 6 - admin tc.find(r'>\s*Step 6: Initialization\s*') tc.find(r'>\s*Add Admin Account:\s*') tc.formvalue('cfg_wiz', 'username', 'admin') tc.formvalue('cfg_wiz', 'password', 'admin') tc.formvalue('cfg_wiz', 'password_confirm', 'admin') tc.formvalue('cfg_wiz', 'add', '1') tc.submit() # step 6 - admin created tc.find(r'\bAccount <[a-z]+>admin created\.') tc.find(r'>\s*Step 6: Initialization\s*') #tc.notfind(r'>\s*Add Admin Account:\s*') tc.formvalue('cfg_wiz', 'save', '1') tc.submit() # wizard finished tc.url(re.escape(self._tester.url)) tc.find(r'>WikiStart') tc.find(r'logged in as ]+>setup') self._tester.logout() class TestFormLoginAdmin(FunctionalTestCaseSetup): def runTest(self): """Login with test user 'admin'""" self._tester.login('admin') self._tester.logout() class TestAdminFormAddUser(FunctionalTestCaseSetup): def runTest(self): self._tester.login('admin') tc.find('Admin') tc.follow('Admin') tc.find('Users') tc.follow('Users') tc.find(r'\s*Add New Account:\s*') form = 'account-editor' tc.formvalue(form, 'username', 'user') tc.formvalue(form, 'password', 'user') tc.formvalue(form, 'password_confirm', 'user') tc.formvalue(form, 'email', 'user@trac.example.org') tc.formvalue(form, 'email_approved', []) tc.submit() tc.find(r'\bAccount <[a-z]+>user created\.') tc.find('Users') tc.follow('Users') tc.find(r']*>user') self._tester.logout() class TestFormLoginUser(FunctionalTestCaseSetup): def runTest(self): """Login with test user 'user'""" self._tester.login('user') self._tester.logout() class TestRegisterNewUser(FunctionalTestCaseSetup): def runTest(self): """Register 'testuser'""" self._tester.register('testuser', 'testuser@trac.example.org') class TestLoginNewUser(FunctionalTestCaseSetup): def runTest(self): """Login just registered 'testuser'""" self._tester.login('testuser') self._tester.logout() class TestFailRegisterPasswdConfirmNotPassed(FunctionalTestCaseSetup): def runTest(self): """Fail if no password confirmation is passed""" reg_form_name = 'acctmgr_registerform' username = 'testuser1' tc.find("Register") tc.follow("Register") tc.formvalue(reg_form_name, 'user', username) tc.formvalue(reg_form_name, 'password', username) tc.submit() tc.find(r'The passwords must match\.') class TestFailRegisterDuplicateUsername(FunctionalTestCaseSetup): def runTest(self): """Fail if username exists""" reg_form_name = 'acctmgr_registerform' username = 'testuser' tc.find("Register") tc.follow("Register") tc.formvalue(reg_form_name, 'user', username) tc.formvalue(reg_form_name, 'password', username) tc.formvalue(reg_form_name, 'password_confirm', username) tc.submit() tc.find("Another account or group already exists") class TestNewAccountNotification(FunctionalTestCaseSetup): def runTest(self): """Send out notification on new account registrations""" tc.notfind('Logout') address_to_notify = 'admin@testenv%s.tld' % self._testenv.port new_username = 'foo' new_username_email = "foo@%s" % address_to_notify.split('@')[1] env = self._testenv.get_trac_environment() env.config.set('account-manager', 'account_changes_notify_addresses', address_to_notify) env.config.set('account-manager', 'notify_actions', 'new,change,delete') env.config.set('account-manager', 'force_passwd_change', 'true') env.config.save() self._tester.register(new_username, new_username_email) headers, body = parse_smtp_message(self._smtpd.get_message()) self.assertEqual(self._smtpd.get_recipients(), [address_to_notify]) self.assertEqual(headers['Subject'], '[testenv%d] Account created: %s' % (self._testenv.port, new_username)) self.assertEqual(headers['X-URL'], self._testenv.url) class TestNewAccountEmailVerification(FunctionalTestCaseSetup): def runTest(self): """User is shown info that he needs to verify his address""" user_email = "foo@testenv%s.tld" % self._testenv.port self._tester.login("foo") tc.find(r'An email has been sent to <%s> with a token to ' r'verify your new email address' r'' % re.escape(user_email)) self._tester.go_to_front() tc.find(r'Warning:\s*' r'Your permissions have been limited until you ' r'verify your email address') class VerifyNewAccountEmailAddress(FunctionalTestCaseSetup): def runTest(self): """User confirms his address with mailed token""" headers, body = parse_smtp_message(self._smtpd.get_message()) blines = body.splitlines() token = [l.split() for l in blines if 'Verification Token' in l][0][-1] try: base64.urlsafe_b64decode(token if isinstance(token, bytes) else token.encode('ascii')) except: self.fail('base64.urlsafe_b64decode failed: ' + repr(token)) warning = (r'Warning:\s*' r'Your permissions have been limited until you verify your email address') tc.find('Logout') # User is logged in from previous test self._tester.go_to_front() tc.find(warning) tc.go(self._testenv.url + '/verify_email') reg_form_name = 'acctmgr_verify_email' tc.formvalue(reg_form_name, 'token', token) tc.submit('verify') tc.notfind(warning) tc.find('Thank you for verifying your email address') self._tester.go_to_front() class PasswdResetsNotifiesAdmin(FunctionalTestCaseSetup): def runTest(self): """User password resets notifies admin by mail""" self._tester.logout() self._smtpd.full_reset() # Clean all previous sent emails tc.notfind('Logout') # Goto Login tc.find("Login") tc.follow("Login") # Do we have the Forgot passwd link tc.find('Forgot your password?') tc.follow('Forgot your password?') username = "foo" email_addr = "foo@testenv%s.tld" % self._testenv.port reset_form_name = 'acctmgr_passwd_reset' tc.formvalue(reset_form_name, 'username', username) tc.formvalue(reset_form_name, 'email', email_addr) tc.submit() headers, body = parse_smtp_message( self._smtpd.get_message('admin@testenv%s.tld' % self._testenv.port)) self.assertEqual(headers['Subject'], '[testenv%s] Account password reset: %s' % (self._testenv.port, username)) self.assertEqual(headers['X-URL'], self._testenv.url) class PasswdResetsNotifiesUser(FunctionalTestCaseSetup): def runTest(self): """Password reset sends new password to user by mail""" username = "foo" email_addr = "foo@testenv%s.tld" % self._testenv.port headers, self.body = parse_smtp_message(self._smtpd.get_message(email_addr)) self.assertEqual(headers['Subject'], '[testenv%d] Account password reset: %s' % (self._testenv.port, username)) class UserLoginWithMailedPassword(PasswdResetsNotifiesUser): def runTest(self): """User is able to login with the new password""" PasswdResetsNotifiesUser.runTest(self) # Does it include a new password body = self.body username = 'foo' self.assertTrue('Username: %s' % username in body) self.assertTrue('Password:' in body) passwd = [l.split(':')[1].strip() for l in body.splitlines() if 'Password:' in l][0] self._tester.login(username, passwd) class UserIsForcedToChangePassword(FunctionalTestCaseSetup): def runTest(self): """User is forced to change password after resets""" tc.find('Logout') tc.find(r'You are required to change password because of a recent ' r'password change request\.') class UserCantBrowseUntilPasswdChange(PasswdResetsNotifiesUser): def runTest(self): """User can't navigate out of '/prefs/account' before password change""" PasswdResetsNotifiesUser.runTest(self) tc.find('Logout') forced_passwd_change_url = '^%s/prefs/account$' % self._tester.url tc.follow('Roadmap') tc.url(forced_passwd_change_url) tc.follow('View Tickets') tc.url(forced_passwd_change_url) tc.follow('New Ticket') tc.url(forced_passwd_change_url) # Now, let's change his password body = self.body passwd = [l.split(':')[1].strip() for l in body.splitlines() if 'Password:' in l][0] username = 'foo' change_passwd_form = 'userprefs' tc.formvalue(change_passwd_form, 'old_password', passwd) tc.formvalue(change_passwd_form, 'password', username) tc.formvalue(change_passwd_form, 'password_confirm', username) tc.submit() tc.notfind("You are required to change password because of a recent " "password change request") tc.find(r'Thank you for taking the time to update your password\.') # We can now browse away from /prefs/accounts tc.follow('Roadmap') tc.url(self._tester.url + '/roadmap') # Clear the mailstore self._smtpd.full_reset() class DeleteAccountNotifiesAdmin(FunctionalTestCaseSetup): def runTest(self): """Delete account notifies admin""" tc.find("Logout") # We're logged-in from previous post tc.follow("Preferences") tc.follow("Account") tc.url(self._testenv.url + '/prefs/account') delete_account_form_name = 'acctmgr_delete_account' tc.formvalue(delete_account_form_name, 'password', 'foo') tc.submit() tc.find("Login") # We're logged out when we delete our account headers, _ = parse_smtp_message(self._smtpd.get_message()) self.assertEqual(headers['Subject'], '[testenv%d] Account deleted: %s' % (self._testenv.port, 'foo')) class UserNoLongerLogins(FunctionalTestCaseSetup): def runTest(self): """Deleted user can't login""" tc.follow('Login') login_form_name = 'acctmgr_loginform' tc.formvalue(login_form_name, 'user', 'foo') tc.formvalue(login_form_name, 'password', 'foo') tc.submit() tc.find("Invalid username or password") tc.notfind('Logout') class UserIsAbleToRegisterWithSameUserName(FunctionalTestCaseSetup): def runTest(self): """Register with deleted username (session and session_attributes clean)""" self._tester.register('foo', 'foo@trac.example.org') self._tester.login('foo') self._tester.logout() self._smtpd.full_reset() class NoEmailVerificationForAnonymousUsers(FunctionalTestCaseSetup): def runTest(self): """Anonymous users don't get their email address verified""" tc.find("Login") tc.follow("Preferences") form_name = 'userprefs' email_address = 'anonyous.user@fakedomain.tld' tc.formvalue(form_name, 'email', email_address) tc.submit() tc.notfind(r'Notice:\s*An email has been sent ' r'to {0} with a token to verify ' r'your new email address' .format(re.escape(email_address))) self._tester.go_to_front() tc.notfind(r'Warning:\s*Your permissions have ' r'been limited until you verify ' r'your email address') def test_suite(): suite = FunctionalTestSuite() suite.addTest(TestInitialSetup()) suite.addTest(TestFormLoginAdmin()) suite.addTest(TestAdminFormAddUser()) suite.addTest(TestFormLoginUser()) suite.addTest(TestRegisterNewUser()) suite.addTest(TestLoginNewUser()) suite.addTest(TestFailRegisterPasswdConfirmNotPassed()) suite.addTest(TestFailRegisterDuplicateUsername()) suite.addTest(TestNewAccountNotification()) suite.addTest(TestNewAccountEmailVerification()) suite.addTest(VerifyNewAccountEmailAddress()) suite.addTest(PasswdResetsNotifiesAdmin()) suite.addTest(PasswdResetsNotifiesUser()) suite.addTest(UserLoginWithMailedPassword()) suite.addTest(UserIsForcedToChangePassword()) suite.addTest(UserCantBrowseUntilPasswdChange()) suite.addTest(DeleteAccountNotifiesAdmin()) suite.addTest(UserNoLongerLogins()) suite.addTest(UserIsAbleToRegisterWithSameUserName()) suite.addTest(NoEmailVerificationForAnonymousUsers()) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/functional/testenv.py000644 000000 000000 00000015547 14413553530 017533 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2008 Matthew Good # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Pedro Algarvio import os import sys import time import socket import subprocess from trac.env import Environment from trac.util.compat import close_fds try: from trac.test import rmtree except ImportError: from shutil import rmtree from ...compat import unicode from .smtpd import SMTPThreadedServer TOX_ENV_DIR = os.environ.get('TOX_ENV_DIR') if hasattr(subprocess.Popen, '__enter__'): Popen = subprocess.Popen else: class Popen(subprocess.Popen): def __enter__(self): return self def __exit__(self, *args): try: if self.stdin: self.stdin.close() finally: self.wait() for f in (self.stdout, self.stderr): if f: f.close() def get_topdir(): path = os.path.dirname(os.path.abspath(__file__)) suffix = '/acct_mgr/tests/functional'.replace('/', os.sep) if not path.endswith(suffix): raise RuntimeError("%r doesn't end with %r" % (path, suffix)) return path[:-len(suffix)] def get_testdir(): dir_ = TOX_ENV_DIR if dir_ and os.path.isdir(dir_): dir_ = os.path.join(dir_, 'tmp') else: dir_ = get_topdir() if not os.path.isabs(dir_): raise RuntimeError('Non absolute directory: %s' % repr(dir_)) return os.path.join(dir_, 'testenv') def get_ephemeral_port(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('127.0.0.1', 0)) s.listen(1) return s.getsockname()[1] finally: s.close() def to_b(value): if isinstance(value, unicode): return value.encode('utf-8') if isinstance(value, bytes): return value raise ValueError(type(value)) class TestEnvironment(object): _testdir = get_testdir() _plugins_dir = os.path.join(_testdir, 'plugins') if not TOX_ENV_DIR else '' _devnull = None _log = None port = None smtp_port = None tracdir = None url = None smtpd = None _env = None _tracd = None def __init__(self): if os.path.isdir(self._testdir): rmtree(self._testdir) os.mkdir(self._testdir) if self._plugins_dir: os.mkdir(self._plugins_dir) _inherit_template = """\ [inherit] plugins_dir = %(plugins_dir)s [logging] log_type = file log_level = INFO [trac] base_url = %(url)s use_chunked_encoding = disabled [project] url = %(url)s admin = testenv%(port)d@localhost [notification] smtp_enabled = enabled smtp_from = testenv%(port)d@localhost smtp_port = %(smtp_port)d smtp_server = localhost """ @property def inherit_file(self): return self._inherit_template % \ {'plugins_dir': self._plugins_dir, 'url': self.url, 'port': self.port, 'smtp_port': self.smtp_port} def init(self): self._devnull = os.open(os.devnull, os.O_RDWR) self._log = os.open(os.path.join(self._testdir, 'tracd.log'), os.O_WRONLY | os.O_CREAT | os.O_APPEND) self.port = get_ephemeral_port() self.smtp_port = get_ephemeral_port() if self._plugins_dir: self.check_call([sys.executable, 'setup.py', 'develop', '-mxd', self._plugins_dir]) self.tracdir = os.path.join(self._testdir, 'trac') self.url = 'http://127.0.0.1:%d/%s' % \ (self.port, os.path.basename(self.tracdir)) inherit = os.path.join(self._testdir, 'inherit.ini') with open(inherit, 'w') as f: f.write(self.inherit_file) args = [sys.executable, '-m', 'trac.admin.console', self.tracdir] with self.popen(args, stdin=subprocess.PIPE) as proc: proc.stdin.write( b'initenv --inherit=%s testenv%d sqlite:db/trac.db\n' b'config set components acct_mgr.* enabled\n' b'config set components trac.web.auth.loginmodule disabled\n' % (to_b(inherit), self.port)) self.smtpd = SMTPThreadedServer(self.smtp_port) self.smtpd.start() self.start() def cleanup(self): self.stop() if self.smtpd: self.smtpd.stop() self.smtpd = None if self._env: self._env.shutdown() self._env = None if self._devnull is not None: os.close(self._devnull) self._devnull = None if self._log is not None: os.close(self._log) self._log = None def start(self): if self._tracd and self._tracd.returncode is None: raise RuntimeError('tracd is running') args = [ sys.executable, '-m', 'trac.web.standalone', '--port=%d' % self.port, '--hostname=localhost', self.tracdir, ] self._tracd = self.popen(args, stdout=self._log, stderr=self._log) start = time.time() while time.time() - start < 10: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(('127.0.0.1', self.port)) except socket.error: time.sleep(0.125) else: break finally: s.close() else: raise RuntimeError('Timed out waiting for tracd to start') def stop(self): if self._tracd: try: self._tracd.terminate() except EnvironmentError: pass self._tracd.wait() self._tracd = None def restart(self): self.stop() self.start() def popen(self, *args, **kwargs): kwargs.setdefault('stdin', self._devnull) kwargs.setdefault('stdout', self._devnull) kwargs.setdefault('stderr', self._devnull) kwargs.setdefault('close_fds', close_fds) return Popen(*args, **kwargs) def check_call(self, *args, **kwargs): kwargs.setdefault('stdin', self._devnull) kwargs.setdefault('stdout', subprocess.PIPE) kwargs.setdefault('stderr', subprocess.PIPE) with self.popen(*args, **kwargs) as proc: stdout, stderr = proc.communicate() if proc.returncode != 0: raise RuntimeError('Exited with %d (stdout %r, stderr %r)' % (proc.returncode, stdout, stderr)) def get_trac_environment(self): if not self._env: self._env = Environment(self.tracdir) return self._env def _tracadmin(self, *args): self.check_call((sys.executable, '-m', 'trac.admin.console', self.tracdir) + args) trunk/acct_mgr/tests/functional/tester.py000644 000000 000000 00000004455 14413553530 017345 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2008 Matthew Good # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Pedro Algarvio import re from . import tc internal_error = 'Trac detected an internal error:' class FunctionalTester(object): url = None def __init__(self, url): self.url = url self.go_to_front() def go_to_url(self, url): tc.go(url) tc.url(re.escape(url)) tc.notfind(internal_error) def go_to_front(self): """Go to the Trac front page""" self.go_to_url(self.url) def login(self, username, passwd=None): """Override FunctionalTester.login, we're not using Basic Authentication.""" if not passwd: passwd = username login_form_name = 'acctmgr_loginform' self.go_to_front() tc.find('Login') tc.follow('Login') tc.formvalue(login_form_name, 'user', username) tc.formvalue(login_form_name, 'password', passwd) tc.submit() tc.find("logged in as ]+>%s" % username) tc.find("Logout") tc.url(self.url) tc.notfind(internal_error) def logout(self): tc.formvalue('logout', 'logout', 'Logout') tc.submit() tc.notfind(internal_error) tc.notfind('logged in as') def register(self, username, email='', passwd=None): """Allow user registration.""" if not passwd: passwd = username reg_form_name = 'acctmgr_registerform' tc.find("Register") tc.follow("Register") tc.formvalue(reg_form_name, 'user', username) tc.formvalue(reg_form_name, 'password', passwd) tc.formvalue(reg_form_name, 'password_confirm', passwd) tc.formvalue(reg_form_name, 'email', email) tc.submit() tc.notfind("The passwords must match.") tc.notfind(internal_error) tc.find(r'Your username has been successfully registered but your ' r'account still requires activation\. Please login as user ' r'{0}, and follow the instructions\.' .format(re.escape(username))) tc.url('/login$') trunk/acct_mgr/tests/guard.py000644 000000 000000 00000020407 14711041732 014767 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann import shutil import tempfile import unittest from time import sleep from trac.test import EnvironmentStub, MockRequest from trac.util.datefmt import to_datetime, to_timestamp from trac.web.session import Session from ..guard import AccountGuard from . import makeSuite class AccountGuardTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True, enable=['trac.*', 'acct_mgr.guard.*']) self.env.path = tempfile.mkdtemp() self.env.config.set('account-manager', 'login_attempt_max_count', 1) self.user = 'user' self.session = self._create_session(self.user) self.guard = AccountGuard(self.env) def tearDown(self): self.env.shutdown() shutil.rmtree(self.env.path) # Helpers def _create_session(self, user, authenticated=1, name='', email=''): args = dict(username=user, name=name, email=email) req = MockRequest(self.env, authname=bool(authenticated) and user or 'anonymous', args=args) req.session = Session(self.env, req) req.session.save() return req.session def _mock_failed_attempt(self, requests=1): ipnr = '127.0.0.1' ts = to_timestamp(to_datetime(None)) attempts = eval(self.session.get('failed_logins', '[]')) count = int(self.session.get('failed_logins_count', 0)) lock_count = int(self.session.get('lock_count', 0)) max_ = self.env.config.getint('account-manager', 'login_attempt_max_count') for r in range(requests): attempts.append(dict(ipnr=ipnr, time=ts)) count += 1 # Assume, that every lock is enforced. if not count < max_: lock_count += 1 self.session['failed_logins'] = str(attempts) self.session['failed_logins_count'] = count self.session['lock_count'] = lock_count self.session.save() return ts # Tests def test_failed_count(self): ipnr = '127.0.0.1' # Won't track anonymous sessions and unknown accounts/users. self.assertEqual(self.guard.failed_count(None, ipnr), 0) # Regular account without failed attempts logged. user = self.user # Start without failed attempts logged, accumulating failed attempts. self.assertEqual(self.guard.failed_count(user, ipnr), 1) self.assertEqual(self.guard.failed_count(user, ipnr), 2) # Read failed attempts. self.assertEqual(self.guard.failed_count(user, ipnr, None), 2) # Reset failed attempts, returning deleted attempts. self.assertEqual(self.guard.failed_count(user, reset=True), 2) self.assertEqual(self.guard.failed_count(user, reset=None), 0) def test_functional(self): ipnr = '127.0.0.1' user = self.user # Regular account without failed attempts logged. self.assertEqual(self.guard.lock_count(user), 0) self.assertEqual(self.guard.lock_time(user), 0) self.assertEqual(self.guard.release_time(user), 0) self.assertEqual(self.guard.user_locked(user), False) # Log failed attempt - this time with the real method. self.assertEqual(self.guard.failed_count(user, ipnr), 1) # Mock acct_mgr.LoginModule.authenticate behavior. if self.guard.user_locked(user): self.guard.lock_count(user, 'up') self.assertEqual(self.guard.lock_count(user), 1) self.assertEqual(self.guard.lock_time(user), 0) self.assertEqual(self.guard.release_time(user), 0) self.assertEqual(self.guard.user_locked(user), True) # Switch to time lock. self.env.config.set('account-manager', 'user_lock_time', 2) self.assertTrue(self.guard.release_time(user) > 0) self.assertEqual(self.guard.user_locked(user), True) sleep(2) self.assertEqual(self.guard.user_locked(user), False) self.assertEqual(self.guard.lock_time(user), 2) self.assertEqual(self.guard.lock_time(user, True), 2) self.env.config.set('account-manager', 'user_lock_time_progression', 3) self.assertEqual(self.guard.lock_time(user, True), 6) # Switch-back to permanent locking. self.env.config.set('account-manager', 'user_lock_time', 0) self.assertEqual(self.guard.user_locked(user), True) def test_lock_count(self): user = self.user self.assertEqual(self.guard.lock_count(user), 0) # Validate helper method too. self._mock_failed_attempt() # Increment per failed login. self.assertEqual(self.guard.lock_count(user, 'set'), 2) self.assertEqual(self.guard.lock_count(user), 2) # Return updated value on reset as well. self.assertEqual(self.guard.lock_count(user, 'reset'), 0) def test_lock_time(self): self.env.config.set('account-manager', 'user_lock_time', 30) self.env.config.set('account-manager', 'user_lock_time_progression', 1) # Won't track anonymous sessions and unknown accounts/users. self.assertEqual(self.guard.lock_time(None), 0) # Regular account without failed attempts logged. user = self.user self.assertEqual(self.guard.lock_time(user), 30) self._mock_failed_attempt(5) # Fixed lock time, no progression, with default configuration values. self.assertEqual(self.guard.lock_time(user), 30) # Preview calculation. self.assertEqual(self.guard.lock_time(user, True), 30) # Progression with base 3. self.env.config.set('account-manager', 'user_lock_time_progression', 3) self.assertEqual(self.guard.lock_time(user, True), 30 * 3 ** 5) self.env.config.set('account-manager', 'user_lock_max_time', 1800) self.assertEqual(self.guard.lock_time(user, True), 1800) def test_release_time(self): lock_time = 30 self.env.config.set('account-manager', 'user_lock_time', lock_time) self.env.config.set('account-manager', 'user_lock_time_progression', 1) # Won't track anonymous sessions and unknown accounts/users. self.assertEqual(self.guard.release_time(None), None) # Regular account without failed attempts logged. user = self.user self.assertEqual(self.guard.release_time(user), None) # Account with failed attempts logged. release_ts = self._mock_failed_attempt() + lock_time self.assertEqual(self.guard.release_time(user), release_ts) release_ts = self._mock_failed_attempt() + lock_time self.assertEqual(self.guard.release_time(user), release_ts) # Permanently locked account. self.env.config.set('account-manager', 'user_lock_time', 0) self.assertEqual(self.guard.release_time(user), 0) # Result with locking disabled. self.env.config.set('account-manager', 'login_attempt_max_count', 0) self.env.config.set('account-manager', 'user_lock_time', 30) self.assertEqual(self.guard.release_time(user), None) def test_user_locked(self): # Won't track anonymous sessions and unknown accounts/users. for user in [None, 'anonymous']: self.assertEqual(self.guard.user_locked(user), None) # Regular account without failed attempts logged. user = self.user self.assertEqual(self.guard.user_locked(user), False) # Permanently locked account. self._mock_failed_attempt() self.assertEqual(self.guard.user_locked(user), True) # Result with locking disabled. self.env.config.set('account-manager', 'login_attempt_max_count', 0) self.assertEqual(self.guard.user_locked(user), None) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(AccountGuardTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/htfile.py000644 000000 000000 00000024173 14711041732 015144 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2005 Matthew Good # Copyright (C) 2011-2013 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import io import os.path import shutil import tempfile import unittest from trac.test import EnvironmentStub from ..htfile import HtDigestStore, HtPasswdStore from . import makeSuite class _BaseTestCase(unittest.TestCase): def setUp(self): self.basedir = os.path.realpath(tempfile.mkdtemp()) self.env = EnvironmentStub() self.env.path = os.path.join(self.basedir, 'trac-tempenv') os.mkdir(self.env.path) def tearDown(self): shutil.rmtree(self.basedir) # Helpers def _create_file(self, *path, **kw): filename = os.path.join(self.basedir, *path) dirname = os.path.dirname(filename) if not os.path.exists(dirname): os.makedirs(dirname) content = kw.get('content') with io.open(filename, 'w', encoding='utf-8') as fd: if content is not None: if isinstance(content, bytes): content = content.decode('utf-8') fd.write(content) return filename def _init_password_file(self, flavor, filename, content=''): filename = self._create_file(filename, content=content) self.env.config.set('account-manager', flavor + '_file', filename) def _do_password_test(self, flavor, filename, content): self._init_password_file(flavor, filename, content) self.assertTrue(self.store.check_password('user', 'password')) # Tests def test_overwrite(self): self._init_password_file(self.flavor, 'test_overwrite_%s' % self.flavor) self.assertTrue(self.store.set_password('user1', 'password1')) self.assertFalse(self.store.set_password('user1', 'password2', overwrite=False)) self.assertTrue(self.store.check_password('user1', 'password1')) self.assertTrue(self.store.set_password('user2', 'password', overwrite=False)) def test_unicode(self): self.env.config.set('account-manager', 'htdigest_realm', u'UnicodeRealm\u4e60') user = u'\u4e61' password = u'\u4e62' self._init_password_file(self.flavor, 'test_unicode_%s' % self.flavor) self.store.set_password(user, password) self.assertEqual(list(self.store.get_users()), [user]) self.assertTrue(self.store.check_password(user, password)) self.assertTrue(self.store.delete_user(user)) self.assertEqual(list(self.store.get_users()), []) class HtDigestTestCase(_BaseTestCase): flavor = 'htdigest' def setUp(self): _BaseTestCase.setUp(self) self.env.config.set('account-manager', 'htdigest_realm', 'TestRealm') self.store = HtDigestStore(self.env) def test_userline(self): self.assertEqual(self.store.userline('user', 'password'), 'user:TestRealm:752b304cc7cf011d69ee9b79e2cd0866') def test_file(self): self._do_password_test( self.flavor, 'test_file', 'user:TestRealm:752b304cc7cf011d69ee9b79e2cd0866') def test_update_password(self): self._init_password_file(self.flavor, 'test_passwdupd') self.store.set_password('foo', 'pass1') self.assertFalse(self.store.check_password('foo', 'pass2')) self.store.set_password('foo', 'pass2') self.assertTrue(self.store.check_password('foo', 'pass2')) self.store.set_password('foo', 'pass3', 'pass2') self.assertTrue(self.store.check_password('foo', 'pass3')) class HtPasswdTestCase(_BaseTestCase): flavor = 'htpasswd' def setUp(self): _BaseTestCase.setUp(self) self.store = HtPasswdStore(self.env) def test_md5(self): self._do_password_test(self.flavor, 'test_md5', 'user:$apr1$xW/09...$fb150dT95SoL1HwXtHS/I0\n') def test_crypt(self): self._do_password_test(self.flavor, 'test_crypt', 'user:QdQ/xnl2v877c\n') def test_sha(self): self._do_password_test(self.flavor, 'test_sha', 'user:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=\n') def test_sha256(self): try: self._do_password_test(self.flavor, 'test_sha256', 'user:$5$rounds=535000$saltsaltsaltsalt$' 'wfx3LZ09XA7qrZB.ttuCbBidMXt51Kgu5YQ.YFq' 'zxA7\n') except NotImplementedError: pass try: self._do_password_test(self.flavor, 'test_sha256', 'user:$5$.YGr6HhGl0TNN7dT$Jrq.j68U8/rrBo5Ks' 'YycA05JS3ZXzGn5C1u54Fh8l7.\n') except NotImplementedError: pass try: self._do_password_test(self.flavor, 'test_sha256', 'user:$5$/sSmB.1hM8M7YlWP$qQwILOVGJ7Z/JNIml' 'ZmweMBy7VKO9pwmmAwBf0YrOB6\n') except NotImplementedError: pass def test_sha512(self): try: self._do_password_test(self.flavor, 'test_sha512', 'user:$6$rounds=535000$saltsaltsaltsalt$' '9ExQK2S3YXW7/FlfUcw2vy7WF.NH5ZF6SIT14Dj' 'ngOGkcx.5mINko67cLRrqFFh1AltOT4uPnET7Bs' 'JXuI56H/\n') except NotImplementedError: pass try: self._do_password_test(self.flavor, 'test_sha512', 'user:$6$.Gz0dqxtsVYNeES3$H9cLym9oGJqILw1fj' 'XHm2Ha54ZJhQ/h8XMaxWpKnPziXqI0nu45a1Rsbrde' '42gNbh.78EiFB0A0Qlpdps7JTg1\n') except NotImplementedError: pass try: self._do_password_test(self.flavor, 'test_sha512', 'user:$6$/X87Imrz04AZGkLr$fxSvADugt7V3ufvvg' 'NGG0BStDjEAwLYRUGjWxlJX0zcD64RxBOAldIDdqNZ' 'bDHoDv.GjVOVfQxjMZwWVBFxgz0\n') except NotImplementedError: pass def test_no_trailing_newline(self): self._do_password_test(self.flavor, 'test_no_trailing_newline', 'user:$apr1$xW/09...$fb150dT95SoL1HwXtHS/I0') def test_add_with_no_trailing_newline(self): filename = self._create_file( 'test_add_with_no_trailing_newline', content='user:$apr1$xW/09...$fb150dT95SoL1HwXtHS/I0') self.env.config.set('account-manager', 'htpasswd_file', filename) self.assertTrue(self.store.check_password('user', 'password')) self.store.set_password('user2', 'password2') self.assertTrue(self.store.check_password('user', 'password')) self.assertTrue(self.store.check_password('user2', 'password2')) def test_update_password(self): self._init_password_file(self.flavor, 'test_passwdupd') self.store.set_password('foo', 'pass1') self.assertFalse(self.store.check_password('foo', 'pass2')) self.store.set_password('foo', 'pass2') self.assertTrue(self.store.check_password('foo', 'pass2')) self.store.set_password('foo', 'pass3', 'pass2') self.assertTrue(self.store.check_password('foo', 'pass3')) def test_create_hash(self): self._init_password_file(self.flavor, 'test_hash') self.env.config.set('account-manager', 'htpasswd_hash_type', 'bad') self.assertTrue(self.store.userline('user', 'password').startswith('user:')) self.assertFalse(self.store.userline('user', 'password' ).startswith('user:$apr1$')) self.assertFalse(self.store.userline('user', 'password' ).startswith('user:{SHA}')) self.store.set_password('user', 'password') self.assertTrue(self.store.check_password('user', 'password')) self.env.config.set('account-manager', 'htpasswd_hash_type', 'md5') self.assertTrue(self.store.userline('user', 'password' ).startswith('user:$apr1$')) self.store.set_password('user', 'password') self.assertTrue(self.store.check_password('user', 'password')) self.env.config.set('account-manager', 'htpasswd_hash_type', 'sha') self.assertTrue(self.store.userline('user', 'password' ).startswith('user:{SHA}')) self.store.set_password('user', 'password') self.assertTrue(self.store.check_password('user', 'password')) self.env.config.set('account-manager', 'htpasswd_hash_type', 'sha256') try: self.assertTrue(self.store.userline('user', 'password' ).startswith('user:$5$')) except NotImplementedError: pass else: self.store.set_password('user', 'password') self.assertTrue(self.store.check_password('user', 'password')) self.env.config.set('account-manager', 'htpasswd_hash_type', 'sha512') try: self.assertTrue(self.store.userline('user', 'password' ).startswith('user:$6$')) except NotImplementedError: pass else: self.store.set_password('user', 'password') self.assertTrue(self.store.check_password('user', 'password')) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(HtDigestTestCase)) suite.addTest(makeSuite(HtPasswdTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/http.py000644 000000 000000 00000001630 14711041732 014641 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2023 Jun Omae # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. import unittest from trac.test import EnvironmentStub from ..http import HttpAuthStore from . import makeSuite class HttpAuthTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(enable=[HttpAuthStore]) self.store = HttpAuthStore(self.env) def test_get_users(self): self.assertEqual([], self.store.get_users()) def test_has_user(self): self.assertEqual(False, self.store.has_user('anonymous')) self.assertEqual(False, self.store.has_user('admin')) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(HttpAuthTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/model.py000644 000000 000000 00000017330 14711041732 014766 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann import shutil import tempfile import time import unittest from trac.test import EnvironmentStub, MockRequest from trac.web.session import Session from ..model import ( change_uid, del_user_attribute, delete_user, get_user_attribute, last_seen, prime_auth_session, set_user_attribute, user_known) from . import makeSuite class ModelTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True, enable=['trac.*']) self.env.path = tempfile.mkdtemp() def tearDown(self): # Really close db connections. self.env.shutdown() shutil.rmtree(self.env.path) # Helpers def _create_session(self, user, authenticated=1, name='', email=''): args = dict(username=user, name=name, email=email) self.req = MockRequest( self.env, authname=bool(authenticated) and user or 'anonymous', args=args) self.req.session = Session(self.env, self.req) self.req.session.save() def test_last_seen(self): user = 'user' # Use basic function. self.assertEqual(last_seen(self.env), []) self._create_session(user) # Devel: Not fail-safe, will produce random false-negatives. now = time.time() self.assertEqual(last_seen(self.env), [(user, int(now))]) # Use 1st optional kwarg. self.assertEqual(last_seen(self.env, user), [(user, int(now))]) user = 'anotheruser' self.assertEqual(last_seen(self.env, user), []) # Don't care for anonymous session IDs. self._create_session(user, False) self.assertEqual(last_seen(self.env, user), []) def test_user_known(self): user = 'user' self.assertFalse(user_known(self.env, user)) # Don't care for anonymous session IDs. self._create_session(user, False) self.assertFalse(user_known(self.env, user)) self._create_session(user) self.assertTrue(user_known(self.env, user)) def test_get_user_attribute(self): self.assertEqual(get_user_attribute(self.env, authenticated=None), {}) with self.env.db_transaction as db: db.executemany(""" INSERT INTO session_attribute (sid,authenticated,name,value) VALUES (%s,%s,%s,%s) """, [('user', 0, 'attribute1', 'value1'), ('user', 0, 'attribute2', 'value2'), ('user', 1, 'attribute1', 'value1'), ('user', 1, 'attribute2', 'value2'), ('another', 1, 'attribute2', 'value3')]) no_constraints = get_user_attribute(self.env, authenticated=None) # Distinct session IDs form top-level keys. self.assertEqual(set(no_constraints), set([u'user', u'another'])) # There are probably anonymous sessions named equally to # authenticated ones, causing different nested dicts below each # session ID. Btw, only authenticated ones are real usernames. self.assertTrue(0 in no_constraints['user']) self.assertTrue(1 in no_constraints['user']) self.assertFalse(0 in no_constraints['another']) self.assertTrue(1 in no_constraints['another']) # Touch some of the attributes stored before. self.assertTrue(no_constraints['user'][0]['attribute1'], 'value1') self.assertTrue(no_constraints['user'][1]['attribute2'], 'value2') self.assertEqual(no_constraints['another'].get(0), None) self.assertTrue(no_constraints['another'][1]['attribute2'], 'value3') def test_set_user_attribute(self): set_user_attribute(self.env, 'user', 'attribute1', 'value1') with self.env.db_query as db: for name, value in db(""" SELECT name,value FROM session_attribute WHERE sid='user' AND authenticated=1 """): self.assertEqual(('attribute1', 'value1'), (name, value)) # Setting an attribute twice will just update the value. set_user_attribute(self.env, 'user', 'attribute1', 'value2') for name, value in db(""" SELECT name,value FROM session_attribute WHERE sid='user' AND authenticated=1 """): self.assertEqual(('attribute1', 'value2'), (name, value)) # All values are stored as strings internally, but the function # should take care to handle foreseeable abuse gracefully. # This is a test for possible regressions of #10772. set_user_attribute(self.env, 'user', 'attribute1', 0) for name, value in db(""" SELECT name,value FROM session_attribute WHERE sid='user' AND authenticated=1 """): self.assertEqual(('attribute1', '0'), (name, value)) class KnownUsersCacheUpdateTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True) def tearDown(self): self.env.shutdown() self.env.reset_db() def _insert_user(self): sid = 'user1' name = 'User One' email = 'user1@example.org' prime_auth_session(self.env, sid) set_user_attribute(self.env, sid, 'name', name) set_user_attribute(self.env, sid, 'email', email) return sid, name, email def test_set_user_attribute(self): sid, name, email = self._insert_user() new_email = 'user1@domain.org' known_users = list(self.env.get_known_users()) self.assertEqual([(sid, name, email)], known_users) set_user_attribute(self.env, sid, 'email', new_email) known_users = list(self.env.get_known_users()) self.assertEqual([(sid, name, new_email)], known_users) def test_change_uid(self): sid, name, email = self._insert_user() new_sid = 'user2' known_users = list(self.env.get_known_users()) self.assertEqual([(sid, name, email)], known_users) change_uid(self.env, sid, new_sid, [], False) known_users = list(self.env.get_known_users()) self.assertEqual([(new_sid, name, email)], known_users) def test_prime_auth_session(self): """The known_users cache is updated after inserting a session.""" self.assertEqual(0, len(list(self.env.get_known_users()))) sid = 'user1' prime_auth_session(self.env, sid) known_users = list(self.env.get_known_users()) self.assertEqual(1, len(known_users)) self.assertEqual(sid, known_users[0][0]) self.assertIsNone(known_users[0][1]) self.assertIsNone(known_users[0][2]) def test_del_user_attribute(self): sid, name, email = self._insert_user() known_users = list(self.env.get_known_users()) self.assertEqual([(sid, name, email)], known_users) del_user_attribute(self.env, sid, attribute='name') known_users = list(self.env.get_known_users()) self.assertEqual([(sid, None, email)], known_users) def test_delete_user(self): sid = self._insert_user()[0] self.assertEqual(1, len(list(self.env.get_known_users()))) delete_user(self.env, sid) self.assertEqual(0, len(list(self.env.get_known_users()))) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(ModelTestCase)) suite.addTest(makeSuite(KnownUsersCacheUpdateTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/pwhash.py000644 000000 000000 00000011062 14711041732 015154 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2023 Jun Omae # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. import unittest try: import bcrypt except ImportError: bcrypt = None from ..pwhash import ( passlib, crypt, generate_hash, check_hash, _passlib_generate_hash, _passlib_check_hash, _crypt_generate_hash, _crypt_check_hash, _unavai_generate_hash, _unavai_check_hash, ) from . import makeSuite _PASSWORD = 'wesViWip.Actyur3' _HASHES = { 'crypt': 'dZn8UE10rIAR6', 'md5': '$apr1$975LB2J8$pbifv0nfpzcxQ9gSe2tdM0', 'sha': '{SHA}91NeIA99KkOtqtRlpl4Z8jC4hlA=', 'sha256': '$5$rounds=2500$cZbJvPaLtPHPcPsa$5YC2vX.WXMmsXEinQuG50P48CLeZddf' 'YUPr7dczt2n5', 'sha512': '$6$rounds=2500$6yz3SzAbZhCb5Whm$aggkw/9XqtO4dhrlyXAhI7M/8o3vTBk' 'XrZ071QikKDnOtUv6DkafqbPtfAr8nuOfgoB1dXPwwxpcgAJc01x/P0', 'bcrypt': '$2b$11$oshDukXxHZQvPEOBonYqDehZ0QXnpqkc2jamNS/35vlfZ41psDL4O', } class BaseTestCase(unittest.TestCase): methods = () generate_hash = None check_hash = None def _test_prefix(self, method, prefix): if method not in self.methods: raise unittest.SkipTest('%s unsupported' % method) hash_ = self.generate_hash(_PASSWORD, method) self.assertTrue(hash_.startswith(prefix), "%r doesn't start with %r" % (hash_, prefix)) def test_md5_prefix(self): self._test_prefix('md5', '$apr1$') def test_sha_prefix(self): self._test_prefix('sha', '{SHA}') def test_sha256_prefix(self): self._test_prefix('sha256', '$5$') def test_sha512_prefix(self): self._test_prefix('sha512', '$6$') def test_bcrypt_prefix(self): self._test_prefix('bcrypt', ('$2b$', '$2a$')) def test_generate_hash(self): for method in self.methods: hash1 = self.generate_hash(_PASSWORD, method) hash2 = self.generate_hash(_PASSWORD, method) if method == 'sha': self.assertTrue(self.check_hash(_PASSWORD, hash1)) self.assertEqual(hash1, hash2) else: self.assertTrue(self.check_hash(_PASSWORD, hash1)) self.assertTrue(self.check_hash(_PASSWORD, hash2)) self.assertNotEqual(hash1, hash2) def test_check_hash(self): for method in self.methods: hash_ = _HASHES[method] self.assertTrue(self.check_hash(_PASSWORD, hash_)) def _passlib_methods(): if not passlib: return () methods = ['crypt', 'md5', 'sha', 'sha256', 'sha512'] if bcrypt: methods.append('bcrypt') return frozenset(methods) def _crypt_metdhos(): if not crypt: return () methods = ['md5', 'sha'] if hasattr(crypt, 'methods'): pairs = [ ('crypt', 'METHOD_CRYPT'), ('sha256', 'METHOD_SHA256'), ('sha512', 'METHOD_SHA512'), ('bcrypt', 'METHOD_BLOWFISH'), ] for name, method in pairs: if getattr(crypt, method, None) in crypt.methods: methods.append(name) return frozenset(methods) @unittest.skipUnless(passlib, 'passlib unavailable') class PasslibTestCase(BaseTestCase): methods = _passlib_methods() def generate_hash(self, password, method): return _passlib_generate_hash(password, method) def check_hash(self, password, hash): return _passlib_check_hash(password, hash) @unittest.skipUnless(crypt, 'crypt unavailable') class CryptTestCase(BaseTestCase): methods = _crypt_metdhos() def generate_hash(self, password, method): return _crypt_generate_hash(password, method) def check_hash(self, password, hash): return _crypt_check_hash(password, hash) class MethodTestCase(unittest.TestCase): def test_methods(self): if passlib: self.assertEqual(generate_hash, _passlib_generate_hash) self.assertEqual(check_hash, _passlib_check_hash) elif crypt: self.assertEqual(generate_hash, _crypt_generate_hash) self.assertEqual(check_hash, _crypt_check_hash) else: self.assertEqual(generate_hash, _unavai_generate_hash) self.assertEqual(check_hash, _unavai_check_hash) def test_suite(): suite = unittest.TestSuite() suite.addTest(makeSuite(PasslibTestCase)) suite.addTest(makeSuite(CryptTestCase)) suite.addTest(makeSuite(MethodTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trunk/acct_mgr/tests/register.py000644 000000 000000 00000040722 14711041732 015513 0ustar00000000 000000 # -*- coding: utf-8 -*- # # Copyright (C) 2012 Steffen Hoffmann # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Steffen Hoffmann import shutil import string import tempfile import unittest from trac.perm import PermissionCache, PermissionSystem from trac.util.html import Markup from trac.test import EnvironmentStub, MockRequest from trac.web.api import RequestDone from trac.web.session import Session from ..api import AccountManager from ..compat import unicode from ..db import SessionStore from ..model import set_user_attribute from ..register import ( BasicCheck, BotTrapCheck, EmailCheck, EmailVerificationModule, RegExpCheck, RegistrationError, RegistrationModule, UsernamePermCheck) from . import makeSuite class _BaseTestCase(unittest.TestCase): def setUp(self, method='GET'): self.env = EnvironmentStub( enable=['trac.*', 'acct_mgr.api.*']) self.env.path = tempfile.mkdtemp() self.perm = PermissionSystem(self.env) # Create a user reference in the permission system. self.perm.grant_permission('admin', 'ACCTMGR_USER_ADMIN') # Prepare a generic registration request. args = dict(username='', name='', email='') self.req = MockRequest(self.env, method=method, path_info='/register', args=args) def tearDown(self): shutil.rmtree(self.env.path) class BasicCheckTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.env = EnvironmentStub( enable=['trac.*', 'acct_mgr.admin.*', 'acct_mgr.db.sessionstore', 'acct_mgr.pwhash.HtDigestHashMethod']) self.env.path = tempfile.mkdtemp() self.env.config.set('account-manager', 'password_store', 'SessionStore') store = SessionStore(self.env) store.set_password('registered_user', 'password') def test_check(self): check = BasicCheck(self.env) req = self.req # Inspector doesn't provide additional fields. field_res = check.render_registration_fields(req, {}) self.assertEqual(len(field_res), 2) self.assertEqual((None, None), field_res) # 1st attempt: No input. self.assertRaises(RegistrationError, check.validate_registration, req) # 2nd attempt: Illegal character. req.args['username'] = 'user:name' self.assertRaises(RegistrationError, check.validate_registration, req) # 3rd attempt: All upper-case word. req.args['username'] = 'UPPER-CASE_USER' self.assertRaises(RegistrationError, check.validate_registration, req) # 4th attempt: Reserved word. req.args['username'] = 'Anonymous' self.assertRaises(RegistrationError, check.validate_registration, req) # 5th attempt: Existing user. req.args['username'] = 'registered_user' self.assertRaises(RegistrationError, check.validate_registration, req) # 6th attempt: Valid username, but no password. req.args['username'] = 'user' self.assertRaises(RegistrationError, check.validate_registration, req) # 7th attempt: Valid username, no matching passwords. req.args['password'] = 'password' self.assertRaises(RegistrationError, check.validate_registration, req) # 8th attempt: Finally some valid input. req.args['password_confirm'] = 'password' self.assertEqual(check.validate_registration(req), None) class BotTrapCheckTestCase(_BaseTestCase): def setUp(self): _BaseTestCase.setUp(self) self.basic_token = "Yes, I'm human" self.env.config.set('account-manager', 'register_basic_token', self.basic_token) def test_check(self): check = BotTrapCheck(self.env) req = self.req # Inspector provides the email text input field. wrong_input = "Hey, I'm a bot." data = dict(basic_token=wrong_input) req.args.update(data) field_res = check.render_registration_fields(req, data) self.assertEqual(len(field_res), 2) self.assertTrue(Markup(field_res[0]).startswith('