trac-accountmanager-0.5~r16056/0000755000175500017550000000000013027312347016012 5ustar debacledebacletrac-accountmanager-0.5~r16056/README.update0000644000175500017550000001632012317115504020152 0ustar debacledebacleThis 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. trac-accountmanager-0.5~r16056/MANIFEST.in0000644000175500017550000000054112147225670017554 0ustar debacledebacle# 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 trac-accountmanager-0.5~r16056/changelog0000644000175500017550000004216512616754123017701 0ustar debacledebacleAuthor: Matthew Good Maintainer: Steffen Hoffmann acct_mgr-0.5 (not yet released) - branch 0.11 resolved issues * #8217: Race condition when creating new accounts * #8796: notifications also get sent to the smtp_always_cc address * #10740: Checkbox columns are too wide on the Accounts: Cleanup page * #10754: Selected checkboxes should determine Accounts: Cleanup page items * #10772: ProgrammingError: operator does not exist: text = integer * #10829: Consider renaming 'Save' buttons to 'Apply changes' * #10910: Unable to change full name * #11038: Login fails due to issues with opening sibling Trac environments * #11090: Error on user creation "gaierror: [Errno -2] Name or service ..." * #11111: Please add a MANIFEST.in * #11213: The username input doesn't have focus when the page loads * #11312: Variable 'user' does not exist (in api.py) * #11469: Exceptions in AccountModule are not trapped in Trac 1.0.2dev * #11798: Display message when account is pending approval * #11867: Incorrect body for reset password email notification * #11991: RegistrationError cannot initialize on Python 2.4 * #12024: Username not inserted from admin panel * #12050: Ticket preferences are not saved * #12058: Bad email default regexp * #12067: Impossible to delete email * fix access to account properties clean-up from user admin panel * always show associated email in user details admin panel * fix and unify web-UI feedback on user and admin actions * prevent bypassing email address policy via user preferences * add modular user ID change support for Trac core as well as for some other Trac plugins, currently: * AnnouncerPlugin > 0.12.1 * ScreenshotsPlugin (all versions) * TracFormsPlugin > v0.2 * VotePlugin (all versions) new features * #843: Make admin approval required for account registration * #6788: Add a RadiusAuthStore to AccountManagerPlugin * #7426: Dynamicity of Trac (Show number of registered users) * #8930: Setup wizard for AcctMgr * #8595: Ability to ban accounts * #10680: Provide confirmation when password is changed * #10684: Provide feedback when performing actions on the Users page * #10739: Move 'Back to Accounts' button to the contextual navigation * #10741: Provide email verification status indicator on user admin panel * #10742: Rename "Update" button to "Refresh" on Review Account Details page * #10745: Add 'Select all' checkbox to header of list in user admin panel * #11214: Rename db_cleanup to admin_db_cleanup * #11215: Set focus when admin Users page loads * #11894: Make (clear that) username policy (is) configurable * #12054: add QuestionRegisterPlugin-like functionality * #12097: Provide confirmation when deleting accounts * #12534: Configuration admin can be disabled independent of User admin * add unit tests for db access functions * add account guard configuration to config admin panel * filter account list in user admin panel by account status * remake account editor following Trac admin panel style i.e. for enums acct_mgr-0.4.4 (03-Apr-2014) - branch 0.11 resolved issues * escape email for notification message against reported xss vulnerability acct_mgr-0.4.3 (13-Feb-2013) - branch 0.11 resolved issues * #8927: LoginModule with .htpasswd & passwd reset => not working * #10681: User with empty password can't reset their password * #10765: AttributeError: 'NoneType' object has no attribute 'strip' * #10871: AccountGuard destroys trac.ini * prevent two ways for a user to bypass a forced password change * skip BotTrapCheck on admin user requests, i.e. from inside user admin panel * keep trac.auth.LoginModule options defined after disabling that component by defining all options in acct_mgr.web_ui.LoginModule as well new features * allow logging-in into password-less accounts via acct_mgr.LoginModule acct_mgr-0.4.2 (27-Dec-2012) - branch 0.11 resolved issues * #10730: AccountGuard.lock_time effectively disables account locking acct_mgr-0.4.1 (26-Dec-2012) - branch 0.11 resolved issues * #5964: Prevent multiple calls to LoginModule._remote_user() by re-using a flag introduced for account locking * #8545: Authentication always fails by introducing authentication attempt debug logging and a new option 'environ_auth_overwrite' for additional control over REMOTE_USER's value * #10134: HttpAuth login throws traceback * #10625: AssertionError in trac.db.pool.PooledConnection.__del__ * #10700: AccountModule._do_reset_password discards error from _reset_password * #10701: Reset password reports `Cannot find ... "IPasswordHashMethod"` * several fixes for unreported account guard issues acct_mgr-0.4 (01-Dec-2012) - branch 0.11 resolved issues * #3459: Authentication information not available * #4677: Admin based chaining HtDigestStore & HtPasswdStore breaks config by adding dedicated options 'htdigest_file' and 'htpasswd_file' * #5691: No cookie warning shown when trying to log in with Konqueror * #6616: Invalid entries for usernames in table by adding a cleaner macro implementation outside of `UserStatsMacro` * #8685: User deletion ordering breaks 'deleted' notification for SessionStore * #8770: AttributeError: Cannot find implementation of "IPasswordHashMethod" * #8990: HtPasswdStore and SessionStore with HtPasswdHashMethod share option by adding dedicated options 'db_htpasswd_hash_type' and 'db_htdigest_realm' * #9052: acct_mgr.web_ui.emailverificationmodule - Doesn't send email * #9079: PostgreSQL: Database error when creating new user with attributes * #9090: AccountManager plugin does not email after user registration * #9139: SvnServePasswordStore and case sensitivity * #9246: InternalError when refresh_passwd = true * #9252: All session attributes are deleted when user logs in first time * #9547: Option `persistent_sessions` is not working in `0.4dev-r10747` * #9843: New user missing in 'session' table. * #9940: Admin unable to reset password * #10023: SQL Injection in acct_mgr.api.AccountManager.lastseen() * #10028: Account delete does not purge user's auth cookie * #10123: Registration with EmailVerification should instruct more clearly * #10204: Users can delete their email address even when verify_email=true * #10276: "Unknown preference panel" when logging out from account tab * #10397: Don't allow username with all capital letters * #10412: acct_mgr-0.4dev breaking 2.4 compatibility * #10594: Some options' docs are missing * #10644: Add a real license * do AccountManager class API cleanup by moving db access to model layer * prevent duplicate action entries in Trac core permission select box new features * #874: Add new fields to register form and a registration validation system * #5295: Add optional username regexp to registration checks * #7577: Prevent spammers from registering * #8076: Add optional account email regexp to registration checks * #8791: Obsolete patch needed for authentication against Jira by adding sha256/sha512 hash support (needs `passlib` or extended `crypt`) * #9618: HttpAuthStore authentication enhancement by allowing a relative URL for `authentication_url` configuration option * #9676: Incorporate optional Single-Sign-On functionality * #9852: Embed some user information in TracWiki by introducing WikiMacros `ProjectStats` and `UserQuery` * #10142: Allow admin to override verification status * add recursion to option parser for configuration admin page and provide available valid values for an `ExtensionOption` like `IPasswordHashMethod` by a select field (dropdown box) - or meaningful message on missing options * add cleanup page for purging `session_attribute` db table via admin web UI * add randomized authentication cookie ID refreshment, average refresh rate controlled by new option `cookie_refresh_pct` * switch to case-less username duplicate checking * add unit tests i.e. for hash creation and re-written registration checks to significantly extend code coverage * add Trac style shading of odd/even rows to user lists acct_mgr-0.3.2 (26-Aug-2011) - branch 0.11 resolved issues * #9051: Unable to add users due to existing email addresses by fixing SQL statements responsible for db cleanup on account deletion * #9082: Remove cookie's `expires` param (0.12) when rememberme is unchecked * #9088: Expire trac_auth_session cookie before LoginModule._do_logout * #9091: tags in user registration notification * #9092: TypeError: __call__() got an unexpected keyword argument 'link' * #9093: A href tags in verification notice * #9095: Delete session cookie if client sent it and rememberme is unchecked * #9099: Expire session cookie whenever trac_auth cookie gets expired * #9107: Error when building the egg file * #9108: TypeError: 'NoneType' object is not iterable * #9109: TypeError: 'NoneType' object is not iterable * fix TypeError in account details admin page for not yet authenticated users * make option `verify_email` effective for `RegistrationModule` * fix bug from initial password store chaining implementation leading to false-positives on user store discovery and later unexpected login failure * change account details admin page into users admin subpage acct_mgr-0.3.1 (13-Jul-2011) - branch 0.11 resolved issues * #8963: Restore compatibility with Trac 0.11 - holding 10 different issues * further improve redirect loop protection (infinite loop after /login) * add more verbose error log messages for missing/unreadable password file * remove duplicated message in Trac 0.11 at account details admin page * prevent argument duplication on POST requests of account details admin page * enable admin to restart password hash refresh from configuration admin page acct_mgr-0.3 (07-Jul-2011) - branch 0.11 resolved issues * #3233: Infinite redirect loop after resetting the password * #3783: Form based login fails to forward nicely on referrer outside of Trac * #3989: Email verification and password reset with notification lock users * #4040: TracError instance has no attribute 'acctmgr' on new user creation * #4160: Password reset oddness with multiple projects config * #5247: Stack trace escapes to user when htdigest file is not writeable * #6821: Register and 'Forgot your password?' links can no longer be enabled * #7850: Error after upgrade from 0.11 to trunk version * #7863: Syntax error found when building egg * #7880: 'ioerror: invalid mode: Ur' in htfile.py * #8061: An input element has no child nodes * #8063: Better i18n codes * #8381: Failure to verify valid passwords after migration Windows => FreeBSD * #8534: Can't resend password reset email * #8549: Changing password in SessionStore if forced has no effect * #8663: Disable register link on the login page * #8834: TypeError: sequence item 0: expected string, int found * #8813: German docs of options, even when browser's locale isn't 'de' * #8925: Register form user field should be username * #8936: Cannot delete user using AccountModule from web_ui * #8939: Fix for "mgr" not found error in http.py * fix AccountModule.reset_password_enabled() from type list to boolean * really disable reset password page, if feature is disabled * fix password reset procedure (preventing easy account takeover) new features * #442: Add email verification for new/changed email addresses by completing a matured procedure i.e. with account details display * #809: Fit long user list in users admin page to one screen height * #816: 'forgot password' should not reset password directly by introducing a separate ResetPwStore (a SessionStore derivate) * #2966: Add user account (name, email) edit support to user account page * #6803: Add i18n/l10n support adding i18n setup and message markup and several translations complete (>95%): English (default), German, Japanese, Russian, Swedish convenient (>75%): Czech, Italian partial (>33%): Dutch, French, Spanish Check https://www.transifex.net/projects/p/Trac_Plugin-L10N/ for more recently added and updated translations * #7111: Password reset from users admin page * #7437: Lock user after configurable number of failed login attempts by a new AccountGuard module for login attempt tracking and account locking * #8257: Display PasswordStore option docs on configuration admin page * #8487: AcctMgr creates blank lines in password_file under Windows * #8563: IndexError: list index out of range * #8774: KeyError: acct_mgr.web_ui after failed import of acct_mgr.web_ui * #8814: Generic word `for` is extracted, term is difficult to translate * #8843: XHTML invalid verify_email.html * extend AccountManager class API by 'email_verified' and 'user_known' * re-design 'ugly' HTML login form adding new 'login_opt_list' option and contribute recommended CSS styles * add account details admin page * add auth cookie options introduced in Trac 0.12 * add optional password hash refresh on successful login * code cleanup and more readable multiline SQL statement formatting * add changelog (this file) * add OpenPGP signed md5 and sha1 hash lists and verification script backported - branch 0.10 * #8381: Failure to verify valid passwords after migration Windows => FreeBSD * fix password reset procedure (preventing easy account takeover) acct_mgr-0.2.x (updates to 0.2.1, never officially released) - branch 0.11 resolved issues * #831: Case sensitive Authentication, but Case in-sensitive Authorization * #1382: Make 'Delete Account' function on 'My Account' page optional * #1602: Pass old_password when changing password * #1922: ValueError with HttpAuthStore when entering invalid credentials * #2044: AccountManagerPlugin README missing an example for HttpAuth backend * #2327: Fix unicode support in htdigest password file store * #2630: Registration of usernames which can corrupt a SvnServePasswordStore * #3086: Admin "Last Login" users info should use correct time zone * #3137: Fix tests and include functional tests * #3200: Add and register user corrupts password file with no carriage return * #3343: Error onClick 'Remove selected accounts' when no account is selected * #3401: Removing email from preferences makes account unusable * #4125: Fix message wrapper for AccountModule and EmailVerificationModule * #4276: HtPasswdStore changes ownership of htpasswd file (bad file IO) * #4525: SvnServePasswordStore looks at wrong place for svnserve.conf file * #4628: Fix SessionStore unicode errors htdigest hash method * #4682: Registration of user names with colon could corrupt htpasswd file * #4830: NameError: global name 'sorted' is not defined on Python 2.3 * #4895: AccountManagerPlugin + Trac 0.12 (no attribute 'smtp_server') * #4897: TracAccountManager htpasswd file handling clobbers symlinks * #4984: Prefer hashlib over deprecated md5 and sha * #5509: EmailVerificationModule undocumented, allows email-less registration * #5514: Typo 'acct_mge' in web_ui.py in 0.11 branch * #5789: Change description on notification admin page * #6453: AttributeError: 'NoneType' object has no attribute 'encode' * #6730: AnnouncerPlugin compatibility with AccountManager * #7087: Trailing spaces are not being removed from the username * #7396: Password salts and randomness length * #7576: Users redirected with no confirmation, fail to note register success * #7687: Always redirect to referer after login * #7807: Show error into 'after-registration form' * extend and fix IPasswordStore API implementation for HttpAuthStore * improve error reporting for failures in password stores * fix a bunch of small typos in Python doc-strings and elsewhere * redirect anonymous GET '/verify_email', no more 'email already verified' * several fixes against infinite redirect loop conditions new features * #131: Add 'Remember Me' functionality adding a new 'persistent_sessions' option * #442: Email verification for new/changed addresses * #1902: Allow more granular permissions * #2282: Make default htpasswd hash type configurable * #3153: Easy option to disable email verification * #3726: Split admin pages in seperate components * #5299: Improvements to the email verification page * #7700: Allow user management without having TRAC_ADMIN permission * added support for chained password stores * added password change in the users admin page * extend username checks before registration adding a new 'username_char_blacklist' option backported - branch 0.10 * #2327: Fix unicode support in htdigest password file store * #3200: Add and register user corrupts password file with no carriage return * #4125: Fix message wrapper for AccountModule and EmailVerificationModule * #4628: Fix SessionStore unicode errors htdigest hash method * #4830: NameError: global name 'sorted' is not defined on Python 2.3 acct_mgr-0.2.1 (28-May-2008) - branch 0.11 new features * #147: Email notification of account related events ToDo: historic entries below are still incomplete - more work needed acct_mgr-0.2 (10-Nov-2006) - new branch 0.11 * add SessionStore for storing user passwords as a Trac session attribute acct_mgr-0.1.3 (13-Nov-2006) branch 0.10 new features * #173: Integrate login-related plugins by adding HttpAuthStore acct_mgr-0.1.2 (10-Nov-2006) - new branch 0.10 acct_mgr-0.1.1 (10-Jan-2006) - new branch 0.9 acct_mgr-0.1 (20-Jul-2005) - initial release trac-accountmanager-0.5~r16056/acct_mgr/0000755000175500017550000000000013021456450017567 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/pwhash.py0000644000175500017550000001212313014745256021441 0ustar debacledebacle# -*- 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 hashlib import re from binascii import hexlify from os import urandom from trac.core import Component, Interface, implements from trac.config import Option from acct_mgr.api import _, N_ from acct_mgr.md5crypt import md5crypt try: from passlib.apps import custom_app_context as passlib_ctxt except ImportError: # not available # Hint: Python2.5 is required too passlib_ctxt = None 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=N_("Default hash type of new/updated passwords")) def generate_hash(self, user, password): password = password.encode('utf-8') return mkhtpasswd(password, self.hash_type) def check_hash(self, user, password, hash): password = password.encode('utf-8') hash2 = htpasswd(password, hash) return hash == hash2 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): user, password, realm = _encode(user, password, self.realm) return ':'.join([realm, htdigest(user, realm, password)]) def check_hash(self, user, password, hash): return hash == self.generate_hash(user, password) def _encode(*args): return [a.encode('utf-8') for a in args] # check for the availability of the "crypt" module for checking passwords on # Unix-like platforms # MD5 is still used when adding/updating passwords with htdigest try: from crypt import crypt except ImportError: crypt = None def salt(salt_char_count=8): s = '' v = long(hexlify(urandom(int(salt_char_count / 8 * 6))), 16) itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' for i in range(int(salt_char_count)): s += itoa64[v & 0x3f] v >>= 6 return s def hash_prefix(hash_type): """Map hash type to salt prefix.""" if hash_type == 'md5': return '$apr1$' elif hash_type == 'sha': return '{SHA}' elif hash_type == 'sha256': return '$5$' elif hash_type == 'sha512': return '$6$' else: # use 'crypt' hash by default anyway return '' def htpasswd(password, hash): def from_hash(hash): match = re.match(r'\$[5,6]\$(?:rounds=(\d+)\$)?(\w+)', hash) groups = match.groups() rounds = int(groups[0]) if groups[0] is not None else 5000 salt = groups[1] return rounds, salt if hash.startswith('$apr1$'): return md5crypt(password, hash[6:].split('$')[0], '$apr1$') elif hash.startswith('{SHA}'): return '{SHA}' + hashlib.sha1(password).digest().encode('base64')[:-1] elif passlib_ctxt is not None and hash.startswith('$5$') and \ 'sha256_crypt' in passlib_ctxt.policy.schemes(): rounds, salt = from_hash(hash) return passlib_ctxt.encrypt(password, scheme='sha256_crypt', rounds=rounds, salt=salt) elif passlib_ctxt is not None and hash.startswith('$6$') and \ 'sha512_crypt' in passlib_ctxt.policy.schemes(): rounds, salt = from_hash(hash) return passlib_ctxt.encrypt(password, scheme='sha512_crypt', rounds=rounds, salt=salt) elif crypt is None: # crypt passwords are only supported on Unix-like systems raise NotImplementedError(_("The \"crypt\" module is unavailable " "on this platform.")) else: if hash.startswith('$5$') or hash.startswith('$6$'): # Import of passlib failed, now check, if crypt is capable. if not crypt(password, hash).startswith(hash): # No, so bail out. raise NotImplementedError(_( """Neither are \"sha2\" hash algorithms supported by the \"crypt\" module on this platform nor is \"passlib\" available.""")) return crypt(password, hash) def mkhtpasswd(password, hash_type=''): hash_prefix_ = hash_prefix(hash_type) if hash_type.startswith('sha') and len(hash_type) > 3: salt_ = salt(16) else: # Don't waste entropy to older hash types. salt_ = salt() if hash_prefix_ == '': if crypt is None: salt_ = '$apr1$' + salt_ else: salt_ = hash_prefix_ + salt_ return htpasswd(password, salt_) def htdigest(user, realm, password): p = ':'.join([user, realm, password]) return hashlib.md5(p).hexdigest() trac-accountmanager-0.5~r16056/acct_mgr/web_ui.py0000644000175500017550000010314313021456450021415 0ustar debacledebacle# -*- 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 random import string import time from genshi.builder import tag from trac.core import implements from trac.config import BoolOption, ConfigurationError from trac.config import IntOption, Option from trac.env import open_environment from trac.prefs import IPreferencePanelProvider from trac.util import hex_entropy from trac.util.presentation import separated from trac.util.text import exception_to_unicode from trac.web import auth from trac.web.main import IRequestHandler, IRequestFilter, get_environments from trac.web.chrome import INavigationContributor, add_notice from trac.web.chrome import add_warning from acct_mgr.api import AccountManager, CommonTemplateProvider from acct_mgr.api import _, dgettext, ngettext, tag_ from acct_mgr.db import SessionStore from acct_mgr.guard import AccountGuard from acct_mgr.model import set_user_attribute from acct_mgr.notification import NotificationError from acct_mgr.register import RegistrationModule from acct_mgr.util import if_enabled class ResetPwStore(SessionStore): """User password store for the 'lost password' procedure.""" def __init__(self): self.key = 'password_reset' class AccountModule(CommonTemplateProvider): """Exposes methods for users to do account management on their own. Allows users to change their password, reset their password, if they've forgotten it, even delete their account. The settings for the AccountManager module must be set in trac.ini in order to use this. Password reset procedure depends on both, ResetPwStore and an IPasswordHashMethod implementation being enabled as well. """ implements(IPreferencePanelProvider, IRequestHandler, INavigationContributor, IRequestFilter) _password_chars = string.ascii_letters + string.digits password_length = IntOption( 'account-manager', 'generated_password_length', 8, """Length of the randomly-generated passwords created when resetting the password for an account.""") reset_password = BoolOption( 'account-manager', 'reset_password', True, 'Set to False, if there is no email system setup.') def __init__(self): self.acctmgr = AccountManager(self.env) self.store = ResetPwStore(self.env) self._write_check(log=True) def _write_check(self, log=False): """Returns all configured write-enabled password stores.""" writable = self.acctmgr.get_all_supporting_stores('set_password') if writable: try: writable = writable.remove(self.store) except ValueError: # ResetPwStore is not enabled. if log: self.log.warn("ResetPwStore is disabled, therefore " "password reset won't work.") # Require at least one more write-enabled password store. if not writable and log: self.log.warn("AccountModule is disabled because no configured " "password store supports writing.") return writable # INavigationContributor methods def get_active_navigation_item(self, req): return 'reset_password' def get_navigation_items(self, req): if not self.reset_password_enabled or LoginModule(self.env).enabled: return if req.authname == 'anonymous': yield 'metanav', 'reset_password', tag.a( _("Forgot your password?"), href=req.href.reset_password()) def _reset_password_enabled(self, log=False): try: self.store.hash_method except (AttributeError, ConfigurationError): return False return self.env.is_enabled(self.__class__) and \ self.reset_password and (self._write_check(log) != []) and \ self.env.is_enabled(self.store.__class__) and \ self.store.hash_method and True or False reset_password_enabled = property(_reset_password_enabled) # IPreferencePanelProvider methods def get_preference_panels(self, req): writable = self._write_check() if not writable: return if req.authname and req.authname != 'anonymous': user_store = self.acctmgr.find_user_store(req.authname) if user_store in writable: yield 'account', _("Account") def render_preference_panel(self, req, panel): data = dict(_dgettext=dgettext) data.update(self._do_account(req)) return 'prefs_account.html', data # IRequestFilter methods def pre_process_request(self, req, handler): if req.path_info == '/prefs/account' and \ not (req.authname and req.authname != 'anonymous'): # An anonymous session has no account associated with it, and # no account properies too, but general session preferences should # always be available. req.redirect(req.href.prefs()) return handler def post_process_request(self, req, template, data, content_type): if template is not None and \ req.authname and req.authname != 'anonymous': if req.session.get('force_change_passwd', False): # Prevent authenticated usage before another password change. redirect_url = req.href.prefs('account') if req.href(req.path_info) != redirect_url: req.redirect(redirect_url) return template, data, content_type # IRequestHandler methods def match_request(self, req): return req.path_info == '/reset_password' and \ self._reset_password_enabled(log=True) def process_request(self, req): data = dict(_dgettext=dgettext) if req.authname and req.authname != 'anonymous': add_notice(req, tag_( "You're already logged in. If you need to change your " "password please use the %(prefs_href)s page.", prefs_href=tag.a(_("Account Preferences"), href=req.href.prefs('account')))) data['authenticated'] = True if req.method == 'POST': self._do_reset_password(req) return 'reset_password.html', data, None def _do_account(self, req): assert(req.authname and req.authname != 'anonymous') action = req.args.get('action') delete_enabled = self.acctmgr.supports('delete_user') and \ self.acctmgr.allow_delete_account data = { 'delete_enabled': delete_enabled, 'delete_msg_confirm': _("Are you sure you want to delete your account?"), } force_change_password = req.session.get('force_change_passwd', False) if req.method == 'POST': if action == 'save': if self._do_change_password(req) and force_change_password: del req.session['force_change_passwd'] req.session.save() add_notice(req, _("Thank you for taking the time to " "update your password.")) force_change_password = False elif action == 'delete' and delete_enabled: self._do_delete(req) if force_change_password: add_warning(req, tag_( "You are required to change password because of a recent " "password change request. %(invitation)s", invitation=tag.b(_("Please change your password now.")))) return data def _do_change_password(self, req): username = req.authname old_password = req.args.get('old_password') if not self.acctmgr.check_password(username, old_password): if old_password: add_warning(req, _("Old password is incorrect.")) else: add_warning(req, _("Old password cannot be empty.")) return password = req.args.get('password') if not password: add_warning(req, _("Password cannot be empty.")) elif password != req.args.get('password_confirm'): add_warning(req, _("The passwords must match.")) elif password == old_password: add_warning(req, _("Password must not match old password.")) else: _set_password(self.env, req, username, password, old_password) if req.session.get('password') is not None: # Fetch all session_attributes in case new user password is in # SessionStore, preventing overwrite by session.save(). req.session.get_session(req.authname, authenticated=True) add_notice(req, _("Password updated successfully.")) return True def _do_delete(self, req): username = req.authname password = req.args.get('password') if not password: add_warning(req, _("Password cannot be empty.")) elif not self.acctmgr.check_password(username, password): add_warning(req, _("Password is incorrect.")) else: try: self.acctmgr.delete_user(username) except NotificationError, e: # User wont care for notification, only care for logging here. self.log.error("Unable to send account deletion notification: " "%s", exception_to_unicode(e, traceback=True)) # Delete the whole session, since records in session_attribute # would get restored on logout otherwise. req.session.clear() req.session.save() req.redirect(req.href.logout()) def _do_reset_password(self, req): email = req.args.get('email') username = req.args.get('username') if not username: add_warning(req, _("Username is required.")) elif not email: add_warning(req, _("Email is required.")) else: for username_, name, email_ in self.env.get_known_users(): if username_ == username and email_ == email: self._reset_password(req, username, email) return add_warning(req, _( "Email and username must match a known account.")) @property def _random_password(self): """Create a new random password on admin or user request. This method is used by acct_mgr.admin.AccountManagerAdminPanel too. """ return ''.join([random.choice(self._password_chars) for _ in xrange(self.password_length)]) def _reset_password(self, req, username, email): """Store a new, temporary password on admin or user request. This method is used by acct_mgr.admin.AccountManagerAdminPanel too. """ acctmgr = self.acctmgr new_password = self._random_password try: self.store.set_password(username, new_password) acctmgr._notify('password_reset', username, email, new_password) except NotificationError, e: msg = _("Error raised while sending a change notification.") if req.path_info.startswith('/admin'): msg += _("You'll get details with TracLogging enabled.") else: msg += _("You should report that issue to a Trac admin.") add_warning(req, msg) self.log.error("Unable to send password reset notification: %s", exception_to_unicode(e, traceback=True)) except Exception, e: add_warning(req, _("Cannot reset password: %(error)s", error=exception_to_unicode(e))) self.log.error("Unable to reset password: %s", exception_to_unicode(e, traceback=True)) return else: # No message, if method has been called from user admin panel. if not req.path_info.startswith('/admin'): add_notice(req, _("A new password has been sent to you at " "<%(email)s>.", email=email)) if acctmgr.force_passwd_change: set_user_attribute(self.env, username, 'force_change_passwd', 1) class LoginModule(auth.LoginModule, CommonTemplateProvider): """Custom login form and processing. This is woven with the trac.auth.LoginModule it inherits and overwrites. But both can't co-exist, so Trac's built-in authentication module must be disabled to use this one. """ # Trac core options, replicated here to not make them disappear by # disabling auth.LoginModule. check_ip = BoolOption('trac', 'check_auth_ip', 'false', """Whether the IP address of the user should be checked for authentication (''since 0.9'').""") ignore_case = BoolOption('trac', 'ignore_auth_case', 'false', """Whether login names should be converted to lower case (''since 0.9'').""") auth_cookie_lifetime = IntOption('trac', 'auth_cookie_lifetime', 0, """Lifetime of the authentication cookie, in seconds. This value determines how long the browser will cache authentication information, and therefore, after how much inactivity a user will have to log in again. The default value of 0 makes the cookie expire at the end of the browsing session. (''since 0.12'')""") auth_cookie_path = Option('trac', 'auth_cookie_path', '', """Path for the authentication cookie. Set this to the common base path of several Trac instances if you want them to share the cookie. (''since 0.12'')""") # Options dedicated to acct_mgr.web_ui.LoginModule. login_opt_list = BoolOption( 'account-manager', 'login_opt_list', False, """Set to True, to switch login page style showing alternative actions in a single listing together.""") cookie_refresh_pct = IntOption( 'account-manager', 'cookie_refresh_pct', 10, """Persistent sessions randomly get a new session cookie ID with likelihood in percent per work hour given here (zero equals to never) to decrease vulnerability of long-lasting sessions.""") environ_auth_overwrite = BoolOption( 'account-manager', 'environ_auth_overwrite', True, """Whether environment variable REMOTE_USER should get overwritten after processing login form input. Otherwise it will only be set, if unset at the time of authentication.""") # Update cookies for persistant sessions only 1/day. # hex_entropy returns 32 chars per call equal to 128 bit of entropy, # so it should be technically impossible to explore the hash even within # a year by just throwing forged HTTP requests at the server. # I.e. it would require 1.000.000 machines, each at 5*10^24 requests/s, # equal to a full-scale DDoS attack - an entirely different issue. UPDATE_INTERVAL = 86400 def __init__(self): cfg = self.config if self.env.is_enabled(self.__class__) and \ self.env.is_enabled(auth.LoginModule): # Disable auth.LoginModule to handle login requests alone. self.env.log.info("Concurrent enabled login modules found, " "fixing configuration ...") cfg.set('components', 'trac.web.auth.loginmodule', 'disabled') # 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. self.env.log.info("trac.web.auth.LoginModule disabled, " "giving preference to %s.", self.__class__) self.cookie_lifetime = self.auth_cookie_lifetime if not self.cookie_lifetime > 0: # Set the session to expire after some time and not # when the browser is closed - what is Trac core default). self.cookie_lifetime = 86400 * 30 # AcctMgr default = 30 days def authenticate(self, req): if req.method == 'POST' and req.path_info.startswith('/login') and \ req.args.get('user_locked') is None: username = self._remote_user(req) acctmgr = AccountManager(self.env) guard = AccountGuard(self.env) if guard.login_attempt_max_count > 0: if username is None: # Get user for failed authentication attempt. f_user = req.args.get('username') req.args['user_locked'] = False # Log current failed login attempt. guard.failed_count(f_user, req.remote_addr) if guard.user_locked(f_user): # Step up lock time prolongation only while locked. guard.lock_count(f_user, 'up') req.args['user_locked'] = True elif guard.user_locked(username): req.args['user_locked'] = True # Void successful login as long as user is locked. username = None else: req.args['user_locked'] = False if req.args.get('failed_logins') is None: # Reset failed login attempts counter. req.args['failed_logins'] = \ guard.failed_count(username, reset=True) else: req.args['user_locked'] = False if 'REMOTE_USER' not in req.environ or self.environ_auth_overwrite: if 'REMOTE_USER' in req.environ: # Complain about another component setting environment # variable for authenticated user. self.env.log.warn("LoginModule.authenticate: " "'REMOTE_USER' was set to '%s'", req.environ['REMOTE_USER']) self.env.log.debug("LoginModule.authenticate: Set " "'REMOTE_USER' = '%s'", username) req.environ['REMOTE_USER'] = username return auth.LoginModule.authenticate(self, req) authenticate = if_enabled(authenticate) match_request = if_enabled(auth.LoginModule.match_request) def process_request(self, req): if req.path_info.startswith('/login') and req.authname == 'anonymous': try: referer = self._referer(req) except AttributeError: # Fallback for Trac 0.11 compatibility. referer = req.get_header('Referer') # Steer clear of requests going nowhere or loop to self. if referer is None or \ referer.startswith(str(req.abs_href()) + '/login'): referer = req.abs_href() data = { '_dgettext': dgettext, 'login_opt_list': self.login_opt_list, 'persistent_sessions': AccountManager(self.env).persistent_sessions, 'referer': referer, 'registration_enabled': RegistrationModule(self.env).enabled, 'reset_password_enabled': AccountModule(self.env).reset_password_enabled } if req.method == 'POST': self.log.debug("LoginModule.process_request: 'user_locked' " "= %s", req.args.get('user_locked')) if not req.args.get('user_locked'): # TRANSLATOR: Intentionally obfuscated login error data['login_error'] = _("Invalid username or password") else: f_user = req.args.get('username') release_time = AccountGuard(self.env ).pretty_release_time(req, f_user) if release_time is not None: data['login_error'] = \ _("Account locked, please try again after % " "(release_time)s", release_time=release_time) else: data['login_error'] = _("Account locked") return 'login.html', data, None else: n_plural = req.args.get('failed_logins') if n_plural > 0: add_warning(req, tag(ngettext( "Login after %(attempts)s failed attempt", "Login after %(attempts)s failed attempts", n_plural, attempts=n_plural ))) return auth.LoginModule.process_request(self, req) # overrides def _get_name_for_cookie(self, req, cookie): """Returns the username for the current Trac session. It's called by authenticate() when the cookie 'trac_auth' is sent by the browser. """ acctmgr = AccountManager(self.env) name = None # Replicate _get_name_for_cookie() or _cookie_to_name() since Trac 1.0 # adding special handling of persistent sessions, as the user may have # a dynamic IP adress and this would lead to the user being logged out # due to an IP address conflict. if 'trac_auth_session' in req.incookie or True: sql = "SELECT name FROM auth_cookie WHERE cookie=%s AND ipnr=%s" args = (cookie.value, req.remote_addr) if acctmgr.persistent_sessions or not self.check_ip: sql = "SELECT name FROM auth_cookie WHERE cookie=%s" args = (cookie.value,) name = None for name, in self.env.db_query(sql, args): break if name is None: self._expire_cookie(req) if acctmgr.persistent_sessions and name and \ 'trac_auth_session' in req.incookie and \ int(req.incookie['trac_auth_session'].value) < \ int(time.time()) - self.UPDATE_INTERVAL: # Persistent sessions enabled, the user is logged in # ('name' exists) and has actually decided to use this feature # (indicated by the 'trac_auth_session' cookie existing). # # NOTE: This method is called on every request. # Refresh session cookie # Update the timestamp of the session so that it doesn't expire. self.env.log.debug("Updating session %s for user %s", cookie.value, name) # Refresh in database self.env.db_transaction(""" UPDATE auth_cookie SET time=%s WHERE cookie=%s """, (int(time.time()), cookie.value)) # Change session ID (cookie.value) now and then as it otherwise # never would change at all (i.e. stay the same indefinitely and # therefore is more vulnerable to be hacked). if random.random() + self.cookie_refresh_pct / 100.0 > 1: old_cookie = cookie.value # Update auth cookie value cookie.value = hex_entropy() self.env.log.debug("Changing session id for user %s to %s", name, cookie.value) self.env.db_transaction(""" UPDATE auth_cookie SET cookie=%s WHERE cookie=%s """, (cookie.value, old_cookie)) if self.auth_cookie_path: self._distribute_auth(req, cookie.value, name) cookie_lifetime = self.cookie_lifetime cookie_path = self._get_cookie_path(req) req.outcookie['trac_auth'] = cookie.value req.outcookie['trac_auth']['path'] = cookie_path req.outcookie['trac_auth']['expires'] = cookie_lifetime req.outcookie['trac_auth_session'] = int(time.time()) req.outcookie['trac_auth_session']['path'] = cookie_path req.outcookie['trac_auth_session']['expires'] = cookie_lifetime if self.env.secure_cookies: req.outcookie['trac_auth']['secure'] = True req.outcookie['trac_auth_session']['secure'] = True return name # overrides def _do_login(self, req): if not req.remote_user: if req.method == 'GET': # Trac before 0.12 has known weak redirect loop protection. # Adding redirect fix from Trac 0.12, and especially avert # from 'self._redirect_back', when we see a 'GET' here. referer = req.get_header('Referer') # Steer clear of requests going nowhere or loop to self if referer is None or \ referer.startswith(str(req.abs_href()) + '/login'): referer = req.abs_href() req.redirect(referer) self._redirect_back(req) res = auth.LoginModule._do_login(self, req) cookie_path = self._get_cookie_path(req) # Fix for Trac 0.11, that always sets path to `req.href()`. req.outcookie['trac_auth']['path'] = cookie_path # Inspect current cookie and try auth data distribution for SSO. cookie = req.outcookie.get('trac_auth') if cookie and self.auth_cookie_path: self._distribute_auth(req, cookie.value, req.remote_user) if req.args.get('rememberme', '0') == '1': # Check for properties to be set in auth cookie. cookie_lifetime = self.cookie_lifetime req.outcookie['trac_auth']['expires'] = cookie_lifetime # This cookie is used to indicate that the user is actually using # the "Remember me" feature. This is necessary for # '_get_name_for_cookie()'. req.outcookie['trac_auth_session'] = 1 req.outcookie['trac_auth_session']['path'] = cookie_path req.outcookie['trac_auth_session']['expires'] = cookie_lifetime if self.env.secure_cookies: req.outcookie['trac_auth_session']['secure'] = True else: # In Trac 0.12 the built-in authentication module may have already # set cookie's expires attribute, so because the user did not # check 'remember me' we need to delete it here to ensure that the # cookie will still expire at the end of the session. try: del req.outcookie['trac_auth']['expires'] except KeyError: pass # If there is a left-over session cookie from a previous # authentication session, expire it now. if 'trac_auth_session' in req.incookie: self._expire_session_cookie(req) return res def _distribute_auth(self, req, trac_auth, name=None): # Single Sign On authentication distribution between multiple # Trac environments managed by AccountManager. local_env_name = req.base_path.lstrip('/') for env_name, env_path in get_environments(req.environ).iteritems(): if env_name != local_env_name: try: # Cache environment for subsequent invocations. env = open_environment(env_path, use_cache=True) auth_cookie_path = env.config.get('trac', 'auth_cookie_path') # Consider only Trac environments with equal, non-default # 'auth_cookie_path', which enables cookies to be shared. if auth_cookie_path == self.auth_cookie_path: with env.db_transaction as db: # Authentication cookie values must be unique. # Ensure, there is no other session (or worse: # session ID) associated to it. db(""" DELETE FROM auth_cookie WHERE cookie=%s """, (trac_auth,)) if not name: env.log.debug("Auth data revoked from: %s", local_env_name) continue db(""" INSERT INTO auth_cookie (cookie,name,ipnr,time) VALUES (%s,%s,%s,%s) """, (trac_auth, name, req.remote_addr, int(time.time()))) env.log.debug("Auth data received from: %s", local_env_name) self.log.debug("Auth distribution success: %s", env_name) except Exception, e: self.log.debug("Auth distribution skipped for env %s: %s", env_name, exception_to_unicode(e, traceback=True)) def _get_cookie_path(self, req): """Determine "path" cookie property from setting or request object.""" return self.auth_cookie_path or req.base_path or '/' # overrides def _expire_cookie(self, req): """Instruct the user agent to drop the auth_session cookie by setting the "expires" property to a date in the past. Basically, whenever "trac_auth" cookie gets expired, expire "trac_auth_session" too. """ # First of all expire trac_auth_session cookie, if it exists. if 'trac_auth_session' in req.incookie: self._expire_session_cookie(req) # Capture current cookie value. cookie = req.incookie.get('trac_auth') if cookie: trac_auth = cookie.value else: trac_auth = None # Then let auth.LoginModule expire all other cookies. auth.LoginModule._expire_cookie(self, req) # And finally revoke distributed authentication data too. if self.auth_cookie_path and trac_auth: self._distribute_auth(req, trac_auth) # Keep this code in a separate methode to be able to expire the session # cookie trac_auth_session independently of the trac_auth cookie. def _expire_session_cookie(self, req): """Instruct the user agent to drop the session cookie. This is achieved by setting "expires" property to a date in the past. """ cookie_path = self._get_cookie_path(req) req.outcookie['trac_auth_session'] = '' req.outcookie['trac_auth_session']['path'] = cookie_path req.outcookie['trac_auth_session']['expires'] = -10000 if self.env.secure_cookies: req.outcookie['trac_auth_session']['secure'] = True def _remote_user(self, req): """The real authentication using configured providers and stores.""" username = req.args.get('username') self.env.log.debug("LoginModule._remote_user: Authentication " "attempted for '%s'", username) password = req.args.get('password') if not username: return None acctmgr = AccountManager(self.env) acctmod = AccountModule(self.env) if acctmod.reset_password_enabled is True: reset_store = acctmod.store else: reset_store = None if acctmgr.check_password(username, password) is True: if reset_store: # Purge any temporary password set for this user before, # to avoid DOS by continuously triggered resets from # a malicious third party. if reset_store.delete_user(username) is True and \ 'PASSWORD_RESET' not in req.environ: self.env.db_transaction(""" DELETE FROM session_attribute WHERE sid=%s AND name='force_change_passwd' AND authenticated=1 """, (username,)) return username # Alternative authentication provided by password reset procedure elif reset_store: if reset_store.check_password(username, password) is True: # Lock, required to prevent another authentication # (spawned by `set_password()`) from possibly deleting # a 'force_change_passwd' db entry for this user. req.environ['PASSWORD_RESET'] = username # Change password to temporary password from reset procedure _set_password(self.env, req, username, password) return username return None def _format_ctxtnav(self, items): """Prepare context navigation items for display on login page.""" return list(separated(items, '|')) @property def enabled(self): # Trac built-in authentication must be disabled to use this one. return self.env.is_enabled(self.__class__) and \ not self.env.is_enabled(auth.LoginModule) def _set_password(env, req, username, password, old_password=None): try: AccountManager(env).set_password(username, password, old_password=old_password) except NotificationError, e: add_warning(req, _("Error raised while sending a change " "notification.") + _("You should report that issue to a Trac admin.")) env.log.error('Unable to send password change notification: %s', exception_to_unicode(e, traceback=True)) trac-accountmanager-0.5~r16056/acct_mgr/model.py0000644000175500017550000005053413021456450021250 0ustar debacledebacle# -*- 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 acct_mgr.api import GenericUserIdChanger from trac.util import as_int from trac.util.text import exception_to_unicode, to_unicode _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, db): 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), e: result = exception_to_unicode(e) self.log.debug(self.msg(old_uid, new_uid, self.table, self.column, result='failed: %s' % exception_to_unicode(e, traceback=True))) 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, db): try: self.env.db_transaction(""" DELETE FROM %s WHERE %s=%%s """ % (self.table, self.column), (new_uid,)) except _get_db_exc(self.env), e: result = exception_to_unicode(e) self.log.debug(self.msg(old_uid, new_uid, self.table, self.column, result='failed: %s' % exception_to_unicode(e, traceback=True))) return dict(error={(self.table, self.column, None): result}) return super(UniqueUserIdChanger, self).replace(old_uid, new_uid, db) 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, db): 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), e: result = exception_to_unicode(e) self.log.debug( self.msg(old_uid, new_uid, self.table, 'cc', result='failed: %s' % exception_to_unicode(e, traceback=True))) 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), e: result = exception_to_unicode(e) self.log.debug( self.msg(old_uid, new_uid, table, column, constraint, result='failed: %s' % exception_to_unicode(e, traceback=True))) 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 """ % (table, column), (', '.join(cc), int(row[0]), int(row[1]))) result += 1 except _get_db_exc(self.env), e: result = exception_to_unicode(e) self.log.debug( self.msg(old_uid, new_uid, table, column, constraint, result='failed: %s' % exception_to_unicode(e, traceback=True))) 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 row 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. Use with care, as it returns the private token string, if verification is pending. """ if not user_known(env, user) or not email: # Nothing more to check here. return None 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 None 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] return True def user_known(env, user): """Returns whether the user has ever been authenticated before.""" for row 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}) 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 attrs[username][1].iteritems(): 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 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) 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. m = hashlib.md5() m.update(''.join([account, str(authenticated), res_row.get('name')]).encode('utf-8')) row_id = m.hexdigest() 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. m = hashlib.md5() m.update(''.join([account, str(authenticated)]).encode('utf-8')) res[account]['id'][authenticated] = m.hexdigest() else: # Create account ID for authentication state. m = hashlib.md5() m.update(''.join([account, str(authenticated)]).encode('utf-8')) res[account] = { authenticated: { res_row['name']: res_row['value'], 'id': {res_row['name']: row_id} }, 'id': {authenticated: m.hexdigest()} } return res def prime_auth_session(env, username): """Prime session for registered users before initial login. There's no distinct user object in Trac, but users consist in terms of anonymous or authenticated sessions and related session attributes. So INSERT new sid, needed as foreign key in some db schema later on, at least for PostgreSQL. """ 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" if hasattr(env, 'invalidate_known_users_cache'): env.invalidate_known_users_cache() with env.db_transaction as db: db("UPDATE session_attribute SET value=%s" + sql, (value, username, attribute)) for value, 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)) 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)) trac-accountmanager-0.5~r16056/acct_mgr/opt/0000755000175500017550000000000013014744725020400 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/tracvote/0000755000175500017550000000000012121353740022216 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/tracvote/uid_chg.py0000644000175500017550000000073212121353740024174 0ustar debacledebacle# -*- 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 acct_mgr.model import PrimitiveUserIdChanger class TracVoteUserIdChanger(PrimitiveUserIdChanger): """Change user IDs for TracVote table.""" column = 'username' table = 'votes' trac-accountmanager-0.5~r16056/acct_mgr/opt/tracvote/__init__.py0000644000175500017550000000000012121353740024315 0ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/__init__.py0000644000175500017550000000000012121353740022466 0ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/announcer/0000755000175500017550000000000012121353740022357 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/announcer/uid_chg.py0000644000175500017550000000372312121353740024340 0ustar debacledebacle# -*- 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 acct_mgr.api import _ from acct_mgr.model import PrimitiveUserIdChanger from announcer.api import AnnouncementSystem 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, db): 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=dict() self.column = 'sid' self.table = 'subscription' result = super(TracAnnouncerUserIdChanger, self).replace(old_uid, new_uid, db) if 'error' in result: return result results.update(result) self.table = 'subscription_attribute' result = super(TracAnnouncerUserIdChanger, self).replace(old_uid, new_uid, db) if 'error' in result: return result results.update(result) return results trac-accountmanager-0.5~r16056/acct_mgr/opt/announcer/__init__.py0000644000175500017550000000000012121353740024456 0ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/radius.py0000644000175500017550000001107612504353742022244 0ustar debacledebacle# -*- 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 StringIO import StringIO from trac.config import IntOption, Option from trac.core import Component, implements from trac.util.text import unicode_passwd from acct_mgr.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, 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, 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, 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 interation. 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 trac-accountmanager-0.5~r16056/acct_mgr/opt/tests/0000755000175500017550000000000013014744725021542 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/tests/__init__.py0000644000175500017550000000325712734607153023663 0ustar debacledebacle# -*- 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, 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, 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, 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, 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, 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') trac-accountmanager-0.5~r16056/acct_mgr/opt/tests/radius.py0000644000175500017550000000377013014744725023412 0ustar debacledebacle# -*- 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 acct_mgr.opt.radius import RadiusAuthStore 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) # Helpers # Tests 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(unittest.makeSuite(RadiusAuthTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trac-accountmanager-0.5~r16056/acct_mgr/opt/tracscreenshots/0000755000175500017550000000000012121353740023601 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/tracscreenshots/uid_chg.py0000644000175500017550000000072512121353740025561 0ustar debacledebacle# -*- 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 acct_mgr.model import PrimitiveUserIdChanger class TracScreenshotsUserIdChanger(PrimitiveUserIdChanger): """Change user IDs for TracScreenshots table.""" table = 'screenshot' trac-accountmanager-0.5~r16056/acct_mgr/opt/tracscreenshots/__init__.py0000644000175500017550000000000012121353740025700 0ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/tracforms/0000755000175500017550000000000012121353740022367 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/opt/tracforms/uid_chg.py0000644000175500017550000000365012121353740024347 0ustar debacledebacle# -*- 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 acct_mgr.api import _ from acct_mgr.model import PrimitiveUserIdChanger from tracforms.tracdb import DBComponent 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, db): 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, db) if 'error' in result: return result results.update(result) self.table = 'forms_fields' result = super(TracFormsUserIdChanger, self).replace(old_uid, new_uid, db) if 'error' in result: return result results.update(result) self.table = 'forms_history' result = super(TracFormsUserIdChanger, self).replace(old_uid, new_uid, db) if 'error' in result: return result results.update(result) return results trac-accountmanager-0.5~r16056/acct_mgr/opt/tracforms/__init__.py0000644000175500017550000000000012121353740024466 0ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/templates/0000755000175500017550000000000013017154110021556 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/templates/verify_email.html0000644000175500017550000000321712616754636025151 0ustar debacledebacle Verify Email

Verify Email

An email was sent to $req.session.email with a token to verify your new address. Please check your email and enter the token in the form below.

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

trac-accountmanager-0.5~r16056/acct_mgr/templates/admin_db_cleanup.html0000644000175500017550000000711612166067500025727 0ustar debacledebacle Accounts: Cleanup

Accounts: Cleanup

  Account
    Attribute Value
Authenticated Accounts
'${account}'
  '${name}' '${value}'
trac-accountmanager-0.5~r16056/acct_mgr/templates/reset_password.html0000644000175500017550000000272612166030451025524 0ustar debacledebacle 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.

trac-accountmanager-0.5~r16056/acct_mgr/templates/reset_password_email.txt0000644000175500017550000000032610525026431026540 0ustar debacledebacleYour 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} trac-accountmanager-0.5~r16056/acct_mgr/templates/login.html0000644000175500017550000000562013017154110023557 0ustar debacledebacle Login

Error

${login_error}

trac-accountmanager-0.5~r16056/acct_mgr/templates/admin_account.html0000644000175500017550000002675312432464047025302 0ustar debacledebacle Account

Manage User Account

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



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.

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

Therefore after another failed login attempt authentication for this account would be retarded by ${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_verified}' ).

This address has not been verified yet.

No email address is registered for this account.

Last login: ${last_visit}

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} ${attempt.time}

There is currently no failed login attempt logged.

trac-accountmanager-0.5~r16056/acct_mgr/templates/admin_users.html0000644000175500017550000002122512432464047024774 0ustar debacledebacle Accounts
Add New Account:

Only lowercase usernames allowed


This password store does not support listing users.

Accounts ($displayed_items)

Filters
Status
trac-accountmanager-0.5~r16056/acct_mgr/templates/admin_accountsconfig.html0000644000175500017550000013264412122164557026647 0ustar debacledebacle Accounts: Configuration

Accounts: Configuration

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

Objective for setting Authentication Options

Decide, whether to use HTTP authentication (Trac default) or a HTML login form provided by AccountManagerPlugin.

After initial login Trac sessions are authenticated per request based on browser cookies. Therefor 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.

Potentially troublesome for users with dynamic IP adress, but disregarded for persistent sessions.

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

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

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

If enabled, links to

  • Lost password/Password reset
  • Registration for new users

that normally reside in Trac's meta-navigation bar, will appear inside the login form. CSS styling allows further customization of the login prompt.

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 icon

Objective for configuring a Password Store

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_attributes'. Its the default choice mainly for avoiding additional dependencies like directory and file permissions.

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

Please apply these default options first. You'll be able to change values afterwards.

AccountManagerPlugin includes native support for common Apache file formats 'htpasswd' and 'htdigest' as well as support for reading svnserve's password file format.

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

Please apply these default options first. You'll be able to change values afterwards.

Details (Preview)
$init_store_hint.htpasswd

Please apply these default options first. You'll be able to change values afterwards.

Details (Preview)
$init_store_hint.svn_file

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.

In addition to being read-only this password store does not even support listing users for obvious reasons.

Details (Preview)
$init_store_hint.http

Please apply these default options first. You'll be able to change values afterwards.

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

Configuration

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)}

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

Use it after changing hash type or to migrate to a new primary password store.

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 icon

Objective for Password Policy rules

While AccountManagerPlugin does not enforce password rules in general, there are some other ways to alter password handling.

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 icon

Objective for Account Registration and Verification rules

You may require administrative approval of new accounts for the user registration process. The ability to immediately ban existing accounts is another, related but independed 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)}

Select one or more checks and configure related options. Concurrent use of multiple registration checks is encouraged.

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

For admin notification on registration time it relies on a working email sender for Trac, supporting both TracAnnouncer and TracNotification.

For sending a verificaton 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 icon

Objective for Account Protection rules

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.

Extend user account lock duration incrementally. It uses logarithmic calculation with the factor as exponent, accepting decimal numbers >= 1.

Lock time will grow for any value > 1, if the failure happens before lock expiration. I.e. value '2' means

  • double lock time after 2nd failure,
  • four times the initial lock time after 3rd,
  • eight times as long after 4th failure, etc.

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 limitted 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

Please take care, that the username is known by the HTTP authentication provider.

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[0]} = ${option[1]}
${option[0]} = ${option[1]}

trac-accountmanager-0.5~r16056/acct_mgr/templates/user_table.html0000644000175500017550000000424613014752010024577 0ustar debacledebacle
  Account Name Email Last Login
${acct.username} Account locked Permanently locked ${acct.name} ${acct.email} ${acct.last_visit and pretty_dateinfo(acct.last_visit) or ''}
trac-accountmanager-0.5~r16056/acct_mgr/templates/user_changes_email.txt0000644000175500017550000000014611017341431026137 0ustar debacledebacle${account.action} for user ${account.username} -- ${project.name} <${project.url}> ${project.descr} trac-accountmanager-0.5~r16056/acct_mgr/templates/verify_email.txt0000644000175500017550000000032611022653243025000 0ustar debacledebaclePlease 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} trac-accountmanager-0.5~r16056/acct_mgr/templates/admin_accountsnotification.html0000644000175500017550000000416512121277001030050 0ustar debacledebacle Accounts: Notification Configuration

Accounts: Notification Configuration

Account Notification

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

Space-separated list of email addresses and/or usernames that get notified of the above actions:

trac-accountmanager-0.5~r16056/acct_mgr/templates/register.html0000644000175500017550000000504112166030451024275 0ustar debacledebacle Register

Register an account

Error

$registration_error

Required

Only lowercase usernames allowed

${field}
Optional
${field}
trac-accountmanager-0.5~r16056/acct_mgr/templates/prefs_account.html0000644000175500017550000000431312166030451025305 0ustar debacledebacle
${select('*')}

Delete Account

Account

Change Password

trac-accountmanager-0.5~r16056/acct_mgr/__init__.py0000644000175500017550000000007212704364025021702 0ustar debacledebacleimport pkg_resources pkg_resources.require('Trac >= 1.0') trac-accountmanager-0.5~r16056/acct_mgr/svnserve.py0000644000175500017550000000507513021436176022026 0ustar debacledebacle# -*- 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 acct_mgr.api import IPasswordStore, N_ from acct_mgr.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): cfg = self._config cfg.set('users', user, password) cfg.save() 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): cfg = self._config cfg.remove('users', user) cfg.save() trac-accountmanager-0.5~r16056/acct_mgr/db.py0000644000175500017550000001054413021456450020532 0ustar debacledebacle# -*- 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 acct_mgr.api import IPasswordStore, _, N_ from acct_mgr.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 row 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 value, 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 row in db(""" SELECT * FROM session_attribute """ + sql, (self.key, user)): exists = True break if exists: db(""" DELETE FROM session_attribute """ + 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: hash_method = self.hash_method except AttributeError: self.env.log.error("%s: no IPasswordHashMethod enabled " "- fatal, can't work" % self.__class__) return return True trac-accountmanager-0.5~r16056/acct_mgr/md5crypt.py0000644000175500017550000000533613014745256021726 0ustar debacledebacle# -*- coding: utf-8 -*- # # Based on FreeBSD src/lib/libcrypt/crypt.c 1.2 # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. # # Author: Matthew Good import hashlib def md5crypt(password, salt, magic='$1$'): # /* The password first, since that is what is most unknown */ /* Then our magic string */ /* Then the raw salt */ m = hashlib.md5() m.update(password + magic + salt) # /* Then just as many characters of the MD5(pw,salt,pw) */ mixin = hashlib.md5(password + salt + password).digest() for i in range(0, len(password)): m.update(mixin[i % 16]) # /* Then something really weird... */ # Also really broken, as far as I can tell. -m i = len(password) while i: if i & 1: m.update('\x00') else: m.update(password[0]) i >>= 1 final = m.digest() # /* and now, just to make sure things don't run too fast */ for i in range(1000): m2 = hashlib.md5() if i & 1: m2.update(password) else: m2.update(final) if i % 3: m2.update(salt) if i % 7: m2.update(password) if i & 1: m2.update(final) else: m2.update(password) final = m2.digest() # This is the bit that uses to64() in the original code. itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' rearranged = '' for a, b, c in ((0, 6, 12), (1, 7, 13), (2, 8, 14), (3, 9, 15), (4, 10, 5)): v = ord(final[a]) << 16 | ord(final[b]) << 8 | ord(final[c]) for i in range(4): rearranged += itoa64[v & 0x3f]; v >>= 6 v = ord(final[11]) for i in range(2): rearranged += itoa64[v & 0x3f]; v >>= 6 return magic + salt + '$' + rearranged if __name__ == '__main__': def test(clear_password, the_hash): magic, salt = the_hash[1:].split('$')[:2] magic = '$' + magic + '$' return md5crypt(clear_password, salt, magic) == the_hash test_cases = ( (' ', '$1$yiiZbNIH$YiCsHZjcTkYd31wkgW8JF.'), ('pass', '$1$YeNsbWdH$wvOF8JdqsoiLix754LTW90'), ('____fifteen____', '$1$s9lUWACI$Kk1jtIVVdmT01p0z3b/hw1'), ('____sixteen_____', '$1$dL3xbVZI$kkgqhCanLdxODGq14g/tW1'), ('____seventeen____', '$1$NaH5na7J$j7y8Iss0hcRbu3kzoJs5V.'), ('__________thirty-three___________', '$1$HO7Q6vzJ$yGwp2wbL5D7eOVzOmxpsy.'), ('apache', '$apr1$J.w5a/..$IW9y6DR0oO/ADuhlMF5/X1') ) for clearpw, hashpw in test_cases: if test(clearpw, hashpw): print '%s: pass' % clearpw else: print '%s: FAIL' % clearpw trac-accountmanager-0.5~r16056/acct_mgr/notification.py0000644000175500017550000001644012700324434022633 0ustar debacledebacle# -*- 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.core import Component, TracError, implements from trac.admin import IAdminPanelProvider from trac.config import Option, ListOption from trac.notification import NotifyEmail from acct_mgr.api import IAccountChangeListener, CommonTemplateProvider, \ _, dgettext class NotificationError(TracError): pass class AccountChangeListener(Component): implements(IAccountChangeListener) _notify_actions = ListOption( 'account-manager', 'notify_actions', [], doc="""Comma separated list of actions to notify of. Available actions 'new', 'change', 'delete'.""") # IAccountChangeListener methods def user_created(self, username, password): if 'new' in self._notify_actions: notifier = AccountChangeNotification(self.env) notifier.notify(username, 'New user registration') def user_password_changed(self, username, password): if 'change' in self._notify_actions: notifier = AccountChangeNotification(self.env) notifier.notify(username, 'Password reset') def user_deleted(self, username): if 'delete' in self._notify_actions: notifier = AccountChangeNotification(self.env) notifier.notify(username, 'Deleted User') def user_password_reset(self, username, email, password): notifier = PasswordResetNotification(self.env) if email != notifier.email_map.get(username): raise Exception( _("The email and username do not match a known account.")) notifier.notify(username, password) def user_email_verification_requested(self, username, token): notifier = EmailVerificationNotification(self.env) notifier.notify(username, token) def user_registration_approval_required(self, username): notifier = EmailVerificationNotification(self.env) notifier.notify(username, 'Registration approval required') class AccountChangeNotification(NotifyEmail): template_name = 'user_changes_email.txt' _recipients = Option( 'account-manager', 'account_changes_notify_addresses', '', """List of email addresses that get notified of user changes, ie, new user, password change and delete user.""") def get_recipients(self, resid): recipients = self._recipients.split() return (recipients,[]) def get_smtp_address(self, addr): """Overrides `get_smtp_address` in order to prevent CCing users other than those in the account_changes_notify_addresses option. """ if addr in self._recipients: return NotifyEmail.get_smtp_address(self, addr) else: return def notify(self, username, action): self.data.update({ 'account': { 'username': username, 'action': action }, 'login': { 'link': self.env.abs_href.login(), } }) projname = self.config.get('project', 'name') subject = '[%s] %s: %s' % (projname, action, username) try: NotifyEmail.notify(self, username, subject) except Exception, e: # Enable dedicated, graceful handling of notification issues. raise NotificationError(e) class SingleUserNotification(NotifyEmail): """Helper class used for account email notifications which should only be sent to one persion, not including the rest of the normally CCed users """ _username = None def get_recipients(self, resid): return ([resid],[]) def get_smtp_address(self, addr): """Overrides `get_smtp_address` in order to prevent CCing users other than the user whose password is being reset. """ if addr == self._username: return NotifyEmail.get_smtp_address(self, addr) else: return def notify(self, username, subject): # save the username for use in `get_smtp_address` self._username = username old_public_cc = self.config.getbool('notification', 'use_public_cc') # override public cc option so that the user's email is included in the To: field self.config.set('notification', 'use_public_cc', 'true') try: NotifyEmail.notify(self, username, subject) except Exception, e: raise NotificationError(e) # DEVEL: Better use new 'finally' statement here, but # still need to care for Python 2.4 (RHEL5.x) for now self.config.set('notification', 'use_public_cc', old_public_cc) class PasswordResetNotification(SingleUserNotification): template_name = 'reset_password_email.txt' def notify(self, username, password): self.data.update({ 'account': { 'username': username, 'password': password, }, 'login': { 'link': self.env.abs_href.login(), } }) projname = self.config.get('project', 'name') subject = '[%s] Trac password reset for user: %s' % (projname, username) SingleUserNotification.notify(self, username, subject) class EmailVerificationNotification(SingleUserNotification): template_name = 'verify_email.txt' def notify(self, username, token): self.data.update({ 'account': { 'username': username, 'token': token, }, 'verify': { 'link': self.env.abs_href.verify_email(token=token,verify=1), } }) projname = self.config.get('project', 'name') subject = '[%s] Trac email verification for user: %s' % (projname, username) SingleUserNotification.notify(self, username, subject) class AccountChangeNotificationAdminPanel(CommonTemplateProvider): implements(IAdminPanelProvider) # IAdminPageProvider methods def get_admin_panels(self, req): if req.perm.has_permission('ACCTMGR_CONFIG_ADMIN'): 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 if req.method == 'POST': cfg.set('account-manager', 'account_changes_notify_addresses', ' '.join(req.args.get('notify_addresses').strip('\n').split())) cfg.set('account-manager', 'notify_actions', ','.join(req.args.getlist('notify_actions')) ) cfg.save() notify_addresses = cfg.get('account-manager', 'account_changes_notify_addresses').split() notify_actions = cfg.getlist('account-manager', 'notify_actions') data = {'_dgettext': dgettext, 'notify_actions': notify_actions, 'notify_addresses': notify_addresses } return 'admin_accountsnotification.html', data trac-accountmanager-0.5~r16056/acct_mgr/guard.py0000644000175500017550000002433112700324434021245 0ustar debacledebacle# -*- 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 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 acct_mgr.model import del_user_attribute, get_user_attribute from acct_mgr.model import 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.env.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.env.log.warn( "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.env.log.warn( "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': to_timestamp(to_datetime(None))}) count += 1 # Update or create attempts counter and list. set_user_attribute(self.env, user, 'failed_logins', str(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.env.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.env.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 trac-accountmanager-0.5~r16056/acct_mgr/http.py0000644000175500017550000000542613014744725021136 0ustar debacledebacle# -*- 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 from urllib2 import build_opener, HTTPDigestAuthHandler, \ HTTPPasswordMgrWithDefaultRealm from urlparse import urlparse from trac.config import Option from trac.core import Component, implements from trac.web.href import Href from acct_mgr.api import IPasswordStore, _, N_ from acct_mgr.util import HTTPBasicAuthHandler 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://'): authUrl = 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]) authUrl = href(self.auth_url) elif '/' in self.auth_url: # URLs with path like 'common/authFile' or 'site/authFile'. authUrl = self.env.abs_href.chrome(self.auth_url) else: # Bare file name option value like 'authFile'. authUrl = self.env.abs_href.chrome('common', self.auth_url) self.log.debug("Final auth_url = '%s'" % authUrl) acctmgr = HTTPPasswordMgrWithDefaultRealm() acctmgr.add_password(None, authUrl, username, password) try: build_opener(HTTPBasicAuthHandler(acctmgr), HTTPDigestAuthHandler(acctmgr)).open(authUrl) except IOError,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, e: 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 trac-accountmanager-0.5~r16056/acct_mgr/locale/0000755000175500017550000000000012616752152021035 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/pl/0000755000175500017550000000000012056250001021430 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/pl/LC_MESSAGES/0000755000175500017550000000000012056250001023215 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/pl/LC_MESSAGES/acct_mgr.po0000644000175500017550000006072512056250001025346 0ustar debacledebacle# 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: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Artur Frysiak \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Użytkownicy" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Nazwa użytkownika nie może być pusta." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Hasła nie są takie same." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "Email i nazwa użytkownika nie pasują do znanego konta." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Powiadomienie" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "Moduł \"crypt\" nie jest dostępny." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Niedozwolona nazwa użytkownika: %s." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Hasło nie może być puste." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Proszę podać poprawny adres email." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Konto" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Nazwa użytkownika jest wymagana." #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "Emial jest wymagany." #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "Stare hasło nie może być puste." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Niepoprawne stare hasło." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Hasło zostało zaktualizowane." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Niepoprawne hasło." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/zh_TW/0000755000175500017550000000000012056250001022050 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/zh_TW/LC_MESSAGES/0000755000175500017550000000000012056250001023635 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/zh_TW/LC_MESSAGES/acct_mgr.po0000644000175500017550000005743112056250001025766 0ustar debacledebacle# Chinese (Taiwan) 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:198 msgid "Users" msgstr "" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/he/0000755000175500017550000000000012056250001021411 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/he/LC_MESSAGES/0000755000175500017550000000000012056250001023176 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/he/LC_MESSAGES/acct_mgr.po0000644000175500017550000010150512056250001025317 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Shalom Craimer \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "נעול עד %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "סוג המפתח (%s) אינו מתאים לסדר־האחסון" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "חשבונות" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "תצורה" #: acct_mgr/admin.py:198 msgid "Users" msgstr "משתמשים" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "מאגר הססמאות אינו תומך ביצירת משתמשים." #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "היכולת לאפס ססמאות אינו פעילה." #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "מאגר הססמאות אינו תומך במחיקת משתמשים." #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "כתובת דוא\"ל" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "תחילית-/שם משפחה (כינוי)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "ססמה" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "שם המשתמש אינו יכול להיות ריק." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "משתמש לא מוכר %(user)s." #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "על הססמאות להיות זהות." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" "מאגר הססמאות אינו תומך\n" " בשינוי ססמאות.\n" " " #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "נא לבחור חשבון מתוך הרשימה על־פי שם המשתמש" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "ניסיונות ההתחברות הכושלים עבור המשתמש %(user)s נמחקו" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" "שידרת האימות עבור המשתמש %s אינה תומכת\n" " בקביעת ססמה.\n" " " #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" "אף אחד ממרכיבי ב-IPasswordStore הרשומים בקובץ\n" " trac.ini תומכים בקביעת ססמאות או יצירת משתמשים.\n" " " #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "לא ניתן לקרוא את קובץ הססמאות. טראק דורש\n" " גישת קריאה וכתיבה הן לקובץ הססמאות\n" " והן לספרייה המכילה אותו." #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "לא ניתן לעדכן את קובץ הססמאות. טראק דורש\n" " גישת קריאה וכתיבה הן לקובץ הססמאות\n" " והן לספרייה המכילה אותו." #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" "הנתיב יחסית לסביבת הטראק, או שם מלא של השרת והנתיב\n" " אל קובץ הססמאות" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "ברירת המחדל לסוג הגיבוב של ססמאות חדשות ומעודכנות" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "מתחם־האימות לשימוש בעת בחירת שורות קובץ htdigest" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "הכתובת של שירות האימות עבור HTTP" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "כתובת הדוא\"ל והמשתמש אינם תואמים לשום חשבון." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "התרעה" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" "החבילה \"crypt\" אינה זמינה\n" " על מערכת זו." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "אסור לשם־המשתמש להכיל את התוים הללו: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "שם־המשתמש %s אינו חוקי." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "הססמה לא יכולה להיות ריקה." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 #, fuzzy msgid "Email:" msgstr "דוא\"ל" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "עליך להזין כתובת דוא\"ל חוקית." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "הרשמה" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "נא לאמת את כתובת הדוא\"ל שלך" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "הרשאותיך הוגבלו עד אשר תבצע/י %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "נא לאמת את כתובת הדוא\"ל החדשה שלך" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "הודעה נשלחה לכתובת %(email)s עם אסימון עבור\n" " %(link)s." #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "נא להתחבר על־מנת לסיים את תהליך אימות כתובת הדוא\"ל." #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "כתובת הדוא\"ל שלך כבר אומתה." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "הודעת דוא\"ל נשלחה שוב אל <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "תודה לך על אימות כתובת הדוא\"ל שלך." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "אסימון אימות לא־תקף" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" "הנתיב לקובץ־משתמשים; יש להשאיר ריק\n" " על־מנת לאכן את הקובץ על־ידי קריאת svnserve.conf" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "חשבון" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "שכחת את ססמתך?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "האם ברצונך למחוק את חשבונך?" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "תודה לך על שהשקעת מזמנת לעדכן את ססמתך." #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "עליך לשנות את ססמתך עקב בקשה חדשה לשינוי ססמאות." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "יש לשנות את ססמתך כעת." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "חובה להזין שם־משתמש" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "חובה להזין כתובת דוא\"ל" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "כתובת הדוא\"ל ושם־המשתמש אינם תואמים לחשבון מוכר." #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "הססמה הישנה לא יכולה להיות ריקה." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "הססמה הישנה שגויה." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "הססמה עודכנה בהצלחה." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "הססמא לא נכונה." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "שם־המשתמש או הססמה שגויים" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" "החשבון ננעל, נא לנסות בשנית לאחר\n" " %(release_time)s\n" " " #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "החשבון נעול" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "פרטי החשבון" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "הגהת פרטי חשבון המשתמש" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "עבור [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "עבור [1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "מצב החשבון" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" "פרטי האימות למשתמש זה מאוחסנים במאגר־האימות במספר\n" " [1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "חיפוש שמות־משתמשים נקבע ל-[1:לא רגיש לאותיות גדולות/קטנות]." #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "חיפוש שמות־משתמשים נקבע ל-[1:רגיש לאותיות גדולות/קטנות]." #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" "אין מאגר המספק פרטי אימות עבור משתמש זה,\n" " לכן לא ניתן לאמת את המשתמש והגישה\n" " לחשבון זה [1:דומה לחסומה],\n" " בעוד שייתכן ופרטי החשבון עדיין זמינים." #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" "[1:]\n" " חשבון זה ננעל עד %(time)s[2:]\n" " ובינתיים אפילו ניסיונות התחברות חוקיים יידחו." #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "חשבון זה ננעל לצמיתות." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "שיחרור נעילת החשבון" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "שיחרור נעילה" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" "תנאי הנעילה הוגשמו כבר\n" " %(count)s פעם." msgstr[1] "" "תנאי הנעילה הוגשמו\n" " %(count)s פעמים." #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" "לכן, ניסיון ההתחברות הבא לחשבון זה\n" " יעוכב למשך %(time)s." #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "תנאי הנעילה עוד לא הוגשמו." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "לא נקבעו תנאים עבור חשבון זה." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "אימות" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "כתובת הדוא\"ל הנוכחית: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "כתובת זו אומתה בהצלחה." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" "האימות ממתין\n" " ([1:אסימון: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "כתובת דוא\"ל זו עוד לא אומתה." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "לא נרשמה כתובת דוא\"ל עבור חשבון זה." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "היסטוריית גישות" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "התחברות אחרונה: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "משתמש זה מעולם לא התחבר/ה." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "סה\"כ ניסיונות חיבור כושלים: %(count)s." #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "טבלה: תצוגת ניסיונות החיבור הכושלים האחרונות" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "כתובת IP" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "זמן הרישום" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "מחיקת רישום ניסיונות החיבור הכושלים" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "מחיקת הרישום" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "לא נרשמו ניסיונות חיבור כושלים." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "עידכון" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "חשבונות: תצורה" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "עדכן ססמה" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "עדכן בשקט את גיבובי הססמאות בהתחברות הבאה." #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "שמור מצב בין הפעלות" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "אפשר למשתמש להיזכר בין הפעלות ללא צורך\n" " לאימות מחדש." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "איפוס ססמה" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "חייב את המשתמשים לשנות את ססמתם לאחר איפוס ססמה." #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "אימות דוא\"ל" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "חייב את המשתמשים לאמת את כתובות הדוא\"ל שלהם." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "שמירה" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "חשבונות: תצורת התרעות" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "התרעות חשבון" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" "יש לקבוע את האפשרויות להלן על־מנת לקבל התרעה על\n" " יצירת חשבונות, איפוס ססמאות ומחיקת חשבונות." #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "פעולות התרעה" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" "זוהי רשימת הפעולות שבאפשרותך\n" " להפעיל או לבטל על־ידי [1:סימון] [2:ב-וי]." #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "התרע על יצירת חשבונות חדשים" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "התרע על איפוס ססמאות" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "התרע על מחיקת חשבונות" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "כתובת למשלוח התרעות" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" "רשימת כתובות דוא\"ל ו/או שמות משתמשים, מופרדים ברווחים,\n" " אשר יקבלו התרעות על הפעולות שלעיל:" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "נהל חשבונות משתמשים" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "עודכן בהצלחה: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "הוספה/עריכה של חשבון:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "שם המשתמש:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "ססמה:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "אימות ססמה:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "תחילית-/שם משפחה (כינוי):" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "כתובת דוא\"ל:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "הוספת חשבון־משתמש חדש או עריכת אחד קיים." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " הוספה " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " שינוי " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "מאגר ססמאות זה אינו תומך בהצגת רשימת המשתמשים." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "איפוס ססמאות" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "הסר את החשבונות המסומנים" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "כניסה" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "זכור אותי" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "שגיאה" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "מחיקת חשבון" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "מחיקת חשבון" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "שינוי ססמה" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "ססמה ישנה:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "ססמה חדשה:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "הרשמה לחשבון" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "חובה" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "לא־חובה" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "שם:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "יצירת חשבון" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "איפוס ססמה" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "כבר מחובר" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" "כבר ביצעת התחברות. אם ברצונך לשנות\n" " את ססמתך, יש להשתמש\n" " בדף [1:העדפות חשבון]." #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" "נשלחה ססמה חדשה\n" " אליך לכתובת הדוא\"ל %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" "אם שכחת את ססמתך, ניתן להזין את שם משתמש וכתובת דוא\"ל\n" " להלן ותישלח אליך ססמה חדשה." #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "איפוס ססמה" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "שם" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "דוא\"ל" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "התחברות אחרונה" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "נעול לצמיתות" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "אימות כתובת דוא\"ל" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "נשלחה הודעה אל\n" " %(email)s עם אסימון לאימות הכתובת החדשה.\n" " נא לבדוק את הדוא\"ל שלך ולהזין את אסימון האימות בטופס להלן." #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" "ניתן [1:לשנות את\n" " כתובת הדואר שלך], אם היא מוטעית." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "אסימון אימות:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "אימות" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "שליחת הודעה בשנית" trac-accountmanager-0.5~r16056/acct_mgr/locale/id_ID/0000755000175500017550000000000012056250001021765 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/id_ID/LC_MESSAGES/0000755000175500017550000000000012056250001023552 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/id_ID/LC_MESSAGES/acct_mgr.po0000644000175500017550000005752312056250001025705 0ustar debacledebacle# Indonesian (Indonesia) 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:198 msgid "Users" msgstr "" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/it/0000755000175500017550000000000012056250001021431 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/it/LC_MESSAGES/0000755000175500017550000000000012056250001023216 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/it/LC_MESSAGES/acct_mgr.po0000644000175500017550000007555212056250001025353 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: seccanj \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "Bloccato fino a %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Tipo di chiave (%s) non valido per StoreOrder" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Accounts" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Configurazione" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Utenti" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "Il contenitore di password non supporta la creazione di utenti." #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "La procedura di reimpostazione della password non è attivata." #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "Il contenitore di password non supporta l'eliminazione degli utenti." #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "Indirizzo e-mail" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "Soprannome (Nickname)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "Password" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Il nome utente non può essere vuoto." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "Utente sconosciuto %(user)s ." #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Le password devono corrispondere." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "Il contenitore di password non supporta la modifica delle password." #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "Scegliere un account utente dalla lista per procedere." #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Tentativi di login falliti per l'utente %(user)s eliminati" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" "Il backend di autenticazione per l'utente %s non supporta l'impostazione " "della password." #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" "Nessuno dei componenti IPasswordStore elencati nel file trac.ini supporta" " l'impostazione della password o la creazione di utenti." #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Impossibile leggere il file delle password. Trac necessita \n" "dei diritti di lettura e scrittura sia sul file delle password\n" "che sulla sua directory padre." #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Impossibile aggiornare il file delle password. Trac necessita \n" "dei diritti di lettura e scrittura sia sul file delle password\n" "che sulla sua directory padre." #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 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" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Tipo di hash predefinito per le passowrd nuove/aggiornate" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "Reame per la selezione delle voci rilevanti nel file htdigest" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "URL del servizio di autenticazione HTTP" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 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." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Notifica" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" "Il modulo \"crypt\" non è disponibile \n" "su questa piattaforma." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Il nome utente non deve contenere i seguenti caratteri: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Il nome utente %s non è consentito." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "La password non può essere vuota." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "E-mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "È necessario specificare un indirizzo email valido." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Registrati" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "Verificare l'indirizzo e-mail" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Le autorizzazioni sono state limitate fino a quando non %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "Verificare il nuovo indirizzo e-mail" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "Una e-mail è stata inviata a <%(email)s> con un \n" "token per %(link)s." #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "Accedi per completare la procedura di verifica." #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "Il tuo indirizzo email è già verificato." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Una email di notifica è stata inviata a <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Grazie per aver confermato il tuo indirizzo email." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Codice di verifica non valido" #: acct_mgr/svnserve.py:28 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" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Account" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Password dimenticata?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "Sei sicuro di voler eliminare il tuo account?" #: acct_mgr/web_ui.py:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" "Occorre cambiare la password a causa di una recente richiesta di modifica" " della stessa." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Occorre cambiare subito la password." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Il nome utente è obbligatorio" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "L'email è obbligatoria" #: acct_mgr/web_ui.py:193 msgid "The 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:217 msgid "Old Password cannot be empty." msgstr "La vecchia password non può essere vuota." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "La vecchia password è errata." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "La password è stata aggiornata con successo." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "La password è errata." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Nome utente o password non validi" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" "Account bloccato. Si prega di riprovare\n" "dopo %(release_time)s" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Account bloccato" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "Dettagli account" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Rivedi i Dettagli sull'Account Utente" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "per [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "per [1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Stato Account" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [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/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "La corrispondenza nome utente è impostata su [1:non case-sensitive]." #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "La corrispondenza nome utente è impostata su [1: case-sensitive]." #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." 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/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " 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/account_details.html:66 msgid "This account has been locked permanently." msgstr "Questo account è stato bloccato in modo permanente." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Rilasciare il blocco sull'account" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Sblocca" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(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/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" "Pertanto, al prossimo tentativo falito di accesso l'autenticazione\n" "per questo account sarà ritardata di %(time)s." #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "La condizione di blocco non si è ancora verificata." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "Nessun vincolo è fissato per questo account." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Verifica" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Indirizzo email corrente: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Questo indirizzo è stato verificato con successo." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "La verifica è in corso ([1:token: '%(token)s'])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Questo indirizzo non è stato ancora verificato." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "Nessun indirizzo e-mail è registrato per questo account." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "Storia degli Accessi" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Ultimo accesso: %(time)s " #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "L'utente non ha mai acceduto prima." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Totale tentativi falliti: %(count)s " #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Tabella: Registro ultimi tentativi di accesso non riuscito" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "Indirizzo IP" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "Tempo di connessione" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Elimina registro errori di accesso" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Elimina Registro" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "Attualmente non esistono tentativi di accesso non riusciti registrati." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Aggiorna" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Accounts: Configurazione" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "Aggiorna la password" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" "Aggiorna automaticamente gli hash delle password al prossimo login " "riuscito." #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Sessioni Persistenti" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "Consenti all'utente di essere ricordato da una sessione \n" "all'altra senza bisogno di ri-autenticazione." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Reimposta Password" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Verifica e-mail" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Forzare gli utenti a verificare i loro indirizzi email." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Salva" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Accounts: Configurazione delle Notifiche" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Notifiche Account" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " 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/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Azioni di Notifica" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " 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/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Ricevi avvisi alla creazione di nuovi account" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Ricevi avvisi alla reimpostazione della password" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Ricevi avvisi alla cancellazione di account" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Indirizzi dei destinatari delle notifiche" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Gestione Account Utente" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "Aggiornato con successo: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "Aggiungi/Modifica Account:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Nome utente:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Password:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Conferma Password:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "Soprannome (Nickname):" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "Indirizzo e-mail:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "Aggiungi un nuovo account utente o modificane uno esistente." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Aggiungi " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Cambia " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" "Questo contenitore password non \n" "permette di listare gli utenti." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "Reimposta le password" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Rimuovere gli account selezionati" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Accedi" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Ricordati di me" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Errore" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Elimina account" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Elimina account" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Cambia password" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Vecchia Password:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nuova password:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Registra un account" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Obbligatorio" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Facoltativo" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Nome:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Crea un account" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Reimposta la Password" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Già loggato" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" "Sei già loggato. Se hai bisogno di cambiare la password\n" "utilizza la pagina [1:Preferenze account]." #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" "Una nuova password ti è stata inviata tramite \n" "e-mail a %(email)s." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Reimposta la password" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Nome" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-mail" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Ultimo accesso" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Bloccato permanentemente" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Verifica e-mail" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "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/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "Puoi [1:modificare il tuo indirizzo email], se non è corretto." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Codice di Verifica:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Verifica" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Rispedisci E-mail" trac-accountmanager-0.5~r16056/acct_mgr/locale/fi/0000755000175500017550000000000012056250001021413 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/fi/LC_MESSAGES/0000755000175500017550000000000012056250001023200 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/fi/LC_MESSAGES/acct_mgr.po0000644000175500017550000005750212056250001025330 0ustar debacledebacle# Finnish 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:198 msgid "Users" msgstr "" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/cs/0000755000175500017550000000000012056250001021422 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/cs/LC_MESSAGES/0000755000175500017550000000000012056250001023207 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/cs/LC_MESSAGES/acct_mgr.po0000644000175500017550000007361312056250001025340 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: shadow \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "Uzamčeno do %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Neplatný typ klíče (%s) pro StoreOrder" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Účty" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Konfigurace" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Uživatelé" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Uživatelské jméno nesmí být prázdné." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Hesla se musí shodovat." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "Nejprve prosím určete účet zvolením uživatelského jména v seznamu." #: acct_mgr/admin.py:480 #, 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" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Soubor hesel nelze přečíst. Trac vyžaduje \n" " čtecí a zapisovací přístup k souboru hesel a jeho\n" " nadřazené složce." #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Soubor hesel nemůže být aktualizován. Trac vyžaduje \n" " čtecí a zapisovací přístup k souboru hesel a jeho\n" " nadřazené složce." #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 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" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Výchozí typ hashe pro nová/aktualizovaná hesla" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "Prostředí pro výběr relevantních záznamů htdigest" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "URL autentizační služby pro HTTP" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "K uvedenému E-mail a jméno nebyl nalezen známý účet." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Oznámení" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "\"crypt\" modul není na této platformě k dispozici." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Uživatelské jméno nesmí obsahovat některý z těchto znaků: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Uživatelské jméno %s není povoleno." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Heslo nesmí být prázdné." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "E-mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Musíte zadat platnou e-mailovou adresu." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Registrovat" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "ověřit svou e-mailovou adresu" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Vaše oprávnění jsou omezena dokud %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "neověříte vaši novou emailovou adresu" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "E-mail byl odeslán na adresu %(email)s s tokenem na \n" " %(link)s." #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "Váš e-mail je již ověřen." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Potvrzovací e-mail byl znovu odeslána na <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Děkujeme Vám za ověření Vaší emailové adresy." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Neplatný ověřovací token" #: acct_mgr/svnserve.py:28 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" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Účet" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Zapomněli jste heslo?" #: acct_mgr/web_ui.py:152 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:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "Je nutné provést změnu hesla z důvodu nedávné žádosti o jeho změnu." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Změňte prosím vaše heslo." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Uživatelské jméno je požadováno" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "E-mail je požadován" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "Staré heslo nemůže být prázdné." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Staré heslo je nesprávné." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Heslo bylo úspěšně aktualizováno." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Heslo je nesprávné." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Neplatné uživatelské jméno nebo heslo" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "Účet uzamčen, prosím zkuste to znovu za %(release_time)s" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Účet uzamčen" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "Detaily účtu" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Zkontrolujte detaily uživatelského účtu" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Stav účtu" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [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/account_details.html:42 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/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "U uživatelských jmen se [1:kontroluje velikost písmen]." #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." 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/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " 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/account_details.html:66 msgid "This account has been locked permanently." msgstr "Tento účet byl natrvalo zamčen." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Zrušit uzamčení účtu" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Odemknout" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(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/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " 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/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "Podmínka uzamčení zatím nebyla splněna." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "Pro tento účet nejsou nastavena žádná omezení." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Ověření" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Aktuální e-mailová adresa: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Tato adresa byla úspěšně ověřena." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "Čeká se na ověření ([1:symbol: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Tato adresa zatím nebyla potvrzena." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "Pro tento účet není registrována žádná e-mailová adresa." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "Historie přístupů" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Poslední přihlášení: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "Uživatel se ještě nepřihlásil." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Celkový počet neúspěšných pokusů: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Tabulka: přehled neúspěšných přihlášení" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "IP adresa" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "Čas zaznamenání" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Smazat záznam neúspěšných přihlášení" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Smazat záznam" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "Žádné záznamy o neúspěšných přihlášení." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Aktualizovat" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Účty: Konfigurace" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Přetrvávající zasedání" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "Umožní uživatelům zapamatování přihlášení napříč sezeními bez nutnosti " "znovupřihlášení." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Obnovení hesla" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Ověřit e-mail" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Přinutit uživatele k ověření jejich e-mailové adresy." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Uložit" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Účty: Konfigurace oznámení" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Oznámení o účtech" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " 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/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Oznamovací akce" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " 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/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Upozorňováni o novém vytvoření účtu" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Upozorňováni o resetování hesla" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Upozorňováni o smazání účtu" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Upozorňováni o změně adresy příjemců" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Správa uživatelských účtů" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Uživatelské jméno:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Heslo:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Potvrdit heslo:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "E-mailová adresa:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Přidat " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Změnit " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Úložiště hesel nepodporuje výpis uživatelů." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Odstranit vybrané účty" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Přihlásit se" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Pamatuj si mě" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Chyba" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Odstranit účet" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Odstranit účet" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Změnit heslo" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Staré heslo:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nové heslo:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Zaregistrovat" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Požadované" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Volitelné" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Jméno:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Vytvořit účet" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Reset hesla" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Již přihlášen" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [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/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "Nové heslo bylo zasláno na %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Obnovit heslo" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Jméno" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-mail" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Poslední přihlášení" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Natrvalo uzamčen" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Ověřte e-mail" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "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/verify_email.html:30 msgid "" "You can [1:change your\n" " 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/verify_email.html:35 msgid "Verification Token:" msgstr "Ověřovácí Token:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Ověřit" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Znovu poslat e-mail" trac-accountmanager-0.5~r16056/acct_mgr/locale/sv/0000755000175500017550000000000012056250001021445 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/sv/LC_MESSAGES/0000755000175500017550000000000012056250001023232 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/sv/LC_MESSAGES/acct_mgr.po0000644000175500017550000007447512056250001025372 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: mrelbe \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "Låst till och med %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Ogiltig nyckeltyp (%s) för lösenordsförrådet" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Konton" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Inställningar" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Användare" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "Lösenordsförrådet medger ej att användare läggs till." #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "Återställning av lösenord ej aktiverat." #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "Lösenordsförrådet medger ej borttagning av användare." #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "E-postadress" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "Förnamn/efternamn (Pseudonym)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "Lösenord" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Användarnamn måste anges." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "Okänd användare %(user)s." #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Lösenorden måste överensstämma." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "Lösenordsförrådet medger ej ändring av lösenord." #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "Välj konto i listan med användarnamn för att fortsätta." #: acct_mgr/admin.py:480 #, 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" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "Autentiseringsmekanismen för användare %s medger ej att lösenordet sätts." #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" "Ingen av IPasswordStore-komponenterna som angivits i trac.ini medger att " "lösenord sätts, eller att användare skapas. " #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " 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:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " 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:198 acct_mgr/htfile.py:239 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" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Standardhash-typ för nya/uppdatera lösenord" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "Namnrymd (realm) för val av relevanta poster i htdigest-filen" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "URL för den HTTP-baserade autentiseringstjänsten" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 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." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Avisering" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "\"crypt\"-modulen ej tillgänglig på denna plattform." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Användarnamnet får ej innehålla något av följande tecken: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Användarnamnet %s är ej tillåtet." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Lösenordet får ej vara tomt." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 #, fuzzy msgid "Email:" msgstr "E-post" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Du måste ange en giltig e-postadress." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Registrering" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "bekräftat din e-postadress" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Dina rättigheter har begränsats till dess att du%(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "bekräftande av din nya e-postadress" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "E-post har skickats till <%(email)s> med uppgifter för %(link)s." #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "Din e-postadress är redan bekräftad." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "En e-postavisering har åter skickats till <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Tack för att du bekräftade din e-postadress." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Ogiltiga bekräftelseuppgifter" #: acct_mgr/svnserve.py:28 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)" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Konto" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Glömt ditt lösenord?" #: acct_mgr/web_ui.py:152 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:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "Du måste byta lösenord då begäran om detta nyligen gjorts." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Var vänlig och ändra ditt lösenord nu." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Användarnamn krävs" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "E-postadress krävs" #: acct_mgr/web_ui.py:193 msgid "The 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:217 msgid "Old Password cannot be empty." msgstr "Gammalt lösenord får ej vara tomt." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Gammalt lösenord är inkorrekt." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Lösenordet har uppdaterats." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Lösenordet är felaktigt." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Ogiltigt användarnamn eller lösenord" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" "Konto är låst, vänligen försök igen efter %(release_time)s" " " #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Kontot låst" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "Kontodetaljer" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Granska kontodetaljer" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "för [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "för [1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Kontostatus" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [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/account_details.html:42 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/account_details.html:44 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/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." 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/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " 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/account_details.html:66 msgid "This account has been locked permanently." msgstr "Detta konto har låsts för gott." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Ta bort kontolåset" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Lås upp" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(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/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " 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/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "Låsvillkor har ej uppfyllts än." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "Inga begränsningar är uppsatta för detta konto." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Bekräftelse" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Nuvarande e-postadress: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Denna adress har bekräftats." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "Utestående bekräftelse ([1:uppgifter: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Denna adress har ej ännu bekräftats." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "Ingen e-postadress är registrerad för detta konto." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "Inloggningshistorik" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Senast inloggad: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "Användaren har ej loggat in förut." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Antal misslyckade inloggningar: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Tabell: Senast registrerade misslyckade inloggningsförsök" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "IP-adress" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "Registrerad tid" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Radera registreringar av misslyckade inloggningar" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Radera logg" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "För närvarande finns inga registrerade misslyckade inloggningar." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Uppdatera" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Konton: Inställningar" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "Uppdatera lösenord" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "Uppdatera lösenordshasharna vid nästa lyckade inloggning." #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Beständiga sessioner" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "Kom ihåg användaren mellan sessioner utan att åter kräva autentisering." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Återställ lösenord" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Bekräfta e-post" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Tvinga användare att bekräfta sin e-postadress." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Spara" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Konton: Konfigurering av aviseringar" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Kontoavisering" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " 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/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Aviseringsåtgärder" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " 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/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Erhåll avisering när konto skapas" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Erhåll avisering vid återställning av lösenord" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Erhåll avisering vid radering av konto" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Mottagaradresser vid avisering" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Hantera användarkonton" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "Uppdatering genomförd: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "Lägg till/redigera konto" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Användarnamn:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Lösenord:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Konfirmera lösenord:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "Förnamn/efternamn (Pseudonym):" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "E-postadress:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "Lägg till nytt konto eller redigera ett existerade." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "Lägg till" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "Ändra" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Lösenordsförrådet medger ej listning av användare." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "Återställ lösenord" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Radera valda konton" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Logga in" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Kom ihåg mig" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Fel" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Radera konto" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Radera konto" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Ändra lösenord" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Gammalt lösenord:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nytt lösenord:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Regstrera ett konto" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Nödvändiga uppgifter" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Valfritt" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Namn:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Skapa konto" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Återställ lösenord" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Redan inloggad" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" "Du är redan inloggad. Se [1:kontoinställningar] om du vill ändra ditt " "lösenord." #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "Ett nytt lösenord har skickats till din e-postadress %(email)s." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Återställ lösenord" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Namn" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-post" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Senaste inloggad" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Permanent blockerad" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Bekräfta e-postadress" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "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/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "Du kan [1:ändra din e-postadress], om detta är fel." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Verifieringsinformation:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Verifiera" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Skicka om e-post" trac-accountmanager-0.5~r16056/acct_mgr/locale/nl/0000755000175500017550000000000012056250001021426 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/nl/LC_MESSAGES/0000755000175500017550000000000012056250001023213 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/nl/LC_MESSAGES/acct_mgr.po0000644000175500017550000006740512056250001025346 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Pander \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Ongeldig type sleutel (%s) voor StoreOrder" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Gebruikersaccounts" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Configuratie" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Gebruikers" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Gebruikersnaam mag niet leeg gelaten worden." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "De wachtwoorden moeten hetzelfde zijn." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Het wachtwoordbestand kon niet gelezen worden. Trac heeft\n" " lees- en schrijfrechten nodig op het " "wachtwoordbestand\n" " en de map waar deze is opgeslagen." #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Het wachtwoordbestand kon niet worden bijgewerkt. Trac heeft\n" " lees- en schrijfrechten nodig op het " "wachtwoordbestand\n" " en de map waar deze is opgeslagen." #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "Het e-mailadres en gebruikersnaam horen niet bij een gebruikersaccount." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Notificatie" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" "De \"crypt\"-module is niet beschikbaar\n" " voor dit platform." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "De gebruikersnaam mag geen van de volgende karakters bevatten: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Gebruikersnaam %s is niet toegestaan." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Wachtwoord mag niet leeg gelaten worden." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "E-mailadres:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "U moet een geldig e-mailadres invoeren." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Registreren" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "verifieer uw e-mailadres" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Uw rechten zijn ingeperkt tot u %(link)s" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "verifieer uw nieuwe e-mailadres" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "Een e-mail is verstuurd naar <%(email)s> met een token naar\n" " %(link)s." #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "Uw e-mailadres is al geverifieerd." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Een notificatiebericht is verstuurd naar <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Bedankt voor het verifiëren van uw e-mailadres." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Incorrect validatietoken" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Gebruikersaccount" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Wachtwoord vergeten?" #: acct_mgr/web_ui.py:152 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:162 msgid "Thank you for taking the time to update your password." msgstr "Bedankt voor het wijzigen van uw wachtwoord." #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" "U moet uw wachtwoord wijzigen wegens een recent verzoek tot wijziging van" " wachtwoord." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Wijzig nu uw wachtwoord." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Gebruikersnaam is vereist" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "E-mailadres is vereist" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "Oude wachtwoord mag niet leeg gelaten worden." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Oude wachtwoord is incorrect." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Wachtwoord is succesvol gewijzigd." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Wachtwoord in incorrect." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Ongeldige gebruikersnaam of wachtwoord" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Gebruikersaccount: Configuratie" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Persistente Sessies" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "Sta toe dat de gebruiker onthouden wordt over verschillende sessies " "zonder\n" " herauthenticatie." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Wachtwoord Reset" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Verifieer e-mailadres" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Forceer gebruikers om hun e-mailadres te verifiëren." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Opslaan" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Gebruikersaccounts: Notificatieconfiguratie" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Gebruikersaccountnotificatie" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " 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/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Notificatieacties" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " 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/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Ontvang notificaties voor aanmaken van gebruikersaccounts" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Ontvang notificaties van resetten van wachtwoorden" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Ontvang notificaties van verwijderen van accounts" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Notificatie Ontvangstadressen" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Beheer Gebruikersaccounts" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Gebruikersnaam:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Wachtwoord:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Bevestig Wachtwoord:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "E-mailadres:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Voeg toe " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Wijzig " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "De wachtwoordopslag ondersteunt geen overzichten van gebruikers." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Verwijderen geselecteerde gebruikersaccounts" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Aanmelden" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Onthoud mij" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Fout" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Verwijder Gebruikersaccount" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Verwijder gebruikersaccount" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Wijzig Wachtwoord" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Oude Wachtwoord:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nieuw Wachtwoord:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Registreren van een gebruikersaccount" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Verplicht" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Optioneel" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Naam:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Aanmaken account" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Wachtwoord Resetten" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Al aangemeld" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" "U bent al aangemeld. Als u uw wachtwoord\n" " wil wijzigen, gebruikt de\n" " [1:Gebruikersaccountvoorkeuren]-pagina." #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" "Een nieuw wachtwoord\n" " is naar u verstuurd via %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Reset wachtwoord" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Naam" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-mailadres" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Laatste Aanmelding" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Verifieer e-mailadres" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "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/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" "U kan [1:uw e-mailadres\n" " wijzigen], al het onjuist is." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Verificatietoken:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Verifieer" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Nogmaals versturen e-mail" trac-accountmanager-0.5~r16056/acct_mgr/locale/.placeholder0000644000175500017550000000024411457367770023332 0ustar debacledebacle# 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. trac-accountmanager-0.5~r16056/acct_mgr/locale/pt_BR/0000755000175500017550000000000012056250001022023 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/pt_BR/LC_MESSAGES/0000755000175500017550000000000012056250001023610 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/pt_BR/LC_MESSAGES/acct_mgr.po0000644000175500017550000007206712056250001025743 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Marco Tulio Costa \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "Trancar até %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Tipo de chave (%s) inválido para StoreOrder" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Contas" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Configuração" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Usuários" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "Este armazenamento de senhas não suporta criar usuários." #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "O procedimento de redefinir senhas está ativado." #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "Este armazenamento de senhas não suporta remover usuários." #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "Endereço de E-mail" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "Sobrenome (Apelido)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "Senha" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Nome de usuário não pode ser vazio." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "Usuário desconhecido %(user)s." #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "As senhas devem coincidir." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" "Este armazenamento de senhas não suporta\n" " alterar senhas.\n" " " #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "Por favor escolha a conta pela lista de nomes de usuário para prosseguir" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Falhas de autenticação do usuário %(user)s foram removidas." #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" "Nenhum dos componentes IPasswordStore configurados em\n" " trac.ini suportam alteração de senha ou criação de " "usuários.\n" " " #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Tipo de hash padrão para senhas novas ou atualizadas." #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "URL do serviço de autenticação HTTP" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 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." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Notificação" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" "O módulo \"crypt\" não está disponível\n" " nesta plataforma." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "O nome de usuário não pode conter nenhum destes caractere: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Nome de usuário %s não é permitido." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Senha não pode ser vazia." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 #, fuzzy msgid "Email:" msgstr "E-mail" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Você deve informar um endereço de e-mail válido." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Cadastrar" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "verifique seu endereço de e-mail" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Suas permissões foram limitadas até que você %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "verifique seu novo endereço de e-mail" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "Um e-mail foi enviado para <%(email)s> com um token para\n" " %(link)s." #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "Seu e-mail já foi verificado." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Uma e-mail de notificação foi reenviado para <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Obrigado por verificar seu endereço de e-mail" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Token de verificação inválido." #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Conta" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Esqueceu sua senha?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "Tem certeza que deseja apagar sua conta?" #: acct_mgr/web_ui.py:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" "Você precisa alterar sua senha por causa de um pedido de alteração de " "senha recente." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Por favor altere sua senha agora." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Nome de usuário é obrigatório." #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "E-mail é obrigatório" #: acct_mgr/web_ui.py:193 msgid "The 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:217 msgid "Old Password cannot be empty." msgstr "Senha Antiga é obrigatória." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Senha Antiga incorreta." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Senha alterada com sucesso." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Senha incorreta." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Nome de usuário ou senha inválidos." #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Conta trancada" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "Detalhes da Conta" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Revisar Detalhes da Conta de Usuário" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "para [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "para [1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Status de Conta" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [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/account_details.html:42 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/account_details.html:44 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/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "Esta conta foi trancada permanentemente." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Destrancar conta" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Destrancar" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" "Condição de trava alcançada\n" " %(count)s vez até agora." msgstr[1] "" "Condição de trava alcançada\n" " %(count)s vezes até agora." #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "Condição de trancamento ainda não foi alcançada." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "Nenhuma restrição foi atribuída a esta conta." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Verificação" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Endereço de e-mail atual: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Esse endereço foi verificado com sucesso." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" "Verificação pendente\n" " ([1:token: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Esse endereço ainda não foi verificado." #: acct_mgr/templates/account_details.html:133 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/account_details.html:141 msgid "Access History" msgstr "Histórico de Acesso" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Última autenticação: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "O usuário jamais se autenticou." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Total de tentativas falhas: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Tabela: Registro das últimas tentativas falhas de autenticação" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "Endereço de IP" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Remover registros de falha de autenticação" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Remover Registros" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "Não há registro de falhas de autenticação no momento." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Atualizar" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Contas: Configuração" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "Atualizar Senha" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "Atualizar hashes de senha na próxima autenticação bem-sucedida." #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Sessões Persistentes" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Redefinir Senha" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Verificar e-mail" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Obriga os usuários a verificar seus endereços de e-mail." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Salvar" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Contas: Configuração de Notificação" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Notificação de Conta" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Ações de Notificação" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Receber notificação de criação de contas" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Receber notificação de redefinição de senhas" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Receber notificação de remoção de contas" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Endereço do Destinatário da Notificação" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "Gerenciar Contas de Usuários" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "Atualizado com sucesso: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "Adicionar/Editar Conta:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Nome de usuário:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Senha:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Confirmar Senha:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "Sobrenome (Apelido)" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "Endereço de E-mail:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "Criar uma nova conta de usuários ou editar uma existente." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Adicionar " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Alterar " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Este armazenamento de senhas não suporta listar os usuários." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "Redefinir senhas" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Remover contas selecionadas" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Entrar" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Lembrar minhas credenciais" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Erro" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Remover Conta" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Remover conta" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Alterar senha" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Senha Antiga:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nova Senha:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Cadastrar uma conta" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Obrigatório" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Opcional" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Nome:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Criar conta" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Redefinir Senha" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Você já está autenticado." #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" "Você já está autenticado. Se você precisar alterar\n" " sua senha por favor use a\n" " página de [1:Account Preferences]." #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" "Uma nova senha\n" " foi enviada para seu e-mail %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "Redefinir senha" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Nome" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-mail" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Última Autenticação" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Permanentemente trancada" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Verificar E-mail" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" "Você pode [1:change your\n" " email address] se o mesmo estiver incorreto." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Token de Verificação:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Verificar" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Reenviar E-mail" trac-accountmanager-0.5~r16056/acct_mgr/locale/zh_CN/0000755000175500017550000000000012056250001022016 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/zh_CN/LC_MESSAGES/0000755000175500017550000000000012056250001023603 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/zh_CN/LC_MESSAGES/acct_mgr.po0000644000175500017550000006164312056250001025734 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Shuning Hong <>\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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "账户" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "配置" #: acct_mgr/admin.py:198 msgid "Users" msgstr "用户" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "用户名不能为空。" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "两次输入的口令不一致。" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "无法读取口令文件。 Trac需要\n" " 对口令文件及其上层目录的\n" " 读写权限。" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "无法更新口令文件。 Trac需要\n" " 对口令文件及其上层目录的\n" " 读写权限。" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "找不到该邮箱和用户名对应的账户。" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "通知" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "用户名不得使用以下字符: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "不允许使用%s作为用户名。" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "口令不能为空。" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "你必须提供有效的电子邮件地址。" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "注册" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "认证你的邮箱地址" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "认证你的新邮箱地址" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "你的邮箱已经认证。" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "感谢你认证你的邮箱地址。" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "账户" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "忘记口令?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "确定要删除你的账号吗?" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "感谢你花时间来更新你的密码。" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "请立刻修改你的密码。" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "用户名是必须的" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "邮箱是必须的" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "旧密码不能为空。" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "旧密码不正确。" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "密码更新成功。" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "密码不正确。" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "错误的用户名或密码。" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "账户:配置" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "密码重设" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "强迫用户当密码重置后设置新的密码。" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "认证邮箱" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "保存" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "管理用户账号" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "用户名" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "密码:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "再次输入密码:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "添加" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "姓名:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/tr/0000755000175500017550000000000012056250001021442 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/tr/LC_MESSAGES/0000755000175500017550000000000012056250001023227 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/tr/LC_MESSAGES/acct_mgr.po0000644000175500017550000007256612056250001025366 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Erdem Artan \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "%(t_release)s 'e dek kilitli" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "StoreOrder için geçersiz anahtar türü (%s)" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Hesaplar" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Yapılandırma" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Kullanıcılar" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "Parola deposu kullanıcı oluşturmayı desteklemiyor." #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "Parola sıfırlama prosedürü etkinleştirilmedi." #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "Parola deposu kullanıcı silmeyi desteklemiyor." #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "E-posta Adresi" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "Ön-/Soyadı (Takma isim)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "Parola" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Kullanıcı adı boş olamaz." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "Bilinmeyen kullanıcı %(user)s." #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Parolalar eşleşmiyor." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" "Parola deposu parola\n" " değiştirmeyi desteklemiyor.\n" " " #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "Lütfen devam etmek için listeden bir kullanıcı hesabı seçin." #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "%(user)s kullanıcısı için geçersiz giriş denemeleri silindi." #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" "%s kullanıcısı için yetkilendirme arka ucu parola belirlemeyi\n" " desteklemiyor.\n" " " #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Parola dosyası okunamıyor. Trac hem parola dosyası\n" " hem de parola dosyasının bulunduğu dizini üzerinde\n" " okuma ve yazma iznine ihtiyaç duyuyor." #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Parola dosyası okunamıyor. Trac hem parola dosyası\n" " hem de parola dosyasının bulunduğu dizini üzerinde\n" " okuma ve yazma iznine ihtiyaç duyuyor." #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Yeni/güncellenen parolalar için öntanımlı şifreleme algoritması" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "HTTP yetkilendirme servisinin adresi" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "E-posta ve kullanıcı adı bilinen bir hesap ile uyuşmuyor." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Bildirim" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" "Bu sistemde\n" " \"crypt\" modülü bulunamadı." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Kullanıcı adı şu karakterlerden hiçbirini içermemelidir: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "%s kullanıcı adına izin verilmiyor." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Parola boş olamaz." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 #, fuzzy msgid "Email:" msgstr "E-posta" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Geçerli bir e-posta adresi belirtmelisiniz." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Kayıt Ol" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "e-posta adresini doğrulayın" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "yeni e-posta adresini doğrulayın" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "E-Posta adresiniz zaten doğrulanmış." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "<%s> adresine bir e-posta bildirimi gönderildi." #: acct_mgr/register.py:561 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:565 msgid "Invalid verification token" msgstr "Geçersiz doğrulama kodu" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" "Kullanıcı dosyasının yolu; kullanıcıları svnserve.conf dosyasından\n" " okumak için boş bırakın." #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Hesap" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Parolanızı mı unuttunuz?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "Hesabınızı silmek istediğinizden emin misiniz?" #: acct_mgr/web_ui.py:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" "Parola değişikliği isteminiz nedeniyle parolanızı değiştirmeniz " "gerekmektedir." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Şimdi lütfen parolanızı değiştirin." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Kullanıcı adı gerekli" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "E-posta gerekiyor" #: acct_mgr/web_ui.py:193 msgid "The 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:217 msgid "Old Password cannot be empty." msgstr "Eski parola boş olamaz." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Eski parola yanlış." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Parola başarıyla güncellendi." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Parola yanlış." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Geçersiz kullanıcı adı ya da parola" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" "Hesap kilitlendi, lütfen %(release_time)s sonra\n" " tekrar deneyin\n" " " #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Hesap kilitli" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "Hesap Ayrıntıları" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Kullanıcı Hesabı Ayrıntılarını Gözden Geçir" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Hesap Durumu" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 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/account_details.html:44 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/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "Bu hesap kalıcı olarak kilitlendi." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Hesap kilidini kaldır" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Kilidi Aç" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Doğrulama" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Kullanımdaki eposta adresi: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Bu adres başarıyla doğrulandı." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" "Doğrulama bekliyor\n" " ([1:token: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Bu adres henüz doğrulanmadı." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "Bu hesap için herhangi bir eposta adresi kaydedilmedi." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "Erişim Geçmişi" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Son giriş: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "Kullanıcı daha önce giriş yapmamış." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Toplam başarısız deneme: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Tablo: Son başarısız giriş denemelerinin kaydı" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "IP adresi" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "Kayıt zamanı" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Geçersiz giriş kaydını sil" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Kaydı Sil" #: acct_mgr/templates/account_details.html:175 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/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Güncelle" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Hesaplar: Yapılandırma" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "Parola Yenile" #: acct_mgr/templates/admin_accountsconfig.html:65 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/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Kalıcı Oturumlar" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "Tekrar kimlik doğrulama yapmadan kullanıcının oturumlar arası " "hatırlanmasına\n" " izin ver." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Parola Sıfırla" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "E-Posta doğrula" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Kullanıcıları e-posta doğrulamasına zorla." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Kaydet" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Hesaplar: Bildirim Yapılandırması" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Hesap Bildirimi" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Bildirim Eylemleri" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Yeni hesap oluşturulduğunda haber ver" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Parola sıfırlandığında haber ver" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Hesap silindiğinde haber ver" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Bildirimin Gönderileceği Adresler" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "Kullanıcı Hesaplarını Yönet" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "Başarıyla güncellendi: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "Hesap Ekle/Düzenle:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Kullanıcı Adı:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Parola:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Parolayı Onayla:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "Önad/Soyadı (Takma Adı):" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "E-posta Adresi:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 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." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Ekle " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Değiştir " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Bu parola deposu, kullanıcıları listelemeyi desteklemiyor." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "Parolaları sıfırla" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Seçilen hesapları sil" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Giriş" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Beni hatırla" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Hata" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Hesabı Sil" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Hesabı sil" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Parola Değiştir" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Eski Parola:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Yeni Parola:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Bir hesap oluştur" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Gerekli" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "İsteğe bağlı" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Ad:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Hesap oluştur" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Parola Sıfırla" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Zaten giriş yapılmış" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [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/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" "yeni bir parola\n" " %(email)s adresine gönderildi." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Parola sıfırla" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Ad" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-posta" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Son Giriş" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Kalıcı olarak kilitli" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "E-posta Doğrula" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "%(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/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" "Doğru değilse [1:eposta adresinizi\n" " değiştirebilirsiniz]." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Doğrulama Kodu:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Doğrula" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "E-postayı Yeniden Gönder" trac-accountmanager-0.5~r16056/acct_mgr/locale/de/0000755000175500017550000000000012065431443021420 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/de/LC_MESSAGES/0000755000175500017550000000000012065431443023205 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/de/LC_MESSAGES/acct_mgr.po0000644000175500017550000011053212065431443025326 0ustar debacledebacle# 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.5\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-12-22 23:08+0100\n" "PO-Revision-Date: 2012-09-16 19:07+0000\n" "Last-Translator: Steffen Hoffmann \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 1.0dev-r482\n" #: acct_mgr/admin.py:70 #, python-format msgid "Locked until %(t_release)s" msgstr "gesperrt bis %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Ungültiger Schlüsseltyp (%s) für Kennwortspeicherreihenfolge" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Nutzerkonten" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Einstellungen" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Nutzer" #: acct_mgr/admin.py:263 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" "Fehler beim Lesen der Einstellungen - Hinweis: Aktivieren/installieren " "Sie erforderliche Komponenten." #: acct_mgr/admin.py:317 msgid "Password hash refresh procedure restarted." msgstr "Das Rücksetzen von Kennwörtern ist neu gestartet." #: acct_mgr/admin.py:387 msgid "The password store does not support creating users." msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #: acct_mgr/admin.py:398 msgid "The password reset procedure is not enabled." msgstr "Das Rücksetzen von Kennwörtern ist nicht aktiviert." #: acct_mgr/admin.py:408 msgid "The password store does not support deleting users." msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #: acct_mgr/admin.py:413 msgid "Email Address" msgstr "E-Mail-Adresse" #: acct_mgr/admin.py:414 msgid "Pre-/Surname (Nickname)" msgstr "Vor-/Nachname (Pseudonym)" #: acct_mgr/admin.py:415 msgid "Password" msgstr "Kennwort" #: acct_mgr/admin.py:424 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Nutzername darf nicht leer sein." #: acct_mgr/admin.py:429 #, python-format msgid "Unknown user %(user)s." msgstr "Nutzer %(user)s ist unbekannt." #: acct_mgr/admin.py:437 acct_mgr/register.py:150 acct_mgr/web_ui.py:228 msgid "The passwords must match." msgstr "Die Kennwörter müssen übereinstimmen." #: acct_mgr/admin.py:442 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "Der Kennwortspeicher erlaubt das Löschen von Nutzern nicht." #: acct_mgr/admin.py:483 msgid "Please choose account by username from list to proceed." msgstr "" "Zum Fortfahren bitte Nutzerkonto nach Benutzernamen aus der Liste " "auswählen." #: acct_mgr/admin.py:499 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Fehlgeschlagene Anmeldeversuche für Nutzer %(user)s gelöscht" #: acct_mgr/admin.py:626 #, 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:633 #, 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:638 msgid "Successfully deleted:" msgstr "Erfolgreich gelöscht:" #: acct_mgr/admin.py:658 #, python-format msgid "page %(num)s" msgstr "Seite %(num)s" #: acct_mgr/admin.py:669 msgid "Next Page" msgstr "Nächste Seite" #: acct_mgr/admin.py:674 msgid "Previous Page" msgstr "Vorige Seite" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "Geordnete Liste von Kennwortspeichern, die nacheinander abgefragt werden." #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" "Der Authentifikationsdienst für den Nutzer %s erlaubt das Festlegen des " "Kennworts nicht." #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" "Keine der in trac.ini aufgeführten IPasswordStore-Komponenten erlaubt das" " Festlegen des Kennworts oder das Erstellen neuer Nutzer." #: acct_mgr/db.py:24 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "IPasswordHashMethod für neue/aktualisierte Kennwörter" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " 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:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " 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:198 acct_mgr/htfile.py:239 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" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Standard-Hash-Typ für neue/aktualisierte Kennwörter" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "Namensraum (realm) zur Auswahl zutreffender Einträge aus HtDigest-Datei" #: acct_mgr/http.py:28 msgid "URL of the HTTP authentication service" msgstr "URL des HTTP-Authentifizierungsdienstes" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "(erforderliches %(perm)s fehlt)" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "E-Mail-Adresse und Nutzername gehören zu keinem bekannten Benutzerkonto." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Benachrichtigung" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "Namensraum (realm) zur Auswahl zutreffender HtDigest-Datenbankeinträge" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "Das \"crypt\"-Modul ist auf diesem System nicht verfügbar." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" "Weder unterstützt das \"crypt\"-Modul ist auf diesem System \"sha2\" " "Hashtypen noch ist \"passlib\" verfügbar." #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "Registrierungsfehler" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "Keine Prüfmethode 'validate_registration' in %(module)s definiert" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Der Nutzername darf keines der folgenden Zeichen enthalten: %s" #: acct_mgr/register.py:119 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:126 #, python-format msgid "Username %s is not allowed." msgstr "Der Nutzername %s ist nicht zugelassen." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" "Es existiert bereits ein Benutzerkonto oder eine Gruppe namens %s oder " "mit einem nur bezüglich Gross-/Kleinschreibung abweichenden Namen." #: acct_mgr/register.py:148 acct_mgr/web_ui.py:225 acct_mgr/web_ui.py:242 msgid "Password cannot be empty." msgstr "Kennwort darf nicht leer sein." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " 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:174 msgid "Parole:" msgstr "Code:" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "In dieses Feld tragen Sie lieber nichts ein." #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "Sind Sie eine Person? Dann strengen Sie sich mehr an!" #: acct_mgr/register.py:209 msgid "Email:" msgstr "E-Mail:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" "Ihre E-Mail-Adresse wird benötigt, damit Trac Ihnen einen " "Bestätigungscode zusenden kann." #: acct_mgr/register.py:223 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." #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 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." #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Sie müssen eine gültige E-Mail-Adresse angeben." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" "Die angegebene E-Mail-Adresse wird bereits verwendet. Bitte geben Sie " "eine andere an." #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "Der Nutzername %s entspricht nicht den hier geltenden Regeln." #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" "Die angegebene E-Mail-Adresse scheint ungültig zu sein. Bitte geben Sie " "eine gültige E-Mail-Adresse an." #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Registrieren" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " 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:413 #, python-format msgid "" "Registration has been finished successfully.\n" " 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." #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "Ihre E-Mail-Adresse bestätigen" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Ihre Berechtigungen sind eingeschränkt worden, bis Sie %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "Ihre neue E-Mail-Adresse zu bestätigen" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "Eine E-Mail-Nachricht mit einem Bestätigungscode wurde an <%(email)s> " "gesendet, um %(link)s." #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "Ihre E-Mail-Adresse ist bereits bestätigt." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Eine E-Mail-Benachrichtigung ist an <%s> gesendet worden." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Vielen Dank, dass Sie Ihre E-Mail-Adresse bestätigt haben." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Ungültiger Bestätigungscode" #: acct_mgr/svnserve.py:28 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" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:116 acct_mgr/util.py:121 #, python-format msgid "%(relativetime)s ago" msgstr "vor %(relativetime)s" #: acct_mgr/util.py:150 #, python-format msgid "less than %s" msgstr "weniger als %s" #: acct_mgr/util.py:157 #, python-format msgid "%(num)i second" msgid_plural "%(num)i seconds" msgstr[0] "%(num)i Sekunde" msgstr[1] "%(num)i Sekunden" #. TRANSLATOR: Pretty datetime representation, time part provided by string #. substitution. #: acct_mgr/util.py:165 #, python-format msgid "%(num)i day %%s" msgid_plural "%(num)i days %%s" msgstr[0] "%(num)i Tag %%s" msgstr[1] "%(num)i Tage %%s" #: acct_mgr/web_ui.py:91 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Nutzerkonto" #: acct_mgr/web_ui.py:140 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Kennwort vergessen?" #: acct_mgr/web_ui.py:156 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:166 msgid "Thank you for taking the time to update your password." msgstr "" "Danke, dass Sie sich die Zeit genommen haben, Ihr Kennwort zu " "aktualisieren." #: acct_mgr/web_ui.py:175 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" "Sie müssen Ihr Kennwort wegen einer kürzlich angeforderten " "Kennwortänderung ändern. " #: acct_mgr/web_ui.py:178 msgid "Please change your password now." msgstr "Bitte ändern Sie jetzt Ihr Kennwort." #: acct_mgr/web_ui.py:189 msgid "Username is required" msgstr "Nutzername ist erforderlich" #: acct_mgr/web_ui.py:191 msgid "Email is required" msgstr "E-Mail-Adresse ist erforderlich" #: acct_mgr/web_ui.py:196 msgid "The email and username must match a known account." msgstr "" "E-Mail-Adresse und Nutzername müssen zu einem bekannten Benutzerkonto " "gehören." #: acct_mgr/web_ui.py:219 msgid "Old Password cannot be empty." msgstr "Das alte Kennwort darf nicht leer sein." #: acct_mgr/web_ui.py:221 msgid "Old Password is incorrect." msgstr "Das alte Kennwort ist ungültig." #: acct_mgr/web_ui.py:235 msgid "Password successfully updated." msgstr "Das Kennwort wurde erfolgreich aktualisiert." #: acct_mgr/web_ui.py:244 msgid "Password is incorrect." msgstr "Das Kennwort is ungültig." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:377 msgid "Invalid username or password" msgstr "Nutzername oder Kennwort ungültig" #: acct_mgr/web_ui.py:383 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "Nutzerkonto gesperrt, bitte nach %(release_time)s nochmals versuchen" #: acct_mgr/web_ui.py:388 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Nutzerkonto gesperrt" #: acct_mgr/web_ui.py:393 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "Nutzerkontendetails" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Benutzerkontendetailprüfung" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "für [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "für [1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Nutzerkontenstatus" #: acct_mgr/templates/account_details.html:38 #, python-format 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." #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "Nutzernamesvergleich beachtet [1:Groß-/Kleinschreibung nicht]." #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "Nutzernamesvergleich beachtet [1:Groß-/Kleinschreibung]." #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." 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/account_details.html:61 #, python-format 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." #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "Dieses Nutzerkonto ist dauerhaft gesperrt worden." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Hebe Nutzerkontensperre auf" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Nutzerkonto entsperren" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "Sperrbedingung wurde bisher einmal erreicht." msgstr[1] "Sperrbedingung wurde bisher %(count)s mal erreicht." #: acct_mgr/templates/account_details.html:94 #, python-format 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." #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "Bisher wurde die Sperrbedingung nicht erreicht." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "Für dieses Nutzerkonto sind keine Beschränkungen festgelegt." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Bestätigung" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Aktuelle E-Mail-Adresse: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Diese Adresse ist erfolgreich bestätigt worden." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "Die Bestätigung ist offen ([1:Code: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Diese Adresse ist bisher noch nicht bestätigt worden." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "Für dieses Nutzerkonto ist keine E-Mail-Adresse eingetragen." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "Zugriffsverlauf" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Letzte Anmeldung: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "Der Nutzer hat sich bisher nicht angemeldet." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Fehlversuche gesamt: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Tabelle: Protokoll der letzten fehlgeschlagenen Anmeldeversuche" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "IP-Adresse" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "Protokollzeit" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Lösche Anmeldefehlerprotokoll" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Lösche Protokoll" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "Aktuell ist kein fehlgeschlagener Anmeldeversuch protokolliert." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "Zurück zu Nutzerkonten" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Aktualisieren" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Nutzerkonten: Einstellungen" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "Kennwortaktualisierung" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" "Aktualisiere die Kennwort-Hash-Werte bei der nächsten erfolgreichen " "Anmeldung." #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "Neustart" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Dauerhafte Anmeldungen" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "Erlaube das Wiedererkennen des Nutzers ohne Neuanmeldung." #: acct_mgr/templates/admin_accountsconfig.html:81 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." #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Kennwort zurücksetzen" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "Zwinge Nutzer nach Zurücksetzen des Kennworts zur Kennwortänderung." #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "E-Mail-Adresse bestätigen" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Zwinge Nutzer, ihre E-Mail-Adresse zu bestätigen." #: acct_mgr/templates/admin_accountsconfig.html:105 msgid "Account guard" msgstr "Nutzerkontenwächter" #: acct_mgr/templates/admin_accountsconfig.html:107 msgid "Failed login attempt count max:" msgstr "Anzahl Anmelde-Fehlversuche max.:" #: acct_mgr/templates/admin_accountsconfig.html:112 msgid "" "Lock user account after specified number of failed attempts.\n" " Value zero means 'no limit'." msgstr "" "Nutzerkontensperrung erfolgt nach angegebener Anzahl von Fehlversuchen. " "Wert Null bedeutet 'unbegrenzt'." #: acct_mgr/templates/admin_accountsconfig.html:119 msgid "" "Drop lock after\n" " [1:]\n" " seconds (0 = unlimited lock time)" msgstr "Aufhebung einer Sperre nach [1:] Sekunden (0 = unbegrenzte Sperrzeit)" #: acct_mgr/templates/admin_accountsconfig.html:127 msgid "Lock time progression factor:" msgstr "Sperrzeitverlängerungsfaktor:" #: acct_mgr/templates/admin_accountsconfig.html:132 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." #: acct_mgr/templates/admin_accountsconfig.html:141 msgid "" "Upper lock time limit:\n" " [1:]\n" " seconds\n" " [2:\n" " This is relevant only with a lock time progression factor" " > 1.\n" " ]" msgstr "" "Sperrzeitobergrenze: [1:] Sekunden [2:Dies ist nur bei einem " "Sperrzeitverlängerungsfaktor > 1 von Bedeutung.]" #: acct_mgr/templates/admin_accountsconfig.html:159 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Speichern" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Nutzerkonten: Benachrichtigungseinstellungen" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Nutzerkontenbenachrichtigung" #: acct_mgr/templates/admin_accountsnotification.html:23 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." #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Benachrichtigungsaktionen" #: acct_mgr/templates/admin_accountsnotification.html:27 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." #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Erstellung eines neuen Benutzerkontos melden" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Kennwortrücksetzen melden" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Benutzerkontenlöschung melden" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Empfängeradressen für Benachrichtigungen" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Benutzerkontenverwaltung" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "Erfolgreich aktualisiert: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "Benutzerkonto hinzufügen/bearbeiten:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Nutzername:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "Nur Kleinschreibung für Nutzernamen zulässig" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Kennwort:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Kennwortbestätigung:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "Vor-/Nachname (Pseudonym):" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "E-Mail-Adresse:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "Bestätigung neuer E-Mail-Adresse auslassen" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "Füge ein neues Benutzerkonto hinzu oder bearbeite ein bestehendes." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Hinzufügen " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Ändern " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Der Kennwortspeicher erlaubt das Auflisten von Nutzern nicht." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "Versende anderes Zufallskennwort" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "Kennwörter zurücksetzen" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Ausgewählte Nutzerkonten löschen" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "Nutzerkonteneigenschaftenprüfung" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "Nutzerkonten: Bereinigung" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "Nutzerkonten pro Seite maximal: [1:]" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "Nutzerkonten (%(slice)s)" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "Eigenschaft" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "Wert" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "Nicht authentifizierte Nutzerkonten" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "Authentifizierte Nutzerkonten" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "Ausgewählte Einträge löschen" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "Auswahl aufheben" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Anmelden" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Angemeldet bleiben" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Fehler" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Nutzerkontolöschung" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Nutzerkonto löschen" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Kennwortänderung" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Altes Kennwort:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Neues Kennwort:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Nutzerkonto registrieren" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Erforderlich" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Optional" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Name:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Nutzerkonto erstellen" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Kennwort zurücksetzen" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Bereits angemeldet" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [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/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "Ein neues Kennwort ist Ihnen per E-Mail zugeschickt worden an %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Kennwort zurücksetzen" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Name" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "E-Mail" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Letzte Anmeldung" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "dauerhaft gesperrt" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "E-Mail-Adresse bestätigen" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 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/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "Sie können [1: Ihre E-Mail-Adresse ändern], falls sie fehlerhaft ist." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Bestätigungscode:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Bestätigen" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "E-Mail-Nachricht erneut versenden" trac-accountmanager-0.5~r16056/acct_mgr/locale/ja/0000755000175500017550000000000012056404207021420 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/ja/LC_MESSAGES/0000755000175500017550000000000012056404207023205 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/ja/LC_MESSAGES/acct_mgr.po0000644000175500017550000010505312056404207025330 0ustar debacledebacle# Japanese (Japan) translations for TracAccountManager. # Copyright (C) 2012 # This file is distributed under the same license as the # TracAccountManager project. # # Translators: # Jun Omae , 2010-2012. msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-12-01 09:00+0000\n" "Last-Translator: Jun Omae \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "%(t_release)sまでロックします" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "StoreOrder に対するキーの型 (%s) が正しくありません" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "アカウント" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "設定" #: acct_mgr/admin.py:198 msgid "Users" msgstr "ユーザ" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "設定の読込中にエラー - ヒント: 必要なコンポーネントを有効/インストールしてください。" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "パスワードリセットを実行しました。" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "パスワードストアはユーザの列挙をサポートしていません。" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "パスワードリセットは有効になっていません。" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "パスワードストアはユーザの列挙をサポートしていません。" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "メールアドレス" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "名前 (ニックネーム)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "パスワード" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "ユーザ名は空にできません。" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "不明なユーザ %(user)s。" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "パスワードが一致しません。" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "パスワードストアはパスワード変更をサポートしていません。" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "処理するアカウントをリストから名前で選んでください。" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "削除ユーザ %(user)s に対してログインを試みて失敗しています" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "%(count)sアカウント" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "アカウント属性%(count)s件" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "正常に削除しました。" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "ページ%(num)s" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "次のページ" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "前のページ" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "パスワードストアを指定します。この順に問い合わせを行います。" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "ユーザ %s に対する認証バックエンドはパスワードの設定をサポートしていません。" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "パスワードの設定やユーザ作成をサポートする IPasswordStore コンポーネントを trac.ini に指定していません。" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "パスワードの作成と更新を行うのに IPasswordHashMethod を使います" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "パスワードファイルが読み取り可能ではありません。\n" "Trac はパスワードファイルとその親ディレクトリに対して読み書きのアクセスを行います。" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "パスワードファイルを更新できませんでした。\n" "Trac はパスワードファイルとその親ディレクトリに対して読み書きのアクセスを行います。" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "パスワードファイルへのパスを Trac 環境からの相対パス、もしくはフルパスで指定します" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "新規/更新パスワードに対するデフォルトのハッシュタイプを指定します" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "htdigest ファイルに対応するレルムを指定します" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "HTTP 認証サービスの URL を指定します" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "(必要な %(perm)s がありません)" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "メールアドレスとユーザ名が既存のアカウントのものと一致していません。" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "通知機能" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "htdigest エントリに関連付けるレルムを指定します" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "このプラットフォームでは \"crypt\" モジュールが利用できません。" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" "このマシンの \"crypt\" モジュールは \"sha2\" ハッシュアルゴリズムをサポートしておらず、また、\"passlib\" " "も利用できません。" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "登録エラー" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "%(module)s は 'validate_registration' チェックメソッドを定義していません。" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "ユーザ名にはこれらの文字は使えません: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "大文字のみのユーザ名は許可していません。" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "ユーザ名 %s は使用できません。" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "名前が %s と大文字小文字だけが違うか一致しているアカウントまたはグループが存在します。" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "パスワードは空にできません。" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "確認コードに [%(token)s] の括弧の内側にあるものすべて正確に入力してください。" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "合言葉:" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "この項目に入力しないようにしてください。" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "人間さんですか? もうちょっとやってみて!" #: acct_mgr/register.py:209 msgid "Email:" msgstr "メールアドレス:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "確認用コードを送信するためにメールアドレスが必要です。" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "パスワードを忘れてしまっても、メールアドレスも入力しておくとパスワードをリセットすることができます。" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "パスワードを忘れてしまっても、メールアドレスを入力しておくとパスワードをリセットすることができます。" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "有効なメールアドレスを指定してください。" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "このメールアドレスはすでに使用されています。別のメールアドレスを指定してください。" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "ユーザ名 %s がローカルの名前付けポリシーに合っていません。" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "正しくないメールアドレスを指定しています。正しいメールアドレスを指定してください。" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "登録" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "ユーザ名を正常に登録しましたがまだアクティベーションが必要です。ユーザ %(user)s でログインを行って指示に従ってください。" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" "登録処理は正常に終了しました。\n" "いまからユーザ %(user)s でログインできます。" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "メールアドレスが確認できる" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "%(link)sまでは、権限に制限が付きます。" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "新しいメールアドレスを確認する" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "%(link)sために確認用コードを <%(email)s> に送信しました。" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "メールアドレスを確認するためにログインしてください。" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "メールアドレスはすでに確認済みです。" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "通知メールを <%s> に再送信しました。" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "メールアドレスを確認してくれてありがとうございます。" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "確認用コードが正しくありません" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "ユーザファイルのパス、空欄のままにすると svnserve.conf に指定しているユーザファイルとなります" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "%(relativetime)s前" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "アカウント" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "パスワードが思い出せない?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "本当にアカウントを削除しますか?" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "パスワードの更新に時間を割いてくれてありがとうございます。" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "パスワード変更要求により、パスワードを変更する必要があります。" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "直ちにパスワードを変更してください。" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "ユーザ名が必要です" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "メールアドレスが必要です" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "メールアドレスとユーザ名は既存のアカウントと一致しなければなりません。" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "旧パスワードは空にできません。" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "旧パスワードが間違っています。" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "パスワードを正常に更新しました。" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "パスワードが間違っています。" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "ユーザ名、またはパスワードが間違っています" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "アカウントをロックしているので、%(release_time)s以降にやり直してください。" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "アカウントロック" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "ログイン (%(attempts)s回失敗)" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "アカウント詳細" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "ユーザアカウント詳細の確認" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "[1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "[1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "アカウントステータス" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "認証ストア番号 [1:%(order_num)s] (%(store)s) にあるこのユーザの認証情報。" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "ユーザ名は[1:大文字小文字を区別しません]。" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "ユーザ名は[1:大文字小文字を区別します]。" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "このユーザの認証情報を持つストアはなくアカウント情報があっても、このユーザは現状認証およびアクセス出来ず[1:実質上ブロック]します。" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" "[1:]\n" "このアカウントは%(time)sまでロックしています。[2:]\n" "それまでの間、正常なログイン試行であっても拒否します。" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "このアカウントは無期限でロックしています。" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "アカウントロックを解除" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "ロック解除" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "現在、%(count)s回ロック条件を満たしています。" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "したがって、このアカウントに対するログイン試行は%(time)sまで失敗することになります。" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "まだロック条件を満たしたことはありません。" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "このアカウントの制限はありません。" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "確認項目" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "現在のメールアドレス: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "このアドレスは確認済みです。" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "確認中です。([1:トークン: '%(token)s'])" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "このアドレスはまだ確認していません。" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "このアカウントには登録しているメールアドレスがありません。" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "アクセス履歴" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "最終ログイン: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "ユーザはこれまでにログインしたことがありません。" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "合計ログイン失敗回数: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "テーブル: 最近の失敗ログイン一覧" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "IP アドレス" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "アクセス時刻" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "失敗ログインのログを削除" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "ログを削除" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "現在、ログがのこっている失敗ログインはありません。" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "アカウントページに戻る" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "更新" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "アカウント: 設定" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "パスワードリフレッシュ" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "次回ログイン時にパスワードのハッシュを更新します。" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "再実行" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "継続中のセッション" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "「ログインを記憶する」機能を使えるようにする。" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "「ログインを記憶する」[1:チェックボックス]にチェックすると、次のアクセスから30日の間、自動的に認証します。" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "パスワードリセット" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "パスワードリセット後に必ずパスワードを変更させる。" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "メールアドレスの確認" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "メールアドレスを必ず確認する。" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "保存" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "アカウント: 通知設定" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "アカウント通知機能" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "以下の設定を行うことで、アカウント作成、パスワードリセット、アカウント削除を通知させることができます。" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "通知処理" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "[2:チェックボックス]の [1:on/off] で通知処理の有効無効を設定することができます。" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "アカウント作成を通知する" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "パスワードリセットを通知する" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "アカウント削除を通知する" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "通知先アドレス" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "上記通知を受け取るメールアドレスまたはユーザ名をスペース区切りで指定してください:" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "ユーザアカウントの管理" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "正常に更新しました: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "アカウントの追加/変更:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "ユーザ名:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "ユーザ名には小文字のみが使えます" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "パスワード:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "パスワード(確認):" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "名前:" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "メールアドレス:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "メールアドレスの確認を省略する" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "新しいアカウントを追加、または既存のアカウントを変更します。" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " 追加 " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " 変更 " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "パスワードストアはユーザの列挙をサポートしていません。" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "別のランダムなパスワードを送信" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "パスワードのリセット" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "選択したアカウントを削除" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "アカウント属性を確認" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "アカウント: クリーンアップ" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "1ページ辺りの最大アカウント数[1:]" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "アカウント (%(slice)s)" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "属性" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "値" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "非認証アカウント" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "認証済みアカウント" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "選択した項目を削除" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "選択を元に戻す" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "ログイン" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "ログインを記憶させる" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "エラー" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "アカウントの削除" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "アカウントの削除" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "パスワードの変更" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "旧パスワード:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "新パスワード:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "アカウントの登録" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "必須" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "オプション" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "名前:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "アカウントの作成" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "パスワードのリセット" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "ログイン済み" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "すでにログインしています。パスワードを変更するには[1:アカウント設定]ページを使ってください。" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "新しいパスワードを %(email)s に送信しました。" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "パスワードを忘れてしまった時には、ユーザ名とメールアドレスを以下に入力してください。新しいパスワードが送られます。" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "パスワードのリセット" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "名前" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "メールアドレス" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "最終ログイン" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "期限なしでロック中" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "メールアドレスの確認" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "新しいメールアドレスを確認するために確認用コードを記載したメールを %(email)s " "に送りました。メールを確認し、以下のフォームに確認用コードを入力してください。" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "誤りがあれば、[1:メールアドレスを変更]してください。" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "確認用コード:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "確認" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "メール再送信" trac-accountmanager-0.5~r16056/acct_mgr/locale/et/0000755000175500017550000000000012056250001021425 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/et/LC_MESSAGES/0000755000175500017550000000000012056250001023212 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/et/LC_MESSAGES/acct_mgr.po0000644000175500017550000005750412056250001025344 0ustar debacledebacle# Estonian 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:198 msgid "Users" msgstr "" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/te/0000755000175500017550000000000012056250001021425 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/te/LC_MESSAGES/0000755000175500017550000000000012056250001023212 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/te/LC_MESSAGES/acct_mgr.po0000644000175500017550000006324512056250001025343 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Veeven \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "ఖాతాలు" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "స్వరూపణం" #: acct_mgr/admin.py:198 msgid "Users" msgstr "వాడుకరులు" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "ఈమెయిలు చిరునామా" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "సంకేతపదం" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "వాడుకరిపేరు ఖాళీగా ఉండకూడదు." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "సంకేతపదాలు ఖచ్చితంగా సరిపోవాలి." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "సంకేతపదం ఖాళీగా ఉండకూడదు." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 #, fuzzy msgid "Email:" msgstr "ఈమెయిలు" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "నమోదవ్వండి" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "ఖాతా" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "మీ సంకేతపదాన్ని మర్చిపోయారా?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "ఇప్పుడు మీ సంకేతపదాన్ని మార్చుకోండి." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "వాడుకరిపేరు తప్పనిసరి." #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "ఈమెయిలు తప్పనిసరి." #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "పాత సంకేతపదం ఖాళీగా ఉండకూడదు." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "పాత సంకేతపదం తప్పు." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "సంకేతపదాన్ని విజయవంతంగా తాజాకరించాం." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "తప్పుడు వాడుకరి పేరు లేదా సంకేతపదం" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "ఖాతా వివరాలు" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "ఖాతా స్థితి" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "చివరి ప్రవేశం: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "ఐపీ చిరునామా" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "భద్రపరచు" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "వాడుకరిపేరు:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "సంకేతపదం:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "సంకేతపదం నిర్ధారణ:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "ఈమెయిలు చిరునామా:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " చేర్చు " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " మార్చు " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "నన్ను గుర్తుంచుకో" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "పొరపాటు" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "పాత సంకేతపదం:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "కొత్త సంకేతపదం:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "తప్పనిసరి" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "ఐచ్చికం" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "పేరు:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "ఇప్పటికే ప్రవేశించారు" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "పేరు" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "ఈమెయిలు" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "చివరి ప్రవేశం" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/ru/0000755000175500017550000000000012056250001021443 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/ru/LC_MESSAGES/0000755000175500017550000000000012056250001023230 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/ru/LC_MESSAGES/acct_mgr.po0000644000175500017550000010631412056250001025354 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Евгений Ковыряшкин \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "Заблокировано до %(t_release)s" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Недопустимый тип ключа (%s) для StoreOrder" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Учетные записи" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Настройки" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Пользователи" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "Хранилище паролей не поддерживает создание пользователей." #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "Процедура сброса пароля не разрешена." #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "Хранилище паролей не поддерживает удаление пользователей." #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "Электронный адрес" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "Фамилия (ник)" #: acct_mgr/admin.py:396 msgid "Password" msgstr "Пароль" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Имя пользователя не может быть пустым." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "Неизвестный пользователь %(user)s." #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Пароли должны совпадать." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "Хранилище паролей не поддерживает изменение паролей." #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "Пожалуйста выберите учетную запись из списка для продолжения." #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "Неудачные попытки входа для пользователя %(user)s удалены" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" "Ни один из компонентов IPasswordStore, перечисленных в\n" "trac.ini, не поддерживает установку пароля или создание пользователей." #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Не удалось прочитать файл паролей. Trac требуются\n" "права на чтение и запись файла паролей и его родительского каталога." #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" "Не удалось обновить файл паролей. Trac требуются\n" "права на чтение и запись файла паролей и его родительского каталога." #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" "Путь к файлу паролей относительно окружения Trac или полный путь на " "сервере" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "Тип хэша поп умолчанию для новых/обновленных паролей" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "URL служба аутентификации по HTTP" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "Имя пользователя и адрес не соответствуют существующей учетной записи." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Уведомление" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "Модуль \"crypt\" недоступен для этой платформы." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Имя пользователя не должно содержать этих символов: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "Имя пользователя %s недопустимо." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Пароль не может быть пустым." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "Электронный адрес:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Нужно указать существующий электронный адрес." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Регистрация" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "подтвердите свой электронный адрес" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Ваши разрешения ограничены до тех пор, пока вы не %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "проверки вашего нового электронного адреса" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "На адрес <%(email)s> выслано письмо со словом для %(link)s." #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "Для завершения проверки электронного адреса пожалуйста выполните вход." #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "Ваш адрес уже проверен" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Уведомление повторно отправлено <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Спасибо за подтверждение электронного адреса" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Неправильное проверочное слово" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" "Путь к файлу пользователей; оставьте пустым чтоб использовать\n" "путь, заданный в svnserve.conf" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Учетная запись" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Забыли пароль?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "Вы уверены, что хотите удалить свою учетную запись?" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "Спасибо что нашли время для изменения своего пароля." #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "Вам необходимо сменить пароль, из-за недавнего запроса на смену пароля." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Теперь, пожалуйста, смените пароль." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Требуется имя пользователя" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "Требуется электронный адрес" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" "Имя пользователя и адрес должны соответствовать существующей учетной " "записи." #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "Старый пароль не может быть пустым." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "Неправильный старый пароль." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Пароль удачно изменен." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Неправильный пароль." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Неправильное имя или пароль" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" "Учетная запись заблокирована, пожалуйста повторите попытку через " "%(release_time)s" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Учетная запись заблокирована" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "Учетные записи" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "Проверьте детали учетной записи" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "для [1:%(name)s] ([2:%(user)s])" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "для [1:%(user)s]" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "Состояние учетной записи" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" "Регистрационные данные этого пользователя хранятся в AuthStore\n" "[1:%(order_num)s] (%(store)s)." #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "Сравниние имен пользователей [1:нерегистрозависимо]." #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "Сравниние имен пользователей [1:регистрозависимо]" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" "Ни одно хранилище не содержит регистрационных данных этого пользователя,\n" "по этому пользователь не может быть опознан и\n" "доступ к [1:учетной записи фактически заблокирован],\n" "но детали учетной записи могут быть по-прежнему доступны." #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" "[1:]\n" "Эта учетная запись заблокирована до %(time)s[2:]\n" "и даже корректные попытки входа будут игнорироваться." #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "Эта учетная запись заблокирована навсегда." #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Снять блокировку учетной записи" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Разблокировать" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "Условие блокирования выполнено %(count)s раз." msgstr[1] "Условие блокирования выполнено %(count)s раза." msgstr[2] "Условие блокирования выполнено %(count)s раз." #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" "По этому после следующей неудачной попытки вход в эту учетную запись\n" "будет возможен только через %(time)s." #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "Условие блокирования еще не выполнено." #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "Ограничения для этой учетной записи не заданы." #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "Проверка" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "Текущий электронный адрес: <%(email)s>" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "Этот адрес был удачно проверен." #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" "Проверка выполняется\n" " ([1:проверочное слово: '%(token)s' ])." #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "Этот адрес еще не был проверен." #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "Для этой учетной записи не задан электронный адрес." #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "Предыстория доступа" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "Последний вход: %(time)s" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "Пользователь еще не входил." #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Всего неудачных попыток: %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "Таблица: просмотр журнала последних неудачных входов" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "IP адрес" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "Время записи" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "Удалить журнал неудачных входов" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "Удалить журнал" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "В данный момент нет записей о неудачных входах." #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "Обновить" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Учетные записи: настройки" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "Обновление пароля" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "Молча обновить хэш пароля при следующем удачном входе." #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Хранимые сеансы" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "Разрешить запоминать пользователей между посещениями и осуществлять вход " "без повторной аутентификации?" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Сброс пароля" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "Заставить пользователей менять пароль после его сброса." #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Подтверждения адреса" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "Заставить пользователей подтверждать свой электронный адрес." #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Сохранить" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Учетные записи: настройки уведомлений" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Уведомления" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" "Выберите из следующих пунктов, чтобы получать уведомления о создании " "пользователей, сбросе пароля и удалении пользователей." #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Варианты уведомлений" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" "Здесь перечень действий, которые вы можете включить или выключить, " "[1:установкой] [2:флажков]." #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Уведомлять о создании новых пользователей" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Уведомлять о сбросе паролей" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Уведомлять об удалении учетных записей" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Адреса получателей уведомлений" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" "Список электронных адресов и/или имен пользователей, которые уведомляются" " об этих действиях (через пробел):" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "Управление пользователями" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "Удачно обновлено: %(success)s" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "Добавить/изменить пользователя:" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Имя пользователя:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Пароль:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Подтверждение пароля:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "Фамилия (ник):" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "Электронный адрес:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "Добавить нового пользователя или редактировать существующего." #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Добавить " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Изменить " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Это хранилище паролей не поддерживает перечисление пользователей." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "Сбросить пароли" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Удалить выбранных" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Вход" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Запомнить меня" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Ошибка" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Удалить учетную запись" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Удалить учетную запись" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Изменить пароль" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Старый пароль:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Новый пароль:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Зарегистрировать учетную запись" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Обязательно" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "На выбор" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Имя:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Создать учетную запись" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Сбросить пароль" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Вы уже вошли" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" "Вы уже вошли. Если вам нужно сменить пароль, используйте страницу " "[1:Предпочтения]." #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "Новый пароль отправлен на ваш адрес %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" "Если вы забыли пароль, введите ваше имя пользователя и почтовый адрес " "ниже, и вам будет выслан новый пароль." #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "Сброс пароля" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Имя" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "Электронный адрес" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Последний вход" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Заблокирован навсегда" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Подтверждения адреса" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "На адрес %(email)s отправлено письмо с кодовым словом, для проверки его " "правильности. Пожалуйста, проверьте электронную почту и введите " "полученное слово в следующее поле." #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "Вы можете [1:Изменить свой адрес], если он неправильный." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Проверочное слово:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Проверить" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Послать снова" trac-accountmanager-0.5~r16056/acct_mgr/locale/es/0000755000175500017550000000000012056250001021424 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/es/LC_MESSAGES/0000755000175500017550000000000012056250001023211 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/es/LC_MESSAGES/acct_mgr.po0000644000175500017550000006775712056250001025356 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Adolfo González Blázquez \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "Tipo de clave (%s) inválida para StoreOrder" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Cuentas" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Configuración" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Usuarios" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "El nombre de usuario no puede estar vacío." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Las contraseñas deben ser iguales." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " 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:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " 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:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" "El correo electrónico y el nombre de usuario no coinciden con los de " "ninguna cuenta conocida." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Notificación" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "El módulo \"crypt\" no se encuentra disponible en esta plataforma." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "El nombre de usuario no debe contener ninguno de estos caracteres: %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "El nombre de usuario %s no está permitido." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "La contraseña no puede estar vacía." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "Correo electrónico:" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Debe introducir una dirección de correo electrónico correcta." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "Registrarse" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "verifique su dirección de correo electrónico" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "Sus permisos se han limitado hasta que %(link)s." #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "verifique su nueva dirección de correo electrónico" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, fuzzy, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" "Se ha enviado un correo electrónico a %(email)s con una clave para " "%(link)s." #: acct_mgr/register.py:540 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:545 msgid "Your email is already verified." msgstr "Su correo electrónico ya ha sido verificado." #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "Se ha reenviado un correo de notificación a <%s>." #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "Gracias por verificar su dirección de correo electrónico." #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "Clave de verificación inválida" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Cuenta" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "¿Está seguro de que desea eliminar su cuenta?" #: acct_mgr/web_ui.py:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" "Se le pide cambiar su contraseña porque ha habido un solicitud de cambio " "recientemente." #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Por favor cambie ahora su contraseña." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "El nombre de usuario es necesario" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "El correo electrónico es necesario" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "La contraseña antigua no puede estar vacía." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "La contraseña antigua es incorrecta." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Contraseña actualizada con éxito." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "La contraseña es incorrecta." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Nombre de usuario o contraseña inválidos" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "Eliminar" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "Cuentas: configuración" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "Sesiones persistentes" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" "Permite al usuario ser recordado entre sesiones sin la necesidad de " "reautenticarse." #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Reiniciar contraseña" #: acct_mgr/templates/admin_accountsconfig.html:91 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/admin_accountsconfig.html:97 msgid "Verify email" msgstr "Verificar correo electrónico" #: acct_mgr/templates/admin_accountsconfig.html:100 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/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "Guardar" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "Cuentas: configuración de notificación" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "Notificación de cuentas" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " 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/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "Acciones de notificación" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " 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/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Notificarme la creación de nuevas cuentas" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Notificarme los reinicios de contraseñas" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Notificarme las eliminaciones de cuentas" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Direcciones de destinatarios de las notificaciones" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Administrar cuentas de usuario" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Nombre de usuario:" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Contraseña:" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Confirmar contraseña:" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "Dirección de correo electrónico:" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr " Añadir " #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr " Cambiar " #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "Este almacén de contraseñas no puede listar usuarios." #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Eliminar cuentas de usuario seleccionadas" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Iniciar sesión" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Recuérdeme" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Error" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Eliminar cuenta" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Eliminar cuenta" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Cambiar contraseña" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Contraseña antigua:" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nueva contraseña:" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "Registrar una cuenta" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "Obligatorio" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "Opcional" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Nombre:" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Crear cuenta" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Reiniciar contraseña" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Ya está conectado" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [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/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "Se le ha enviado una nueva contraseña por correo electrónico a %(email)s ." #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." 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/reset_password.html:63 msgid "Reset password" msgstr "Reiniciar contraseña" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Nombre" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "Correo electrónico" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Última conexión" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Verificar correo electrónico" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" "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/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "Puede [1:cambiar su dirección de correo electrónico] si es incorrecta." #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "Clave de verificación:" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Verificar" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Reenviar correo electrónico" trac-accountmanager-0.5~r16056/acct_mgr/locale/fr/0000755000175500017550000000000012056250001021424 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/fr/LC_MESSAGES/0000755000175500017550000000000012056250001023211 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/fr/LC_MESSAGES/acct_mgr.po0000644000175500017550000006431512056250001025341 0ustar debacledebacle# 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: Sukender (Benoit NEIL) \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "Comptes" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "Configuration" #: acct_mgr/admin.py:198 msgid "Users" msgstr "Utilisateurs" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "Adresse email" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "Mot de passe" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "Le nom d'utilisateur doit être renseigné." #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "Les mots de passe doivent correspondre." #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " 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:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " 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:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "L'email et/ou le nom d'utilisateur sont inconnus." #: acct_mgr/notification.py:171 msgid "Notification" msgstr "Notification" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "Le module \"crypt\" n'est pas disponible sur cette plateforme." #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "Le nom d'utilisateur ne peut contenir les caractères suivants : %s" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "'%s' n'est pas un nom d'utilisateur valide." #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "Le mot de passe doit être renseigné." #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "Adresse email :" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "Vous devez spécifier une adresse email valide." #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "S'inscrire" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "Compte" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "Mot de passe oublié ?" #: acct_mgr/web_ui.py:152 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:162 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:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "Suite à une réinitialisation, vous devez changer de mot de passe. " #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "Merci changer votre mot de passe maintenant." #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "Le nom d'utilisateur doit être renseigné." #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "L'adresse email doit être renseignée." #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "L'ancien mot de passe doit être renseigné." #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "L'ancien mot de passe est incorrect." #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "Mot de passe mis à jour." #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "Mot de passe incorrect." #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "Utilisateur ou mot de passe incorrect." #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" "Compte bloqué. Merci de recommencer dans\n" "%(release_time) sec.\n" " " #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "Compte bloqué" #: acct_mgr/web_ui.py:383 #, python-format msgid "Login after %(attempts)s failed attempt" msgid_plural "Login after %(attempts)s failed attempts" msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "Débloquer" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "Nombre de tentatives ayant échoué : %(count)s" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "Adresse IP" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "Réinitialisation du mot de passe" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "Être notifié de la création de compte" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "Être notifié de la réinitialisation de mot de passe" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "Être notifié de la suppression de compte" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "Adresse pour les notifications" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " 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/admin_users.html:18 msgid "Manage User Accounts" msgstr "Gestion des comptes utilisateurs" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "Utilisateur :" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "Mot de passe :" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "Confirmation du mot de passe :" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "Adresse email :" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "Ajouter" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "Supprimer les comptes sélectionnés" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "Connexion" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "Se souvenir de moi" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "Erreur" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "Supprimer compte" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "Supprimer compte" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "Changer de mot de passe" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "Ancien mot de passe :" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "Nouveau mot de passe :" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "S'inscrire" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "Nom :" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "Créer compte" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "Réinitialiser le mot de passe" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "Déjà connecté" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [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/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "Réinitialiser le mot de passe" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "Nom" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "Adresse email" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "Dernière connexion" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "Bloqué définitivement" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "Vérifier email" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "Vérifier" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "Renvoyer email" trac-accountmanager-0.5~r16056/acct_mgr/locale/messages.pot0000644000175500017550000015276612616752152023411 0ustar debacledebacle# Translations template for TracAccountManager. # Copyright (C) 2015 ORGANIZATION # This file is distributed under the same license as the # TracAccountManager project. # FIRST AUTHOR , 2015. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: TracAccountManager 0.5\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2015-11-05 14:11-0800\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.1.1\n" #: acct_mgr/admin.py:59 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:170 #, python-format msgid "Invalid key type (%s) for ExtensionOrder" msgstr "" #: acct_mgr/admin.py:214 acct_mgr/admin.py:947 acct_mgr/notification.py:193 #: acct_mgr/templates/admin_users.html:14 #: acct_mgr/templates/admin_users.html:158 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:214 msgid "Users" msgstr "" #: acct_mgr/admin.py:245 #, python-format msgid "Account %(username)s created." msgstr "" #: acct_mgr/admin.py:249 acct_mgr/admin.py:865 acct_mgr/admin.py:879 #: acct_mgr/admin.py:892 acct_mgr/register.py:447 acct_mgr/register.py:471 #: acct_mgr/register.py:617 acct_mgr/register.py:655 acct_mgr/web_ui.py:285 #: acct_mgr/web_ui.py:787 msgid "Error raised while sending a change notification." msgstr "" #: acct_mgr/admin.py:251 acct_mgr/admin.py:867 acct_mgr/admin.py:881 #: acct_mgr/admin.py:894 acct_mgr/web_ui.py:287 msgid "You'll get details with TracLogging enabled." msgstr "" #: acct_mgr/admin.py:265 acct_mgr/admin.py:776 msgid "None of the configured password stores is writable." msgstr "" #: acct_mgr/admin.py:335 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:342 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:347 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:360 acct_mgr/admin.py:581 msgid "Back to Accounts" msgstr "" #: acct_mgr/admin.py:372 msgid "Please choose account by username from the list to proceed." msgstr "" #: acct_mgr/admin.py:402 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:403 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:404 msgid "Password" msgstr "" #: acct_mgr/admin.py:421 acct_mgr/admin.py:428 #, python-format msgid "Deleted %(attribute)s for %(username)s." msgstr "" #: acct_mgr/admin.py:433 acct_mgr/register.py:162 acct_mgr/web_ui.py:216 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:466 #, python-format msgid "Updated %(attributes)s for %(username)s." msgstr "" #: acct_mgr/admin.py:479 #, python-format msgid "Update error in table %(table)s: %(message)s" msgstr "" #: acct_mgr/admin.py:493 #, 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:540 #, python-format msgid "Account lock (%(condition)s) for user %(user)s cleared" msgstr "" #: acct_mgr/admin.py:546 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #. TRANSLATOR: Optionally tabbed account editor's label #: acct_mgr/admin.py:572 msgid "Modify Account Attributes" msgstr "" #: acct_mgr/admin.py:574 msgid "Change User ID" msgstr "" #: acct_mgr/admin.py:641 acct_mgr/admin.py:693 msgid "revoked" msgstr "" #: acct_mgr/admin.py:648 #, python-format msgid "Approved account: %(accounts)s" msgid_plural "Approved accounts: %(accounts)s" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:657 #, python-format msgid "Banned account: %(accounts)s" msgid_plural "Banned accounts: %(accounts)s" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:669 #, python-format msgid "Password reset for %(accounts)s." msgstr "" #: acct_mgr/admin.py:671 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:682 #, python-format msgid "Deleted account: %(accounts)s" msgid_plural "Deleted accounts: %(accounts)s" msgstr[0] "" msgstr[1] "" #: acct_mgr/admin.py:684 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:692 msgid "active" msgstr "" #: acct_mgr/admin.py:694 msgid "pending approval" msgstr "" #: acct_mgr/admin.py:697 msgid "email unverified" msgstr "" #: acct_mgr/admin.py:715 msgid "Are you sure you want to delete these accounts?" msgstr "" #: acct_mgr/admin.py:759 #, python-format msgid "Removing the old user is not supported by %(store)s." msgstr "" #: acct_mgr/admin.py:780 msgid "Password reset is a required action, but disabled yet." msgstr "" #: acct_mgr/admin.py:790 #, python-format msgid "At least %(required_check)s must be configured and enabled." msgstr "" #: acct_mgr/admin.py:827 msgid "Failed to save new login data to a password store." msgstr "" #: acct_mgr/admin.py:857 #, 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:910 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:921 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:924 msgid "Previous Page" msgstr "" #: acct_mgr/admin.py:947 acct_mgr/templates/admin_accountsconfig.html:438 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:999 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:1198 msgid "Your changes have been saved." msgstr "" #: acct_mgr/admin.py:1201 msgid "" "Your changes are cached until you either drop or save them all (see " "last step)." msgstr "" #: acct_mgr/admin.py:1220 msgid "Authentication Options" msgstr "" #: acct_mgr/admin.py:1221 acct_mgr/admin.py:1477 msgid "Password Store" msgstr "" #: acct_mgr/admin.py:1222 msgid "Password Policy" msgstr "" #: acct_mgr/admin.py:1223 msgid "Account Policy" msgstr "" #: acct_mgr/admin.py:1224 acct_mgr/admin.py:1496 msgid "Account Guard" msgstr "" #: acct_mgr/admin.py:1225 msgid "Initialization" msgstr "" #: acct_mgr/admin.py:1269 acct_mgr/admin.py:1396 #, python-format msgid "" "Error while reading configuration - Hint: Enable/install required " "component '%s'." msgstr "" #: acct_mgr/admin.py:1482 msgid "Password Reset" msgstr "" #: acct_mgr/admin.py:1490 msgid "Account Registration" msgstr "" #: acct_mgr/admin.py:1504 msgid "Admin user account" msgstr "" #: acct_mgr/admin.py:1508 msgid "Configuration Review" msgstr "" #: acct_mgr/admin.py:1583 msgid "Initial Trac authentication setup launched." msgstr "" #: acct_mgr/api.py:200 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:266 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:284 #, python-format msgid "Password for user %s existed, couldn't create." msgstr "" #: acct_mgr/api.py:289 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating " "users.\n" " " msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 1.0, please. #: acct_mgr/compat.py:275 acct_mgr/compat.py:280 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/db.py:24 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:147 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:165 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:199 acct_mgr/htfile.py:240 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:202 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:243 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:28 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:58 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:193 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is " "\"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:46 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:81 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:88 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:110 msgid "Username cannot be empty." msgstr "" #: acct_mgr/register.py:124 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:131 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:138 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:151 acct_mgr/register.py:367 #, python-format msgid "" "Another account or group already exists, who's name differs from %s " "only by case or is identical." msgstr "" #: acct_mgr/register.py:160 acct_mgr/web_ui.py:214 acct_mgr/web_ui.py:233 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:167 msgid "" "A collection of simple bot checks.\n" "\n" "''This check is bypassed for requests by an authenticated user.''" msgstr "" #. TRANSLATOR: Question-style hint for visible bot trap #. registration input field. #: acct_mgr/register.py:194 #, python-format msgid "Please answer above: %(question)s" msgstr "" #: acct_mgr/register.py:203 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:205 msgid "Parole:" msgstr "" #: acct_mgr/register.py:215 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:228 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:233 msgid "" "A collection of checks for email addresses.\n" "\n" "''This check is bypassed, if account verification is disabled.''" msgstr "" #: acct_mgr/register.py:244 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:255 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:258 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget " "it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:266 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:281 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:288 msgid "" "The email address specified is already in use. Please specify a " "different one." msgstr "" #: acct_mgr/register.py:296 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 " "disabled.''" msgstr "" #: acct_mgr/register.py:321 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:333 msgid "" "The email address specified appears to be invalid. Please specify a " "valid email address." msgstr "" #: acct_mgr/register.py:341 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:417 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:449 acct_mgr/register.py:473 #: acct_mgr/register.py:619 acct_mgr/register.py:656 acct_mgr/web_ui.py:289 #: acct_mgr/web_ui.py:788 msgid "You should report that issue to a Trac admin." msgstr "" #: acct_mgr/register.py:465 msgid "pending" msgstr "" #: acct_mgr/register.py:478 msgid "" "Your username has been registered successfully, but your account " "requires administrative approval. Please proceed according to local " "policy." msgstr "" #: acct_mgr/register.py:489 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. " "Please login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:495 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:587 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:591 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:625 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:630 #, python-format msgid "An email has been sent to <%(email)s> with a token to %(link)s." msgstr "" #: acct_mgr/register.py:641 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:646 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:662 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:670 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:674 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #: acct_mgr/util.py:108 #, python-format msgid "less than %s" msgstr "" #: acct_mgr/util.py:115 #, python-format msgid "%(num)i second" msgid_plural "%(num)i seconds" msgstr[0] "" msgstr[1] "" #. TRANSLATOR: Pretty datetime representation, time part provided by string #. substitution. #: acct_mgr/util.py:123 #, python-format msgid "%(num)i day %%s" msgid_plural "%(num)i days %%s" msgstr[0] "" msgstr[1] "" #: acct_mgr/web_ui.py:105 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:128 acct_mgr/templates/admin_account.html:14 #: acct_mgr/templates/admin_db_cleanup.html:25 #: acct_mgr/templates/prefs_account.html:43 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:169 #, python-format msgid "" "You're already logged in. If you need to change your password please " "use the %(prefs_href)s page." msgstr "" #: acct_mgr/web_ui.py:181 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:190 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:199 #, python-format msgid "" "You are required to change password because of a recent password " "change request. %(invitation)s" msgstr "" #: acct_mgr/web_ui.py:208 msgid "Old password is incorrect." msgstr "" #: acct_mgr/web_ui.py:210 msgid "Old password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:218 msgid "Password must not match old password." msgstr "" #: acct_mgr/web_ui.py:225 msgid "Password updated successfully." msgstr "" #: acct_mgr/web_ui.py:235 msgid "Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:254 msgid "Username is required." msgstr "" #: acct_mgr/web_ui.py:256 msgid "Email is required." msgstr "" #: acct_mgr/web_ui.py:262 msgid "Email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:295 #, python-format msgid "Cannot reset password: %(error)s" msgstr "" #: acct_mgr/web_ui.py:302 #, 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:459 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:465 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:470 acct_mgr/templates/user_table.html:44 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:475 #, 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:36 #, python-format msgid "" "Unsupported db schema version, please update %(plugin)s to a recent " "version." msgstr "" #: acct_mgr/templates/admin_account.html:25 msgid "Manage User Account" msgstr "" #: acct_mgr/templates/admin_account.html:27 #: acct_mgr/templates/admin_account.html:30 msgid "for" msgstr "" #: acct_mgr/templates/admin_account.html:33 msgid "info" msgstr "" #: acct_mgr/templates/admin_account.html:33 msgid "User ID change requires additional components enabled" msgstr "" #: acct_mgr/templates/admin_account.html:55 msgid "New Username:" msgstr "" #: acct_mgr/templates/admin_account.html:56 msgid "Change user ID ('username')" msgstr "" #: acct_mgr/templates/admin_account.html:64 msgid "Skip creating account and password reset" msgstr "" #: acct_mgr/templates/admin_account.html:66 msgid "Assume existing account" msgstr "" #: acct_mgr/templates/admin_account.html:72 msgid "Do not overwrite existing attributes" msgstr "" #: acct_mgr/templates/admin_account.html:74 msgid "Copy only new account attributes" msgstr "" #: acct_mgr/templates/admin_account.html:80 msgid "Skip final account deletion" msgstr "" #: acct_mgr/templates/admin_account.html:82 msgid "Leave old login data" msgstr "" #: acct_mgr/templates/admin_account.html:92 #: acct_mgr/templates/admin_accountsconfig.html:894 #: acct_mgr/templates/admin_users.html:96 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:27 #: acct_mgr/templates/register.html:46 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_account.html:100 #: acct_mgr/templates/admin_accountsconfig.html:901 #: acct_mgr/templates/admin_users.html:104 #: acct_mgr/templates/prefs_account.html:67 #: acct_mgr/templates/register.html:52 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_account.html:109 #: acct_mgr/templates/admin_users.html:115 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_account.html:113 #: acct_mgr/templates/admin_account.html:123 msgid "Delete value" msgstr "" #: acct_mgr/templates/admin_account.html:119 #: acct_mgr/templates/admin_users.html:121 #: acct_mgr/templates/reset_password.html:38 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_account.html:130 #: acct_mgr/templates/admin_users.html:127 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_account.html:136 #: acct_mgr/templates/admin_accountsconfig.html:978 #: acct_mgr/templates/admin_accountsconfig.html:981 #: acct_mgr/templates/admin_accountsnotification.html:50 msgid "Apply changes" msgstr "" #: acct_mgr/templates/admin_account.html:147 msgid "Account Status" msgstr "" #: acct_mgr/templates/admin_account.html:150 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/admin_account.html:155 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/admin_account.html:159 msgid "Release account lock" msgstr "" #: acct_mgr/templates/admin_account.html:159 msgid "Unlock" msgstr "" #: acct_mgr/templates/admin_account.html:169 #, 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/admin_account.html:184 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/admin_account.html:191 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/admin_account.html:195 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/admin_account.html:201 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/admin_account.html:204 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/admin_account.html:206 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/admin_account.html:210 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 "" #: acct_mgr/templates/admin_account.html:216 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/admin_account.html:219 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/admin_account.html:221 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/admin_account.html:224 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/admin_account.html:229 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/admin_account.html:234 msgid "Access History" msgstr "" #: acct_mgr/templates/admin_account.html:235 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/admin_account.html:237 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/admin_account.html:239 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/admin_account.html:240 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/admin_account.html:245 msgid "IP address" msgstr "" #: acct_mgr/templates/admin_account.html:246 msgid "Log time" msgstr "" #: acct_mgr/templates/admin_account.html:257 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/admin_account.html:257 msgid "Delete Log" msgstr "" #: acct_mgr/templates/admin_account.html:264 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/admin_account.html:269 #: acct_mgr/templates/admin_accountsconfig.html:985 msgid "Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:27 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:53 #: acct_mgr/templates/admin_accountsconfig.html:971 msgid "Apply changes and go back" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:53 #: acct_mgr/templates/admin_accountsconfig.html:57 #: acct_mgr/templates/admin_accountsconfig.html:971 #: acct_mgr/templates/admin_accountsconfig.html:975 msgid "Previous" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:57 #: acct_mgr/templates/admin_accountsconfig.html:975 msgid "Go back" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:60 #: acct_mgr/templates/admin_accountsconfig.html:988 msgid "Apply changes and go on" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:60 #: acct_mgr/templates/admin_accountsconfig.html:988 msgid "Next" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:70 #: acct_mgr/templates/admin_accountsconfig.html:256 #: acct_mgr/templates/admin_accountsconfig.html:540 #: acct_mgr/templates/admin_accountsconfig.html:589 #: acct_mgr/templates/admin_accountsconfig.html:731 #: acct_mgr/templates/admin_accountsconfig.html:856 #, python-format msgid "Step %(step)s: %(label)s" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:73 msgid "Objective for setting Authentication Options" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "" "Decide, whether to use HTTP authentication (Trac default) or\n" " a HTML login form provided by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:78 msgid "" "After initial login Trac sessions are authenticated per request\n" " based on browser cookies. Therefor a number of options " "provide\n" " control over some critical browser cookie properties." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:84 msgid "Provider-agnostic Authentication Options" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:89 msgid "Convert login names to lower case on registration and login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:92 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 "" #: acct_mgr/templates/admin_accountsconfig.html:102 msgid "Check IP address for authentication." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 msgid "" "Potentially troublesome for users with dynamic IP adress, but\n" " disregarded for persistent sessions." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:114 msgid "Restrict sending cookies to HTTPS connections." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:117 msgid "Required, if the Trac instance is only accessible through HTTPS." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:129 #, python-format msgid "" "Lifetime of the authentication cookie:\n" " [1:]\n" " seconds\n" " [2:\n" " (%(timedelta)s)\n" " ]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:140 msgid "" "Determines how long the browser will cache authentication\n" " information, and therefore, after how much inactivity a" " user\n" " will have to log in again. Default (0 s) makes cookie\n" " expire at browsing sessions end." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:148 msgid "Authentication Front-end" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:153 msgid "" "Use HTTP authentication and credentials as configured in and\n" " provided by your web-server." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:157 msgid "" "You can still manage some password stores with\n" " AccountManagerPlugin, if you configure them in the next" " step." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:164 msgid "" "Use a HTML login form backed by one or more password stores\n" " managed by AccountManagerPlugin." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:168 msgid "" "AccountManagerPlugin provides a custom version of the\n" " [1:LoginModule] accompanied by a form-based HTML\n" " login page." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:173 msgid "" "If you enable this feature, you'll want to review and adjust\n" " some more options related to session authentication.\n" " Note, that AccountManagerPlugin's LoginModule " "[1:changes the\n" " default lifetime of authentication cookies to 30 days]." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:182 msgid "AccountManagerPlugin Authentication Options" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:187 msgid "Integrate links to related actions into the login form." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:190 msgid "" "[1:\n" " If enabled, links to\n" " ]\n" " [2:\n" " [3:\n" " [4:Lost password/Password reset]\n" " ]\n" " [5:\n" " [6:Registration for new users]\n" " ]\n" " ]\n" " [7:\n" " that normally reside in Trac's meta-navigation bar," " will\n" " appear inside the login form. CSS styling allows " "further\n" " customization of the login prompt.\n" " ]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:213 msgid "" "Allow the user to be remembered across sessions without\n" " needing to re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:217 msgid "" "This is, user checks a \"Remember Me\"\n" " [1:checkbox] in the AccountManagerPlugin login form " "and,\n" " next time he visits the site within 30 days, he'll be" "\n" " remembered and authenticated automatically." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:224 msgid "" "Likelihood of session cookie ID change:\n" " [1:]\n" " % per work hour" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:231 msgid "" "Driving a refresh process to decrease vulnerability of\n" " long-lasting sessions. Zero means [1:never]." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:237 msgid "Path for authentication cookie:" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:243 msgid "" "This enables AccountManagerPlugin's authentication data\n" " distribution to Trac instances with matching cookie " "path.\n" " Set this to a common base path of several Trac " "instances to\n" " share the cookie, providing a cheap [1:Single-Sign-" "On]\n" " experience." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:259 msgid "Password store icon" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:262 msgid "Objective for configuring a Password Store" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:263 msgid "" "AccountManagerPlugin manages user credentials in a modular\n" " back-end providing access to at least one password " "store." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:269 msgid "Initial Authentication Back-end selection" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:276 msgid "Use a password store embedded into Trac db." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:279 msgid "" "The [1:SessionStore] implements password\n" " storage in Trac db table 'session_attributes'.\n" " Its the default choice mainly for avoiding " "additional\n" " dependencies like directory and file permissions." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:285 msgid "" "While great to resolve some concurrent access issues too,\n" " this password store has shortcomings as well. " "Notably it\n" " does not support seamless hash type migration, and " "its no\n" " candidate for shared use by multiple Trac instances" " or even\n" " by applications beyond Trac." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:293 #: acct_mgr/templates/admin_accountsconfig.html:334 #: acct_mgr/templates/admin_accountsconfig.html:355 #: acct_mgr/templates/admin_accountsconfig.html:378 #: acct_mgr/templates/admin_accountsconfig.html:407 #: acct_mgr/templates/admin_accountsconfig.html:944 msgid "Details (Preview)" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:296 #: acct_mgr/templates/admin_accountsconfig.html:410 msgid "" "Please apply these default options first. You'll be\n" " able to change values afterwards." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:307 msgid "Use a file-based password store." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:310 msgid "" "AccountManagerPlugin includes native support for common\n" " Apache file formats 'htpasswd' and 'htdigest' as " "well as\n" " support for reading svnserve's password file format." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:315 msgid "" "You may use the same file for several Trac environments.\n" " Note that setting appropriate directory and file " "permissions\n" " is crucial for these stores, but not covered by " "this\n" " configuration wizard." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:324 msgid "" "[1:]\n" " 'htdigest' format\n" " [2:([3:HtDigestStore])]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:337 #: acct_mgr/templates/admin_accountsconfig.html:358 #: acct_mgr/templates/admin_accountsconfig.html:381 msgid "" "Please apply these default options first. You'll be\n" " able to change values afterwards." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:345 msgid "" "[1:]\n" " 'htpasswd' format\n" " [2:([3:HtPasswdStore])]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:366 msgid "" "[1:]\n" " svnserve's password file format\n" " [2:\n" " ([3:SvnServePasswordStore])\n" " ]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:394 msgid "Delegate authentication using HTTP authentication." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:397 msgid "" "AccountManagerPlugin enables use of standard HTTP-Auth\n" " by its [1:HttpAuthStore] component. Both\n" " Basic and Digest authentication challenges are " "supported." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:402 msgid "" "In addition to being read-only this password store does not\n" " even support listing users for obvious reasons." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:425 msgid "Use a different password store." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:428 msgid "" "AccountManagerPlugin's modular password store concept\n" " encourages creation of more ways to provide user " "credential\n" " beyond the natively supported stores. While " "specific setup\n" " assistance for these 3rd-party authentication " "providers is not\n" " implemented, you may fill-in approprate " "configuration details\n" " for an already installed component below." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:441 msgid "" "Type the custom configuration options as provided by that\n" " components documentation and apply it." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:451 msgid "Password Store Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:452 #, python-format msgid "" "All enabled stores are listed below, but most won't work at\n" " all without additional configuration.[1:]\n" " Currently configured:\n" " [2:\n" " %(store_list)s\n" " ]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:460 msgid "This is an experts-only type of store configuration." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:464 #, python-format msgid "" "[1:Required disabled component(s):\n" " [2:%(components)s]]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:469 msgid "" "Select one or more stores and configure related options.\n" " Concurrent use of multiple password stores is " "supported too." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:473 msgid "Password stores are queried in turn, so order matters." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:519 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:522 msgid "" "Use it after changing hash type or to migrate to a new\n" " primary password store." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:526 msgid "" "The update will run only once. Restarting the procedure\n" " for all accounts allows to propagate subsequent " "changes." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:531 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:543 msgid "Password refresh icon" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:546 msgid "Objective for Password Policy rules" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:547 msgid "" "While AccountManagerPlugin does not enforce password rules in\n" " general, there are some other ways to alter password " "handling." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:556 msgid "Enable the password reset procedure." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:559 msgid "" "It relies on a working email sender for Trac, supporting both\n" " TracAnnouncer and TracNotification." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:565 msgid "" "Length of the randomly-generated passwords:\n" " [1:]\n" " characters" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:573 msgid "These passwords are used as alternative passwords on request." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:581 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:592 msgid "Account approval icon" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:595 msgid "Objective for Account Registration and Verification rules" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:596 msgid "" "You may require administrative approval of new accounts for the\n" " user registration process. The ability to immediately " "ban\n" " existing accounts is another, related but independed " "feature." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:606 msgid "Allow administrative user ID changes." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:615 msgid "Allow users to register for a new account." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:624 msgid "Allow users to delete their own account." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:629 msgid "Checks to use for validating Registration requests" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:630 #, python-format msgid "" "All checks provided by AccountManagerPlugin are enabled per\n" " default, but some are configurable on their own.[1:]\n" " Currently configured:\n" " [2:\n" " %(check_list)s\n" " ]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:638 msgid "" "Checks like [1:BotTrapCheck] won't work at all\n" " without additional configuration." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:643 #, python-format msgid "" "[1:Required disabled component(s):\n" " [2:%(components)s]]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:648 msgid "" "Select one or more checks and configure related options.\n" " Concurrent use of multiple registration checks is " "encouraged." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:652 msgid "" "Checks are applied in turn, so order matters. Note that some\n" " checks are used to validate admin user actions too." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:698 msgid "Other Account Policy options" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:704 msgid "Require administrative account approval after registration." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:707 msgid "" "For admin notification on registration time it relies on a\n" " working email sender for Trac, supporting both " "TracAnnouncer\n" " and TracNotification." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:718 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:721 msgid "" "For sending a verificaton token to the user it relies on a\n" " working email sender for Trac, supporting both " "TracAnnouncer\n" " and TracNotification." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:734 msgid "Account guard icon" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:737 msgid "Objective for Account Protection rules" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:738 msgid "" "Passwords are often not constructed as carefully as they should\n" " be. And even a strong passphrase could be sift out, if" " an\n" " attacker is able to test millions of variants in hours," " if not\n" " seconds. Firewalls and full-featured web-servers " "already offer\n" " sophisticated protection, if one can afford them, " "handle their\n" " installation, configuration and maintenance." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:746 msgid "" "The [1:AccountGuard] component is another option.\n" " It is an add-on to AccountManagerPlugin's own\n" " [2:LoginModule] and provides account protection\n" " by discouraging brute-force login attempts." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:759 msgid "Enable the guard add-on component." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:762 msgid "AccountManagerPlugin's LoginModule is disabled." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:768 msgid "Failed login attempt count max:" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:775 msgid "" "Lock user account after the specified number of failed\n" " attempts. Value zero means [1:no limit]." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:782 msgid "" "Drop lock after\n" " [1:]\n" " seconds" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:789 msgid "Zero means [1:unlimited] lock time here." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:795 msgid "Lock time progression factor:" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:802 msgid "" "Extend user account lock duration incrementally.\n" " It uses logarithmic calculation with the factor" " as\n" " exponent, accepting decimal numbers >= 1." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:807 msgid "" "Lock time will grow for any value > 1, if the failure\n" " happens before lock expiration. I.e. value '2'" " means" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:811 msgid "" "[1:[2:\n" " double lock time after 2nd failure,]\n" " ]\n" " [3:[4:\n" " four times the initial lock time after 3rd,]\n" " ]\n" " [5:[6:\n" " eight times as long after 4th failure, etc.]\n" " ]" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:822 msgid "" "At any time after lock expiration a login failure will\n" " just trigger a lock and set a new lock timeout," " but not\n" " extend the total lock duration." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:832 msgid "Upper lock time limit:" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:837 msgid "seconds" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:845 msgid "This is relevant only with a progression factor > 1." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:860 msgid "Objective for additional preparation" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:861 msgid "Enable yourself to proceed beyond this initial setup." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:864 msgid "Initial Admin Account" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:866 msgid "Add Admin Account:" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:867 msgid "" "The user will get [1:TRAC_ADMIN] assigned, that\n" " inherits all available permissions. One such " "account is\n" " required to configure Trac via the admin web-UI. " "Create and\n" " manage more limitted admin accounts as well as " "actual user\n" " accounts on your own later via the Accounts admin " "panel." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:874 msgid "" "In detail: AccountManagerPlugin requires\n" " [1:ACCTMGR_USER_ADMIN] for regular user\n" " administration, [2:ACCTMGR_CONFIG_ADMIN] for\n" " viewing these pages and changing the configuration " "later.\n" " Both are inherited by [3:ACCTMGR_ADMIN]\n" " permission. To assign permissions you'll need\n" " [4:PERMISSION_GRANT] inherited by\n" " [5:PERMISSION_ADMIN] too." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:885 #: acct_mgr/templates/admin_users.html:86 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:32 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:889 #: acct_mgr/templates/admin_users.html:90 #: acct_mgr/templates/register.html:41 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:908 msgid "" "Please take care, that the username is known by the HTTP\n" " authentication provider." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:912 msgid "" "Please take care for a valid username, because no\n" " configured password store supports creating a new " "account." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:917 #: acct_mgr/templates/admin_users.html:133 msgid " Add " msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:922 msgid "Check-up" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:931 msgid "Please resolve all issues marked as critical." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:935 msgid "" "By now you did almost finish AccountManagerPlugin\n" " configuration, but any changes are temporary yet. " "Please test\n" " and adjust the configuration as required, or cancel " "to revert\n" " all changes. Apply settings to [1:trac.ini] only if " "you\n" " really want to preserve them permanently." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:978 msgid "Stay on page" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:981 msgid "Save changes and exit wizard" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:985 msgid "Drop unsaved changes" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:991 msgid "Drop changes and exit wizard" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:991 msgid "Cancel" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_db_cleanup.html:14 #: acct_mgr/templates/admin_db_cleanup.html:18 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/admin_db_cleanup.html:30 msgid "Attribute" msgstr "" #: acct_mgr/templates/admin_db_cleanup.html:31 msgid "Value" msgstr "" #: acct_mgr/templates/admin_db_cleanup.html:65 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/admin_db_cleanup.html:97 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/admin_db_cleanup.html:99 msgid "Undo selection" msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "Add New Account:" msgstr "" #: acct_mgr/templates/admin_users.html:141 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:146 msgid "Max accounts per page [1:]" msgstr "" #: acct_mgr/templates/admin_users.html:152 #: acct_mgr/templates/admin_users.html:175 msgid "Update" msgstr "" #: acct_mgr/templates/admin_users.html:164 msgid "Filters" msgstr "" #: acct_mgr/templates/admin_users.html:165 msgid "Account filters" msgstr "" #: acct_mgr/templates/admin_users.html:166 msgid "Status" msgstr "" #: acct_mgr/templates/admin_users.html:190 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:190 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:194 msgid "Approve pending registrations, ban/unban accounts" msgstr "" #: acct_mgr/templates/admin_users.html:194 msgid "Toggle account approval" msgstr "" #: acct_mgr/templates/admin_users.html:197 msgid "Delete accounts" msgstr "" #: acct_mgr/templates/admin_users.html:197 msgid "Remove selected items" msgstr "" #: acct_mgr/templates/admin_users.html:202 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/register.html:27 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:23 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:34 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:53 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:55 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:61 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:64 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:66 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:77 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:25 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 "" #: acct_mgr/templates/reset_password.html:43 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:47 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/locale/uk/0000755000175500017550000000000012056250001021434 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/uk/LC_MESSAGES/0000755000175500017550000000000012056250001023221 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/locale/uk/LC_MESSAGES/acct_mgr.po0000644000175500017550000005776212056250001025361 0ustar debacledebacle# Ukrainian 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.4\n" "Report-Msgid-Bugs-To: hoff.st@shaas.net\n" "POT-Creation-Date: 2012-11-30 22:50+0100\n" "PO-Revision-Date: 2012-09-16 19:02+0000\n" "Last-Translator: FULL NAME \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 1.0dev-r482\n" #: acct_mgr/admin.py:69 #, python-format msgid "Locked until %(t_release)s" msgstr "" #: acct_mgr/admin.py:153 #, python-format msgid "Invalid key type (%s) for StoreOrder" msgstr "" #: acct_mgr/admin.py:196 acct_mgr/admin.py:198 acct_mgr/notification.py:171 #: acct_mgr/templates/admin_users.html:14 msgid "Accounts" msgstr "" #: acct_mgr/admin.py:196 msgid "Configuration" msgstr "" #: acct_mgr/admin.py:198 msgid "Users" msgstr "" #: acct_mgr/admin.py:249 msgid "" "Error while reading configuration -\n" " Hint: Enable/install the required component." msgstr "" #: acct_mgr/admin.py:298 msgid "Password hash refresh procedure restarted." msgstr "" #: acct_mgr/admin.py:368 msgid "The password store does not support creating users." msgstr "" #: acct_mgr/admin.py:379 msgid "The password reset procedure is not enabled." msgstr "" #: acct_mgr/admin.py:389 msgid "The password store does not support deleting users." msgstr "" #: acct_mgr/admin.py:394 msgid "Email Address" msgstr "" #: acct_mgr/admin.py:395 msgid "Pre-/Surname (Nickname)" msgstr "" #: acct_mgr/admin.py:396 msgid "Password" msgstr "" #: acct_mgr/admin.py:405 acct_mgr/register.py:98 msgid "Username cannot be empty." msgstr "" #: acct_mgr/admin.py:410 #, python-format msgid "Unknown user %(user)s." msgstr "" #: acct_mgr/admin.py:418 acct_mgr/register.py:150 acct_mgr/web_ui.py:226 msgid "The passwords must match." msgstr "" #: acct_mgr/admin.py:423 msgid "" "The password store does not support\n" " changing passwords.\n" " " msgstr "" #: acct_mgr/admin.py:464 msgid "Please choose account by username from list to proceed." msgstr "" #: acct_mgr/admin.py:480 #, python-format msgid "Failed login attempts for user %(user)s deleted" msgstr "" #: acct_mgr/admin.py:607 #, python-format msgid "%(count)s account" msgid_plural "%(count)s accounts" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:614 #, python-format msgid "%(count)s account attribute" msgid_plural "%(count)s account attributes" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/admin.py:619 msgid "Successfully deleted:" msgstr "" #: acct_mgr/admin.py:639 #, python-format msgid "page %(num)s" msgstr "" #: acct_mgr/admin.py:650 msgid "Next Page" msgstr "" #: acct_mgr/admin.py:655 msgid "Previous Page" msgstr "" #: acct_mgr/api.py:167 msgid "Ordered list of password stores, queried in turn." msgstr "" #: acct_mgr/api.py:238 #, python-format msgid "" "The authentication backend for user %s does not support\n" " setting the password.\n" " " msgstr "" #: acct_mgr/api.py:250 msgid "" "None of the IPasswordStore components listed in the\n" " trac.ini supports setting the password or creating users." "\n" " " msgstr "" #: acct_mgr/db.py:23 msgid "IPasswordHashMethod used to create new/updated passwords" msgstr "" #: acct_mgr/htfile.py:144 msgid "" "The password file could not be read. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:162 msgid "" "The password file could not be updated. Trac requires\n" " read and write access to both the password file\n" " and its parent directory." msgstr "" #: acct_mgr/htfile.py:198 acct_mgr/htfile.py:239 msgid "" "Path relative to Trac environment or full host machine\n" " path to password file" msgstr "" #: acct_mgr/htfile.py:201 acct_mgr/pwhash.py:42 msgid "Default hash type of new/updated passwords" msgstr "" #: acct_mgr/htfile.py:242 msgid "Realm to select relevant htdigest file entries" msgstr "" #: acct_mgr/http.py:27 msgid "URL of the HTTP authentication service" msgstr "" #: acct_mgr/macros.py:95 #, python-format msgid "(required %(perm)s missing)" msgstr "" #: acct_mgr/notification.py:53 msgid "The email and username do not match a known account." msgstr "" #: acct_mgr/notification.py:171 msgid "Notification" msgstr "" #: acct_mgr/pwhash.py:58 msgid "Realm to select relevant htdigest db entries" msgstr "" #: acct_mgr/pwhash.py:116 msgid "" "The \"crypt\" module is unavailable\n" " on this platform." msgstr "" #: acct_mgr/pwhash.py:123 msgid "" "Neither are \"sha2\" hash algorithms supported by the\n" " \"crypt\" module on this platform nor is \"passlib\"\n" " available." msgstr "" #: acct_mgr/register.py:43 msgid "Registration Error" msgstr "" #: acct_mgr/register.py:76 #, python-format msgid "No check method 'validate_registration' defined in %(module)s" msgstr "" #: acct_mgr/register.py:112 #, python-format msgid "The username must not contain any of these characters: %s" msgstr "" #: acct_mgr/register.py:119 msgid "A username with only upper-cased characters is not allowed." msgstr "" #: acct_mgr/register.py:126 #, python-format msgid "Username %s is not allowed." msgstr "" #: acct_mgr/register.py:139 acct_mgr/register.py:319 #, python-format msgid "" "Another account or group already exists, who's name differs from %s only " "by case or is identical." msgstr "" #: acct_mgr/register.py:148 acct_mgr/web_ui.py:223 acct_mgr/web_ui.py:240 msgid "Password cannot be empty." msgstr "" #: acct_mgr/register.py:172 #, python-format msgid "" "Please type [%(token)s] as verification token,\n" " exactly replicating everything within the braces." msgstr "" #: acct_mgr/register.py:174 msgid "Parole:" msgstr "" #: acct_mgr/register.py:184 msgid "Better do not fill this field." msgstr "" #: acct_mgr/register.py:195 msgid "Are you human? If so, try harder!" msgstr "" #: acct_mgr/register.py:209 msgid "Email:" msgstr "" #. TRANSLATOR: Registration form hints for a mandatory input field. #: acct_mgr/register.py:220 msgid "" "The email address is required for Trac to send\n" " you a verification token." msgstr "" #: acct_mgr/register.py:223 msgid "" "Entering your email address will also enable you\n" " to reset your password if you ever forget it." msgstr "" #. TRANSLATOR: Registration form hint, if email input is optional. #: acct_mgr/register.py:231 msgid "" "Entering your email address will enable you to\n" " reset your password if you ever forget it." msgstr "" #: acct_mgr/register.py:246 msgid "You must specify a valid email address." msgstr "" #: acct_mgr/register.py:250 msgid "" "The email address specified is already in use. Please specify a different" " one." msgstr "" #: acct_mgr/register.py:277 #, python-format msgid "Username %s doesn't match local naming policy." msgstr "" #: acct_mgr/register.py:287 msgid "" "The email address specified appears to be invalid. Please specify a valid" " email address." msgstr "" #: acct_mgr/register.py:364 acct_mgr/templates/login.html:58 #: acct_mgr/templates/login.html:61 acct_mgr/templates/register.html:14 msgid "Register" msgstr "" #: acct_mgr/register.py:407 #, python-format msgid "" "Your username has been successfully registered but\n" " your account still requires activation. Please " "login\n" " as user %(user)s, and follow the instructions." msgstr "" #: acct_mgr/register.py:413 #, python-format msgid "" "Registration has been finished successfully.\n" " You may log in as user %(user)s now." msgstr "" #. TRANSLATOR: Your permissions have been limited until you ... #: acct_mgr/register.py:492 msgid "verify your email address" msgstr "" #. TRANSLATOR: ... verify your email address #: acct_mgr/register.py:496 #, python-format msgid "Your permissions have been limited until you %(link)s." msgstr "" #. TRANSLATOR: An email has been sent to <%(email)s> #. with a token to ... (the link label for following message) #: acct_mgr/register.py:523 msgid "verify your new email address" msgstr "" #. TRANSLATOR: ... verify your new email address #: acct_mgr/register.py:527 #, python-format msgid "" "An email has been sent to <%(email)s> with a token to\n" " %(link)s." msgstr "" #: acct_mgr/register.py:540 msgid "Please log in to finish email verification procedure." msgstr "" #: acct_mgr/register.py:545 msgid "Your email is already verified." msgstr "" #: acct_mgr/register.py:553 #, python-format msgid "A notification email has been resent to <%s>." msgstr "" #: acct_mgr/register.py:561 msgid "Thank you for verifying your email address." msgstr "" #: acct_mgr/register.py:565 msgid "Invalid verification token" msgstr "" #: acct_mgr/svnserve.py:28 msgid "" "Path to the users file; leave blank to locate\n" " the users file by reading svnserve.conf" msgstr "" #. TRANSLATOR: Sync with same msgid in Trac 0.13, please. #: acct_mgr/util.py:78 acct_mgr/util.py:83 #, python-format msgid "%(relativetime)s ago" msgstr "" #: acct_mgr/web_ui.py:89 acct_mgr/templates/db_cleanup.html:52 #: acct_mgr/templates/prefs_account.html:45 #: acct_mgr/templates/user_table.html:20 msgid "Account" msgstr "" #: acct_mgr/web_ui.py:138 acct_mgr/templates/login.html:45 #: acct_mgr/templates/login.html:66 acct_mgr/templates/login.html:69 msgid "Forgot your password?" msgstr "" #: acct_mgr/web_ui.py:152 msgid "Are you sure you want to delete your account?" msgstr "" #: acct_mgr/web_ui.py:162 msgid "Thank you for taking the time to update your password." msgstr "" #: acct_mgr/web_ui.py:171 msgid "" "You are required to change password because of a recent password change " "request. " msgstr "" #: acct_mgr/web_ui.py:174 msgid "Please change your password now." msgstr "" #: acct_mgr/web_ui.py:185 msgid "Username is required" msgstr "" #: acct_mgr/web_ui.py:187 msgid "Email is required" msgstr "" #: acct_mgr/web_ui.py:193 msgid "The email and username must match a known account." msgstr "" #: acct_mgr/web_ui.py:217 msgid "Old Password cannot be empty." msgstr "" #: acct_mgr/web_ui.py:219 msgid "Old Password is incorrect." msgstr "" #: acct_mgr/web_ui.py:233 msgid "Password successfully updated." msgstr "" #: acct_mgr/web_ui.py:242 msgid "Password is incorrect." msgstr "" #. TRANSLATOR: Intentionally obfuscated login error #: acct_mgr/web_ui.py:368 msgid "Invalid username or password" msgstr "" #: acct_mgr/web_ui.py:373 #, python-format msgid "" "Account locked, please try again after\n" " %(release_time)s\n" " " msgstr "" #: acct_mgr/web_ui.py:378 acct_mgr/templates/user_table.html:38 msgid "Account locked" msgstr "" #: acct_mgr/web_ui.py:383 #, 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/templates/account_details.html:14 msgid "Account Details" msgstr "" #: acct_mgr/templates/account_details.html:20 msgid "Review User Account Details" msgstr "" #: acct_mgr/templates/account_details.html:22 #, python-format msgid "for [1:%(name)s] ([2:%(user)s])" msgstr "" #: acct_mgr/templates/account_details.html:25 #, python-format msgid "for [1:%(user)s]" msgstr "" #: acct_mgr/templates/account_details.html:34 msgid "Account Status" msgstr "" #: acct_mgr/templates/account_details.html:38 #, python-format msgid "" "Credentials for this user are stored in AuthStore number\n" " [1:%(order_num)s] (%(store)s)." msgstr "" #: acct_mgr/templates/account_details.html:42 msgid "Username matching is set to [1:not case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:44 msgid "Username matching is set to [1:case-sensitive]." msgstr "" #: acct_mgr/templates/account_details.html:49 msgid "" "No store provides credentials for this user,\n" " so the user currently can't be authenticated and\n" " access to this [1:account is effectively blocked],\n" " while account details may still be available." msgstr "" #: acct_mgr/templates/account_details.html:61 #, python-format msgid "" "[1:]\n" " This account has been locked until %(time)s[2:]\n" " and even valid login attempts are rejected meanwhile." msgstr "" #: acct_mgr/templates/account_details.html:66 msgid "This account has been locked permanently." msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Release account lock" msgstr "" #: acct_mgr/templates/account_details.html:70 msgid "Unlock" msgstr "" #: acct_mgr/templates/account_details.html:82 #, python-format msgid "" "Lock condition has been met\n" " %(count)s time by now." msgid_plural "" "Lock condition has been met\n" " %(count)s times by now." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: acct_mgr/templates/account_details.html:94 #, python-format msgid "" "Therefore after another failed login attempt authentication\n" " for this account would be retarded by %(time)s." msgstr "" #: acct_mgr/templates/account_details.html:101 msgid "Lock condition has not been met yet." msgstr "" #: acct_mgr/templates/account_details.html:107 msgid "No constraints are set for this account." msgstr "" #: acct_mgr/templates/account_details.html:116 msgid "Verification" msgstr "" #: acct_mgr/templates/account_details.html:120 #, python-format msgid "Current email address: <%(email)s>" msgstr "" #: acct_mgr/templates/account_details.html:123 msgid "This address has been verified successfully." msgstr "" #: acct_mgr/templates/account_details.html:125 #, python-format msgid "" "Verification is pending\n" " ([1:token: '%(token)s' ])." msgstr "" #: acct_mgr/templates/account_details.html:128 msgid "This address has not been verified yet." msgstr "" #: acct_mgr/templates/account_details.html:133 msgid "No email address is registered for this account." msgstr "" #: acct_mgr/templates/account_details.html:141 msgid "Access History" msgstr "" #: acct_mgr/templates/account_details.html:144 #, python-format msgid "Last login: %(time)s" msgstr "" #: acct_mgr/templates/account_details.html:146 msgid "The user has not logged in before." msgstr "" #: acct_mgr/templates/account_details.html:150 #, python-format msgid "Total failed attempts: %(count)s" msgstr "" #: acct_mgr/templates/account_details.html:151 msgid "Table: Last failed login attempts log view" msgstr "" #: acct_mgr/templates/account_details.html:156 msgid "IP address" msgstr "" #: acct_mgr/templates/account_details.html:157 msgid "Log time" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete login failure log" msgstr "" #: acct_mgr/templates/account_details.html:168 msgid "Delete Log" msgstr "" #: acct_mgr/templates/account_details.html:175 msgid "There is currently no failed login attempt logged." msgstr "" #: acct_mgr/templates/account_details.html:182 #: acct_mgr/templates/db_cleanup.html:125 msgid "Back to accounts" msgstr "" #: acct_mgr/templates/account_details.html:184 #: acct_mgr/templates/db_cleanup.html:37 msgid "Update" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:14 #: acct_mgr/templates/admin_accountsconfig.html:18 msgid "Accounts: Configuration" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:62 msgid "Password Refresh" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:65 msgid "Silently update password hashes on next successful login." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:68 msgid "Restart" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:74 msgid "Persistent Sessions" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:77 msgid "" "Allow the user to be remembered across sessions without needing to\n" " re-authenticate." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:81 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 "" #: acct_mgr/templates/admin_accountsconfig.html:88 msgid "Password Reset" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:91 msgid "Force users to change passwords after a password reset." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:97 msgid "Verify email" msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:100 msgid "Force users to verify their email addresses." msgstr "" #: acct_mgr/templates/admin_accountsconfig.html:105 #: acct_mgr/templates/admin_accountsnotification.html:51 msgid "Save" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:14 #: acct_mgr/templates/admin_accountsnotification.html:18 msgid "Accounts: Notification Configuration" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:22 msgid "Account Notification" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:23 msgid "" "Set the following options in order to be notified of\n" " account creation, password reset and account deletion." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:26 msgid "Notification Actions" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:27 msgid "" "This is a list of actions which you can\n" " enable or disable by [1:checking] the [2:checkboxes]." msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:31 msgid "Get notified of new account creation" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:35 msgid "Get notified of password reset" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:39 msgid "Get notified of account deletion" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:42 msgid "Notification Recipient Addresses" msgstr "" #: acct_mgr/templates/admin_accountsnotification.html:43 msgid "" "Space-separated list of email addresses and/or\n" " usernames that get notified of the above actions:" msgstr "" #: acct_mgr/templates/admin_users.html:18 msgid "Manage User Accounts" msgstr "" #: acct_mgr/templates/admin_users.html:26 #, python-format msgid "Successfully updated: %(success)s" msgstr "" #: acct_mgr/templates/admin_users.html:31 msgid "Add/Edit Account:" msgstr "" #: acct_mgr/templates/admin_users.html:33 acct_mgr/templates/login.html:33 #: acct_mgr/templates/register.html:36 #: acct_mgr/templates/reset_password.html:53 msgid "Username:" msgstr "" #: acct_mgr/templates/admin_users.html:36 acct_mgr/templates/register.html:40 msgid "Only lowercase usernames allowed" msgstr "" #: acct_mgr/templates/admin_users.html:41 acct_mgr/templates/login.html:38 #: acct_mgr/templates/prefs_account.html:30 acct_mgr/templates/register.html:45 msgid "Password:" msgstr "" #: acct_mgr/templates/admin_users.html:49 #: acct_mgr/templates/prefs_account.html:74 acct_mgr/templates/register.html:51 msgid "Confirm Password:" msgstr "" #: acct_mgr/templates/admin_users.html:57 msgid "Pre-/Surname (Nickname):" msgstr "" #: acct_mgr/templates/admin_users.html:62 #: acct_mgr/templates/reset_password.html:58 msgid "Email Address:" msgstr "" #: acct_mgr/templates/admin_users.html:67 msgid "Skip new email verification" msgstr "" #: acct_mgr/templates/admin_users.html:70 msgid "Add a new user account or edit an existing one." msgstr "" #: acct_mgr/templates/admin_users.html:72 msgid " Add " msgstr "" #: acct_mgr/templates/admin_users.html:75 msgid " Change " msgstr "" #: acct_mgr/templates/admin_users.html:84 msgid "This password store does not support listing users." msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Send another random password" msgstr "" #: acct_mgr/templates/admin_users.html:91 msgid "Reset passwords" msgstr "" #: acct_mgr/templates/admin_users.html:95 msgid "Remove selected accounts" msgstr "" #: acct_mgr/templates/admin_users.html:98 msgid "Review account attributes" msgstr "" #: acct_mgr/templates/db_cleanup.html:14 acct_mgr/templates/db_cleanup.html:23 msgid "Accounts: Cleanup" msgstr "" #: acct_mgr/templates/db_cleanup.html:30 msgid "" "Max accounts per page\n" " [1:]" msgstr "" #: acct_mgr/templates/db_cleanup.html:44 #, python-format msgid "Accounts (%(slice)s)" msgstr "" #: acct_mgr/templates/db_cleanup.html:57 msgid "Attribute" msgstr "" #: acct_mgr/templates/db_cleanup.html:58 msgid "Value" msgstr "" #: acct_mgr/templates/db_cleanup.html:63 msgid "Not Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:90 msgid "Authenticated Accounts" msgstr "" #: acct_mgr/templates/db_cleanup.html:121 msgid "Remove selected entries" msgstr "" #: acct_mgr/templates/db_cleanup.html:123 msgid "Undo selection" msgstr "" #: acct_mgr/templates/login.html:14 acct_mgr/templates/login.html:26 #: acct_mgr/templates/login.html:54 msgid "Login" msgstr "" #: acct_mgr/templates/login.html:51 msgid "Remember me" msgstr "" #: acct_mgr/templates/login.html:79 acct_mgr/templates/prefs_account.html:23 #: acct_mgr/templates/prefs_account.html:50 #: acct_mgr/templates/prefs_account.html:57 acct_mgr/templates/register.html:27 #: acct_mgr/templates/reset_password.html:45 msgid "Error" msgstr "" #: acct_mgr/templates/prefs_account.html:20 msgid "Delete Account" msgstr "" #: acct_mgr/templates/prefs_account.html:37 msgid "Delete account" msgstr "" #: acct_mgr/templates/prefs_account.html:54 msgid "Change Password" msgstr "" #: acct_mgr/templates/prefs_account.html:62 msgid "Old Password:" msgstr "" #: acct_mgr/templates/prefs_account.html:68 msgid "New Password:" msgstr "" #: acct_mgr/templates/register.html:24 msgid "Register an account" msgstr "" #: acct_mgr/templates/register.html:33 msgid "Required" msgstr "" #: acct_mgr/templates/register.html:63 msgid "Optional" msgstr "" #: acct_mgr/templates/register.html:65 msgid "Name:" msgstr "" #: acct_mgr/templates/register.html:76 msgid "Create account" msgstr "" #: acct_mgr/templates/reset_password.html:14 #: acct_mgr/templates/reset_password.html:24 msgid "Reset Password" msgstr "" #: acct_mgr/templates/reset_password.html:28 msgid "Already logged in" msgstr "" #: acct_mgr/templates/reset_password.html:29 msgid "" "You're already logged in. If you need to change\n" " your password please use the\n" " [1:Account Preferences] page." msgstr "" #: acct_mgr/templates/reset_password.html:35 #, python-format msgid "" "A new password\n" " has been emailed to you at %(email)s ." msgstr "" #: acct_mgr/templates/reset_password.html:40 msgid "" "If you've forgotten your password, enter your username and\n" " email address below and you'll be emailed a new password." msgstr "" #: acct_mgr/templates/reset_password.html:63 msgid "Reset password" msgstr "" #: acct_mgr/templates/user_table.html:21 msgid "Name" msgstr "" #: acct_mgr/templates/user_table.html:22 msgid "Email" msgstr "" #: acct_mgr/templates/user_table.html:23 msgid "Last Login" msgstr "" #: acct_mgr/templates/user_table.html:41 msgid "Permanently locked" msgstr "" #: acct_mgr/templates/verify_email.html:14 #: acct_mgr/templates/verify_email.html:25 msgid "Verify Email" msgstr "" #: acct_mgr/templates/verify_email.html:27 #, python-format 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 "" #: acct_mgr/templates/verify_email.html:30 msgid "" "You can [1:change your\n" " email address], if it is incorrect." msgstr "" #: acct_mgr/templates/verify_email.html:35 msgid "Verification Token:" msgstr "" #: acct_mgr/templates/verify_email.html:40 msgid "Verify" msgstr "" #: acct_mgr/templates/verify_email.html:42 msgid "Resend Email" msgstr "" trac-accountmanager-0.5~r16056/acct_mgr/tests/0000755000175500017550000000000013021456450020731 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/tests/model.py0000644000175500017550000001307713021456450022413 0ustar debacledebacle# -*- 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 Cookie import SimpleCookie as Cookie from trac.test import EnvironmentStub, Mock from trac.web.session import Session from acct_mgr.model import get_user_attribute, set_user_attribute, \ last_seen, user_known 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) incookie = Cookie() incookie['trac_session'] = '123456' self.req = Mock(authname=bool(authenticated) and user or 'anonymous', args=args, base_path='/', chrome=dict(warnings=list()), href=Mock(prefs=lambda x: None), incookie=incookie, outcookie=Cookie(), redirect=lambda x: None) 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.keys()), 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)) def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(ModelTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trac-accountmanager-0.5~r16056/acct_mgr/tests/__init__.py0000644000175500017550000000264213021456450023046 0ustar debacledebacle# -*- 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 unittest try: import twill, subprocess INCLUDE_FUNCTIONAL_TESTS = True except ImportError: INCLUDE_FUNCTIONAL_TESTS = False def test_suite(): from acct_mgr.tests import admin, api, db, guard, htfile, model, register from acct_mgr.tests import util from acct_mgr.opt.tests import test_suite as opt_test_suite suite = unittest.TestSuite() suite.addTest(admin.test_suite()) suite.addTest(api.test_suite()) suite.addTest(db.test_suite()) suite.addTest(guard.test_suite()) suite.addTest(htfile.test_suite()) suite.addTest(model.test_suite()) suite.addTest(register.test_suite()) suite.addTest(util.test_suite()) suite.addTest(opt_test_suite()) # if INCLUDE_FUNCTIONAL_TESTS: # from acct_mgr.tests.functional import suite as functional_suite # suite.addTest(functional_suite()) return suite if __name__ == '__main__': import sys if '--skip-functional-tests' in sys.argv: sys.argv.remove('--skip-functional-tests') INCLUDE_FUNCTIONAL_TESTS = False unittest.main(defaultTest='test_suite') trac-accountmanager-0.5~r16056/acct_mgr/tests/db.py0000644000175500017550000000737513021456450021704 0ustar debacledebacle# -*- 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 acct_mgr.db import SessionStore 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(unittest.makeSuite(HtDigestTestCase)) suite.addTest(unittest.makeSuite(HtPasswdTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trac-accountmanager-0.5~r16056/acct_mgr/tests/functional/0000755000175500017550000000000013014744725023102 5ustar debacledebacletrac-accountmanager-0.5~r16056/acct_mgr/tests/functional/testcases.py0000644000175500017550000003042413014744725025455 0ustar debacledebacle# -*- 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 from trac.tests.notification import parse_smtp_message from acct_mgr.tests.functional import * class TestFormLoginAdmin(FunctionalTwillTestCaseSetup): def runTest(self): """Login with test user 'admin'""" self._tester.login('admin') self._tester.logout() class TestFormLoginUser(FunctionalTwillTestCaseSetup): 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') 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("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 with that name 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'], '[%s] New user registration: %s' % ( 'testenv%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('Notice: An email has been sent to ' '%s with a token to verify your new ' 'email address' % user_email) self._tester.go_to_front() tc.find('Warning: Your permissions have been ' 'limited until you 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 = base64.decodestring(body).splitlines() token = [l.split() for l in blines if 'Verification Token' in l][0][-1] tc.find('Logout') # User is logged in from previous test self._tester.go_to_front() tc.find('Warning: Your permissions have been ' 'limited until you verify your email ' 'address') 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: Your permissions have been ' 'limited until you verify your email' ' address') 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'], '[%s] Password reset for user: %s' % ( 'testenv%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'], '[%s] Trac password reset for user: %s' % ( 'testenv%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 = base64.decodestring(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("You are required to change password because of a recent " "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) tc.follow('Browse Source') tc.url(forced_passwd_change_url) # Now, let's change his password body = base64.decodestring(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("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'], '[%s] Deleted User: %s' % ( 'testenv%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') 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('Notice: An email has been sent to ' '%s with a token to verify your new ' 'email address' % email_address) self._tester.go_to_front() tc.notfind('Warning: Your permissions have been ' 'limited until you verify your email ' 'address') def test_suite(): suite = FunctionalTestSuite() suite.addTest(TestFormLoginAdmin()) 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') trac-accountmanager-0.5~r16056/acct_mgr/tests/functional/testenv.py0000644000175500017550000001122212734605061025137 0ustar debacledebacle# -*- 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 from subprocess import call, Popen from trac.admin import console from trac.web import standalone from trac.tests.functional.compat import close_fds from trac.tests.functional.svntestenv import SvnFunctionalTestEnvironment from acct_mgr.pwhash import mkhtpasswd from acct_mgr.tests.functional import logfile from acct_mgr.tests.functional import tc, ConnectError from acct_mgr.tests.functional.smtpd import AcctMgrSMTPThreadedServer class AcctMgrFuntionalTestEnvironment(SvnFunctionalTestEnvironment): def __init__(self, dirname, port, url): super(AcctMgrFuntionalTestEnvironment, self).__init__(dirname, port, url) self.smtp_port = self.port + os.getpid() % 1000 self.smtpd = AcctMgrSMTPThreadedServer(self.smtp_port) config = self.get_trac_environment().config # Enabled Account Manager config.set('components', 'acct_mgr.*', 'enabled') # Disable trac's LoginModule config.set('components', 'trac.web.auth.LoginModule', 'disabled') # Setup Account Manager config.set('account-manager', 'password_file', self.htpasswd) config.set('account-manager', 'password_format', 'htpasswd') config.set('account-manager', 'password_store', 'HtPasswdStore') # Setup Notification config.set('notification', 'smtp_enabled', 'true') config.set('notification', 'smtp_from', 'testenv%s@localhost' % self.port) config.set('notification', 'smtp_port', self.smtp_port) config.set('notification', 'smtp_server', 'localhost') config.set('project', 'url', self.url) config.set('project', 'admin', 'testenv%s@localhost' % self.port) config.set('trac', 'base_url', self.url) config.save() def start(self): """Starts the webserver""" if 'FIGLEAF' in os.environ: exe = os.environ['FIGLEAF'] else: exe = sys.executable server = Popen([exe, standalone.__file__, "--port=%s" % self.port, "-s", "--hostname=localhost", self.tracdir], stdout=logfile, stderr=logfile, close_fds=close_fds, cwd=self.command_cwd, ) self.pid = server.pid # Verify that the url is ok timeout = 30 while timeout: try: tc.go(self.url) break except ConnectError: time.sleep(1) timeout -= 1 else: raise Exception('Timed out waiting for server to start.') tc.url(self.url) self.smtpd.start() def stop(self): super(AcctMgrFuntionalTestEnvironment, self).stop() self.smtpd.stop() def create(self): """Create a new test environment; Trac, Subversion, authentication.""" if os.mkdir(self.dirname): raise Exception('unable to create test environment') repodir = self.repo_path_for_initenv() if call(["svnadmin", "create", repodir], stdout=logfile, stderr=logfile, close_fds=close_fds): raise Exception('unable to create subversion repository') self._tracadmin('initenv', 'testenv%s' % self.port, 'sqlite:db/trac.db', 'svn', repodir) if os.path.exists(self.htpasswd): os.unlink(self.htpasswd) self.adduser('admin') self.adduser('user') self._tracadmin('permission', 'add', 'admin', 'TRAC_ADMIN') # Setup Trac logging env = self.get_trac_environment() env.config.set('logging', 'log_type', 'file') env.config.save() def adduser(self, user): """Add a user to the environment. Password is the username.""" f = open(self.htpasswd, 'a') f.write('%s:%s\n' % (user, mkhtpasswd(user))) f.close() def _tracadmin(self, *args): """Internal utility method for calling trac-admin""" retval = call([sys.executable, console.__file__, self.tracdir] + list(args), stdout=logfile, stderr=logfile, close_fds=close_fds, cwd=self.command_cwd) if retval: raise Exception('Failed with exitcode %s running trac-admin ' \ 'with %r' % (retval, args)) trac-accountmanager-0.5~r16056/acct_mgr/tests/functional/__init__.py0000644000175500017550000000447512006037251025212 0ustar debacledebacle# -*- 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 unittest from trac.test import TestSetup from trac.tests.functional import twill, b, tc, internal_error, ConnectError from trac.tests.functional import FunctionalTestCaseSetup as \ TracFunctionalTestCaseSetup from trac.tests.functional import FunctionalTwillTestCaseSetup from trac.tests.functional.tester import FunctionalTester import acct_mgr # Setup these vars here because they will be used on the following imports acct_mgr_source_tree = os.path.normpath( os.path.join(acct_mgr.__file__, '..', '..')) # testing.log gets any unused output from subprocesses logfile = open(os.path.join(acct_mgr_source_tree, 'testing.log'), 'w') # functional-testing.log gets the twill output twill.set_output(open(os.path.join(acct_mgr_source_tree, 'functional-testing.log'), 'w')) from acct_mgr.tests.functional.testenv import AcctMgrFuntionalTestEnvironment from acct_mgr.tests.functional.tester import AcctMgrFunctionalTester class FunctionalTestSuite(TestSetup): def setUp(self, port=None): if port == None: port = 8000 + os.getpid() % 1000 dirname = "testenv" else: dirname = "testenv%s" % port dirname = os.path.join(acct_mgr_source_tree, dirname) baseurl = "http://localhost:%s" % port self._testenv = AcctMgrFuntionalTestEnvironment(dirname, port, baseurl) self._testenv.start() self._tester = AcctMgrFunctionalTester(baseurl, self._testenv.repo_url()) self.fixture = (self._testenv, self._tester) def tearDown(self): self._testenv.stop() class FunctionalTestCaseSetup(TracFunctionalTestCaseSetup): def setUp(self): self._testenv, self._tester = self.fixture self._smtpd = self._testenv.smtpd def suite(): from acct_mgr.tests.functional.testcases import suite suite = suite() return suite if __name__ == '__main__': unittest.main(defaultTest='suite') trac-accountmanager-0.5~r16056/acct_mgr/tests/functional/smtpd.py0000644000175500017550000000623013014744725024604 0ustar debacledebacle# -*- 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 trac.tests.notification import SMTPThreadedServer, SMTPServerStore class NonForgetingSMTPServerStore(SMTPServerStore): """ 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 sender = None message = None recipients = None messages = {} def reset(self, args): if self.message: for recipient in self.recipients: self.messages[recipient] = {} self.messages[recipient]['recipients'] = self.recipients self.messages[recipient]['sender'] = self.sender self.messages[recipient]['message'] = self.message self.sender = None self.recipients = [] self.message = None def full_reset(self): self.messages = {} self.sender = None self.recipients = [] self.message = None class AcctMgrSMTPThreadedServer(SMTPThreadedServer): """ Run a SMTP server for a single connection, within a dedicated thread """ # We override trac's SMTPThreadedServer in order to use our own mail store def __init__(self, port): SMTPThreadedServer.__init__(self, port) # Override the store with out own self.store = NonForgetingSMTPServerStore() 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() trac-accountmanager-0.5~r16056/acct_mgr/tests/functional/tester.py0000644000175500017550000000326312705134031024753 0ustar debacledebacle# -*- 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 acct_mgr.tests.functional import * class AcctMgrFunctionalTester(FunctionalTester): def __init__(self, url, repo_url): super(AcctMgrFunctionalTester, self).__init__(url) # Don't stay logged in as admin. self.logout() 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 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) trac-accountmanager-0.5~r16056/acct_mgr/tests/guard.py0000644000175500017550000002061413021456450022410 0ustar debacledebacle# -*- 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 Cookie import SimpleCookie as Cookie from time import sleep from trac.test import EnvironmentStub, Mock from trac.util.datefmt import to_datetime, to_timestamp from trac.web.session import Session from acct_mgr.guard import AccountGuard 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) incookie = Cookie() incookie['trac_session'] = '123456' req = Mock(authname=bool(authenticated) and user or 'anonymous', args=args, base_path='/', chrome=dict(warnings=list()), href=Mock(prefs=lambda x: None), incookie=incookie, outcookie=Cookie(), redirect=lambda x: None) 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 attemps. 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(unittest.makeSuite(AccountGuardTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trac-accountmanager-0.5~r16056/acct_mgr/tests/util.py0000644000175500017550000000406212734607153022272 0ustar debacledebacle# -*- 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 unittest from datetime import datetime from acct_mgr.util import pretty_precise_timedelta class UtilTestCase(unittest.TestCase): def test_pretty_precise_timedelta(self): yesterday = datetime(2012, 12, 14) today = datetime(2012, 12, 15) tomorrow = datetime(2012, 12, 16) # Trac core compatible signature usage. self.assertEqual(pretty_precise_timedelta(None), '') self.assertEqual(pretty_precise_timedelta(None, None), '') self.assertEqual(pretty_precise_timedelta(today, today), '') self.assertEqual(pretty_precise_timedelta(today, tomorrow), '1 day') self.assertEqual(pretty_precise_timedelta(today, yesterday), '1 day') self.assertEqual(pretty_precise_timedelta(tomorrow, yesterday), '2 days') # Alternative `diff` keyword argument usage. self.assertEqual(pretty_precise_timedelta(None, diff=0), '') # Use ngettext with default locale (English). self.assertEqual(pretty_precise_timedelta(None, diff=1), '1 second') self.assertEqual(pretty_precise_timedelta(None, diff=2), '2 seconds') # Limit resolution. self.assertEqual(pretty_precise_timedelta(None, diff=3, resolution=4), 'less than 4 seconds') self.assertEqual(pretty_precise_timedelta(None, diff=86399), '23:59:59') self.assertEqual(pretty_precise_timedelta(None, diff=86400), '1 day') self.assertEqual(pretty_precise_timedelta(None, diff=86401), '1 day 1 second') def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(UtilTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='test_suite') trac-accountmanager-0.5~r16056/acct_mgr/tests/register.py0000644000175500017550000004743313014744725023151 0ustar debacledebacle# -*- 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 Cookie import SimpleCookie as Cookie from genshi.core import Markup from trac.perm import PermissionCache, PermissionSystem from trac.test import EnvironmentStub, Mock, MockPerm from trac.web.session import Session from acct_mgr.api import AccountManager from acct_mgr.db import SessionStore from acct_mgr.htfile import HtPasswdStore from acct_mgr.model import set_user_attribute from acct_mgr.register import BasicCheck, BotTrapCheck, EmailCheck from acct_mgr.register import EmailVerificationModule from acct_mgr.register import GenericRegistrationInspector, RegExpCheck from acct_mgr.register import RegistrationError, RegistrationModule from acct_mgr.register import UsernamePermCheck class _BaseTestCase(unittest.TestCase): def setUp(self): 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 = Mock(authname='anonymous', args=args) self.req.path_info = '/register' self.req.perm = PermissionCache(self.env) def tearDown(self): shutil.rmtree(self.env.path) class DummyRegInspectorTestCase(_BaseTestCase): """Check GenericRegistrationInspector properties via child classes.""" def setUp(self): _BaseTestCase.setUp(self) class DummyRegistrationInspector(GenericRegistrationInspector): def validate_registration(self, req): if req.args.get('username') == 'dummy': raise RegistrationError('Dummy check error') return self.check = DummyRegistrationInspector(self.env) def test_bad_check(self): class BadRegistrationInspector(GenericRegistrationInspector): """Child class, that is left as a pure copy of its base. Bad check class example, because check method is not implemented. """ check = BadRegistrationInspector(self.env) # Default (empty) response for providing additional fields is safe. field_res = check.render_registration_fields(self.req, {}) self.assertEqual(len(field_res), 2) self.assertEqual((Markup(field_res[0]), field_res[1]), (Markup(''), {})) # Check class without 'validate_registration' implementation fails. self.assertRaises(NotImplementedError, check.validate_registration, self.req) def test_dummy_check(self): # Check class with 'validate_registration' passes this test. self.assertEqual(self.check.validate_registration(self.req), None) def test_check_error(self): self.req.args['username'] = 'dummy' try: self.check.validate_registration(self.req) # Shouldn't reach that point. self.assertTrue(False) except RegistrationError, e: # Check error properties in detail. self.assertEqual(e.message, 'Dummy check error') self.assertEqual(e.title, 'Registration Error') 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((Markup(field_res[0]), field_res[1]), (Markup(''), {})) # 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('