Compare commits

...

422 Commits

Author SHA1 Message Date
David Goodwin 864065cd37 fix MailboxHandler -> adding mailbox with empty quota field 4 years ago
David Goodwin 192c797fe1 add a support block to compoer.json 4 years ago
David Goodwin 052f2faffb do not fail on error from coveralls 4 years ago
David Goodwin 85e15790bb should fix: #351 4 years ago
Christian Boltz ad4142134a
merge __parseParams() into parseParams() 4 years ago
Christian Boltz 9833a8f289
whitespace fix in __parseParams() 4 years ago
Christian Boltz 4e9e3db75d
Fix parameter parsing for '-1'
'--quota -1' gets parsed as two options ("quota" and "1"), but it's
meant to be "quota => -1".

Make sure '-1' is considered as a value, not as an option.

Also get rid of unset()'ing $params[$i] and (now?) superfluous recursive
calls to __parseParams() to make the code less confusing.
4 years ago
David Goodwin fc464d6e69 update INSTALL.TXT - see also #349 4 years ago
David Goodwin df9a400ea2 remove debug stuff 4 years ago
David Goodwin fd48714615 fix issue reported with __LANG.$var - 844840c6a8 (commitcomment-38653465) 4 years ago
Christian Boltz 44c3ac5e20
language-update.sh: silence warning about undefined $CONF variable
This warning was for example

PHP Notice:  Undefined variable: CONF in .../languages/en.lang on line 184

and is caused by some texts that include $CONF['admin_name']
4 years ago
David Goodwin be0105b33e
Merge pull request #348 from Jolly-Pirate/patch-1
Flush privileges
4 years ago
drakos f17c722f0b
Flush privileges
Must `FLUSH PRIVILEGES;` after granting.
4 years ago
David Goodwin 844840c6a8 simplify Config use; drop support for dotty name notation which we are not using 4 years ago
David Goodwin e4158d6d7e psalm fix 4 years ago
David Goodwin f8415eef2a remove cache suppression 4 years ago
David Goodwin ffc7787b76 psalm fix 4 years ago
David Goodwin 3cd62f9f4f update to phpunit v8, try changing coveralls library, update github action 4 years ago
David Goodwin 5e8ce2b5b0 move to php-parallel-lint/php-parallel-lint rather than abandoned jakuk-onderka/php-parallel-lint 4 years ago
David Goodwin c69211ca5f Merge remote-tracking branch 'origin/master' 4 years ago
David Goodwin eea72e0019 check for PDO modules in setup.php, not old style functions 4 years ago
Christian Boltz 3b704715dc
setup.php: replace last mentions of php5 with php7 4 years ago
David Goodwin dec4b38f35 improve langauge checks (remove unnecessary is_string check) 4 years ago
Christian Boltz 531a52e053
remove superfluous code in check_language()
dd52a98d43 added honoring POST['lang'] and
COOKIE['lang'] even if $_SERVER['HTTP_ACCEPT_LANGUAGE'] is not set.
This also means we can drop the now-duplicate check in the code section
handling $_SERVER['HTTP_ACCEPT_LANGUAGE'].
4 years ago
Christian Boltz 4d10a2c4bb
remove obsolete translation markers from tr.lang 4 years ago
David Goodwin d81363541a fix psalm 4 years ago
David Goodwin 338fb8c564 Fix quota storage; see https://github.com/postfixadmin/postfixadmin/issues/342 4 years ago
David Goodwin d3295a59bb format 4 years ago
David Goodwin d540d904db cast mailbox['quota'] to be integer.
see:  https://github.com/postfixadmin/postfixadmin/issues/342
4 years ago
David Goodwin 3303f25bcc add some php 7+ array type hints. 4 years ago
David Goodwin 1c0fd02323 composer format time 4 years ago
David Goodwin d6869a4d35 update CHANGELOG.TXT, some stuff probably missing 4 years ago
David Goodwin 3b9d8f867e merge sha512.b64 encrypt support - see https://github.com/postfixadmin/postfixadmin/issues/58 4 years ago
David Goodwin 48e236ffc0 use hash_equals for login - see: https://github.com/postfixadmin/postfixadmin/issues/58 4 years ago
David Goodwin dd52a98d43 prefer POST/COOKIE lang over browser http header - see: https://github.com/postfixadmin/postfixadmin/issues/28 4 years ago
David Goodwin 8f20c96278 see: https://github.com/postfixadmin/postfixadmin/issues/101 - in Debian Buster, /var/lock is writeable by anyone, /var/run is not... both are tmpfs 4 years ago
David Goodwin fefe3f7df5 default domain_quota_default to -1 if not specified - see https://github.com/postfixadmin/postfixadmin/issues/299 4 years ago
David Goodwin d2b8f7ac15 might fix: https://github.com/postfixadmin/postfixadmin/issues/306 4 years ago
David Goodwin 8754af58cb fix undefined variables (psalm) 4 years ago
David Goodwin 3b1fffdf22 merge in patch from @jackdeguest - see https://github.com/postfixadmin/postfixadmin/issues/337 4 years ago
David Goodwin 5e1a4e27dd ensure edit works 4 years ago
David Goodwin e49c25139e ignore coveralls erroring 4 years ago
David Goodwin 7f58163d65 update README.md 4 years ago
David Goodwin 70fe1f93f2 rename build 4 years ago
David Goodwin 50bbae62f4
switch from travis to github action 4 years ago
David Goodwin 591ea333ea drop caching; we as we do not add composer.lock to git anyway 4 years ago
David Goodwin 22bb34ff60 try this 4 years ago
David Goodwin a00e551a8a try adding composer caching 4 years ago
David Goodwin 71966ce917 Revert "drop coveralls"
This reverts commit b6c7d1418d.
4 years ago
David Goodwin 3809cf905f rinse repeat 4 years ago
David Goodwin fddd450df0 rinse, repeat 4 years ago
David Goodwin cd6386bdea - => _ 4 years ago
David Goodwin 6c3d595c0b coverage.xml 4 years ago
David Goodwin e661f2445a coveralls test - see af8a5e1ebf/.github/workflows/build.yml and https://github.com/php-coveralls/php-coveralls/issues/273 4 years ago
David Goodwin b6c7d1418d drop coveralls 4 years ago
David Goodwin 2444b0c16b Revert "try updating coveralls"
This reverts commit cffcd1c4ec.
4 years ago
David Goodwin cffcd1c4ec try updating coveralls 4 years ago
David Goodwin 79ee5f82cb add a far better MailboxHandler test case 4 years ago
David Goodwin 01b4d6c587 cleanup db after running 4 years ago
David Goodwin 30f97c97ee avoid: A non-numeric value encountered errors from no quota being specified 4 years ago
David Goodwin 6a7abbe663 fix formatting 4 years ago
David Goodwin 28a3f5f157 better testing 4 years ago
David Goodwin a4afebbe77 verify ssl certs when connecting to the db by default (we also do if this setting is not present) 4 years ago
David Goodwin 6edbda45e2
Merge pull request #321 from adrium/transport-map-support
POSTFIX_CONF.txt: Add transport map support
4 years ago
David Goodwin 1ecada175c and support whether we verify ssl certs; default to true 4 years ago
David Goodwin 212415db56 document better 4 years ago
David Goodwin 4cbd82d750 remove empty settings so not all SSL things are required for using SSL with MySQL 4 years ago
David Goodwin 2a1383ee2e give the browser a hint that we want a new password for new admin accounts - see https://github.com/postfixadmin/postfixadmin/issues/331 4 years ago
David Goodwin 5b16f4a483 composer build 4 years ago
David Goodwin 9dfc866edd composer format 4 years ago
David Goodwin eb5fcf829e
Merge pull request #332 from kr1pt0ph0b14/patch-1
Update tr.lang
4 years ago
Özgür Kazanççı 97c2b582a3
Update tr.lang
The file was a big mess, Turkish exclusive chars were completely corrupted, gramatically wrong words in the translation such as;
Not "Hiçbirşey" but "Hiçbir şey".
Not "eposta" but "e-posta" and/or "E-posta".
Not "Şuanki" but "Şu anki"
Not "ddeðiþtirmek" but "değiştirmek" (Wrong/corrupted Turkish characters)
Not "Yönlendirmen deðiþtir" but "Yönlendirme değiştir" (Wrong/corrupted Turkish characters)

As well as a lot of lines weren't translated -yet-. So here it is.

Regards,
Özgür Kazancci
4 years ago
David Goodwin 268daa892d
Merge pull request #330 from veitw/dovecot-quota2-docs
Update dovecot documentation
4 years ago
David Goodwin 6a10c869e5 allow existance of pdo for us to proceed with setup 4 years ago
Veit eb83a0aa3f Update dovecot documentation
- added quota2 table dict template for dovecot 1.2 and newer to dovecot
  documentation
4 years ago
David Goodwin 95d92a2345 psalm fix: rewrite to avoid php error (@) suppression 4 years ago
David Goodwin ec2fbfd87f skip this query - for a new database it will run before the domain table has been created and just error 4 years ago
David Goodwin fd35dada38 try and be consistent with MySQL table types/collations - see https://github.com/postfixadmin/postfixadmin/issues/327 4 years ago
Christian Boltz bee61f329b
Only show password expiration if enabled in config 4 years ago
Christian Boltz 3d0add075a
Add empty $CONF['database_socket'] to avoid warnings
... about reading an undefined config option
4 years ago
David Goodwin 666bb0218a
Merge pull request #324 from smhessenauer/master
fetchmail dovecot delivery
4 years ago
Stefan M. Hessenauer 416a71d604 short documentation added, path to deliver as configuration option 4 years ago
David Goodwin 80a0faa633 specify a default table collation / charset for MySQL - might help fix https://github.com/postfixadmin/postfixadmin/issues/327 4 years ago
David Goodwin cabd97ff17
Merge pull request #325 from Slamdunk/php_74
[Travis] Test against PHP 7.4
4 years ago
David Goodwin 036245063e drop references to magic_quotes; see: https://github.com/postfixadmin/postfixadmin/pull/325 4 years ago
Filippo Tessarotto fc3cd79f21 [Travis] Test against PHP 7.4 4 years ago
Stefan M. Hessenauer 352ae80395 fetchmail dovecot delivery 4 years ago
David Goodwin 5f772afe14 dev improvements
bump minimum php variant to 7.0
 update phpunit.xml
 switch to shardj/zf1-future rather than unsupported zf1
 try running tests by default in github
4 years ago
David Goodwin 1ad184641d php7.4 / psalm fixes 4 years ago
David Goodwin 882b6835ed just wondering 4 years ago
David Goodwin 038a08d838 touch config.local.php perhaps 4 years ago
David Goodwin c0bd763c53 another replacement of string{x} with string[x] 4 years ago
David Goodwin 55661a80c6 see ticket:318 - try and fix IT translation issue 4 years ago
David Goodwin aa37ab57e6 stop using { } for string character access (use [ ] instead) - see https://www.php.net/manual/en/language.types.string.php#language.types.string.substr 4 years ago
David Goodwin 79c2e77a00 should fix: https://github.com/postfixadmin/postfixadmin/issues/323 4 years ago
David Goodwin d0f254faee mkdir templates_c 4 years ago
David Goodwin 6582678173
test 4 years ago
Adrian 47618bf5a3 POSTFIX_CONF.txt: Add transport map support 4 years ago
David Goodwin 52e0d3e4b0 work around nano highlighting - see https://github.com/postfixadmin/postfixadmin/issues/320 4 years ago
David Goodwin 4b0b6904ca
Merge pull request #317 from alexandregz/master
Added galician language
5 years ago
Alexandre Espinosa Menor 48e07e7a5f
Added galician language 5 years ago
David Goodwin d6bbecaf45 change row to r everywhere; see : https://sourceforge.net/p/postfixadmin/discussion/676076/thread/616c1d25/?limit=25#7da0 - hopefully removing "row" which might be a reserved keyword for some databases etc 5 years ago
David Goodwin 6a4b7ec163
Merge pull request #316 from koenr/patch-1
Update nl.lang
5 years ago
koenr 8828d28bbc
Update nl.lang
typo in change password mail subject line
5 years ago
Christian Boltz 06f57767bd
DOVECOT.TXT: update user_query for postgresql and some cleanup
- update postgresql user_query to include quota_rule
- drop partial user_query without quota_rule
- some whitespace fixes
5 years ago
Christian Boltz 125113d83c
POSTFIX_CONF.txt: make queries pgsql-compatible
... by changing WHERE ...=1 to WHERE ...='1' which should work with both
mysql and postgresql.

Reported by xpoint on IRC.
5 years ago
Christian Boltz 115ff22761
INSTALL.TXT: mention an Alias as alternative for a symlink
See also the question on
https://sourceforge.net/p/postfixadmin/discussion/676076/thread/1074971cc8/
5 years ago
David Goodwin c1bdfe5432 fix travis / autoloading smarty etc 5 years ago
David Goodwin bcae218cbb composer format time 5 years ago
David Goodwin 87824ef970 psalm fixes/workarounds; require PHP 5.6+ 5 years ago
David Goodwin 1df7f15d40 require PHP 5.6+ 5 years ago
David Goodwin 4aa3110712 phpdoc/psalm fixes 5 years ago
David Goodwin ccd74cc506
Merge pull request #308 from dsamoshin/icon_ru
Favicon config and ru_lang
5 years ago
gotty 13549cea0f Favicon config and ru_lang:
1. Favicon configuration of the project:
  a. Fixed incorrect link to favicon from the subfolder /users/
  b. Added ability to set favicon via config
2. Completed translation of all string constants into Russian language.
5 years ago
David Goodwin 61cb429845 revert psalm; fix issues later 5 years ago
David Goodwin b8d7c0513f psalm fix 5 years ago
David Goodwin e20b2cacdb psalm fix 5 years ago
David Goodwin 174b874c56 allow psalm to update
phpdoc fix
5 years ago
David Goodwin 9526e68e3e perhaps this will help https://github.com/postfixadmin/postfixadmin/issues/305 5 years ago
David Goodwin 907bd7ee46 update Smarty to v3.1.33 - "This release does cover security issue CVE-2018-16831, other bug fixes (see changelog.txt) and adds a new feature of the {capture} tag (see NEW_FEATURES.txt)." 5 years ago
David Goodwin 7360407b73 see: https://github.com/postfixadmin/postfixadmin/issues/302 - check if the session key exists; and if not show something that may help 5 years ago
David Goodwin 58b064f1c8
Merge pull request #298 from leitmedium/master
remove double libmime-encwords-perl install call in virtual vacation …
5 years ago
Caspar Clemens Mierau 9c4caf1045 remove double libmime-encwords-perl install call in virtual vacation howto 5 years ago
David Goodwin c66755a0da remove test for code that probably does not work 5 years ago
David Goodwin cd8cf289b4 more empty tests 5 years ago
David Goodwin a03317e088 drop codecov 5 years ago
David Goodwin f61cb513ae might fix pg failing test? 5 years ago
David Goodwin 0e9a1ff0ff emptyish tests 5 years ago
David Goodwin f4a5155f7a codecov removed 5 years ago
David Goodwin a485a2d861 cleanup after test 5 years ago
David Goodwin 946c47dd66 postgres requires fkeys exist 5 years ago
David Goodwin 2742849e7b reformat 5 years ago
David Goodwin 958df260ec mostly empty test 5 years ago
David Goodwin 7965a83aff tighten psalm checks even more 5 years ago
David Goodwin 34e6f7829e tighten psalm checks; fix errors 5 years ago
David Goodwin 034a50836c tighten psalm checks 5 years ago
David Goodwin a603d36224 format 5 years ago
David Goodwin 29d990f5f4 fix page browser test for sqlite; see #87 and #161 5 years ago
David Goodwin 71e7859c91 see #161 and #87 - unit test that seems to trigger this bug 5 years ago
David Goodwin f36ba9b4c2 format 5 years ago
David Goodwin 28bef9e136 output $sqlite file .... 5 years ago
David Goodwin 4081267cb2 fix phpdoc; throw exception on error within phpunit - helps testing 5 years ago
David Goodwin f7c7e35b34 fix formatting 5 years ago
David Goodwin f8713651cc explode if $run_dir is not specified; make a config setting and perhaps shift the onus onto the user rather than having to deal with tmpfiles.d etc
See: https://github.com/postfixadmin/postfixadmin/issues/78
5 years ago
David Goodwin 80418e6412 try and avoid hitting : https://github.com/postfixadmin/postfixadmin/issues/51 5 years ago
David Goodwin 17a50c51f1 drop some dies; use Exception and catch after dispatch() - see #197 5 years ago
David Goodwin 2ff05bc737 typo 5 years ago
David Goodwin 9cd7dac187 initial attempt at trying to return an exit value within the cli 5 years ago
David Goodwin 284d4b2eb0
Merge pull request #295 from Corvan/platform-independent
Update postfixadmin-cli
5 years ago
Lars Liedtke 0c94760828
Update postfixadmin-cli
Make this script platform independent to be usable under e.g. FreeBSD, where bash is located in /usr/local/bin/bash and thus the script fails.
5 years ago
David Goodwin 758ccb9a19 add note in config for mailbox subdir creation requiring imap extension 5 years ago
David Goodwin 34cf66110e see https://github.com/postfixadmin/postfixadmin/issues/251 - avoid things breaking if imap_open is not present 5 years ago
David Goodwin 3551710b82
Merge pull request #294 from wuuuduu/vacation_from_mx_get_smtp_server
Find MX record of receiver and use it
5 years ago
wuuuduu 86852b3dbd Find MX record of receiver and use it 5 years ago
David Goodwin 60c44a3ca3
Merge pull request #290 from akhilin/master
a small mistake in user_query with quota
5 years ago
Akhil Jalagam 53cefa1107
[NEW BADGE] freenode irc badge at #postfixadmin 5 years ago
Akhil Jalagam 3295334dd7
[NEW BADGE] repo size added 5 years ago
Akhil Jalagam 0f64f22a7e
a small mistake in user_query with quota
mistake in user_query with quota enabled for dovecot 1.2+
It took two days for me to find this issue.

Thank you,
Akhil
5 years ago
David Goodwin bc273a97e4 Revert "apply patch for vacation body encoding - see #288"
This reverts commit c3d3a9dbc8.

See comment at: https://github.com/postfixadmin/postfixadmin/issues/288#issuecomment-522495422
5 years ago
David Goodwin e8fb276c2f
Merge pull request #289 from akhilin/master
Update DOVECOT.txt
5 years ago
Akhil Jalagam 1941f970bd
Update DOVECOT.txt
a small mistake in documentation for imap quota.
5 years ago
David Goodwin 6a89b9a363 composer format 5 years ago
David Goodwin bee5fcbe24 improve setup form - only display "add superadmin account" if setup password is configured; change verbs depending on context etc; see https://github.com/postfixadmin/postfixadmin/issues/263 5 years ago
David Goodwin fa27c7c8b7 reindent/reformat 5 years ago
David Goodwin 7b18d0386c
Merge pull request #287 from gabrielfin/fix-pagination
Fix pagination
5 years ago
David Goodwin 296fc2f48e silence psalm error - cast $show_password_fields to an int in model/MailboxHandler.php lines 33/34 5 years ago
David Goodwin c3d3a9dbc8 apply patch for vacation body encoding - see #288 5 years ago
David Goodwin a0b4e690b2 only load random_compat if PHP_VERSION is < 7.0 5 years ago
David Goodwin d788c6ac99
Merge pull request #285 from Nutomic/ssl-sendmail
Use TLS to send emails
5 years ago
Felix Ableitner 8ba1cf20a7 use config::bool instead of read_string 5 years ago
David Goodwin 55bf13298e
Merge pull request #286 from gabrielfin/master
Use percentage for quota levels
5 years ago
Unknown 88587f4cd3 Fix pagination 5 years ago
Unknown 7583decbcb Use percentage for quota levels in bootstrap theme 5 years ago
Gabriel c3065bdace Use percentage for quota levels 5 years ago
Felix Ableitner a46245eecc Add config option for TLS 5 years ago
Felix Ableitner 61ede42800 Send emails with TLS 5 years ago
David Goodwin 8b19ef21cf add default value for password_expiry (default to one year)
should fix: https://github.com/postfixadmin/postfixadmin/issues/280
5 years ago
David Goodwin c53d17fff7 support TRUE orFALSE strings just incase 5 years ago
David Goodwin 01477f0009
Merge pull request #277 from Nutomic/admin-smtp-password
Add option to use smtp password when sending admin emails (fixes #272)
5 years ago
Felix Ableitner 600248e955 Add option to use smtp password when sending admin emails (fixes #272) 5 years ago
Christian Boltz 55858bf3a0
Fix table names in gen_show_status()
... by using table_by_key() instead of reading $CONF directly.
Otherwise, $CONF['database_prefix'] gets ignored and the query tries to
use a wrong table name.

This fixes a bug introduced in d809e0fbf7
5 years ago
David Goodwin 651688c802 if we are generating passwords, there will only be one password value; so reduce the fields we check before deciding whether to update password_expiry - see https://github.com/postfixadmin/postfixadmin/issues/266 5 years ago
David Goodwin 1d1960a476 if CONF['generate_password'] == 'YES' then do not display password fields
Given we autogenerate a password ....
5 years ago
David Goodwin ae476950f2 try and avoid smarty complaining about no variable $conf - see https://github.com/postfixadmin/postfixadmin/issues/266 5 years ago
David Goodwin 3ff2436f2f try a bit harder to avoid non-numeric argument issues with $multiplier
(see https://github.com/postfixadmin/postfixadmin/issues/266 )
5 years ago
David Goodwin 8e2e4eb189 run: composer format 5 years ago
David Goodwin 03b9483204 default to providing a password_expiry datetime value - even if password_expiry is turned off - this should fix https://github.com/postfixadmin/postfixadmin/issues/280 5 years ago
David Goodwin 95429a6963 reindent, remove comment 5 years ago
David Goodwin 3322b43bb6 see: https://github.com/postfixadmin/postfixadmin/issues/282 - try and ensure local_part contains an @ on creating a mailbox 5 years ago
David Goodwin 78764578db update languages to include the mailbox local_part string 5 years ago
David Goodwin d64eadf609 try and stop $_SERVER[REQUEST_SCHEME] not being defined - see https://github.com/postfixadmin/postfixadmin/issues/279 5 years ago
David Goodwin cc19870923 drop function: db_connect_with_errors(); just throw from db_connect() if something goes wrong 5 years ago
David Goodwin 87746e6de8
Merge pull request #281 from Nutomic/db-exceptions
Dont swallow database connection exceptions
5 years ago
Felix Ableitner 5d0a587fe7 Dont swallow database connection exceptions 5 years ago
David Goodwin 31de6c6d66
Merge pull request #278 from HeavyThumper/master
list.tpl - fix lowercase typo for $CONF variable reference for quota …
5 years ago
HeavyThumper 16bf5cab7f
list.tpl - fix lowercase typo for $CONF variable reference for quota handling 5 years ago
David Goodwin 71402e9051 comment 5 years ago
David Goodwin ad858592f4 remove password_expiry logic from generic db_update function; the various *Handler classes should fix the password_expiry field already and this just breaks PgSQL; see #264 5 years ago
David Goodwin 7ed4df5459
Merge pull request #265 from r0l1/master
Allow Top-Level-Domain with 1 char
5 years ago
Roland Singer 23a7f1bfda allow TLD with 1 char 5 years ago
David Goodwin 3fc5c74040 drop old / invalid postfix paramaeters - see #262 5 years ago
David Goodwin d4d47e02cc .deb packaging: move php-imap from being a dependency to a suggestion - see https://github.com/postfixadmin/postfixadmin/issues/251 5 years ago
David Goodwin 684cf3d829
Merge pull request #255 from csware/quota-level
Make quota levels configurable
5 years ago
Sven Strickroth 56395709f3 Make quota levels configurable
Signed-off-by: Sven Strickroth <email@cs-ware.de>
5 years ago
David Goodwin 852a09f138 move version string output to only be shown to logged in users - see #252 5 years ago
David Goodwin dcef888587 token test coverage 5 years ago
David Goodwin 045a19ae33 re-format 5 years ago
David Goodwin 7ed57a0cda assume the db updates work if no exception was thrown 5 years ago
David Goodwin 9024dddf46 move password_expiration code into the MailboxHandler. 5 years ago
David Goodwin b8ee437169 add throw_exceptions parameter to db_update and db_insert. 5 years ago
David Goodwin df99e66b2d try and stop "A non-numeric value encountered in ..."; see #239 5 years ago
David Goodwin 4a084d91b5
Merge pull request #249 from mtdcr/scram-sha-1
pacrypt_dovecot: Don't blacklist SCRAM-SHA-1
5 years ago
Andreas Oberritter 000416c401 pacrypt_dovecot: Don't blacklist SCRAM-SHA-1
Actually it doesn't include the username at all. Fixes commit f444de4.
5 years ago
David Goodwin e9ed15143e add token MailboxHandler test 5 years ago
David Goodwin de5b739d4a drop unnecessary common.php 5 years ago
David Goodwin 28e687ff5b sqlite does not support NOW(), use a string comparison 5 years ago
David Goodwin 7718ca808d try adding code coverage things 5 years ago
David Goodwin 2a0f708529 relax version check for php-cs-fixer so it will work with php7.3 as well 5 years ago
David Goodwin 215daecf29
Merge pull request #248 from Slamdunk/patch-1
[Travis] Build also against PHP 7.3
5 years ago
Filippo Tessarotto 361f0ccb22
[Travis] Build also against PHP 7.3 5 years ago
David Goodwin 9ccf5250cd remove config dump 5 years ago
David Goodwin 81fed601a2 remove var_dumps 5 years ago
David Goodwin 06513c2a14 remove quotes around table name which is not necessary as table_by_key does this 5 years ago
David Goodwin 079462bb29 wrong password variable/key 5 years ago
David Goodwin 496657aa5d echo something helpful on db error when testing 5 years ago
David Goodwin d6fc337272 dump mysql config things; lets fumble about in the dark once again and see... 5 years ago
David Goodwin 2e87464fc8 initial attempt at connecting to mysql socket file through pdo 5 years ago
David Goodwin d30c122f37 possible handling of mysql socket file 5 years ago
David Goodwin 018f5d9e05 check output / travis fun 5 years ago
David Goodwin fe48b35cfd split multiple queries into single ones to keep pdo/prepared statements happy 5 years ago
David Goodwin 4cb36857da possibly better defaults/output 5 years ago
David Goodwin f52aa9929a re-format 5 years ago
David Goodwin 9cc04df973 move the password expiry date to be php generated so it works fine on all databases 5 years ago
David Goodwin 8632cbd1a9 improve documentation around the various crypt functions 5 years ago
David Goodwin 17a420152c use pdo/prepared statement for list-virtual + page browser 5 years ago
David Goodwin d95ee79b9a reformat 5 years ago
David Goodwin 69b9d9671c fix PaCrypt test 5 years ago
David Goodwin dcb60a670c try adding mysql + postgres support to tests 5 years ago
David Goodwin 4d7ac16bfb bump install instructions to 3.2.2 tag 5 years ago
David Goodwin 730a05cdd3 phpcs fix 5 years ago
David Goodwin ed99a46ec4 log if no mechanisms were used for password recovery 5 years ago
David Goodwin db4aecd23c typo fix 5 years ago
David Goodwin 237f34d38f
Merge pull request #246 from 8ctopus/master
updated installation instructions
5 years ago
8ctopus 47bbb7c2a3 updated: git checkout version 3.2.1 instead of 3.2 5 years ago
David Goodwin a05f87723f reformat 5 years ago
David Goodwin 28870e4b45 explode if there is no db connection made 5 years ago
David Goodwin 0afdb5619b fix tests 5 years ago
David Goodwin b4564958a1 phpdoc; touch sqlite file before trying to use it in tests 5 years ago
David Goodwin a71669fba8
Merge pull request #245 from 8ctopus/master
db_connect_with_errors() improvements for SQLite databases
5 years ago
8ctopus b37e3c859d added: installation instructions for SQLite 5 years ago
8ctopus 637220a3fb fixed: typos 5 years ago
8ctopus 5528d8be30 added: line break so $error_text is on its own line 5 years ago
8ctopus 4f2dab357c the directory the SQLite database is in must be writeable 5 years ago
hawk ceae3caa37 sqlite3 databases: check that the file exists and is writeable 5 years ago
David Goodwin 92d6259cd0 possibly fix PGSQL PDO DSN to be unicode aware; see #243 5 years ago
David Goodwin 76e30d1dd3
Merge pull request #244 from 8ctopus/master
fix setup db_connect_with_errors PDO exceptions were not caught
5 years ago
hawk c71dd25afa fix setup db_connect_with_errors PDO exceptions were not caught 5 years ago
David Goodwin 888524af99
Update INSTALL.TXT
add chcon note for centos etc.
5 years ago
David Goodwin 4d24ab7171 possibly update language files 5 years ago
David Goodwin 2cf73f704a $0 may not be in $PATH 5 years ago
David Goodwin 93a127d7f2 see https://github.com/postfixadmin/postfixadmin/issues/236 5 years ago
David Goodwin 63f63a58b7
Update INSTALL.md
add 1; for vacation.conf file
5 years ago
Christian Boltz 5bc85bec44
fix error message in Config::read_array(() 5 years ago
Christian Boltz acf20bbc9e
move comments to the beginning of upgrade.php 5 years ago
David Goodwin a2e2cdce8c
Update CHANGELOG.TXT 5 years ago
David Goodwin 66747337f9 fix formatting 5 years ago
David Goodwin 583b8958c7 psalm 5 years ago
David Goodwin 7f8fd5ec1a Merge branch 'master' into feature-try-pdo 5 years ago
David Goodwin 83a4ee39b0 more phpdoc 5 years ago
David Goodwin 26d769740c silence some psalm warnings 5 years ago
David Goodwin e9d12bf918 silence some psalm warnings 5 years ago
David Goodwin 7838e85ff0 fix formatting 5 years ago
David Goodwin 5db463b35c improve docs 5 years ago
David Goodwin 6225899863 Merge remote-tracking branch 'origin/master' into feature-try-pdo 5 years ago
David Goodwin e6666e0af0 attempt to improve installation instructions 5 years ago
David Goodwin cef2ba5598 Merge remote-tracking branch 'origin/master' into feature-try-pdo 5 years ago
David Goodwin fb1bffbbf9
Merge pull request #232 from volp1s/patch-1
Fix for MySQL 8
5 years ago
Luca e347b4677b
Fix for MySQL 8
The keyword ROW became reserved in MySQL 8.0.2
https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8-0-detailed-R
5 years ago
David Goodwin 570972944d Merge remote-tracking branch 'origin/master' into feature-try-pdo 5 years ago
David Goodwin 10446a0cad avoid: Fatal error: Uncaught UnexpectedValueException: RecursiveDirectoryIterator::__construct(. from psalm 5 years ago
David Goodwin 5d47b85b9d remove attribute that is in parent class 5 years ago
David Goodwin 5a9efc18f0 just disable psalm caching 5 years ago
David Goodwin 3da5b64677 stab in the dark 5 years ago
David Goodwin 9bb00499c7 stop caching vendor 5 years ago
David Goodwin 18312a8aaa formatting... 5 years ago
David Goodwin cc079b773f fix formatting 5 years ago
David Goodwin 020343999a
Merge pull request #221 from SuperVirus/fetchmail_different_source_port
Allow different port for fetchmail
5 years ago
David Goodwin 98536f03e8 fix sqlite upgrade check; remove test database between runs; ignore lib/array_column.php from linting 5 years ago
David Goodwin e26877f2f9 add almost forgotten file: array_column.php 5 years ago
David Goodwin 803e2342f8 fix psalm issues; reformat; rename new db functions 5 years ago
David Goodwin 1176c9ce78 reformat; fix some transition bugs 5 years ago
David Goodwin ea33d9951a try migrating to pdo 5 years ago
David Goodwin eb61141d2f
Merge pull request #230 from 8ctopus/setup-warning
add warning on setup over http connection
5 years ago
hawk 51320919fc add warning on setup over http connection 5 years ago
David Goodwin ccb000467d
Merge pull request #229 from 8ctopus/update-translation-fr
Update fr.lang
5 years ago
hawk 67010c86e3 Update fr.lang 5 years ago
David Goodwin a500d2557e fix indentation 5 years ago
David Goodwin d78fb1fbbd move to Shell 5 years ago
David Goodwin e5cacbec90 add missing attribute 5 years ago
David Goodwin 78276534d9 remove error log prefix; use db_mysql 5 years ago
David Goodwin 7e7f644952 skip this check if unit test 5 years ago
David Goodwin 897893f3ce fix indentation 5 years ago
David Goodwin 8a59c9548a reformat 5 years ago
David Goodwin e8eea39b9d reformat; try and persuade people to move off use of "mysql" (to mysqli); add php version warning 5 years ago
David Goodwin 2b31e71d5c improve error message 5 years ago
David Goodwin 8798a65a06 remove db_array() function (not in use); use Config::read_string(..) more 5 years ago
David Goodwin cdacb5697f improve formatting of error message; remove use of db_array (to be removed). 5 years ago
David Goodwin 2ea829eb7a fix postgresql compatability - see #227 5 years ago
David Goodwin b91c7a4ef8
Update README.md 5 years ago
David Goodwin 4b990ff330 fix sql for notification resend; see #226 5 years ago
David Goodwin d4e5470f7c try and improve README.md markup 6 years ago
David Goodwin 4d6cb9c328 touch config.local.php in build 6 years ago
David Goodwin 63ca48eb6b work around templates_c not existing in git 6 years ago
David Goodwin 5441295e25 phpcs? 6 years ago
David Goodwin d4ef211a19 only build with php7.2; run composer build etc (travis) 6 years ago
David Goodwin b2e814967f try and get working under travis ... 6 years ago
David Goodwin 590c80f0bc add more unit tests; re-enable random_int warning in functions.inc.php for old php versions etc etc 6 years ago
David Goodwin e8acb609c2 reformat 6 years ago
David Goodwin 20b1eb842e fix sqlite display of password expired check for mailboxes 6 years ago
David Goodwin 1dfb03ea32 fix sqlite query for mailbox password_expiry 6 years ago
David Goodwin e949e76acd add check-format to build step 6 years ago
David Goodwin 4fcdba9cf4 run php-cs-fixer (code reforamt) 6 years ago
David Goodwin 5eba76ac36 add composer build target 6 years ago
David Goodwin 19cda31849 remove psalm warnings from code; fix password_expiry behaviour when enabled/disabled on MySQL 6 years ago
David Goodwin d74b276192 ignore more 6 years ago
David Goodwin 9c476be17f move into DOCUMENTS 6 years ago
David Goodwin 93967030c7 remove composer.lock 6 years ago
David Goodwin 5d6dde7bff psalm fixes 6 years ago
David Goodwin 76ec4bc84d token psalm fixes 6 years ago
David Goodwin 5bc6e93347 fix query fields etc 6 years ago
David Goodwin 77b87107f9 improve composer behaviour for psalm; bump dev dependencies and add sqlite3+mysqli 6 years ago
David Goodwin 59dc05d746 use newer method (return type is consistent) 6 years ago
David Goodwin 766c947190 fix case of $conf; improve comments 6 years ago
David Goodwin 166574efae add {IF_NOT_EXISTS} for sqlite tables - see #225 6 years ago
David Goodwin 5d74ff4cc7 only require language if non-empty 6 years ago
David Goodwin 01c8b14a44 PFASmarty class 6 years ago
David Goodwin d146f51feb remove duplication of PFASmarty class 6 years ago
David Goodwin 74002bbf57 psalm fixes 6 years ago
David Goodwin 8d2a592aa9 bump psalm version; autoload config and functions files 6 years ago
David Goodwin 029c4ffe47 psalm fixes 6 years ago
David Goodwin 7408a3b30a fix safepost doc 6 years ago
David Goodwin 173d5775cd psalm fixes 6 years ago
David Goodwin 97528f3ebd remove var_dumps; fix assertEqual -> assertEquals and other random psalm findings 6 years ago
David Goodwin 93cc4d9e8c update phpunit tests to use different parent class 6 years ago
David Goodwin 9b8c067515 bump phpunit to stop countable warning with php7.2 6 years ago
David Goodwin 8cf7947f15 move function into the only place it is used 6 years ago
David Goodwin cecfe6b215 see #217 - should solve looking in /etc/postfixadmin ... 6 years ago
Christian Boltz 18be203039
add new texts to all language files 6 years ago
Christian Boltz 878e4d7f11
Merge pull request #220 from SuperVirus/updated_german_translation
Updated german translation
6 years ago
SuperVirus 3ee8b497f1
Update de.lang 6 years ago
Christoph 'SuperVirus' Heitkamp d35e66808b Allow different port for fetchmail 6 years ago
Christoph 'SuperVirus' Heitkamp 1fea1f8c3b Updated german translation 6 years ago
David Goodwin dda0302cdf
Merge pull request #218 from cweiske/specific-login-error
Change login failure message to show the login type (admin or user)
6 years ago
Christian Weiske 3960f6fdad Change login failure message to show the login type (admin or user) 6 years ago
David Goodwin 55790f9835
Merge pull request #215 from ChoiZ/patch-1
Update INSTALL.TXT
6 years ago
François LASSERRE 9598c63fc0
Update INSTALL.TXT
Missing `cd postfixadmin`
6 years ago
David Goodwin a53165d3d8 update CHANGELOG - see https://github.com/postfixadmin/postfixadmin/issues/176 6 years ago
David Goodwin 69e234f668
Merge pull request #200 from doktoil-makresh/master
Support for password expiration, managed in PostFix Admin
6 years ago
Damien Martins 78a461f07e Accepts incoming emails for active mailboxes, even if password is expired 6 years ago
David Goodwin b4a16a0313 quote shell vars 6 years ago
David Goodwin 435d97c282 try looking for alternatives to maildirmake etc - see #213 6 years ago
Christian Boltz 056e8af99b
Change $PALANG['password_no_characters'] to new text if untranslated
That's better than a TODO note next to the old english text ;-)
6 years ago
Christian Boltz bd847e38e6
add translation notes for updated $LANG['password_no_characters'] 6 years ago
Damien Martins 9e4d64ef78
Merge pull request #1 from DavidGoodwin/doktoil-master
updates to password expiry feature
6 years ago
David Goodwin 3a8762d785
Merge pull request #210 from inkVerb/master
Change "characters" to "letters" in EN language file
6 years ago
Jesse Steele 9e8ce47849
Change "characters" to "letters"
A "character" includes letters and numbers. The requirement triggered by line 355 is for "letters". This created confusion in the past.
6 years ago
David Goodwin 87472af5ba add Date header into smtp_from(...) function - see #203 6 years ago
David Goodwin b1795ab596 phpdoc 6 years ago
David Goodwin 1e158245d6 try and fix #30 - cope with timestamp and numeric field number comparison better for PostgreSQL. 6 years ago
David Goodwin afd418675c pointless comment 6 years ago
David Goodwin a8b02cfc05 Default to default values 6 years ago
David Goodwin 77d1b6c2e7 rename sql fields to just have mailbox.password_expiry and domain.password_expiry 6 years ago
David Goodwin 27c2842cd2 remove duplication of sql, remove use of functions (hopefully unnecessary) 6 years ago
David Goodwin a455916a6b add password expiry stuff to the db schema upgrade script 6 years ago
Damien Martins 8115d8d047 Reverting unexpected changes 6 years ago
Damien Martins 12ce418f79 No need to have password expiration value in config file 6 years ago
Damien Martins 84533224ba Adds colored indicators for password expired, account disabled and vacation enabled accounts 6 years ago
Damien Martins b33d79125c Merge branch 'master' of github.com:doktoil-makresh/postfixadmin 6 years ago
Damien Martins d809e0fbf7 Adds colored indicators for password expired, account disabled and vacation enabled accounts 6 years ago
Damien Martins 72dddbc93b Adds colored indicators for password expired, account disabled and vacation enabled accounts 6 years ago
Damien Martins ce60b9fa59 Now password expiration is managed through Postfix Admin GUI 6 years ago
Damien Martins ab10c9b49a Better arguments management 6 years ago
Damien Martins 9be8c8082f More details in README file 6 years ago
Damien Martins 29a993e6fd Better (aka safer) way to deal with authentication 6 years ago
Damien Martins e786609aa9 Adding support for password expiration. Please read README.password_expiration for more details 6 years ago
David Goodwin c3d3898eb2
Merge pull request #167 from csware/recipient_delimiter
vacation: Correctly process mails with recipient_delimiter
6 years ago
David Goodwin cde3d7530d
Merge pull request #194 from cantoute/patch-1
libmime-perl => libemail-mime-perl on debian 9
6 years ago
Antony 61011619a8
libmime-perl => libemail-mime-perl on debian 9 6 years ago
David Goodwin ba14535489
Merge pull request #172 from abonanni/bootstrap
Bootstrap Integration
6 years ago
David Goodwin a981ff8172 list.php csv export: implode array values, suppress fields with empty label after trimming (html status) 6 years ago
Christian Boltz 77670f36f6
revert CSV separator to ";"
This reverts c5c42cfbe8 ("remove custom
field separator; just go with the default php behaviour").

That change didn't improve anything on
https://sourceforge.net/p/postfixadmin/bugs/386/ - it "just" changed the
CSV file format which might break existing workflows and/or tools of our
users.
6 years ago
David Goodwin 39bb2dbcd6 see remove outdated doc links - see #191 6 years ago
David Goodwin c5c42cfbe8 remove custom field separator; just go with the default php behaviour 6 years ago
David Goodwin 00877885cf update installation instructions - see #189 and #188 6 years ago
David Goodwin 6d328795cb remove windows code; remove array_merge (seems to just break parsing) 6 years ago
David Goodwin 563b8c7636 phpdoc fixes (psalm) 6 years ago
David Goodwin 45fd1bf08b silence psalm a little; bump parallel-lint version 6 years ago
David Goodwin 532eb09f1f possible readability improvement 6 years ago
David Goodwin 76ee147375 phpdoc fix 6 years ago
David Goodwin aa38d0090d token fixes; code looks incomplete anyway 6 years ago
David Goodwin 97c48a0fc9 fix phpdoc 6 years ago
David Goodwin 299735773e fix phpdoc 6 years ago
David Goodwin ec085b668b missing class property 6 years ago
David Goodwin 9c0e1dd575 phpdoc fixes 6 years ago
David Goodwin 318ac048d5 psalm fixes 6 years ago
David Goodwin c44e82cc2d phpdoc fix 6 years ago
David Goodwin b6f75c9c2c try and require Phar extension through setup if we are using php_crypt and PHP version < 7 6 years ago
David Goodwin 1f643a052f see #185 - try putting the session_ recreation stuff in an else { ... } 6 years ago
David Goodwin a787c0fc1e
Merge pull request #181 from Sopsy/master
Add support for difficulty setting for php_crypt
6 years ago
Aleksi Kinnunen 2df4348f09
Typo fix 6 years ago
Aleksi Kinnunen 48c19a1cbd
Combine encrypt CONF-keys
Went through the old PR #25, updated the encrypt rounds/cost setting to be in the encrypt -configuration key as per suggestion from @cboltz
6 years ago
Aleksi Kinnunen c1b5e66e27
Add missing global
... you should never edit with the GitHub web GUI, lazy me.
6 years ago
Aleksi Kinnunen b676e8337f
Allow empty $CONF['encrypt_difficulty'] for defaults 6 years ago
Aleksi Kinnunen 7b16e8a1c2
Add info about php_crypt and encrypt_difficulty to sample config 6 years ago
Aleksi Kinnunen 9c2161a549
Added support for password generation cost/rounds
$CONF["php_crypt_difficulty"], only for php_crypt:BLOWFISH, php_crypt:SHA256 and php_crypt:SHA512
6 years ago
David Goodwin 6100ca4cf9 try and fix #177 (add missing fields to sqlite db) 6 years ago
David Goodwin 1c4a6080d7 make phar loading optional depending on the extension being present or not 6 years ago
David Goodwin 9c7f60fa76 possible fix for sqlite schema/upgrade issues; see #177 and and #176 6 years ago
root bd85b3725f Bootstrap TPL for user interface 6 years ago
root 5dcd203d8f Gestion des dates de vacation 6 years ago
root fb3e968cfc Bootstrap template integration 6 years ago
Sven Strickroth f0f6c16afa vacation: Correctly process mails with recipient_delimiter
Signed-off-by: Sven Strickroth <email@cs-ware.de>
6 years ago

@ -0,0 +1,34 @@
name: GitHubBuild
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Validate composer.json and composer.lock
run: composer validate
- name: setup templates_c
run: mkdir templates_c || true
- name: touch config.local.php
run: touch config.local.php && php -v
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Build/test
run: composer build
- name: setup coveralls
run: mkdir -p build/logs || true
- name: Coveralls
run: vendor/bin/coveralls ./clover.xml || true
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}

2
.gitignore vendored

@ -3,3 +3,5 @@
/templates_c/*menu.conf.php
/vendor/
/.php_cs.cache
/.idea
/composer.lock

@ -1,17 +1,32 @@
language: php
php:
- 5.6
- 7.0
- 7.1
- 7.2
- 7.3
- 7.4
services:
- mysql
- postgresql
cache:
directories:
- vendor
- $HOME/.composer/cache
- $HOME/vendor
before_install:
- mysql -e 'CREATE DATABASE postfixadmin;'
- psql -c 'create database postfixadmin;' -U postgres
before_script:
- composer install
- travis_retry composer install --no-interaction --prefer-source --dev
- mkdir -p build/logs
script:
- composer check-format
- composer build
- DATABASE=sqlite vendor/bin/phpunit tests/
- DATABASE=mysql vendor/bin/phpunit --coverage-clover=build/logs/clover.xml tests/
- DATABASE=postgresql vendor/bin/phpunit tests/
after_success:
- travis_retry php vendor/bin/php-coveralls

@ -26,6 +26,15 @@ our $db_username="mail";
# database password
our $db_password="CHANGE_ME!";
# Where to create a lockfile; please ensure path exists.
our $run_dir="/var/lock/fetchmail";
# in case you want to use dovecot deliver to put the mail directly into the users mailbox,
# set "mda" in the fetchmail table to the keyword "dovecot".
# Where the delivery binary is located
$dovecot_deliver = "/usr/lib/dovecot/deliver";
# instead of changing this script, you can put your settings to /etc/mail/postfixadmin/fetchmail.conf
# just use perl syntax there to fill the variables listed above (without the "our" keyword). Example:
# $db_username = 'mail';
@ -40,7 +49,7 @@ if (-f "/etc/mail/postfixadmin/fetchmail.conf") {
openlog("fetchmail-all", "pid", "mail");
sub log_and_die {
my($message) = @_;
my($message) = @_;
syslog("err", $message);
die $message;
}
@ -59,8 +68,6 @@ while ($_ = shift @ARGS1) {
}
}
$run_dir="/var/run/fetchmail";
# use specified config file
if (-e $configfile) {
do $configfile;
@ -72,6 +79,10 @@ if($db_type eq "Pg" || $db_type eq "mysql") {
log_and_die "unsupported db_type $db_type";
}
if(!-d $run_dir) {
log_and_die("Please create: $run_dir");
}
$lock_file=$run_dir . "/fetchmail-all.lock";
$lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1);
@ -100,7 +111,14 @@ map{
$cmd="user '${src_user}' there with password '".decode_base64($src_password)."'";
$cmd.=" folder '${src_folder}'" if ($src_folder);
$cmd.=" mda ".$mda if ($mda);
if ($mda) {
if ($mda eq "dovecot") {
$cmd.=" mda \"${dovecot_deliver} -d ${mailbox}\" ";
} else {
$cmd.=" mda ".$mda
}
}
# $cmd.=" mda \"/usr/local/libexec/dovecot/deliver -m ${mailbox}\"";
$cmd.=" is '${mailbox}' here";
@ -120,10 +138,11 @@ set no spambounce
set properties ""
set syslog
poll ${src_server} with proto ${protocol}
$cmd
TXT
$text.="poll ${src_server} with proto ${protocol}";
$text.=" service ${src_port}" if ($src_port);
$text.="\n $cmd";
($file_handler, $filename) = mkstemp( "/tmp/fetchmail-all-XXXXX" ) or log_and_die "cannot open/create fetchmail temp file";
print $file_handler $text;

@ -52,7 +52,17 @@ if [ -e "$maildir" ]; then
exit 1
fi
maildirmake "$maildir"
# try looking for maildirmake ...
MDM=`which maildirmake || which courier-maildirmake`
if [ "x${MDM}" = "x" ]; then
echo "Couldn't find maildirmake or courier-maildirmake in your PATH etc (via which)" >/dev/stderr
exit 1
fi
"${MDM}" "${maildir}"
if [ ! -d "$maildir" ]; then
echo "$0: maildirmake didn't produce a directory; bailing out."
exit 1

@ -12,14 +12,27 @@ chdir("..");
if (!defined('SM_PATH')) {
define('SM_PATH', '../');
}
include_once(dirname(__FILE__) . '/config.php');
$config_file = dirname(__FILE__ ) . '/config.php';
$validate_file = dirname(__FILE__) . '/../include/validate.php';
if (!file_exists($config_file)) {
die("$config_file is missing");
}
include_once($config_file);
include_once(dirname(__FILE__) . '/functions.inc.php');
include_if_exists(dirname(__FILE__) . '/../include/validate.php');
if (file_exists(dirname(__FILE__) . '/../include/validate.php')) {
include_once(dirname(__FILE__) . '/include/validate.php');
if (file_exists($validate_file)) {
include_once($validate_file);
} else {
include_if_exists(SM_PATH . 'src/validate.php');
$validate_file = SM_PATH . '/src/validate.php';
if (file_exists($validate_file)) {
include_once($validate_file);
}
}
include_once(SM_PATH . 'functions/page_header.php');
include_once(SM_PATH . 'functions/display_messages.php');
include_once(SM_PATH . 'functions/imap.php');

@ -43,7 +43,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") {
unset($array[$key]);
continue;
}
if (!check_email($email_address)) {
if (check_email($email_address) != "") {
$error = 1;
$tGoto = $goto;
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');

@ -1,5 +1,8 @@
<?php
// vim:ts=4:sw=4:et
if (!defined('SM_PATH')) {
die("Invalid internal state (don't access file directly)");
}
include_once(SM_PATH . 'functions/i18n.php');
function squirrelmail_plugin_init_postfixadmin() {

@ -50,13 +50,13 @@ function deldir($dir) {
$current_dir = opendir($dir);
while ($entryname = readdir($current_dir)) {
if (is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")) {
deldir("${dir}/${entryname}");
deldir("{$dir}/{$entryname}");
} elseif ($entryname != "." and $entryname!="..") {
unlink("${dir}/${entryname}");
unlink("{$dir}/{$entryname}");
}
}
closedir($current_dir);
@rmdir(${dir});
@rmdir($dir);
}
// --- Main Start ---
@ -110,7 +110,7 @@ $conx = mysqli_connect($CONF['database_host'], $CONF['database_user'], $CONF['da
// Is there a problem connecting?
//
if (! $conx || mysqli_connect_errno()) {
var_dump("DB connection failed." . mysqli_connect_error());
echo "DB connection failed." . mysqli_connect_error() . "\n";
die("Problem connecting to the database. ");
}

@ -6,6 +6,26 @@
#
# Further details on the project are available at http://postfixadmin.sf.net
Version X.X - master
-------------------------------------------------
- Improve vacation.pl (better utf-8 support)
- Improve DB connections (PDO, SSL)
- Add sha512.b64 password hash support (see https://github.com/postfixadmin/postfixadmin/issues/58)
- Add support for password expiration (see https://github.com/postfixadmin/postfixadmin/pull/200 and README.password_expiration )
- Improve ADDITIONS/postfixadmin-mailbox-postcreate.sh
- Add Date header into smtp_from() (see https://github.com/postfixadmin/postfixadmin/issues/203 )
- PostgreSQL fixes ( 1e158245d613fd1d8d5c1d59e26e940eb71f5b32 )
- vacation.pl fixes (perl libraries; see https://github.com/postfixadmin/postfixadmin/pull/194 )
- Add bootstrap theme (default not changed yet) ( see https://github.com/postfixadmin/postfixadmin/pull/172 )
- Improve CSV export from list.php
- Various misc. changes from static analysis (psalm)
- Update installation instructions. (see: https://github.com/postfixadmin/postfixadmin/issues/189 https://github.com/postfixadmin/postfixadmin/issues/188 )
- Encryption improvements (see: php_crypt / encrypt_difficulty in sample config)
- Sqlite improvements (see https://github.com/postfixadmin/postfixadmin/issues/177 and https://github.com/postfixadmin/postfixadmin/issues/176 )
- MySQL 8 compatibility (see https://github.com/postfixadmin/postfixadmin/pull/175 )
- Internally the database functions have been refactored to use PDO rather than the lower level mysql_, mysqli_, pg_ etc functions. ( see: https://github.com/postfixadmin/postfixadmin/pull/231 )
- Usage of dovecot deliver as fetchmail mda
Version 3.2 - 2018/05/02
-------------------------------------------------

@ -62,7 +62,7 @@ ssl_key = </etc/dovecot/private/dovecot.pem
# login is for outlook express smtpd auth
auth_mechanisms = plain login
# If you're having trouble, try uncommenting these :
# If you're having trouble, try uncommenting these:
#auth_debug = yes
#auth_debug_passwords = yes
@ -77,7 +77,7 @@ passdb {
}
# Uncomment this if you want Postfix to be able to do smtpd auth through dovecot
# At a minimum Postfix probably needs : smtpd_sasl_type = dovecot
# At a minimum Postfix probably needs smtpd_sasl_type = dovecot
# And additionally: smtpd_sasl_path = private/auth
#service auth {
# unix_listener /var/spool/postfix/private/auth {
@ -126,14 +126,12 @@ default_pass_scheme = MD5-CRYPT
password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'
# Query to retrieve user information, note uid matches dovecot.conf AND Postfix virtual_uid_maps parameter.
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid FROM mailbox WHERE username = '%u' AND active='1'
# MYSQL :
# MYSQL:
user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, 1001 AS uid, 1001 AS gid,
CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
# PostgreSQL : (no Quota though) :
# user_query = SELECT '/var/vmail/mail/' || maildir AS home, 1001 as uid, 1001 as gid FROM mailbox WHERE username = '%u' AND active = '1'
# PostgreSQL:
# user_query = SELECT '/var/mail/vmail/' || maildir AS home, 1001 AS uid, 1001 AS gid,
# '*:bytes=' || quota AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
#END /etc/dovecot/dovecot-sql.conf
@ -152,7 +150,7 @@ Add to dovecot.conf:
## IMAP quota
protocol imap {
quota = dict:storage=200000 proxy::quota
mail_plugins = quota
}
## POP quota
@ -179,13 +177,15 @@ quota = dict:storage=200000 proxy::quota
Change dovecot-sql.conf to return quota values:
for MySQL:
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT('dict:storage=',floor(quota/1000),' ::proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1'
for PostgreSQL:
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, 'dict:storage=' || floor(quota/1000) || '::proxy::quota' as quota FROM mailbox WHERE username = '%u' AND active='1'
Create file dovecot-dict-quota.conf:
Create file dovecot-dict-quota.conf.
For dovecot 1.0 & 1.1, use this as a template:
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix
@ -195,6 +195,22 @@ select_field = current
where_field = path
username_field = username
If you use dovecot 1.2 or newer, use this:
connect = host=localhost dbname=postfix user=postfix password=postfix
map {
pattern = priv/quota/storage
table = quota2
username_field = username
value_field = bytes
}
map {
pattern = priv/quota/messages
table = quota2
username_field = username
value_field = messages
}
Create database in Mysql:
(This is automatically done by postfixadmin's setup.php)

@ -20,18 +20,18 @@ virtual_mailbox_maps =
proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
# For transport map support, also use the following configuration:
relay_domains = proxy:mysql:/etc/postfix/sql/mysql_relay_domains.cf
transport_maps = proxy:mysql:/etc/postfix/sql/mysql_transport_maps.cf
# Also set the config.inc.php setting transport=YES
# and add the transport choices to transport_options.
# if you let postfix store your mails directly (without using maildrop, dovecot deliver etc.)
virtual_mailbox_base = /var/mail/vmail
# or whereever you want to store the mails
# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
Where you chose to store the .cf files doesn't really matter, but they will
have database passwords stored in plain text so they should be readable only
by user postfix, or in a directory only accessible to user postfix.
@ -73,7 +73,7 @@ user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active='1' AND alias_domain.active='1'
mysql_virtual_alias_domain_catchall_maps.cf:
# handles catch-all settings of target-domain
@ -81,7 +81,7 @@ user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active='1' AND alias_domain.active='1'
(See above note re Concat + PostgreSQL)
@ -94,6 +94,8 @@ query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#optional query to use for transport map support
#query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' AND NOT (transport LIKE 'smtp%%' OR transport LIKE 'relay%%')
#expansion_limit = 100
mysql_virtual_mailbox_maps.cf:
@ -109,7 +111,21 @@ user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active='1' AND alias_domain.active='1'
mysql_relay_domains.cf:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' AND (transport LIKE 'smtp%%' OR transport LIKE 'relay%%')
mysql_transport_maps.cf:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT transport FROM domain WHERE domain='%s' AND active = '1'
(See above note re Concat + PostgreSQL)

@ -0,0 +1,48 @@
*Description
This extension adds support for password expiration.
It is designed to have expiration on users passwords. An email is sent when the password is expiring in 30 days, then 14 days, then 7 days.
It is strongly inspired by https://abridge2devnull.com/posts/2014/09/29/dovecot-user-password-expiration-notifications-updated-4122015/, and adapted to fit with Postfix Admin & Roundcube's password plugin
Expiration unit is day
Expiration value for domain is set through Postfix Admin GUI
*Installation
Perform the following changes:
**Changes in MySQL/MariaDB mailbox table (as defined in $CONF['database_tables'] from config.inc.php):
You are invited to backup your DB first, and ensure the table name is correct.
Execute the attached SQL script (password_expiration.sql) that will add the required columns. The expiration value for existing users will be set to 90 days. If you want a different value, edit line 2 in the script and replace 90 by the required value.
**Changes in Postfix Admin :
To enable password expiration, add the following to your config.inc.php file:
$CONF['password_expiration'] = 'YES';
All my tests are performed using $CONF['encrypt'] = 'md5crypt';
**If you are using Roundcube's password plugin, you should also adapt the $config['password_query'] value.
I recommend to use:
$config['password_query'] = 'UPDATE mailbox SET password=%c, modified = now(), password_expiry = now() + interval 90 day';
of cource you may adapt to the expected expiration value
All my tests are performed using $config['password_algorithm'] = 'md5-crypt';
**Changes in Dovecot (adapt if you use another LDA)
Edit dovecot-mysql.conf file, and replace the user_query (and only this one) by this query:
password_query = SELECT username as user, password, concat('/var/vmail/', maildir) as userdb_var, concat('maildir:/var/vmail/', maildir) as userdb_mail, 20001 as userdb_uid, 20001 as userdb_gid, m.domain FROM mailbox m, domain d where d.domain = m.domain and m.username = '%u' AND m.active = '1' AND (m.password_expiry > now() or d.password_expiry = 0)
Of course you may require to adapt the uid, gid, maildir and table to your setup
**Changes in system
You need to have a script running on a daily basis to check password expiration and send emails 30, 14 and 7 days before password expiration (script attached: check_mailpass_expiration.sh).
Edit the script to adapt the variables to your setup.
This script is using postfixadmin.my.cnf to read credentials. Edit this file to enter a DB user that is allowed to access (read-write) your database. This file should be protected from any user (chmod 400).

@ -7,14 +7,13 @@
REQUIREMENTS
------------
- Postfix 2.0 or higher.
- Apache 1.3.27 / Lighttpd 1.3.15 or higher.
- PHP 5.1.2 or higher.
- Postfix
- Apache / Lighttpd
- PHP (for web server)
- one of the following databases:
- MySQL 3.23 or higher (5.x recommended)
- MariaDB (counts as MySQL ;-)
- PostgreSQL 7.4 (or higher)
- SQLite 3.12 (or higher)
- MariaDB/MySQL
- PostgreSQL
- SQLite
READ THIS FIRST!
@ -33,7 +32,6 @@ There are also lots of HOWTOs around the web. Be warned that many of them
Please stick to the PostfixAdmin documentation, and use those HOWTOs only if
you need some additional information that is missing in the PostfixAdmin
DOCUMENTS/ folder.
- http://codepoets.co.uk/postfixadmin-postgresql-courier-squirrelmail-debian-etch-howto-tutorial (Debian+Courier+PostgreSQL+Postfix+Postfixadmin)
- http://bliki.rimuhosting.com/space/knowledgebase/linux/mail/postfixadmin+on+debian+sarge (Postfix+MySQL+Postfixadmin+Dovecot)
- http://en.gentoo-wiki.com/wiki/Virtual_mail_server_using_Postfix,_Courier_and_PostfixAdmin (Postfix+MySQL+Postfixadmin+Courier)
@ -43,21 +41,30 @@ DOCUMENTS/ folder.
(if you installed PostfixAdmin as RPM or DEB package, you can obviously skip this step.)
Assuming we are installing Postfixadmin into /srv/postfixadmin, then something like this should work :
Assuming we are installing Postfixadmin into /srv/postfixadmin, then something like this should work. Please check https://github.com/postfixadmin/postfixadmin/releases to get the latest stable release first (the 3.2.4 version/url below is probably stale)
$ mkdir -p /srv/postfixadmin
$ cd /srv/postfixadmin
$ wget -O https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.1.tar.gz postfixadmin-3.1.tar.gz
$ tar -zxvf postfixadmin-version.tgz
$ cd /srv/
$ wget -O postfixadmin.tgz https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.4.tar.gz
$ tar -zxvf postfixadmin.tgz
$ mv postfixadmin-postfixadmin-3.2 postfixadmin
Alternatively :
$ cd /srv
$ git clone https://github.com/postfixadmin/postfixadmin.git
$ cd postfixadmin
$ git checkout postfixadmin-3.2.4
2. Setup Web Server
-------------------
Assuming /var/www/html is where your webserver reads from :
Assuming /var/www/html is where your webserver reads from, either create a symlink:
$ ln -s /srv/postfixadmin/public /var/www/html/postfixadmin
$ ln -s /srv/postfixadmin/public /var/www/html/postfixadmin
or setup an alias in your webserver config. For Apache, use:
Alias /postfixadmin /srv/postfixadmin/public
3. Setup a Database
-------------------
@ -77,11 +84,17 @@ For MySQL:
CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'choose_a_password';
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
FLUSH PRIVILEGES;
For PostgreSQL:
CREATE USER postfix WITH PASSWORD 'whatever';
CREATE DATABASE postfix OWNER postfix ENCODING 'unicode';
For SQLite:
$mkdir /srv/postfixadmin/database
$touch /srv/postfixadmin/database/postfixadmin.db
$sudo chown -R www-data:www-data /srv/postfixadmin/database
(both the directory and the database need to be writeable)
4. Configure PostfixAdmin so it can find the database
-----------------------------------------------------
@ -117,11 +130,16 @@ PostfixAdmin does not require write access to any files except the templates_c
directory (smarty cache). You can therefore leave the files owned by root (or
another user); as long as the web server user (e.g. www-data) can read them, it
will be fine.
For templates_c/, allow write access (only) for the web server user (e. g. www-data).
The easiest way to do this is
$ mkdir -p /srv/postfixadmin/templates_c
$ chown -R www-data /srv/postfixadmin/templates_c
(If you're using e.g. CentOS or another distribution which enables SELinux, something like the following may be necessary as well :
```chcon -R -t httpd_sys_content_rw_t /usr/share/postfixadmin/templates_c```
)
5. Check settings, and create Admin user
----------------------------------------
@ -179,4 +197,3 @@ IRC - a community of people may be able to help in #postfixadmin on irc.freenode
Legacy forum posts are on SourceForce at
https://sourceforge.net/projects/postfixadmin

@ -1,13 +1,36 @@
postfixadmin [![Build Status](https://travis-ci.org/postfixadmin/postfixadmin.svg?branch=master)](https://travis-ci.org/postfixadmin/postfixadmin)
![GitHubBuild](https://github.com/postfixadmin/postfixadmin/workflows/GitHubBuild/badge.svg)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/postfixadmin/Lobby)
[![Coverage Status](https://coveralls.io/repos/github/postfixadmin/postfixadmin/badge.svg?branch=master)](https://coveralls.io/github/postfixadmin/postfixadmin?branch=master)
![GitHub repo size](https://img.shields.io/github/repo-size/postfixadmin/postfixadmin)
[![Chat](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)](https://kiwiirc.com/nextclient/irc.freenode.net/#postfixadmin)
============
# PostfixAdmin
PostfixAdmin - web based administration interface for Postfix mail servers
An open source, web based interface for managing domains/mailboxes/aliases etc on a Postfix based mail server.
Integrates with :
- Postfix
- IMAP/POP3 server (e.g. Dovecot or Courier)
- Database backend (choose one of: sqlite, mysql, postgresql)
- Fetchmail (optional)
## Features
- Unlimited domains/aliases/mailboxes
- Optional storage quota support
- Optional password expiry (beta)
- Multiple password hashing formats
- Supports PostgreSQL, MySQL, MariaDB, SQLite database backends (choose one)
- Supports retrieval of mail from a remote POP3 server (via fetchmail)
- Vacation / Autoresponder / Out Of Office support
- Users have the ability to login, change their password or vacation (out of office) status.
- Integration with Squirrelmail / Roundcube (via plugins)
- Optional XMLRPC based API
- Supports PHP5.6+
## Useful Links
Useful Links
------------
- [Probably all you need to read (pdf)](http://blog.cboltz.de/uploads/postfixadmin-30-english.pdf)
- http://postfixadmin.sf.net - the current homepage for the project
- [Docker Images](https://github.com/postfixadmin/docker)

@ -32,6 +32,7 @@ MIME::EncWords
Log::Log4perl
Log::Dispatch
GetOpt::Std
Net::DNS;
```
You may install these via CPAN, or through your package tool.
@ -43,7 +44,7 @@ CPAN: 'perl -MCPAN -e shell', then 'install Module::Whatever'
```bash
apt-get install libemail-sender-perl libemail-simple-perl libemail-valid-perl libtry-tiny-perl libdbd-pg-perl libmime-perl liblog-log4perl-perl liblog-dispatch-perl libgetopt-argvfile-perl libmime-charset-perl libmime-encwords-perl libmime-encwords-perl
apt-get install libemail-sender-perl libemail-simple-perl libemail-valid-perl libtry-tiny-perl libdbd-pg-perl libemail-mime-perl liblog-log4perl-perl liblog-dispatch-perl libgetopt-argvfile-perl libmime-charset-perl libmime-encwords-perl libnet-dns-perl
```
and one of :
@ -173,6 +174,7 @@ b) create /etc/postfixadmin/vacation.conf and enter your settings there
(without the "our" keyword). Example:
```perl
$db_username = 'mail';
1; # required final line - keeps perl happy.
```
To make sure nobody except vacation.pl can read your vacation.conf (including the

@ -30,7 +30,7 @@ use Email::Simple::Creator;
use Try::Tiny;
use Log::Log4perl qw(get_logger :levels);
use File::Basename;
use Net::DNS;
# ========== begin configuration ==========
# IMPORTANT: If you put passwords into this script, then remember
@ -51,24 +51,19 @@ our $db_name = 'postfix';
our $vacation_domain = 'autoreply.example.org';
# smtp server used to send vacation e-mails
our $smtp_server = 'localhost';
our $recipient_delimiter = '+';
# port to connect to; defaults to 25 for non-SSL, 465 for 'ssl', 587 for 'starttls'
our $smtp_server_port = 25;
# this is the helo we [the vacation script] use on connection; you may need to change this to your hostname or something,
# depending upon what smtp helo restrictions you have in place within Postfix.
# depending upon what smtp helo restrictions you have in place within Postfix.
our $smtp_client = 'localhost';
# send mail encrypted or plaintext
# if 'starttls', use STARTTLS; if 'ssl' (or 1), connect securely; otherwise, no security
our $smtp_ssl = 'starttls';
# passed to Net::SMTP constructor for 'ssl' connections or to starttls for 'starttls' connections; should contain extra options for IO::Socket::SSL
our $ssl_options = {
SSL_verifycn_name => $smtp_server
};
# maximum time in secs to wait for server; default is 120
our $smtp_timeout = '120';
@ -84,7 +79,6 @@ our $smtp_authpwd = '';
# From: Some Friendly Name <original@recipient.domain>
our $friendly_from = '';
# Set to 1 to enable logging to syslog.
our $syslog = 0;
@ -218,6 +212,7 @@ if ($db_type eq 'mysql') {
$db_true = '1';
} else { # Pg
$dbh->do("SET CLIENT_ENCODING TO 'UTF8'");
$dbh->{pg_enable_utf8} = 1;
$db_true = 'True';
}
@ -286,7 +281,7 @@ sub already_notified {
if ($db_type eq 'Pg') {
$query = qq{SELECT extract( epoch from (NOW()-notified_at))::int FROM vacation_notification WHERE on_vacation=? AND notified=?};
} else { # mysql
$query = qq{SELECT NOW()-notified_at FROM vacation_notification WHERE on_vacation=? AND notified=?};
$query = qq{SELECT UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(notified_at) FROM vacation_notification WHERE on_vacation=? AND notified=?};
}
$stm = $dbh->prepare($query) or panic_prepare($query);
$stm->execute($to,$from) or panic_execute($query,"on_vacation='$to', notified='$from'");
@ -443,8 +438,9 @@ sub send_vacation_email {
}
$logger->debug("Will send vacation response for $orig_messageid: FROM: $email (orig_to: $orig_to), TO: $orig_from; VACATION SUBJECT: $row[0] ; VACATION BODY: $row[1]");
my $subject = $row[0];
$subject = Encode::decode_utf8( $subject ) if( !Encode::is_utf8( $subject ) );
$orig_subject = decode("mime-header", $orig_subject);
$subject =~ s/\$SUBJECT/$orig_subject/g;
if ($subject ne $row[0]) {
@ -452,13 +448,30 @@ sub send_vacation_email {
}
my $body = $row[1];
$body = Encode::decode_utf8( $body ) if( !Encode::is_utf8( $body ) );
my $from = $email;
my $to = $orig_from;
# part of the username in the email && part of the domain in the email
my ($email_username_part, $email_domain_part) = split(/@/, $email);
my $resolver = Net::DNS::Resolver->new;
my @mx = mx($resolver, $email_domain_part);
my $smtp_server;
if (@mx) {
$smtp_server = @mx[0]->exchange;
$logger->debug("Found MX record <$smtp_server> for user <$email>!");
} else {
$logger->error("Unable to find MX record for user <$email>, error message: ".$resolver->errorstring);
exit(0);
}
my $smtp_params = {
host => $smtp_server,
port => $smtp_server_port,
ssl_options => $ssl_options,
ssl_options => {
SSL_verifycn_name => $smtp_server
},
ssl => $smtp_ssl,
timeout => $smtp_timeout,
localaddr => $smtp_client,
@ -473,6 +486,8 @@ sub send_vacation_email {
my $transport = Email::Sender::Transport::SMTP->new($smtp_params);
$subject = Encode::encode_utf8( $subject ) if( Encode::is_utf8( $subject ) );
$body = Encode::encode_utf8( $body ) if( Encode::is_utf8( $body ) );
$email = Email::Simple->create(
header => [
To => $to,
@ -611,6 +626,9 @@ if($smtp_recipient =~ /\@$vacation_domain/) {
my $tmp = $smtp_recipient;
$tmp =~ s/\@$vacation_domain//;
$tmp =~ s/#/\@/;
if ($recipient_delimiter) {
$tmp =~ s/[\Q$recipient_delimiter\E].+$//;
}
$logger->debug("Converted autoreply mailbox back to normal style - from $smtp_recipient to $tmp");
$smtp_recipient = $tmp;
undef $tmp;

@ -0,0 +1,20 @@
#!/bin/bash
#Adapt to your setup
POSTFIX_DB="postfix_test"
MYSQL_CREDENTIALS_FILE="postfixadmin.my.cnf"
REPLY_ADDRESS=noreply@example.com
# Change this list to change notification times and when ...
for INTERVAL in 30 14 7
do
LOWER=$(( $INTERVAL - 1 ))
QUERY="SELECT username,password_expiry FROM mailbox WHERE password_expiry > now() + interval $LOWER DAY AND password_expiry < NOW() + interval $INTERVAL DAY"
mysql --defaults-extra-file="$MYSQL_CREDENTIALS_FILE" "$POSTFIX_DB" -B -e "$QUERY" | while read -a RESULT ; do
echo -e "Dear User, \n Your password will expire on ${RESULT[1]}" | mail -s "Password 30 days before expiration notication" -r $REPLY_ADDRESS ${RESULT[0]}
done
done

@ -8,7 +8,6 @@
*
* Further details on the project are available at http://postfixadmin.sf.net
*
* @version $Id$
* @license GNU GPL v2 or later.
*
* File: common.php
@ -32,12 +31,6 @@ if (!defined('POSTFIXADMIN')) { # already defined if called from setup.php
}
$incpath = dirname(__FILE__);
(ini_get('magic_quotes_gpc') ? ini_set('magic_quotes_runtime', '0') : '1');
(ini_get('magic_quotes_gpc') ? ini_set('magic_quotes_sybase', '0') : '1');
if (ini_get('register_globals') == 'on') {
die("Please turn off register_globals; edit your php.ini");
}
/**
* @param string $class
@ -57,19 +50,27 @@ spl_autoload_register('postfixadmin_autoload');
if (!is_file("$incpath/config.inc.php")) {
die("config.inc.php is missing!");
}
global $CONF;
require_once("$incpath/config.inc.php");
if (isset($CONF['configured'])) {
if (isset($CONF['configured']) && !defined('PHPUNIT_TEST')) {
if ($CONF['configured'] == false) {
die("Please edit config.local.php - change \$CONF['configured'] to true after setting your database settings");
die("Please edit config.local.php - change \$CONF['configured'] to true after specifying appropriate local settings (database_type etc)");
}
}
Config::write($CONF);
$PALANG = [];
require_once("$incpath/languages/language.php");
require_once("$incpath/functions.inc.php");
require_once("$incpath/lib/random_compat.phar");
if (extension_loaded('Phar') && ( version_compare(PHP_VERSION, '7.0.0') < 0)) {
require_once("$incpath/lib/random_compat.phar");
}
if (defined('POSTFIXADMIN_CLI')) {
$language = 'en'; # TODO: make configurable or autodetect from locale settings
@ -77,8 +78,9 @@ if (defined('POSTFIXADMIN_CLI')) {
$language = check_language(); # TODO: storing the language only at login instead of calling check_language() on every page would save some processor cycles ;-)
$_SESSION['lang'] = $language;
}
require_once("$incpath/languages/" . $language . ".lang");
if (!empty($language)) {
require_once("$incpath/languages/" . $language . ".lang");
}
if (!empty($CONF['language_hook']) && function_exists($CONF['language_hook'])) {
$hook_func = $CONF['language_hook'];

@ -4,20 +4,44 @@
"type": "project",
"license": "GPL-2.0",
"scripts": {
"build" : [
"@check-format",
"@lint",
"@test-fixup",
"@psalm",
"@test"
],
"check-format": "php-cs-fixer fix --ansi --dry-run --diff",
"format": "php-cs-fixer fix --ansi",
"lint": "@php ./vendor/bin/parallel-lint --exclude vendor/ .",
"test": "@php ./vendor/bin/phpunit tests/"
"lint": "@php ./vendor/bin/parallel-lint --exclude vendor/ --exclude lib/block_random_int.php --exclude lib/array_column.php .",
"test": "DATABASE=sqlite ./vendor/bin/phpunit --coverage-clover ./clover.xml tests/",
"test-fixup": "mkdir -p templates_c ; test -f config.local.php || touch config.local.php",
"psalm": "@php ./vendor/bin/psalm --show-info=false "
},
"require": {
"php": ">=5.2"
"php": ">=7.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.7",
"vimeo/psalm":"^1.0",
"jakub-onderka/php-parallel-lint": "^0.9.2",
"phpunit/phpunit": "^5.7",
"zendframework/zendframework1": "^1.12.0"
"ext-mysqli": "*",
"ext-sqlite3": "*",
"friendsofphp/php-cs-fixer": "*",
"php-parallel-lint/php-parallel-lint": "^1.0",
"php": ">7.2.0",
"cedx/coveralls": "^11.0",
"phpunit/phpunit": "8.*",
"vimeo/psalm":"^3.0",
"shardj/zf1-future" : "^1.12"
},
"autoload": {
"files": [
"config.inc.php",
"functions.inc.php",
"lib/smarty/libs/bootstrap.php"
]
},
"support": {
"irc": "irc://irc.freenode.org/postfixadmin",
"issues": "https://github.com/postfixadmin/postfixadmin/issues",
"chat": "https://gitter.im/postfixadmin/Lobby"
}
}

2516
composer.lock generated

File diff suppressed because it is too large Load Diff

@ -8,7 +8,6 @@
*
* Further details on the project are available at http://postfixadmin.sf.net
*
* @version $Id$
* @license GNU GPL v2 or later.
*
* File: config.inc.php
@ -30,7 +29,7 @@
# #
################################################################################
global $CONF;
/*****************************************************************
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@ -104,13 +103,14 @@ $CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixadmin';
$CONF['database_name'] = 'postfix';
// Database SSL Config
// Database SSL Config (PDO/MySQLi only)
$CONF['database_use_ssl'] = false;
$CONF['database_ssl_key'] = NULL;
$CONF['database_ssl_cert'] = NULL;
$CONF['database_ssl_ca'] = NULL;
$CONF['database_ssl_ca_path'] = NULL;
$CONF['database_ssl_cipher'] = NULL;
$CONF['database_ssl_verify_server_cert'] = true;
// If you need to specify a different port for a MYSQL database connection, use e.g.
// $CONF['database_host'] = '172.30.33.66:3308';
@ -119,9 +119,10 @@ $CONF['database_ssl_cipher'] = NULL;
// uncomment and change the following
// $CONF['database_port'] = '5432';
//
// If you wish to connect using a local socket file (e.g /var/run/mysql.sock) uncomment the below.
// If you wish to connect using a local socket file (e.g /var/run/mysql.sock) set this to the socket path.
// $CONF['database_socket'] = '/var/run/mysql/mysqld.sock';
//
$CONF['database_socket'] = '';
// If sqlite is used, specify the database file path:
// $CONF['database_name'] = '/etc/postfix/sqlite/postfixadmin.db'
@ -150,6 +151,12 @@ $CONF['database_tables'] = array (
// Leave blank to send email from the logged-in Admin's Email address.
$CONF['admin_email'] = '';
// Define the smtp password for admin_email.
// This will be used to send emails from to create mailboxes and
// from Send Email / Broadcast message pages.
// Leave blank to send emails without authentification
$CONF['admin_smtp_password'] = '';
// Site admin name
// This will be used as signature in notification messages
$CONF['admin_name'] = 'Postmaster';
@ -165,6 +172,9 @@ $CONF['smtp_port'] = '25';
// Used in the HELO when sending emails from Postfix Admin
$CONF['smtp_client'] = '';
// Set 'YES' to use TLS when sending emails.
$CONF['smtp_sendmail_tls'] = 'NO';
// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
@ -174,10 +184,17 @@ $CONF['smtp_client'] = '';
// mysql_encrypt = useful for PAM integration
// authlib = support for courier-authlib style passwords - also set $CONF['authlib_default_flavor']
// dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5
// php_crypt:CRYPT-METHOD:DIFFICULTY = use PHP built in crypt()-function. Example: php_crypt:SHA512:50000
// - php_crypt CRYPT-METHOD: Supported values are DES, MD5, BLOWFISH, SHA256, SHA512
// - php_crypt DIFFICULTY: Larger value is more secure, but uses more CPU and time for each login.
// - php_crypt DIFFICULTY: Set this according to your CPU processing power.
// - php_crypt DIFFICULTY: Supported values are BLOWFISH:4-31, SHA256:1000-999999999, SHA512:1000-999999999
// - php_crypt DIFFICULTY: leave empty to use default values (BLOWFISH:10, SHA256:5000, SHA512:5000). Example: php_crypt:SHA512
// IMPORTANT:
// - don't use dovecot:* methods that include the username in the hash - you won't be able to login to PostfixAdmin in this case
// - you'll need at least dovecot 2.1 for salted passwords ('doveadm pw' 2.0.x doesn't support the '-t' option)
// - dovecot 2.0.0 - 2.0.7 is not supported
// sha512.b64 - {SHA512-CRYPT.B64} (base64 encoded sha512) (no dovecot dependency; should support migration from md5crypt)
$CONF['encrypt'] = 'md5crypt';
// In what flavor should courier-authlib style passwords be encrypted?
@ -200,7 +217,7 @@ if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff; see h
// Password validation
// New/changed passwords will be validated using all regular expressions in the array.
// If a password doesn't match one of the regular expressions, the corresponding
// error message from $PALANG (see languages/*) will be displayed.
// error message from $PALANG (see languages/*.lang) will be displayed.
// See http://de3.php.net/manual/en/reference.pcre.pattern.syntax.php for details
// about the regular expression syntax.
// If you need custom error messages, you can add them using $CONF['language_hook'].
@ -338,6 +355,10 @@ $CONF['quota'] = 'NO';
$CONF['domain_quota'] = 'YES';
// You can either use '1024000' or '1048576'
$CONF['quota_multiplier'] = '1024000';
// fill state threshold (in per cent) for medium level (displayed as orange)
$CONF['quota_level_med_pct'] = 55;
// fill state threshold (in per cent) for high level (displayed as red)
$CONF['quota_level_high_pct'] = 90;
// Transport
// If you want to define additional transport options for a domain set this to 'YES'.
@ -510,6 +531,16 @@ $CONF['show_undeliverable']='YES';
$CONF['show_undeliverable_color']='tomato';
// mails to these domains will never be flagged as undeliverable
$CONF['show_undeliverable_exceptions']=array("unixmail.domain.ext","exchangeserver.domain.ext");
// show mailboxes with expired password; requires password_expiration to be enabled
$CONF['show_expired']='YES';
$CONF['show_expired_color']='orange';
// show vacation enabled mailboxes
$CONF['show_vacation']='YES';
$CONF['show_vacation_color']='turquoise';
// show disabled accounts
$CONF['show_disabled']='YES';
$CONF['show_disabled_color']='grey';
// show POP/IMAP mailboxes
$CONF['show_popimap']='YES';
$CONF['show_popimap_color']='darkgrey';
// you can assign special colors to some domains. To do this,
@ -574,7 +605,7 @@ $CONF['domain_postdeletion_script'] = '';
// Will not work with POP3.
// If you define create_mailbox_subdirs, then the
// create_mailbox_subdirs_host must also be defined.
//
// Note: requires imap extension within PHP
// $CONF['create_mailbox_subdirs']=array('Spam');
$CONF['create_mailbox_subdirs'] = array();
$CONF['create_mailbox_subdirs_host']='localhost';
@ -641,7 +672,9 @@ function x_send_sms_clickatell($to, $message) {
*/
// Theme Config
// Specify your own logo and CSS file
$CONF['theme'] = 'default';
// Specify your own favicon, logo and CSS file
$CONF['theme_favicon'] = 'images/favicon.ico';
$CONF['theme_logo'] = 'images/logo-default.png';
$CONF['theme_css'] = 'css/default.css';
// If you want to customize some styles without editing the $CONF['theme_css'] file,
@ -654,7 +687,12 @@ $CONF['theme_custom_css'] = '';
// change to boolean true to enable xmlrpc
$CONF['xmlrpc_enabled'] = false;
// If you want to keep most settings at default values and/or want to ensure
//Account expiration info
//If enabled, mailbox passwords have a password_expiry field set, which is updated each time the password is changed, based on the parent domain's password_expiry (days) value.
//More details in README.password_expiration
$CONF['password_expiration'] = 'YES';
// If you want to keep most settings at default values and/or want to ensure
// that future updates work without problems, you can use a separate config
// file (config.local.php) instead of editing this file and override some
// settings there.

@ -39,7 +39,7 @@ tr_hilightoff = <tr class="hilightoff" onmouseover="className='hilighton';" onmo
url_delete = delete.php
url_search = list-virtual.php
form_search = <form name="search" method="post" action="list-virtual.php"><input name="search[_]" size="10" /></form>
form_search = <form name="search" method="post" action="list-virtual.php"><input class="form-control" name="search[_]" size="10" /></form>
[adminlistadmin]
url_edit_admin = edit.php?table=admin

4
debian/control vendored

@ -11,8 +11,8 @@ Homepage: http://postfixadmin.sourceforge.net
Package: postfixadmin
Architecture: all
Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | lighttpd | httpd, libapache2-mod-php | php-cgi | php-fpm | php, php-imap, php-mysql | php-mysqlnd | php-pgsql | php-pgsql | php-sqlite3, php-mbstring, default-mysql-client | mysql-client | postgresql-client | mariadb-client
Recommends: postfix-mysql | postfix-pgsql, virtual-mysql-server | postgresql | sqlite (>= 3.12.0) | mariadb-server, zendframework, dovecot-core | courier-authlib-mysql | courier-authlib-postgresql, php-cli
Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | lighttpd | httpd, libapache2-mod-php | php-cgi | php-fpm | php, php-mysql | php-mysqlnd | php-pgsql | php-pgsql | php-sqlite3, php-mbstring, default-mysql-client | mysql-client | postgresql-client | mariadb-client
Recommends: postfix-mysql | postfix-pgsql, virtual-mysql-server | postgresql | sqlite (>= 3.12.0) | mariadb-server, zendframework, php-imap, dovecot-core | courier-authlib-mysql | courier-authlib-postgresql, php-cli
Description: Virtual mail hosting interface for Postfix
Postfixadmin is a web interface to manage virtual users and domains
for a Postfix mail transport agent. It supports Virtual mailboxes,

File diff suppressed because it is too large Load Diff

@ -140,6 +140,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Не мога да модифицирам този alias! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Създаване на нова пощенска кутия за вашия домейн.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Е-мейл-а не е валиден!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Вие сте достигнали своя лимит за създаване на пощенски кутии!';
$PALANG['pCreate_mailbox_password_text'] = 'Парола за POP3/IMAP';
@ -338,10 +339,13 @@ $PALANG['pBroadcast_error_empty'] = 'Полетата Име, Заглавие
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -360,6 +364,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -379,6 +384,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -394,6 +400,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -138,6 +138,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Imposible modificar l\'àlies! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Crear una nova bústia pel seu domini.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'L\'e-mail no és vàlido!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Has arribat al límit de creació de bústies!';
$PALANG['pCreate_mailbox_password_text'] = 'Contrasenya per a POP3/IMAP';
@ -337,10 +338,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -359,6 +363,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -378,6 +383,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -393,6 +399,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = '不能修改该别名! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = '在你的域中新建一个本地邮箱.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = '邮件非法!';
$PALANG['pCreate_mailbox_username_text_error3'] = '邮箱地址已经达到上限!';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP 密码';
@ -337,10 +338,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -359,6 +363,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -378,6 +383,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -393,6 +399,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -147,6 +147,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Přesměrovat pouze na dané adresy.';
$PALANG['pEdit_alias_result_error'] = 'Nepodařilo se upravit přesměrování! (%s)';
$PALANG['pCreate_mailbox_welcome'] = 'Vytvořit novou lokální schránku v doméně.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Adresa není platná!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Dosáhli jste limitu, nemů&cedil;ete vytvářet další schránky!';
$PALANG['pCreate_mailbox_password_text'] = 'Heslo pro POP3/IMAP/SMTP';
@ -351,10 +352,13 @@ $PALANG['pBroadcast_error_empty'] = 'Pole Od, Předmět a Zpráva by neměly bý
$PALANG['broadcast_mailboxes_only'] = 'Pouze poslat do schránek';
$PALANG['broadcast_to_domains'] = 'Poslat na domény:';
$PALANG['pStatus_undeliverable'] = 'možná NEDORUČITELNÉ ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Doručeno do ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Heslo je příliš krátké - je vyžadováno minimálně %s znaků";
$PALANG['password_no_characters'] = "Heslo musí obsahovat alespoň %s znak(-y).";
$PALANG['password_no_characters'] = "Heslo musí obsahovat alespoň %s znak(-y)."; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "Heslo musí obsahovat alespoň %s číslici(-ce).";
$PALANG['pInvalidDomainRegex'] = "Neplatné doménové jméno %s, nevyhovělo regulárnímu výrazu";
$PALANG['pInvalidDomainDNS'] = "Neplatná doména %s, a/nebo nezjištěn DNS záznam.";
@ -373,6 +377,7 @@ $PALANG['pFetchmail_password_missing'] = 'Prosím zadejte heslo ke vzdálené sc
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Schránka';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Typ autentizace';
$PALANG['pFetchmail_field_src_user'] = 'Uživatel';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -392,6 +397,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Výstupní text';
$PALANG['pFetchmail_desc_id'] = 'ID záznamu';
$PALANG['pFetchmail_desc_mailbox'] = 'Místní schránka';
$PALANG['pFetchmail_desc_src_server'] = 'Vzdálený server';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Většinou \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Vzdálený uživatel';
$PALANG['pFetchmail_desc_src_password'] = 'Heslo vzdáleného uživatele';
@ -407,6 +413,8 @@ $PALANG['pFetchmail_desc_date'] = 'Datum posledního stažení pošt
$PALANG['pFetchmail_desc_returned_text'] = 'Výstupní textový záznam posledního stahování pošty';
$PALANG['dateformat_pgsql'] = 'dd-mm-YYYY'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%d.%m.%Y'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -144,6 +144,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Videresend til angivene emailadres
$PALANG['pEdit_alias_result_error'] = 'Kan ikke redigere aliaset. (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Tilføj en ny lokal postboks til domænet.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Emailadressen er ikke gyldig!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Du har nået grænsen for antallet af postbokse til domæne!';
$PALANG['pCreate_mailbox_password_text'] = 'Adgangskode til POP3/IMAP';
@ -349,11 +350,14 @@ $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'kan måske ikke leveres ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Leveres til ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Adgangskoden er for kort. Der kræves mindst %s tegn";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Ugyldigt domæne-navn %s. Fejlede regulært udtryks-tjek";
$PALANG['pInvalidDomainDNS'] = "Ugyldigt domæne %s, og/eller ikke fundet i DNS";
@ -373,6 +377,7 @@ $PALANG['pFetchmail_password_missing'] = 'Angiv adgangskoden til fjernserveren!'
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Postboks';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Godkendelsesmetode';
$PALANG['pFetchmail_field_src_user'] = 'Brugernavn';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -392,6 +397,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returneret tekst';
$PALANG['pFetchmail_desc_id'] = 'Post ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Lokal postboks';
$PALANG['pFetchmail_desc_src_server'] = 'Fjernserver';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Somregel \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Eksternt brugernavn';
$PALANG['pFetchmail_desc_src_password'] = 'Ekstern adgangskode';
@ -407,6 +413,8 @@ $PALANG['pFetchmail_desc_date'] = 'Dato for seneste prøve/konfigura
$PALANG['pFetchmail_desc_returned_text'] = 'Tekstbesked fra seneste prøve';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -141,14 +141,15 @@ $PALANG['pEdit_alias_forward_only'] = 'Nur zur angegebenen Adresse weiterleiten.
$PALANG['pEdit_alias_result_error'] = 'Ändern des Aliases %s ist fehlgeschlagen!';
$PALANG['pCreate_mailbox_welcome'] = 'Legen Sie eine neue Mailbox für Ihre Domain an.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Die EMAIL ist nicht korrekt!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Sie dürfen leider nicht mehr Mailboxen für diese Domain anlegen!';
$PALANG['pCreate_mailbox_password_text'] = 'Passwort für POP3/IMAP';
$PALANG['pCreate_mailbox_name_text'] = 'Vollständiger Name';
$PALANG['pCreate_mailbox_phone'] = 'Mobile phone'; # XXX
$PALANG['pCreate_mailbox_phone_desc'] = "Used to send a SMS if the password is forgotten"; # XXX
$PALANG['pCreate_mailbox_email'] = 'Other e-mail'; # XXX
$PALANG['pCreate_mailbox_email_desc'] = "Used if the password is forgotten"; # XXX
$PALANG['pCreate_mailbox_phone'] = 'Mobiltelefon';
$PALANG['pCreate_mailbox_phone_desc'] = "Wird benutzt, um eine SMS senden, falls das Passwort vergessen wurde";
$PALANG['pCreate_mailbox_email'] = 'Andere E-Mail Adresse';
$PALANG['pCreate_mailbox_email_desc'] = "Wird benutzt, falls das Passwort vergessen wurde";
$PALANG['pCreate_mailbox_mail'] = 'Begrüßungsmail senden';
$PALANG['pCreate_mailbox_result_error'] = 'Das Erstellen der Mailbox %s ist fehlgeschlagen';
$PALANG['pCreate_mailbox_result_success'] = 'Die Mailbox %s wurde in die Mailbox-Tabelle eingetragen.';
@ -176,13 +177,13 @@ $PALANG['pPassword_password_text_error'] = 'Die beiden angegebenen Passwörter s
$PALANG['change_password'] = 'Passwort ändern';
$PALANG['pPassword_result_error'] = 'Das Passwort für %s konnte nicht geändert werden';
$PALANG['pPassword_result_success'] = 'Das Passwort für %s wurde geändert.';
$PALANG['pPassword_recovery_title'] = 'Follow the instructions to reset your password.'; # XXX
$PALANG['pPassword_recovery_button'] = 'Send me the code'; # XXX
$PALANG['pPassword_recovery_email_body'] = "Hello,\n\nUse the following link to change your email password :\n%s\n\nRegards,\n\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_sms_body'] = "Hello,\nThe code to change your password is: %s\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_processed'] = "We processed your request. If you entered a valid username, you'll receive an email/SMS with a password code."; # XXX
$PALANG['pPassword_password_code'] = 'Code sent by email/SMS'; # XXX
$PALANG['pPassword_code_text_error'] = 'Invalid code'; # XXX
$PALANG['pPassword_recovery_title'] = 'Folgen Sie den Anweisungen, um Ihr Passwort zurückzusetzen.';
$PALANG['pPassword_recovery_button'] = 'Code zusenden';
$PALANG['pPassword_recovery_email_body'] = "Hallo,\n\nBenutzen Sie den folgenden Link, um Ihr E-Mail-Passwort zu ändern :\n%s\n\nMit freundlichen Grüßen,\n\n" . $CONF['admin_name'];
$PALANG['pPassword_recovery_sms_body'] = "Hallo,\nDer Code zum Ändern des Passwortes lautet: %s\n" . $CONF['admin_name'];
$PALANG['pPassword_recovery_processed'] = "Wir haben Ihre Anfrage erhalten. Wenn Sie einen gültigen Benutzernamen eingegeben haben, dann erhalten Sie eine E-Mail/SMS mit dem Passwort-Code.";
$PALANG['pPassword_password_code'] = 'Code per E-Mail/SMS geschickt';
$PALANG['pPassword_code_text_error'] = 'Ungültiger Code';
$PALANG['pEdit_vacation_set'] = 'Automatische Antwort ändern / einrichten';
$PALANG['pEdit_vacation_remove'] = 'Automatische Antwort abschalten';
@ -190,8 +191,8 @@ $PALANG['pEdit_vacation_remove'] = 'Automatische Antwort abschalten';
$PALANG['pVacation_result_error'] = 'Änderungen der automatischen Antwort für %s konnten nicht gespeichert werden!';
$PALANG['pVacation_result_removed'] = 'Automatische Antwort für %s wurde abgeschaltet!';
$PALANG['pVacation_result_added'] = 'Automatische Antwort für %s wurde aktiviert!';
$PALANG['pVacation_reply_type'] = 'Choice of reply'; # XXX
$PALANG['pVacation_reply_delay_time'] = 'Interval time'; # XXX
$PALANG['pVacation_reply_type'] = 'Art der Antwort';
$PALANG['pVacation_reply_delay_time'] = 'Zeitintervall';
$PALANG['pVacation_reply_delay_time_text'] = 'Zeit in Sekunden';
$PALANG['pVacation_until_before_today'] = 'Das Datum von [Aktiv bis] ist in der Vergangenheit';
$PALANG['pVacation_until_before_from'] = 'Das Datum von [Aktiv bis] ist vor [Aktiv ab]';
@ -308,7 +309,7 @@ $PALANG['pAdminEdit_admin_result_success'] = 'Der Admin %s wurde geändert.';
$PALANG['pUsersLogin_welcome'] = 'Benutzer bitte hier einloggen, um Weiterleitungen bzw. das Passwort zu ändern.';
$PALANG['pUsersLogin_username_incorrect'] = 'Falscher Login! Bitte benutzen Sie ihre Email-Adresse als Login';
$PALANG['pUsersLogin_password_incorrect'] = 'Falsches Passwort!';
$PALANG['pUsersLogin_password_recover'] = 'I forgot my password'; # XXX
$PALANG['pUsersLogin_password_recover'] = 'Ich habe mein Passwort vergessen';
$PALANG['pUsersMenu_vacation'] = 'Automatische Antwort';
$PALANG['pUsersMenu_edit_alias'] = 'Weiterleitung ändern';
@ -347,11 +348,14 @@ $PALANG['broadcast_mailboxes_only'] = "Nur an Postfächer senden";
$PALANG['broadcast_to_domains'] = "Senden an Domains:";
$PALANG['pStatus_undeliverable'] = 'möglicherweise UNZUSTELLBAR ';
$PALANG['pStatus_disabled'] = 'Konto deaktiviert ';
$PALANG['pStatus_expired'] = 'Passwort abgelaufen ';
$PALANG['pStatus_vacation'] = 'Automatische Antwort aktiviert ';
$PALANG['pStatus_custom'] = 'Zustellung an ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Das Passwort ist zu kurz - mindestens %s Zeichen benötigt";
$PALANG['password_no_characters'] = "Ihr Passwort muss mindestens %s Buchstaben enthalten.";
$PALANG['password_no_characters'] = "Ihr Passwort muss mindestens %s Buchstaben (A-Z, a-z) enthalten.";
$PALANG['password_no_digits'] = "Ihr Passwort muss mindestens %s Ziffer(n) enthalten.";
$PALANG['pInvalidDomainRegex'] = "Ungültiger Domainname %s - Überprüfung per RegEx fehlgeschlagen";
$PALANG['pInvalidDomainDNS'] = "Ungültige Domain %s - nicht per DNS auflösbar";
@ -371,6 +375,7 @@ $PALANG['pFetchmail_password_missing'] = 'Bitte geben Sie das Passwort ein!';
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port';
$PALANG['pFetchmail_field_src_auth'] = 'Anmeldemethode';
$PALANG['pFetchmail_field_src_user'] = 'Benutzername';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -382,7 +387,7 @@ $PALANG['pFetchmail_field_protocol'] = 'Protokoll';
$PALANG['pFetchmail_field_usessl'] = 'SSL aktiv';
$PALANG['pFetchmail_field_sslcertck'] = 'SSL Zertifikatsprüfung';
$PALANG['pFetchmail_field_sslcertpath'] = 'SSL Pfad der Zertifikate';
$PALANG['pFetchmail_field_sslfingerprint'] = 'SSL fingerprint (md5)';
$PALANG['pFetchmail_field_sslfingerprint'] = 'SSL Fingerabdruck (md5)';
$PALANG['pFetchmail_field_extra_options'] = 'Zusätzliche Optionen';
$PALANG['pFetchmail_field_mda'] = 'MDA';
$PALANG['pFetchmail_field_date'] = 'Datum';
@ -390,6 +395,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Zurückgegebener Text';
$PALANG['pFetchmail_desc_id'] = 'Eintrags-ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Lokales Postfach';
$PALANG['pFetchmail_desc_src_server'] = 'Entfernter Server';
$PALANG['pFetchmail_desc_src_port'] = 'Entfernter Port, falls nicht der Standard-Port benutzt werden soll. (0: Standard-Port)';
$PALANG['pFetchmail_desc_src_auth'] = 'Normalerweise \'password\'';
$PALANG['pFetchmail_desc_src_user'] = 'Entfernter Benutzername';
$PALANG['pFetchmail_desc_src_password'] = 'Entferntes Passwort';
@ -405,6 +411,8 @@ $PALANG['pFetchmail_desc_date'] = 'Datum des letzten Mailabrufs/Konf
$PALANG['pFetchmail_desc_returned_text'] = 'Textausgabe des letzten Mailabrufs';
$PALANG['dateformat_pgsql'] = 'dd.mm.YYYY'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%d.%m.%Y'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Password läuft ab';
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -142,6 +142,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Modifying the alias %s failed!';
$PALANG['pCreate_mailbox_welcome'] = 'Create a new mailbox for your domain.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.';
$PALANG['pCreate_mailbox_username_text_error1'] = 'The EMAIL is not valid!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'You have reached your limit to create mailboxes!';
$PALANG['pCreate_mailbox_password_text'] = 'Password for POP3/IMAP';
@ -348,11 +349,15 @@ $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes';
$PALANG['broadcast_to_domains'] = 'Send to domains:';
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE ';
$PALANG['pStatus_disabled'] = 'Account disabled ';
$PALANG['pStatus_expired'] = 'Password expired ';
$PALANG['pStatus_vacation'] = 'Vacation enabled ';
$PALANG['pStatus_custom'] = 'Delivers to ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Password is too short - requires %s characters";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s).";
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z).";
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s).";
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check";
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS";
@ -372,6 +377,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!';
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port';
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type';
$PALANG['pFetchmail_field_src_user'] = 'User';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -391,6 +397,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text';
$PALANG['pFetchmail_desc_id'] = 'Record ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox';
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)';
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Remote User';
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password';
@ -407,6 +414,8 @@ $PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Pass expires';
$PALANG['password_expiration_desc'] = 'Date when password will expire';
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Reenviar sólo al email especificado.';
$PALANG['pEdit_alias_result_error'] = '¡Imposible modificar el alias! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Crear un nuevo buzón para su dominio.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = '¡El e-mail no es válido!';
$PALANG['pCreate_mailbox_username_text_error3'] = '¡Ha llegado al límite de creación de buzones!';
$PALANG['pCreate_mailbox_password_text'] = 'Contraseña para POP3/IMAP';
@ -339,10 +340,13 @@ $PALANG['pBroadcast_error_empty'] = '¡Los campos Nombre, Asunto y Mensaje no pu
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'posiblemente NO SE ENTREGÓ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Enviado a ';
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "La contraseña es demasiado corta - se necesitan %s caracteres";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "El nombre de dominio %s es inválido, no se ajusta a la expresión regular";
$PALANG['pInvalidDomainDNS'] = "El dominio %s no es válido, y/o no tiene resolución DNS";
@ -361,6 +365,7 @@ $PALANG['pFetchmail_password_missing'] = '¡Por favor introduzca la contraseña
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Buzón';
$PALANG['pFetchmail_field_src_server'] = 'Servidor';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Tipo Autenticación';
$PALANG['pFetchmail_field_src_user'] = 'Usuario';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -380,6 +385,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Texto Devuelto';
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Buzón local';
$PALANG['pFetchmail_desc_src_server'] = 'Servidor Remoto';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Usuario Remoto';
$PALANG['pFetchmail_desc_src_password'] = 'Contraseña Remota';
@ -395,6 +401,8 @@ $PALANG['pFetchmail_desc_date'] = 'Fecha del último sondeo/cambio e
$PALANG['pFetchmail_desc_returned_text'] = 'Mensaje del último sondeo';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Aliase muutmine ebaõnnestus! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Loo uus postkast domeenis.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-posti aadress pole kehtiv!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Oled kasutanud kogu postkastide arvu!';
$PALANG['pCreate_mailbox_password_text'] = 'Parool POP3/IMAP\'le';
@ -341,10 +342,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -363,6 +367,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -382,6 +387,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -397,6 +403,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -137,6 +137,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Ezinezkoa aliasa aldatzea! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Postontzi berri bat sortu domeinuarentzat.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-maila baliogabekoa da!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Postontzi sorkuntza mugara iritsi zara!';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP-entzat pasahitza';
@ -336,10 +337,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -358,6 +362,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -377,6 +382,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -392,6 +398,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Edelleenlähetä ainoastaan annettuun sä
$PALANG['pEdit_alias_result_error'] = 'Aliasta ei voi muokata! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Luo uusi paikallinen postilaatikko.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Sähköpostiosoite ei ole oikean muotoinen!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Postilaatikoiden maksimimäärä saavutettu!';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP salasana';
@ -337,10 +338,13 @@ $PALANG['pBroadcast_error_empty'] = 'Nimi, Aihe tai Viesti kenttien ei pidä oll
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'ehkä ei voida toimittaa ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Toimittaa osoiteeseen ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Salasana on liian lyhyt, vaaditaan %s merkkiä";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Virheellinen domain nimi %s, ei läpäise regexp testiä";
$PALANG['pInvalidDomainDNS'] = "Virheellinen domain %s ja/tai ei löydy nimipalvelimista";
@ -359,6 +363,7 @@ $PALANG['pFetchmail_password_missing'] = 'Ole hyvä ja syötä etäkäyttäjän
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Sähköpostilaatikko';
$PALANG['pFetchmail_field_src_server'] = 'Palvelin';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Tunnistautumisen tyyppi';
$PALANG['pFetchmail_field_src_user'] = 'Käyttäjä';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -378,6 +383,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Palautettu teksti';
$PALANG['pFetchmail_desc_id'] = 'Tietue ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Paikallinen sähköpostilaatikko';
$PALANG['pFetchmail_desc_src_server'] = 'Etäpalvelin';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Useimmiten \'password\'';
$PALANG['pFetchmail_desc_src_user'] = 'Etäkäyttäjä';
$PALANG['pFetchmail_desc_src_password'] = 'Etäkäyttäjän salasana';
@ -393,6 +399,8 @@ $PALANG['pFetchmail_desc_date'] = 'Viimeisen tarkistuksen/konfiguraa
$PALANG['pFetchmail_desc_returned_text'] = 'Viesti edellisestä tarkistuksesta';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Fái ikki broytt dulnevni! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Stovna ein nýggjan postkassa á tínum navnaøki.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-post adressan er ógyldug!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Tú hevur nýtt tínum marki at stovna postkassar!';
$PALANG['pCreate_mailbox_password_text'] = 'Loyniorð til POP3/IMAP';
@ -342,10 +343,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -364,6 +368,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -383,6 +388,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -398,6 +404,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -26,7 +26,7 @@ $PALANG['confirm_delete_mailbox'] = 'Êtes-vous sûr de vouloir supprimer la bo
$PALANG['confirm_delete_vacation'] = 'Êtes-vous sûr de vouloir supprimer le message d\'absence pour %s?';
$PALANG['no_delete_permissions'] = 'Vous n\'êtes pas autorisé à supprimer %s !';
$PALANG['check_update'] = 'Vérifier les mises à jour';
$PALANG['invalid_parameter'] = 'Paramètres invalides !';
$PALANG['invalid_parameter'] = 'Paramètre invalide !';
$PALANG['show'] = 'Afficher:';
$PALANG['all'] = 'Tous';
$PALANG['created'] = 'Créé';
@ -37,7 +37,7 @@ $PALANG['must_be_numeric'] = '%s doit être au format numérique';
$PALANG['must_be_numeric_bigger_than_null'] = '%s doit être au format numérique et plus grand que 0';
$PALANG['must_be_boolean'] = '%s doit être booléen';
$PALANG['invalid_value_given'] = 'Valeur incorrecte pour %s';
$PALANG['edit_not_allowed'] = 'Vous n\'êtes pas autorisé à editer %s';
$PALANG['edit_not_allowed'] = 'Vous n\'êtes pas autorisé à éditer %s';
$PALANG['searchparams'] = 'Paramètre de recherche :';
$PALANG['pFooter_logged_as'] = 'Connecté en tant que %s';
@ -58,7 +58,7 @@ $PALANG['pMenu_fetchmail'] = 'Récupérer le courrier';
$PALANG['pMenu_sendmail'] = 'Envoyer un courriel';
$PALANG['pMenu_password'] = 'Mot de passe';
$PALANG['pMenu_viewlog'] = 'Journal';
$PALANG['pMenu_logout'] = 'Sortir';
$PALANG['pMenu_logout'] = 'Déconnexion';
$PALANG['pMain_welcome'] = 'Bienvenue sur Postfix Admin !';
$PALANG['pMain_overview'] = 'Visualiser vos alias et comptes courriels. (Modifier/Effacer)';
@ -66,8 +66,8 @@ $PALANG['pMain_create_alias'] = 'Ajouter un nouvel alias à votre domaine.';
$PALANG['pMain_create_mailbox'] = 'Ajouter un nouveau compte courriel à votre domaine.';
$PALANG['pMain_sendmail'] = 'Envoyer un courriel à un de vos nouveaux comptes courriels.';
$PALANG['pMain_password'] = 'Changer votre mot de passe pour le compte administrateur.';
$PALANG['pMain_viewlog'] = 'Visualiser le fichier d\'événements.';
$PALANG['pMain_logout'] = 'Sortir du système';
$PALANG['pMain_viewlog'] = 'Visualiser le journal des événements.';
$PALANG['pMain_logout'] = 'Déconnexion du système';
$PALANG['pOverview_disabled'] = 'Désactivé';
$PALANG['pOverview_unlimited'] = 'Illimité';
@ -80,16 +80,16 @@ $PALANG['pOverview_alias_title'] = ':: Alias';
$PALANG['pOverview_mailbox_title'] = ':: Comptes courriels';
$PALANG['go'] = 'Aller';
$PALANG['pOverview_welcome'] = 'Vue d\'ensemble pour ';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias de Domaines';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias de domaines';
$PALANG['pOverview_alias_address'] = 'De';
$PALANG['active'] = 'Actif';
$PALANG['and_x_more'] = '[et %s en plus...]';
$PALANG['pOverview_mailbox_username'] = 'courriel';
$PALANG['name'] = 'Nom';
$PALANG['pOverview_mailbox_quota'] = 'Limite (Mo)';
$PALANG['pOverview_vacation_edit'] = 'REPONDEUR ACTIVE';
$PALANG['pOverview_vacation_edit'] = 'RÉPONDEUR ACTIVE';
$PALANG['pOverview_vacation_option'] = 'Configurer le répondeur';
$PALANG['no_domains_for_this_admin'] = 'Vous n\'avez de permissions pour aucun domaine.';
$PALANG['no_domains_for_this_admin'] = 'Vous n\'avez les permissions pour aucun domaine.';
$PALANG['no_domains_exist'] = 'Vous devez créer au moins un domaine avant d\'utiliser la Liste des Virtuels.';
$PALANG['domain'] = 'Domaine';
@ -101,12 +101,12 @@ $PALANG['pDelete_delete_error'] = 'Impossible d\'effacer cette entrée ';
$PALANG['pDelete_delete_success'] = '%s supprimé.';
$PALANG['pDelete_domain_error'] = 'Ce domaine n\'est pas le votre ';
$PALANG['pDelete_alias_error'] = 'Impossible d\'effacer cet alias ';
$PALANG['pCreate_alias_domain_welcome'] = 'Les adresses mirroirs de l\'un de vos domaines vers un autre.';
$PALANG['pCreate_alias_domain_welcome'] = 'Les adresses mirroir de l\'un de vos domaines vers un autre.';
$PALANG['pCreate_alias_domain_alias'] = 'Alias de domaine';
$PALANG['pCreate_alias_domain_alias_text'] = 'Le domaine de récéption du courrier (source).';
$PALANG['pCreate_alias_domain_alias_text'] = 'Le domaine de réception du courrier (source).';
$PALANG['pCreate_alias_domain_target'] = 'Domaine cible';
$PALANG['pCreate_alias_domain_target_text'] = 'Le domaine qui va réceptionner le courrier à la place.';
$PALANG['pCreate_alias_domain_error1'] = 'Vous n\'êtes pas autorisé a créer la configuration choisie.';
$PALANG['pCreate_alias_domain_error1'] = 'Vous n\'êtes pas autorisé à créer la configuration choisie.';
$PALANG['pCreate_alias_domain_error2'] = 'La configuration choisie est invalide, merci d\'en choisir une autre !';
$PALANG['alias_domain_already_exists'] = 'Ce domaine est déjà un alias de domaine !';
$PALANG['alias_domain_does_not_exist'] = 'Ce domaine n\'est pas un alias de domaine !';
@ -131,17 +131,18 @@ $PALANG['mailbox_alias_cant_be_deleted'] = 'Cet alias appartient à un compte co
$PALANG['protected_alias_cant_be_deleted'] = 'L\'alias %s est protégé et ne peut être supprimé que par un Super Administrateur.';
$PALANG['pEdit_alias_welcome'] = 'Modifier les paramètres de transfert.';
$PALANG['pEdit_alias_help'] = 'Cibles multiples acceptées, une entrée par ligne.';
$PALANG['pEdit_alias_help'] = 'Destinataires multiples acceptés, une entrée par ligne.';
$PALANG['alias'] = 'Alias';
$PALANG['to'] = 'À';
$PALANG['pEdit_alias_goto_text_error1'] = 'Vous devez renseigner quelque chose dans le champ À';
$PALANG['pEdit_alias_goto_text_error2'] = 'L\'adresse email que vous avez indiqué est invalide: ';
$PALANG['pEdit_alias_goto_text_error2'] = 'L\'adresse email que vous avez indiquée est invalide: ';
$PALANG['pEdit_alias_domain_result_error'] = 'Impossible de modifier cet alias de domaine !';
$PALANG['pEdit_alias_forward_and_store'] = 'Conserver une copie des messages dans la boite aux lettres.';
$PALANG['pEdit_alias_forward_and_store'] = 'Conserver une copie des messages dans la boîte aux lettres.';
$PALANG['pEdit_alias_forward_only'] = 'Transférer les messages sans conserver de copie.';
$PALANG['pEdit_alias_result_error'] = 'Échec de la modification de l\'alias %s !';
$PALANG['pCreate_mailbox_welcome'] = 'Ajouter un nouveau compte courriel à votre domaine.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'L\'adresse email est invalide !';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Vous avez atteint le nombre maximum de comptes courriel !';
$PALANG['pCreate_mailbox_password_text'] = 'Mot de passe pour le compte POP3/IMAP';
@ -193,8 +194,8 @@ $PALANG['pVacation_result_added'] = 'Le répondeur de %s a été activé !';
$PALANG['pVacation_reply_type'] = 'Type de réponse';
$PALANG['pVacation_reply_delay_time'] = 'Intervalle';
$PALANG['pVacation_reply_delay_time_text'] = 'Durée en secondes';
$PALANG['pVacation_until_before_today'] = 'La date de [Actif jusqu\'au] est antèrieure à la date d\'aujourd\'hui';
$PALANG['pVacation_until_before_from'] = 'La date de [Actif jusqu\'au] est antèrieure à [Actif à partir de]';
$PALANG['pVacation_until_before_today'] = 'La date de [Actif jusqu\'au] est antérieure à la date d\'aujourd\'hui';
$PALANG['pVacation_until_before_from'] = 'La date de [Actif jusqu\'au] est antérieure à [Actif à partir de]';
$PALANG['reply_once'] = 'Répondre une seule fois';
$PALANG['reply_every_mail'] = 'Répondre à chaque message';
$PALANG['reply_once_per_day'] = 'Répondre une fois par jour';
@ -218,7 +219,7 @@ $PALANG['pViewlog_action_delete_alias'] = 'supprimer un alias';
$PALANG['pViewlog_action_delete_alias_domain'] = 'supprimer un alias de domaine';
$PALANG['pViewlog_action_edit_alias'] = 'éditer un alias';
$PALANG['pViewlog_action_edit_alias_state'] = 'activer un alias';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'éditer alias de domaine actif';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'éditer l\'alias de domaine actif';
$PALANG['pViewlog_action_edit_password'] = 'changer le mot de passe';
$PALANG['pViewlog_action_create_admin'] = 'créer un administrateur';
$PALANG['pViewlog_action_edit_admin'] = 'modifier un administrateur';
@ -283,7 +284,7 @@ $PALANG['pAdminEdit_domain_maxquota'] = 'Limite maximum';
$PALANG['pAdminEdit_domain_maxquota_text'] = 'Mo | -1 = désactivé | 0 = illimité';
$PALANG['pAdminEdit_domain_quota'] = 'Quota du Domaine';
$PALANG['transport'] = 'Transport';
$PALANG['pAdminEdit_domain_transport_text'] = 'Definir le transport';
$PALANG['pAdminEdit_domain_transport_text'] = 'Définir le transport';
$PALANG['pAdminEdit_domain_backupmx'] = 'Le serveur est un "Backup MX"';
$PALANG['pAdminEdit_domain_result_error'] = 'Échec de la mise à jour du domaine %s';
@ -307,7 +308,7 @@ $PALANG['pAdminEdit_admin_result_success'] = 'L\'administrateur %s a été ajout
$PALANG['pUsersLogin_welcome'] = 'Entrer votre adresse email pour modifier votre mot de passe et vos transferts.';
$PALANG['pUsersLogin_username_incorrect'] = 'L\'adresse email est invalide. Assurez-vous d\'avoir correctement saisi votre adresse email !';
$PALANG['pUsersLogin_password_incorrect'] = 'Votre mot de passe est invalide !';
$PALANG['pUsersLogin_password_recover'] = 'J\'ai oublié mon mot de passe';
$PALANG['pUsersLogin_password_recover'] = 'Mot de passe oublié';
$PALANG['pUsersMenu_vacation'] = 'Réponse Automatique';
$PALANG['pUsersMenu_edit_alias'] = 'Modifier votre transfert';
@ -318,7 +319,7 @@ $PALANG['pUsersMain_edit_alias'] = 'Modifier vos transferts de courriel.';
$PALANG['pUsersMain_password'] = 'Changer votre mot de passe.';
$PALANG['pUsersVacation_welcome'] = 'Répondeur Automatique.';
$PALANG['pUsersVacation_welcome_text'] = 'Le repondeur automatique pour l\'adresse %s est déjà configuré !';
$PALANG['pUsersVacation_welcome_text'] = 'Le répondeur automatique pour l\'adresse %s est déjà configuré !';
$PALANG['pUsersVacation_subject_text'] = 'Notification d\'absence';
$PALANG['message'] = 'Message';
$PALANG['pUsersVacation_body_text'] = <<<EOM
@ -337,18 +338,21 @@ $PALANG['pReturn_to'] = 'Réponse à';
$PALANG['pBroadcast_title'] = 'Envoyer un message général';
$PALANG['pBroadcast_name'] = 'Votre nom';
$PALANG['pBroadcast_success'] = 'Votre message général a été envoyé.';
$PALANG['pAdminMenu_broadcast_message'] = 'message général';
$PALANG['pAdminMenu_broadcast_message'] = 'Message général';
$PALANG['pBroadcast_error_empty'] = 'Les champs "Nom", "Sujet" et "Message" ne peuvent pas être vides !';
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['broadcast_mailboxes_only'] = 'Envoyer seulement aux comptes courriel';
$PALANG['broadcast_to_domains'] = 'Envoyer aux domaines:';
$PALANG['pStatus_undeliverable'] = 'Non délivrable ';
$PALANG['pStatus_disabled'] = 'Compte désactivé ';
$PALANG['pStatus_expired'] = 'Mot de passe expiré ';
$PALANG['pStatus_vacation'] = 'Répondeur activé ';
$PALANG['pStatus_custom'] = 'Délivré à ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = 'Mot de passe trop court. - %s caractères minimum';
$PALANG['password_no_characters'] = 'Votre mot de passe doit contenir au moins %s caractères.';
$PALANG['password_no_characters'] = 'Votre mot de passe doit contenir au moins %s lettres (A-Z, a-z).';
$PALANG['password_no_digits'] = 'Votre mot de passe doit contenir au moins %s chiffres.';
$PALANG['pInvalidDomainRegex'] = 'Nom de domaine invalide %s, vérification "regexp" impossible';
$PALANG['pInvalidDomainDNS'] = 'Le domaine %s est invalide et/ou non resolvable via les DNS';
$PALANG['pInvalidDomainDNS'] = 'Le domaine %s est invalide et/ou non résolvable via les DNS';
$PALANG['pInvalidMailRegex'] = 'L\'adresse email %s est invalide, vérification "regexp" impossible';
$PALANG['pFetchmail_welcome'] = 'Récupérer le courrier pour :';
$PALANG['pFetchmail_new_entry'] = 'Nouvelle entrée';
@ -364,6 +368,7 @@ $PALANG['pFetchmail_password_missing'] = 'Merci d\'indiquer le mot de passe dist
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Compte courriel';
$PALANG['pFetchmail_field_src_server'] = 'Serveur';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Type Auth';
$PALANG['pFetchmail_field_src_user'] = 'Utilisateur';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -383,6 +388,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Message retour';
$PALANG['pFetchmail_desc_id'] = 'Identifiant';
$PALANG['pFetchmail_desc_mailbox'] = 'Compte courriel local';
$PALANG['pFetchmail_desc_src_server'] = 'Serveur distant';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Surtout \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Utilisateur distant';
$PALANG['pFetchmail_desc_src_password'] = 'Mot de passe distant';
@ -398,6 +404,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date de la dernière vérification/changement
$PALANG['pFetchmail_desc_returned_text'] = 'Message de la dernière vérification';
$PALANG['dateformat_pgsql'] = 'dd-mm-YYYY';
$PALANG['dateformat_mysql'] = '%d-%m-%Y';
$PALANG['password_expiration'] = 'Expiration du mot de passe';
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -0,0 +1,407 @@
<?php
# $Id$
//
// Language file Spanish
// by Alexandre Espinosa Menor <aemenor@gmail.com>
$PALANG['YES'] = 'SI';
$PALANG['NO'] = 'NON';
$PALANG['edit'] = 'editar';
$PALANG['del'] = 'borrar';
$PALANG['exit'] = 'Sair';
$PALANG['cancel'] = 'Cancelar';
$PALANG['save'] = 'Gardar'; # XXX Text change: "Save" -> "Save changes"
$PALANG['confirm'] = 'Está seguro que desexa borralo?\n';
$PALANG['confirm_delete_admin'] = 'Realmente quere borrar o/a administrador/a %s?'; # XXX
$PALANG['confirm_delete_alias'] = 'Realmente quere borrar o alias %s?'; # XXX
$PALANG['confirm_delete_aliasdomain'] = 'Realmente quere borrar o alias de dominio %s?'; # XXX
$PALANG['confirm_delete_domain'] = 'Está seguro que desexa borrar todos os rexistros deste dominio? Non se pode desfacer!\n (%s)'; # XXX text changed to: 'Do you really want to delete all records for the domain %s? This can not be undone'
$PALANG['confirm_delete_fetchmail'] = 'Realmente quere borrar a tarefa de fetchmail %s?'; # XXX
$PALANG['confirm_delete_mailbox'] = 'Realmente quere borrar o buzón %s?'; # XXX
$PALANG['confirm_delete_vacation'] = 'Realmente quere borrar a mensaxe de ausencia de %s?'; # XXX
$PALANG['no_delete_permissions'] = 'Non ten permisos para borrar %s!'; # XXX
$PALANG['check_update'] = 'Comprobar actualización'; # XXX
$PALANG['invalid_parameter'] = 'Par&aacute;metro inválido!';
$PALANG['show'] = 'Ver:'; # XXX
$PALANG['all'] = 'Todo'; # XXX
$PALANG['created'] = 'Creado'; # XXX
$PALANG['unknown'] = 'descoñecido'; # XXX
$PALANG['download_csv'] = 'Descarga esta lista como un ficheiro CSV'; # XXX
$PALANG['missing_field'] = 'Non existe o campo %s '; # XXX
$PALANG['must_be_numeric'] = '%s debe ser numérico'; # XXX
$PALANG['must_be_numeric_bigger_than_null'] = '%s debe ser numérico e maior que 0'; # XXX
$PALANG['must_be_boolean'] = '%s debe ser booleano'; # XXX
$PALANG['invalid_value_given'] = 'Valor inválido para %s'; # XXX
$PALANG['edit_not_allowed'] = 'Non ten permisos para editar %s'; # XXX
$PALANG['searchparams'] = 'Buscar parámetros:'; # XXX
$PALANG['pFooter_logged_as'] = 'Autenticado como %s'; # XXX Text change: 'logged in as %s' (the 'in' was missing)
$PALANG['pLogin_welcome'] = 'Login de administrador para administración de dominios.';
$PALANG['pLogin_username'] = 'Usuario (e-mail)'; # XXX compare with pUsersLogin_username - should be "Login (email)"
$PALANG['password'] = 'Contrasinal';
$PALANG['pLogin_language'] = 'Linguaxe'; # XXX
$PALANG['pLogin_button'] = 'Usuario'; # XXX compare with pUsersLogin_button - should be "Login"
$PALANG['pLogin_failed'] = 'A conta de email ou o contrasinal non son correctas.';
$PALANG['pLogin_login_users'] = 'Login para ir á sección de usuarios.';
$PALANG['pMenu_main'] = 'Principal';
$PALANG['pMenu_overview'] = 'Resumo';
$PALANG['add_alias'] = 'Engadir alias';
$PALANG['add_alias_domain'] = 'Engadir alias de dominio'; # XXX check text - should be 'Add Alias Domain'
$PALANG['add_mailbox'] = 'Engadir buzón';
$PALANG['pMenu_fetchmail'] = 'Obter Emails';
$PALANG['pMenu_sendmail'] = 'Enviar e-mail';
$PALANG['pMenu_password'] = 'Contrasinal';
$PALANG['pMenu_viewlog'] = 'Ver Logs';
$PALANG['pMenu_logout'] = 'Sair';
$PALANG['pMain_welcome'] = 'Benvido/a a Postfix Admin!';
$PALANG['pMain_overview'] = 'Listado dos alias e buzóns. Pode editalos / borralos desde aquí.';
$PALANG['pMain_create_alias'] = 'Creación dun novo alias para o seu dominio.'; # XXX check text - should be 'Create a new alias for your domain.'
$PALANG['pMain_create_mailbox'] = 'Creación dun nuevo buzón para o seu dominio.';
$PALANG['pMain_sendmail'] = 'Enviar un e­mail a un dos buzóns recentemente creados.';
$PALANG['pMain_password'] = 'Cambiar o contrasinal para a súa conta de administración.';
$PALANG['pMain_viewlog'] = 'Ver Logs.';
$PALANG['pMain_logout'] = 'Sair.';
$PALANG['pOverview_disabled'] = 'Desabilitado';
$PALANG['pOverview_unlimited'] = 'Ilimitado';
$PALANG['pOverview_title'] = ':: Dominios Definidos';
$PALANG['pOverview_up_arrow'] = 'Arriba';
$PALANG['pOverview_right_arrow'] = 'Páxina seguinte';
$PALANG['pOverview_left_arrow'] = 'Páxina anterior';
$PALANG['pOverview_alias_domain_title'] = ':: Alias de Dominios';
$PALANG['pOverview_alias_title'] = ':: Alias';
$PALANG['pOverview_mailbox_title'] = ':: Buzóns';
$PALANG['go'] = 'Ir';
$PALANG['pOverview_welcome'] = 'Resumo de ';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias de Dominios';
$PALANG['pOverview_alias_address'] = 'De';
$PALANG['active'] = 'Activo';
$PALANG['and_x_more'] = '[e %s máis...]';
$PALANG['pOverview_mailbox_username'] = 'E-mail';
$PALANG['name'] = 'Nome';
$PALANG['pOverview_mailbox_quota'] = 'Cota (MB)';
$PALANG['pOverview_vacation_edit'] = 'VACATION ESTÁ ACTIVADO';
$PALANG['pOverview_vacation_option'] = 'Establecer Vacation';
$PALANG['no_domains_for_this_admin'] = 'Non ten permisos para nengún dominio.'; # XXX
$PALANG['no_domains_exist'] = 'Debe crear cando menos un dominio antes de empregar unha lista virtual.'; # "virtual list" should match $PALANG['pAdminMenu_list_virtual'] # XXX
$PALANG['domain'] = 'Dominio';
$PALANG['pOverview_get_alias_domains'] = 'Alias de Dominios';
$PALANG['mailboxes'] = 'Buzóns';
$PALANG['pOverview_get_quota'] = 'Cota de buzón (MB)';
$PALANG['pDelete_delete_error'] = 'Imposible borrar o rexistro ';
$PALANG['pDelete_delete_success'] = '%s borrado.';
$PALANG['pDelete_domain_error'] = 'Este dominio non lle pertence ';
$PALANG['pDelete_alias_error'] = 'Non se puido eliminar o alias ';
$PALANG['pCreate_alias_domain_welcome'] = 'Sincronizar direccións dun dominio a outro.';
$PALANG['pCreate_alias_domain_alias'] = 'Alias de Dominio';
$PALANG['pCreate_alias_domain_alias_text'] = 'O dominio ao que cheega o email.';
$PALANG['pCreate_alias_domain_target'] = 'Dominio de destino';
$PALANG['pCreate_alias_domain_target_text'] = 'O dominio ao que deberían ir os emails.';
$PALANG['pCreate_alias_domain_error1'] = 'Non estás autorizado a crear a configuración que elexiches.';
$PALANG['pCreate_alias_domain_error2'] = 'A configuración seleccionada non é válida, por favor elixe unha distinta!';
$PALANG['alias_domain_already_exists'] = 'Xa existe un alias para este dominio!'; # XXX
$PALANG['alias_domain_does_not_exist'] = 'Non existe un alias para este dominio!'; # XXX
$PALANG['alias_domain_create_failed'] = 'Fallou a inserción na base de datos. (%s)'; # XXX Text changed to: Creating the alias domain %s failed!
$PALANG['alias_domain_change_failed'] = 'Errou o cambio de alias do dominio %s!'; # XXX
$PALANG['pCreate_alias_domain_error4'] = 'Xa están todos os dominios asignados.';
$PALANG['pCreate_alias_domain_success'] = 'O alias de dominio insertouse na táboa! (%s)'; # XXX Text changed to: The alias domain %s has been created.
$PALANG['alias_domain_changed'] = 'O alias do dominio cambiouse.'; # XXX
$PALANG['alias_domain_to_itsself'] = 'Un dominio non pode ser un alias de dominio de sí mesmo!'; # XXX
$PALANG['delete_domain_aliasdomain_target'] = 'O dominio %s é o destino dun ou máis alias de dominio e non pode ser borrado! (Borra primeiro os alias do dominio.)'; # XXX
$PALANG['pCreate_alias_address_text_error1'] = 'O ALIAS non é válido!';
$PALANG['alias_does_not_exist'] = 'Este alias non existe!'; # XXX
$PALANG['email_address_already_exists'] = '¡Esta dirección xa existe, elixa outra diferente por favor!'; # XXX check text - should be 'This email address already exists, please choose a different one\!'
$PALANG['pCreate_alias_address_text_error3'] = 'Chegou ao seu límite de creación de alias!';
$PALANG['pCreate_alias_goto_text'] = 'Onde debe de ser enviado o e-mail.';
$PALANG['pCreate_alias_goto_text_error'] = 'O PARA non é válido!';
$PALANG['pCreate_alias_result_error'] = 'Non é posible engadir o alias á táboa de alias! (%s)'; # XXX Text changed to: Creating the alias %s failed!
$PALANG['pCreate_alias_result_success'] = 'O alias foi engadido á táboa de alias!'; # XXX text change: 'The alias %s has been created!'
$PALANG['alias_updated'] = 'O alias %s foi actualizado!'; # XXX
$PALANG['pCreate_alias_catchall_text'] = 'Para crear un alias xeral use "*" como alias. Para unha redirección de dominio a dominio, use "*@domain.tld" como Destino.'; # XXX check/beautify - was split in two lines before
$PALANG['mailbox_alias_cant_be_deleted'] = 'Este alias pertence a un buzón e non pode borrarse!'; # XXX
$PALANG['protected_alias_cant_be_deleted'] = 'O alias %s está protexido e só pode ser borrado por un superadmin'; # XXX
$PALANG['pEdit_alias_welcome'] = 'Edite un alias para o seu dominio.'; # XXX Text change to: 'Edit forwarding settings'
$PALANG['pEdit_alias_help'] = 'Unha entrada por liña.'; # XXX # XXX Text change to: 'Accepts multiple targets, one entry per line.'
$PALANG['alias'] = 'Alias';
$PALANG['to'] = 'Destino';
$PALANG['pEdit_alias_goto_text_error1'] = 'Non introduciu nada no destino';
$PALANG['pEdit_alias_goto_text_error2'] = 'A dirección de e-mail introducida non é válida: ';
$PALANG['pEdit_alias_domain_result_error'] = 'Non se puido modificar o alias de dominio!';
$PALANG['pEdit_alias_forward_and_store'] = 'Entregar no buzón local.';
$PALANG['pEdit_alias_forward_only'] = 'Reenviar só ao email especificado.';
$PALANG['pEdit_alias_result_error'] = 'Imposible modificar o alias! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Crear un novo buzón para o seu dominio.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'O email non é válido!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Chegou ao límite de creación de buzóns!';
$PALANG['pCreate_mailbox_password_text'] = 'Contrasinal para POP3/IMAP';
$PALANG['pCreate_mailbox_name_text'] = 'Nome completo';
$PALANG['pCreate_mailbox_phone'] = 'Teléfono móvil'; # XXX
$PALANG['pCreate_mailbox_phone_desc'] = "Empregado para enviar un SMS se esquece o seu contrasinal"; # XXX
$PALANG['pCreate_mailbox_email'] = 'Outro email'; # XXX
$PALANG['pCreate_mailbox_email_desc'] = "Empregado se esquece o seu contrasinal"; # XXX
$PALANG['pCreate_mailbox_mail'] = 'Enviar correo benvida';
$PALANG['pCreate_mailbox_result_error'] = 'Imposible engadir un buzón á táboa de buzóns! (%s)'; # XXX Text changed to: Creating the mailbox %s failed!
$PALANG['pCreate_mailbox_result_success'] = 'O buzón foi engadido á táboa de buzóns! (%s)'; # XXX Text changed to: The mailbox %s has been added to the mailbox table!
$PALANG['pCreate_mailbox_result_succes_nosubfolders'] = 'O buzón %s foi engadido á táboa de buzóns, pero nengún (ou só algún) das subcarpetas predefinidas puideron ser creadas.'; # XXX
$PALANG['mailbox_updated'] = "O buzón %s fpoi actualizado."; # XXX
$PALANG['mailbox_update_failed'] = "A actualización do buzón %s fallou!"; # XXX
$PALANG['pEdit_mailbox_welcome'] = 'Editar un buzón para o seu dominio.';
$PALANG['pEdit_mailbox_username'] = 'Usuario';
$PALANG['pEdit_mailbox_password_text_error'] = 'Os contrasinais introducidos non coinciden!';
$PALANG['pEdit_mailbox_quota'] = 'Cota';
$PALANG['pEdit_mailbox_quota_text'] = 'MB';
$PALANG['mb_max'] = 'MB (max: %s)'; # XXX
$PALANG['pEdit_mailbox_quota_text_error'] = 'A cota especificada é demasiado alta!';
$PALANG['pEdit_mailbox_domain_error'] = 'Este dominio non lle pertence: ';
$PALANG['pEdit_mailbox_result_error'] = 'Imposible mudar o contrasinal!';
$PALANG['pPassword_welcome'] = 'Cambie o seu contrasinal de login.';
$PALANG['pPassword_admin'] = 'Login';
$PALANG['pPassword_password_current'] = 'Contrasinal actual';
$PALANG['pPassword_password_current_text_error'] = 'Non se introduciu o contrasinal actual!';
$PALANG['pPassword_password'] = 'Novo contrasinal';
$PALANG['pPassword_password2'] = 'Novo contrasinal (repetir)';
$PALANG['pPassword_password_text_error'] = 'Os contrasinais introducidos non coinciden ou están en branco!'; # XXX check/beautify - was split in two lines before
$PALANG['change_password'] = 'Cambiar contrasinal'; # XXX check text - should be 'Change Password'
$PALANG['pPassword_result_error'] = 'Imposible mudar o contrasinal! (%s)'; # XXX Text changed to: Changing the password for %s failed!
$PALANG['pPassword_result_success'] = 'o seu contrasinal foi cambiado! (%s)'; # XXX Text changed to: The password for %s has been changed.
$PALANG['pPassword_recovery_title'] = 'Siga as instruccións para mudar o seu contrasinal.'; # XXX
$PALANG['pPassword_recovery_button'] = 'Enviar o código'; # XXX
$PALANG['pPassword_recovery_email_body'] = "Olá,\n\nUse a seguinte ligazón para mudar o seu contrasinal de correo :\n%s\n\nGrazas,\n\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_sms_body'] = "Olá,\nO código para mudar o seu contrasinal é: %s\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_processed'] = "Procesouse a súa petición. Se introduciu un usuario válido, recibirá un email/SMS con un código de contrasinal."; # XXX
$PALANG['pPassword_password_code'] = 'Código enviado por email/SMS'; # XXX
$PALANG['pPassword_code_text_error'] = 'Código inválido'; # XXX
$PALANG['pEdit_vacation_set'] = 'Cambiar / Establecer mensaxe de ausencia';
$PALANG['pEdit_vacation_remove'] = 'Quitar mensaxe de ausencia';
$PALANG['pVacation_result_error'] = 'Imposible actualizar a configuración e a resposta automática! (%s)'; # XXX Text changed to: Updating the auto response settings for %s failed
$PALANG['pVacation_result_removed'] = 'Autoresposta eliminada! (%s)'; # XXX Text changed to "Auto response for %s has been disabled!"
$PALANG['pVacation_result_added'] = 'Autoresposta habilitada! (%s)'; # XXX Text changed to "Auto response for %s has been enabled!"
$PALANG['pVacation_reply_type'] = 'Escolla de resposta'; # XXX
$PALANG['pVacation_reply_delay_time'] = 'Intervalo de tempo'; # XXX
$PALANG['pVacation_reply_delay_time_text'] = 'Tempo en segundos'; # XXX
$PALANG['pVacation_until_before_today'] = 'The Date of [Active until] is set before Today'; # XXX
$PALANG['pVacation_until_before_from'] = 'The Date of [Active until] is set before [Active from]'; # XXX
$PALANG['reply_once'] = 'Respostar unha vez'; # XXX
$PALANG['reply_every_mail'] = 'Respostar cada email'; # XXX
$PALANG['reply_once_per_day'] = 'Respostar unha vez ao día'; # XXX
$PALANG['reply_once_per_week'] = 'Respostar unha vez á semana'; # XXX
$PALANG['pViewlog_welcome'] = 'Ver as últimas %s accións para ';
$PALANG['pViewlog_timestamp'] = 'Data/Hora';
$PALANG['pViewlog_action'] = 'Acción';
$PALANG['pViewlog_data'] = 'Datos';
$PALANG['pViewlog_action_create_domain'] = 'crear domain'; # XXX
$PALANG['pViewlog_action_delete_domain'] = 'borrar domain'; # XXX
$PALANG['pViewlog_action_edit_domain'] = 'editar domain'; # XXX
$PALANG['pViewlog_action_create_mailbox'] = 'crear buzón';
$PALANG['pViewlog_action_delete_mailbox'] = 'borrar buzón';
$PALANG['pViewlog_action_edit_mailbox'] = 'editar buzón';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'editar buzón activo';
$PALANG['pViewlog_action_create_alias'] = 'crear alias';
$PALANG['pViewlog_action_create_alias_domain'] = 'crear alias de dominio';
$PALANG['pViewlog_action_edit_alias_domain'] = 'editar alias de dominio'; # XXX
$PALANG['pViewlog_action_delete_alias'] = 'borrar alias';
$PALANG['pViewlog_action_delete_alias_domain'] = 'borrar alias de dominio';
$PALANG['pViewlog_action_edit_alias'] = 'editar alias';
$PALANG['pViewlog_action_edit_alias_state'] = 'editar alias activo';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'editar alias de dominio activo';
$PALANG['pViewlog_action_edit_password'] = 'cambiar contrasinal';
$PALANG['pViewlog_action_create_admin'] = 'crear admin'; # XXX
$PALANG['pViewlog_action_edit_admin'] = 'editar admin'; # XXX
$PALANG['pViewlog_action_delete_admin'] = 'borrar admin'; # XXX
$PALANG['pViewlog_action_edit_vacation'] = 'editar ausencia'; # XXX
$PALANG['pViewlog_action_create_fetchmail'] = 'crear tarefa de fetchmail'; # XXX
$PALANG['pViewlog_action_edit_fetchmail'] = 'editar tarefa de fetchmail'; # XXX
$PALANG['pViewlog_action_delete_fetchmail'] = 'borrar tarefa de fetchmail'; # XXX
$PALANG['pViewlog_result_error'] = 'Imposible atopar os logs!';
$PALANG['pSendmail_welcome'] = 'Enviar un email.';
$PALANG['from'] = 'De';
$PALANG['pSendmail_to'] = 'Destino';
$PALANG['pSendmail_to_text_error'] = 'A dirección destino está baleira o é unha dirección inválida!';
$PALANG['subject'] = 'Asunto';
$PALANG['pSendmail_subject_text'] = 'Benvido';
$PALANG['pSendmail_body'] = 'Corpo';
$PALANG['pSendmail_button'] = 'Enviar mensaxe';
$PALANG['pSendmail_result_error'] = 'Imposible enviar o email! (%s)'; # XXX text change - new: Unable to send email to %s!
$PALANG['pSendmail_result_success'] = 'Email enviado! (%s)'; # XXX text change - new: Email sent to %s.
$PALANG['pAdminMenu_list_admin'] = 'Lista de administradores';
$PALANG['pAdminMenu_list_domain'] = 'Lista de dominios';
$PALANG['pAdminMenu_list_virtual'] = 'Lista de direccións virtuais';
$PALANG['pAdminMenu_backup'] = 'Backup';
$PALANG['pAdminMenu_create_domain_admins'] = 'Administradores de dominio';
$PALANG['pAdminMenu_create_admin'] = 'Novo administrador';
$PALANG['pAdminMenu_create_domain'] = 'Novo dominio';
$PALANG['pAdminList_admin_count'] = 'Dominios';
$PALANG['description'] = 'Descripción';
$PALANG['aliases'] = 'Alias';
$PALANG['pAdminList_domain_quota'] = 'Cota de dominio (MB)'; # XXX
$PALANG['pAdminList_domain_backupmx'] = 'Backup MX'; # XXX
$PALANG['last_modified'] = 'Última Modificación';
$PALANG['pAdminCreate_domain_welcome'] = 'Engadir novo dominio';
$PALANG['pAdminCreate_domain_domain_text_error'] = 'O dominio xa existe!';
$PALANG['domain_does_not_exist'] = 'O dominio non existe!'; # XXX
$PALANG['pAdminCreate_domain_domain_text_error2'] = 'O dominio non é válido!';
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Engadir alias por defecto';
$PALANG['pAdminCreate_domain_button'] = 'Engadir dominio';
$PALANG['pAdminCreate_domain_result_error'] = 'Imposible engadir o dominio! (%s)'; # XXX Text changed to: Adding the domain %s failed!
$PALANG['pAdminCreate_domain_result_success'] = 'O dominio foi añadido! (%s)'; # XXX Text changed to: The domain %s has been added.
$PALANG['domain_updated'] = 'O dominio %s foi actualizado.'; # XXX
$PALANG['pAdminDelete_admin_error'] = 'Non se puido borrar admin!'; # XXX
$PALANG['domain_postdel_failed'] = 'Non se puido borrar o dominio!'; # XXX Text changed to: The domain postdeletion script failed, check the error log for details!
$PALANG['domain_postcreate_failed'] = 'Fallou o script executado despois da creación do dominio, revise o log!'; # XXX
$PALANG['mailbox_postdel_failed'] = 'Fallou o script executado despois do borrado do buzón, revise o log!'; # XXX
$PALANG['mailbox_postedit_failed'] = 'Fallou o script executado despois da edición do buzón, revise o log!'; # XXX
$PALANG['mailbox_postcreate_failed'] = 'Fallou o script executado despois da creación do buzón, revise o log!'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = 'Non se puido eliminar o alias do dominio!';
$PALANG['domain_conflict_vacation_domain'] = 'Non pode usar o dominio de ausencia como dominio de correo!'; # XXX
$PALANG['pAdminEdit_domain_welcome'] = 'Editar un dominio';
$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = desabilitar | 0 = ilimitado';
$PALANG['pAdminEdit_domain_maxquota'] = 'Cota máxima';
$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB | -1 = desabilitar | 0 = ilimitado';
$PALANG['pAdminEdit_domain_quota'] = 'Cota de dominio'; # XXX
$PALANG['transport'] = 'Transporte'; # XXX check text - should be 'Transport'
$PALANG['pAdminEdit_domain_transport_text'] = 'Definir transporte'; # XXX
$PALANG['pAdminEdit_domain_backupmx'] = 'O servidor de correo é backup MX'; # XXX
$PALANG['pAdminEdit_domain_result_error'] = 'Imposible modificar o dominio! (%s)'; # XXX Text changed to: Modifying the domain %s failed!
$PALANG['pAdminCreate_admin_welcome'] = 'Engadir un novo administrador de dominio';
$PALANG['email_address'] = 'Email';
$PALANG['pAdminCreate_admin_username_text_error1'] = 'Administrador/a non é un email válido!';
$PALANG['admin_already_exists'] = 'O/a administrador/a xa existe ou non é válido/a!'; # XXX Text changed to: The admin already exists!
$PALANG['admin_does_not_exist'] = 'O/a administrador/a non existe!'; # XXX
$PALANG['pAdminCreate_admin_button'] = 'Engadir administrador/a';
$PALANG['pAdminCreate_admin_result_error'] = 'Imposible engadir o/a administrador/a! (%s)'; # XXX Text changed to: Adding the admin %s failed!
$PALANG['pAdminCreate_admin_result_success'] = 'O/A administrador/a foi engadido! (%s)'; # XXX Text changed to: The admin %s has been added.
$PALANG['pAdminEdit_admin_welcome'] = 'Editar un/unha administrador/a de dominio';
$PALANG['admin'] = 'Administrador/a';
$PALANG['password_again'] = 'Contrasinal (repetir)';
$PALANG['super_admin'] = 'Super admin'; # XXX
$PALANG['super_admin_desc'] = 'Super admins teñen aceso a todos os dominios e poden manexar dominios e contas de administradores/as.'; # XXX
$PALANG['pAdminEdit_admin_result_error'] = 'Imposible modificar o/a administrador/a! (%s)'; # XXX Text changed to: Modifying the admin %s failed!
$PALANG['pAdminEdit_admin_result_success'] = 'O/A administrador/a foi modificado! (%s)'; # XXX Text changed to: The admin %s has been modified.
$PALANG['pUsersLogin_welcome'] = 'Login de usuarios para mudar o alias.';
$PALANG['pUsersLogin_username_incorrect'] = 'Su login no es correcto. ¡Asegúrese de haber introducido su dirección de e-mail como login!';
$PALANG['pUsersLogin_password_incorrect'] = '¡Su contraseña no es correcta!';
$PALANG['pUsersLogin_password_recover'] = 'I forgot my password'; # XXX
$PALANG['pUsersMenu_vacation'] = 'Resposta automática';
$PALANG['pUsersMenu_edit_alias'] = 'Cambiar a redirección';
$PALANG['pUsersMain_vacation'] = 'Configure unha mensaxe de "fora do traballo" ou unha resposta automática para o seu correo.';
$PALANG['pUsersMain_vacationSet'] = $PALANG['pUsersMenu_vacation'] . ' está ACTIVADO, click \'' . $PALANG['pUsersMenu_vacation'] . '\' para ' . $PALANG['edit'] . '/eliminar';
$PALANG['pUsersMain_edit_alias'] = 'Cambie a súa redirección de correo.';
$PALANG['pUsersMain_password'] = 'Cambie o seu contrasinal.';
$PALANG['pUsersVacation_welcome'] = 'Resposta automática.';
$PALANG['pUsersVacation_welcome_text'] = 'Xa dispón dunha resposta automática configurada! (%s)'; # XXX Text changed to: 'Auto response for %s is active!'
$PALANG['pUsersVacation_subject_text'] = 'Fóra do traballo';
$PALANG['message'] = 'Mensaxe';
$PALANG['pUsersVacation_body_text'] = <<<EOM
Estarei fóra desde <date> ata <date>.
Para asuntos urxentes, pode contactar comigo en <contact person>.
EOM;
$PALANG['pUsersVacation_activefrom'] = 'Activo desde'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Activo ata'; # XXX
$PALANG['pEdit_dbLog_editactive'] = 'cambiar estado activo';
$PALANG['pSearch'] = 'buscar';
$PALANG['pSearch_welcome'] = 'Buscando: ';
$PALANG['pReturn_to'] = 'Volver a';
$PALANG['pBroadcast_title'] = 'Enviar mensaxe a todos'; # XXX
$PALANG['pBroadcast_name'] = 'O teu nombre';
$PALANG['pBroadcast_success'] = 'Enviouse a mensaxe.';
$PALANG['pAdminMenu_broadcast_message'] = 'Mensaxe de Broadcast'; # XXX
$PALANG['pBroadcast_error_empty'] = 'Os campos Nome, Asunto e Mensaxe non poden estar baleiros!';
$PALANG['broadcast_mailboxes_only'] = 'Só enviar a buzóns'; # XXX
$PALANG['broadcast_to_domains'] = 'Enviar a dominios:'; # XXX
$PALANG['pStatus_undeliverable'] = 'posiblemente NON SE ENTREGOU';
$PALANG['pStatus_disabled'] = 'Conta desabilitada '; # XXX
$PALANG['pStatus_expired'] = 'Contrasinal vencido '; # XXX
$PALANG['pStatus_vacation'] = 'Ausencia activada '; # XXX
$PALANG['pStatus_custom'] = 'Enviado a ';
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "O contrasinal é demasiado corto - necesitanse %s caracteres";
$PALANG['password_no_characters'] = "O contrasinal debe conter ao menos %s letras (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "O contrasinal debe conter ao menos %s díxito(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "O nome de dominio %s é inválido, non se axusta á expresión regular";
$PALANG['pInvalidDomainDNS'] = "O dominio %s non é válido, e/ou non ten resolución DNS";
$PALANG['pInvalidMailRegex'] = "A dirección de email non é válida, non se axusta á expresión regular (%s)"; # XXX %s added - but it should be in the text, not at the end
$PALANG['pFetchmail_welcome'] = 'Obter mail para:';
$PALANG['pFetchmail_new_entry'] = 'Nova entrada';
$PALANG['fetchmail_already_exists'] = 'Esta tarefa de fetchmail xa existe!'; # XXX
$PALANG['fetchmail_does_not_exist'] = 'Esta tarefa de fetchmail non existe!'; # XXX
$PALANG['pFetchmail_database_save_error'] = 'Non se puido gardar a entrada na base de datos!';
$PALANG['pFetchmail_database_save_success'] = 'Entrada gardada na base de datos.';
$PALANG['pFetchmail_error_invalid_id'] = 'Non se atopou rexistro co ID %s!'; # XXX
$PALANG['pFetchmail_invalid_mailbox'] = '¡Buzón inválido!';
$PALANG['pFetchmail_server_missing'] = 'Por favor introduza o nome do servidor remoto!';
$PALANG['pFetchmail_user_missing'] = 'Por favor introduza o nome do servidor remoto!';
$PALANG['pFetchmail_password_missing'] = 'Por favor introduza o contrasinal remota!';
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Buzón';
$PALANG['pFetchmail_field_src_server'] = 'Servidor';
$PALANG['pFetchmail_field_src_port'] = 'Porto'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Tipo Autenticación';
$PALANG['pFetchmail_field_src_user'] = 'Usuario';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
$PALANG['pFetchmail_field_src_folder'] = 'Cartafol';
$PALANG['pFetchmail_field_poll_time'] = 'Poll'; # XXX
$PALANG['pFetchmail_field_fetchall'] = 'Obter todo';
$PALANG['pFetchmail_field_keep'] = 'Conservar';
$PALANG['pFetchmail_field_protocol'] = 'Protocolo';
$PALANG['pFetchmail_field_usessl'] = 'SSL activado';
$PALANG['pFetchmail_field_sslcertck'] = 'Comprobarción de certificado SSL'; # XXX
$PALANG['pFetchmail_field_sslcertpath'] = 'Ruta a certificados SSL'; # XXX
$PALANG['pFetchmail_field_sslfingerprint'] = 'Pegada SSL (md5)'; # XXX
$PALANG['pFetchmail_field_extra_options'] = 'Opcións extras';
$PALANG['pFetchmail_field_mda'] = 'MDA'; # XXX
$PALANG['pFetchmail_field_date'] = 'Data';
$PALANG['pFetchmail_field_returned_text'] = 'Texto Devolto';
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Buzón local';
$PALANG['pFetchmail_desc_src_server'] = 'Servidor Remoto';
$PALANG['pFetchmail_desc_src_port'] = 'Número de porto remoto, se é necesario un non estándar. (0: usar o porto por defecto)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Principalmente \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Usuario Remoto';
$PALANG['pFetchmail_desc_src_password'] = 'Contrasinal Remoto';
$PALANG['pFetchmail_desc_src_folder'] = 'Cartafol Remoto';
$PALANG['pFetchmail_desc_poll_time'] = 'Obter cada ... minutos';
$PALANG['pFetchmail_desc_fetchall'] = 'Obter as mensaxes lidas e novas';
$PALANG['pFetchmail_desc_keep'] = 'Gardar unha copia das mensaxes no servidor remoto';
$PALANG['pFetchmail_desc_protocol'] = 'Protocolo a usar';
$PALANG['pFetchmail_desc_usessl'] = 'Cifrado SSL';
$PALANG['pFetchmail_desc_extra_options'] = 'Opcións extras para fetchmail';
$PALANG['pFetchmail_desc_mda'] = 'Mail Delivery Agent'; # XXX
$PALANG['pFetchmail_desc_date'] = 'Data do último sondeo/cambio na configuración';
$PALANG['pFetchmail_desc_returned_text'] = 'Mensaxe do último sondeo';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Expiración de contrasinal'; # XXX
$PALANG['password_expiration_desc'] = 'Data na que expirará o contrasinal'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */
?>

@ -138,6 +138,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Alias nije bilo moguče promjeniti! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Stvori novi poštanski ormarić za izbranu domenu.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Adresa e-pošte nije pravilna!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Dostigli ste vaš limit poštanskih ormarića!';
$PALANG['pCreate_mailbox_password_text'] = 'Lozinka za POP3/IMAP';
@ -335,10 +336,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -358,6 +362,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -377,6 +382,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -392,6 +398,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -141,6 +141,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Továbbítás csak az adott email címre.
$PALANG['pEdit_alias_result_error'] = 'Nemsikerült módosítani az Aliast! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Új postafiók létrehozása az adott domainhez.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Érvénytelen EMAIL !';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Elérted a maximális postafiók számot!';
$PALANG['pCreate_mailbox_password_text'] = 'Jelszó a POP3/IMAP -hoz';
@ -348,11 +349,14 @@ $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'lehet hogy nem kézbesíthető ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Ide kézbesítődik ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "A Jelszó túl rövid - legalább %s karakter szükséges";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -372,6 +376,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -391,6 +396,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -406,6 +412,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Get ekki breytt alias! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Create a new local mailbox for your domain.'; # XXX
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Netfangið er ekki til!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Þú hefur stofnað þau póstholf sem þú hefur heimild til!';
$PALANG['pCreate_mailbox_password_text'] = 'Lykilorð til að opna POP3/IMAP';
@ -337,10 +338,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -359,6 +363,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -378,6 +383,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -393,6 +399,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -140,6 +140,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Inoltra solo a un altro server.';
$PALANG['pEdit_alias_result_error'] = 'Impossibile modificare alias! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Crea una nuova casella di posta locale per il tuo dominio.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'L\'indirizzo EMAIL non è valido!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Hai raggiunto il limite per creare caselle di posta!';
$PALANG['pCreate_mailbox_password_text'] = 'Password per POP3/IMAP';
@ -235,8 +236,8 @@ $PALANG['subject'] = 'Oggetto'; # XXX check text - should be 'Subject'
$PALANG['pSendmail_subject_text'] = 'Benvenuto';
$PALANG['pSendmail_body'] = 'Corpo';
$PALANG['pSendmail_button'] = 'Spedisci messaggio';
$PALANG['pSendmail_result_error'] = 'Impossibile creare la casella di posta! (%s)'; # XXX text change - new: Unable to send email to %s!
$PALANG['pSendmail_result_success'] = 'La casella di posta è stata creata! (%s)'; # XXX text change - new: Email sent to %s.
$PALANG['pSendmail_result_error'] = 'Impossibile inviare e-mail a %s';
$PALANG['pSendmail_result_success'] = 'Email inviata a %s';
$PALANG['pAdminMenu_list_admin'] = 'Lista degli amministratori';
$PALANG['pAdminMenu_list_domain'] = 'Lista dei domini';
@ -338,10 +339,13 @@ $PALANG['pBroadcast_error_empty'] = 'Nome, oggetto e testo del messaggio non pos
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'presumibilmente NON CONSEGNABILE ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'In consegna a ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Password troppo breve - minimo %s caratteri";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -360,6 +364,7 @@ $PALANG['pFetchmail_password_missing'] = 'Digita la password per il server remot
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Casella';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Autenticazione';
$PALANG['pFetchmail_field_src_user'] = 'Utente';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -379,6 +384,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Risultato ottenuto';
$PALANG['pFetchmail_desc_id'] = 'Record ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Casella locale';
$PALANG['pFetchmail_desc_src_server'] = 'Server remoto';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Sostanzialmente \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Utente remoto';
$PALANG['pFetchmail_desc_src_password'] = 'Pasword remota';
@ -394,6 +400,8 @@ $PALANG['pFetchmail_desc_date'] = 'Data dell\'ultima modifica o atti
$PALANG['pFetchmail_desc_returned_text'] = 'Risultato dell\'ultima attività';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -141,6 +141,7 @@ $PALANG['pEdit_alias_forward_only'] = '指定された転送アドレスのみ';
$PALANG['pEdit_alias_result_error'] = '別名 %s を更新できませんでした!';
$PALANG['pCreate_mailbox_welcome'] = '新しいメールアドレスの作成';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'メールアドレスが無効です。';
$PALANG['pCreate_mailbox_username_text_error3'] = 'メールアドレスの制限数に達しました。';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAPのパスワード';
@ -346,11 +347,14 @@ $PALANG['broadcast_mailboxes_only'] = 'メールアドレスだけに送信';
$PALANG['broadcast_to_domains'] = '送信先のドメイン:';
$PALANG['pStatus_undeliverable'] = 'おそらく配送不可能 ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = '配送先 ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "パスワードが短すぎます。最低 %s 文字必要です。";
$PALANG['password_no_characters'] = "パスワードには、少なくとも %s 個の英字がなくてはなりません。";
$PALANG['password_no_characters'] = "パスワードには、少なくとも %s 個の英字がなくてはなりません。"; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "パスワードには、少なくとも %s 個の数字がなくてはなりません。";
$PALANG['pInvalidDomainRegex'] = "不正なドメイン名です[%s]。正規表現チェックで失敗";
$PALANG['pInvalidDomainDNS'] = "不正なドメイン[%s]であるか、もしくは DNS に見当たりません";
@ -370,6 +374,7 @@ $PALANG['pFetchmail_password_missing'] = 'リモートパスワードを入力
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'メールアドレス';
$PALANG['pFetchmail_field_src_server'] = 'サーバ';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = '認証タイプ';
$PALANG['pFetchmail_field_src_user'] = 'ユーザ';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -389,6 +394,7 @@ $PALANG['pFetchmail_field_returned_text'] = '戻りテキスト';
$PALANG['pFetchmail_desc_id'] = 'レコード ID';
$PALANG['pFetchmail_desc_mailbox'] = 'ローカル メールボックス';
$PALANG['pFetchmail_desc_src_server'] = 'リモート サーバ';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = '大抵は \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'リモート ユーザ';
$PALANG['pFetchmail_desc_src_password'] = 'リモート パスワード';
@ -404,6 +410,8 @@ $PALANG['pFetchmail_desc_date'] = '最終取得確認/設定変更
$PALANG['pFetchmail_desc_returned_text'] = '新着確認の戻りテキストメッセージ';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -21,7 +21,7 @@
function update_string_list() {
for file in en.lang $filelist ; do
echo "<?php include('$file'); print join(\"\\n\", array_keys(\$PALANG)) . \"\\n\"; ?>" | php > $file.strings
echo "<?php \$CONF['admin_name'] = ''; include('$file'); print join(\"\\n\", array_keys(\$PALANG)) . \"\\n\"; ?>" | php > $file.strings
done
for file in $filelist ; do
@ -74,7 +74,7 @@ function forcepatch() {
for i in `seq 1 5` ; do
for file in $filelist ; do
test "$file" = "en.lang" && { echo "*** skipping en.lang ***"; continue ; } >&2
"$0" "$file" | sed -n '1,3 p ; 5 s/^./-/p ; 5s/^./+/p ; 6p' | recountdiff | patch "$file"
/bin/bash "$0" "$file" | sed -n '1,3 p ; 5 s/^./-/p ; 5s/^./+/p ; 6p' | recountdiff | patch "$file"
done
done
} # end forcepatch

@ -22,6 +22,7 @@ $supported_languages = array(
'fr' => 'Fran&ccedil;ais - French',
'hr' => 'Hrvatski - Croatian',
'hu' => 'Magyar - Hungarian',
'gl' => 'Galego - Galician',
'is' => 'Icelandic',
'it' => 'Italiano - Italian',
'ja' => '&#26085;&#26412;&#35486; - Japanese',

@ -140,6 +140,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Persiųsti nurodytiems el. pašto adresam
$PALANG['pEdit_alias_result_error'] = 'Sinonimo pakeisti nepavyko! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Nauja pašto dėžutė.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Šis el.pašto adresas neteisingas!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Išnaudota srities pašto dėžučių kvota!';
$PALANG['pCreate_mailbox_password_text'] = 'Slaptažodis jungtis prie POP3/IMAP';
@ -343,10 +344,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -365,6 +369,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -384,6 +389,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -399,6 +405,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Не можам да го променам алијасот! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Креирање на ново поштенско сандаче.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'EMAIL не е валиден!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Достигнат е лимитот на поштенски сандачиња!';
$PALANG['pCreate_mailbox_password_text'] = 'Лозинка за POP3/IMAP';
@ -338,10 +339,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -360,6 +364,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -379,6 +384,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -394,6 +400,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -140,6 +140,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Bare videresend til de angitte e-postadre
$PALANG['pEdit_alias_result_error'] = 'Kan ikke endre aliaset! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Opprett en ny e-postkonto.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-postadressen er ikke gyldig!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Du har nådd grensen for antall e-postkontoer under dette domenet!';
$PALANG['pCreate_mailbox_password_text'] = 'Passord for POP3/IMAP';
@ -337,10 +338,13 @@ $PALANG['pBroadcast_error_empty'] = 'Feltene Ditt navn, Emne og Melding kan ikke
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'kan kanskje IKKE LEVERES ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Leverer til ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Passordet er for kort - det må inneholde minst %s tegn";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Ugyldig domenenavn %s, regexp-validering feilet";
$PALANG['pInvalidDomainDNS'] = "Ugyldig domene %s, og/eller finnes ikke i DNS";
@ -360,6 +364,7 @@ $PALANG['pFetchmail_password_missing'] = 'Vennligst skriv inn det eksterne passo
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'E-postkonto';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Autentiseringstype';
$PALANG['pFetchmail_field_src_user'] = 'Bruker';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -379,6 +384,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returnert tekst';
$PALANG['pFetchmail_desc_id'] = 'Oppførings-ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Lokal e-postkonto';
$PALANG['pFetchmail_desc_src_server'] = 'Ekstern server';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Vanligvis \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Eksternt brukernavn';
$PALANG['pFetchmail_desc_src_password'] = 'Eksternt passord';
@ -394,6 +400,8 @@ $PALANG['pFetchmail_desc_date'] = 'Dato for siste spørring/konfigur
$PALANG['pFetchmail_desc_returned_text'] = 'Tekstmelding fra siste spørring';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -141,6 +141,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Alleen op opgegeven email adres afleveren
$PALANG['pEdit_alias_result_error'] = 'Bewerken van de alias %s is mislukt!';
$PALANG['pCreate_mailbox_welcome'] = 'Maak een nieuw lokale mailbox voor uw domein.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Het e-mail adres is niet geldig.';
$PALANG['pCreate_mailbox_username_text_error3'] = 'U bezit het maximum aantal mailboxen.';
$PALANG['pCreate_mailbox_password_text'] = 'Wachtwoord voor POP3/IMAP';
@ -166,7 +167,7 @@ $PALANG['pEdit_mailbox_quota_text_error'] = 'De quota die opgaf is te hoog.';
$PALANG['pEdit_mailbox_domain_error'] = 'Dit domein is niet van nu: ';
$PALANG['pEdit_mailbox_result_error'] = 'Mislukt om het wachtwoord te wijzigen.';
$PALANG['pPassword_welcome'] = 'Bewerk u login wachtwoord.';
$PALANG['pPassword_welcome'] = 'Bewerk uw login wachtwoord.';
$PALANG['pPassword_admin'] = 'Login';
$PALANG['pPassword_password_current'] = 'Huidig wachtwoord';
$PALANG['pPassword_password_current_text_error'] = 'U heeft uw huidige wachtwoord niet opgegeven.';
@ -339,10 +340,13 @@ $PALANG['pBroadcast_error_empty'] = 'De velden Naam, Onderwerp en Bericht mogen
$PALANG['broadcast_mailboxes_only'] = 'Verstuur alleen aan mailboxen';
$PALANG['broadcast_to_domains'] = 'Verstuur aan de domeinen:';
$PALANG['pStatus_undeliverable'] = 'Misschien niet af te leveren ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Bezorgen op ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Wachtwoord is te kort - moet minimaal %s karakters bevatten";
$PALANG['password_no_characters'] = "Je wachtwoord moet minimaal %s karakter(s) bevatten.";
$PALANG['password_no_characters'] = "Je wachtwoord moet minimaal %s karakter(s) bevatten."; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "Je wachtwoord moet minimaal %s getal(len) bevatten.";
$PALANG['pInvalidDomainRegex'] = "Ongeldig domein naam %s";
$PALANG['pInvalidDomainDNS'] = "Ongeldig domein %s";
@ -361,6 +365,7 @@ $PALANG['pFetchmail_password_missing'] = 'Wachtwoord!';
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'mailbox';
$PALANG['pFetchmail_field_src_server'] = 'server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'authenticatietype';
$PALANG['pFetchmail_field_src_user'] = 'gebruiker';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -380,6 +385,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'teruggegeven tekst';
$PALANG['pFetchmail_desc_id'] = 'record ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Naar welke mailbox sturen we de opgehaalde mail.';
$PALANG['pFetchmail_desc_src_server'] = 'andere server.';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'In de meeste gevallen \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Gebruiker op andere server.';
$PALANG['pFetchmail_desc_src_password'] = 'Wachtwoord op andere server.';
@ -395,6 +401,8 @@ $PALANG['pFetchmail_desc_date'] = 'datum van de laatste berichtencon
$PALANG['pFetchmail_desc_returned_text'] = 'text bericht van de laatste berichtencontrole.';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -138,6 +138,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Kan ikke endre Aliaset! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Opprett en ny epostkonto.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-postadressen er ugyldig!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Du er over grensen for antall e-postkontoer!';
$PALANG['pCreate_mailbox_password_text'] = 'Passord for POP3/IMAP';
@ -336,10 +337,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -359,6 +363,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -378,6 +383,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -393,6 +399,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -141,6 +141,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Prześlij jedynie na podane adresy.';
$PALANG['pEdit_alias_result_error'] = 'Nie można zmodyfikować aliasu! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Utwórz lokalne konto pocztowe dla Twojej domeny.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Adres EMAIL jest niepoprawny!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Twój limit kont pocztowych został osiągniety!';
$PALANG['pCreate_mailbox_password_text'] = 'Hasło do POP3/IMAP';
@ -343,10 +344,13 @@ $PALANG['pBroadcast_error_empty'] = 'Pola Nazwa, Temat i Wiadomość nie powinny
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'może być NIEDOSTARCZALNA ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Dostarczyć do ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = 'Hasło jest za krótkie - musi mieć minimum %s znaków';
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = 'Nieprawidłowa nazwa domeny %s';
$PALANG['pInvalidDomainDNS'] = 'Nieprawidłowa domena %s, nie wykrywana w DNS';
@ -365,6 +369,7 @@ $PALANG['pFetchmail_password_missing'] = 'Podaj hasło zdalnego użytkownika!';
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Konto';
$PALANG['pFetchmail_field_src_server'] = 'Serwer';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Uwierzytelnianie';
$PALANG['pFetchmail_field_src_user'] = 'Użytkownik';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -384,6 +389,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Zwrócony tekst';
$PALANG['pFetchmail_desc_id'] = 'ID rekordu';
$PALANG['pFetchmail_desc_mailbox'] = 'Konto lokalne';
$PALANG['pFetchmail_desc_src_server'] = 'Zdalny serwer';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Najczęściej \'password\''; # Translators, do not translate 'password' here!
$PALANG['pFetchmail_desc_src_user'] = 'Zdalny użytkownik';
$PALANG['pFetchmail_desc_src_password'] = 'Hasło zdalnego użytkownika';
@ -399,6 +405,8 @@ $PALANG['pFetchmail_desc_date'] = 'Data ostatniego sprawdzenia/zmian
$PALANG['pFetchmail_desc_returned_text'] = 'Wiadomość tekstowa z ostatniego sprawdzenia';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -143,6 +143,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Apenas redirecionar as mensagens para os
$PALANG['pEdit_alias_result_error'] = 'Não foi possível editar o alias! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Criação de uma nova conta de email para o domínio.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Email inválido!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Você alcançou o limite de contas de email!';
$PALANG['pCreate_mailbox_password_text'] = 'Senha para POP3/IMAP';
@ -348,11 +349,14 @@ $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'talvez NÃO-ENTREGÁVEL ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Envia para ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Senha muito curta - requer %s caracteres";
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Nome de domínio inválido %s, falhou checagem por expressão regular";
$PALANG['pInvalidDomainDNS'] = "Domínio inválido %s, e/ou não pôde ser resolvido por DNS";
@ -372,6 +376,7 @@ $PALANG['pFetchmail_password_missing'] = 'Favor fornecer a senha da conta remota
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Conta';
$PALANG['pFetchmail_field_src_server'] = 'Servidor';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Autenticação';
$PALANG['pFetchmail_field_src_user'] = 'Usuário';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -391,6 +396,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Texto retornado';
$PALANG['pFetchmail_desc_id'] = 'ID do registro';
$PALANG['pFetchmail_desc_mailbox'] = 'Conta de email local';
$PALANG['pFetchmail_desc_src_server'] = 'Servidor remoto';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Quase sempre \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Usuário remoto';
$PALANG['pFetchmail_desc_src_password'] = 'Senha remota';
@ -406,6 +412,8 @@ $PALANG['pFetchmail_desc_date'] = 'Data da última checagem/mudança
$PALANG['pFetchmail_desc_returned_text'] = 'Mensagem de texto da última checagem';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -141,6 +141,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Redirectioneaza numai catre adresa de mai
$PALANG['pEdit_alias_result_error'] = 'Modificarea aliasului %s a esuat!';
$PALANG['pCreate_mailbox_welcome'] = 'Creaza o noua casuta de mail.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'EMAIL nu este valid!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Ati atins limita pentru creare de noi casute de mail!';
$PALANG['pCreate_mailbox_password_text'] = 'Parola de la POP3/IMAP';
@ -346,11 +347,14 @@ $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'probabil UNDELIVERABLE ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Livreaza la ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Parola prea scurta - minim %s caractere";
$PALANG['password_no_characters'] = "Parola trebuie sa contina cel putin %s litere.";
$PALANG['password_no_characters'] = "Parola trebuie sa contina cel putin %s litere."; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "Parola trebuie sa contina cel putin %s cifre.";
$PALANG['pInvalidDomainRegex'] = "Nume domeniu incorect %s, verificare regexp esuata";
$PALANG['pInvalidDomainDNS'] = "Nume domeniu incorect %s, si/sau nu se poate rezolva in DNS";
@ -370,6 +374,7 @@ $PALANG['pFetchmail_password_missing'] = 'Introduceti parola la distanta!';
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Casuta de mail';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Tip de autentificare';
$PALANG['pFetchmail_field_src_user'] = 'User';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -389,6 +394,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Text returnat';
$PALANG['pFetchmail_desc_id'] = 'Inregistrare ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Casuta email locala';
$PALANG['pFetchmail_desc_src_server'] = 'Server la distanta';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Utilizator la distanta';
$PALANG['pFetchmail_desc_src_password'] = 'Parola la distanta';
@ -405,6 +411,8 @@ $PALANG['pFetchmail_desc_returned_text'] = 'Mesaj text';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -4,6 +4,7 @@
// Language file Russian
// by Paul
// updated by Pavel Usischev (pusischev @sf)
// updated by Dmitry Samoshin (gotty)
//
@ -15,58 +16,58 @@ $PALANG['exit'] = 'Выйти';
$PALANG['cancel'] = 'Отменить';
$PALANG['save'] = 'Сохранить изменения';
$PALANG['confirm'] = 'Вы уверены, что хотите удалить это?\n';
$PALANG['confirm_delete_admin'] = 'Do you really want to delete the admin %s?'; # XXX
$PALANG['confirm_delete_alias'] = 'Do you really want to delete the alias %s?'; # XXX
$PALANG['confirm_delete_aliasdomain'] = 'Do you really want to delete the alias domain %s?'; # XXX
$PALANG['confirm_delete_domain'] = 'Вы действительно хотите удалить все настройки для домена? Это действие нельзя будет отменить!\n (%s)'; # XXX text changed to: 'Do you really want to delete all records for the domain %s? This can not be undone'
$PALANG['confirm_delete_fetchmail'] = 'Do you really want to delete the fetchmail job %s?'; # XXX
$PALANG['confirm_delete_mailbox'] = 'Do you really want to delete the mailbox %s?'; # XXX
$PALANG['confirm_delete_vacation'] = 'Do you really want to delete the vacation message for %s?'; # XXX
$PALANG['no_delete_permissions'] = 'You are not allowed to delete %s!'; # XXX
$PALANG['confirm_delete_admin'] = 'Вы действительно хотите удалить админа %s?';
$PALANG['confirm_delete_alias'] = 'Вы действительно хотите удалить алиас %s?';
$PALANG['confirm_delete_aliasdomain'] = 'Вы действительно хотите удалить алиас домена %s?';
$PALANG['confirm_delete_domain'] = 'Вы действительно хотите удалить все записи домена %s? Это действие нельзя будет отменить!';
$PALANG['confirm_delete_fetchmail'] = 'Вы действительно хотите удалить задание fetchmail %s?';
$PALANG['confirm_delete_mailbox'] = 'Вы действительно хотите удалить почтовый ящик %s?';
$PALANG['confirm_delete_vacation'] = 'Вы действительно хотите удалить сообщение автоответчика для %s?';
$PALANG['no_delete_permissions'] = 'Вы не можете удалить %s!';
$PALANG['check_update'] = 'Проверить обновление';
$PALANG['invalid_parameter'] = 'Некорректный параметр!';
$PALANG['show'] = 'Показать:';
$PALANG['all'] = 'Все';
$PALANG['created'] = 'Created'; # XXX
$PALANG['unknown'] = 'unknown'; # XXX
$PALANG['download_csv'] = 'Download this list as CSV file'; # XXX
$PALANG['missing_field'] = 'Field %s is missing'; # XXX
$PALANG['must_be_numeric'] = '%s must be numeric'; # XXX
$PALANG['must_be_numeric_bigger_than_null'] = '%s must be numeric and bigger than 0'; # XXX
$PALANG['must_be_boolean'] = '%s must be boolean'; # XXX
$PALANG['invalid_value_given'] = 'Invalid value given for %s'; # XXX
$PALANG['edit_not_allowed'] = 'You are not allowed to edit %s'; # XXX
$PALANG['searchparams'] = 'Search parameters:'; # XXX
$PALANG['pFooter_logged_as'] = 'Вошли как %s';
$PALANG['created'] = 'Создано';
$PALANG['unknown'] = 'неизвестно';
$PALANG['download_csv'] = 'Скачать этот список в виде CSV файла';
$PALANG['missing_field'] = 'Поле %s отсутствует';
$PALANG['must_be_numeric'] = '%s должно быть числом';
$PALANG['must_be_numeric_bigger_than_null'] = '%s должно быть числом и больше 0';
$PALANG['must_be_boolean'] = '%s должно иметь тип boolean';
$PALANG['invalid_value_given'] = 'Указано некорректное значение для %s';
$PALANG['edit_not_allowed'] = 'Вы не можете редактировать %s';
$PALANG['searchparams'] = 'Параметры поиска:';
$PALANG['pFooter_logged_as'] = 'Логин: %s';
$PALANG['pLogin_welcome'] = 'Вход для администраторов почтовых доменов.';
$PALANG['pLogin_username'] = 'Имя (адрес e-mail)';
$PALANG['pLogin_username'] = 'Имя (email)';
$PALANG['password'] = 'Пароль';
$PALANG['pLogin_language'] = 'Язык';
$PALANG['pLogin_button'] = 'Войти';
$PALANG['pLogin_failed'] = 'Ваш адрес e-mail или пароль неверен.';
$PALANG['pLogin_failed'] = 'Ваш адрес email или пароль неверен.';
$PALANG['pLogin_login_users'] = 'Вход для обычных пользователей.';
$PALANG['pMenu_main'] = 'Главная';
$PALANG['pMenu_overview'] = 'Обзор';
$PALANG['add_alias'] = 'Создать алиас';
$PALANG['add_alias_domain'] = 'Создать домен-алиас';
$PALANG['add_alias_domain'] = 'Создать алиас домена';
$PALANG['add_mailbox'] = 'Создать ящик';
$PALANG['pMenu_fetchmail'] = 'Сбор почты';
$PALANG['pMenu_sendmail'] = 'Послать письмо';
$PALANG['pMenu_sendmail'] = 'Отправить письмо';
$PALANG['pMenu_password'] = 'Пароль';
$PALANG['pMenu_viewlog'] = 'Просмотреть журнал';
$PALANG['pMenu_logout'] = 'Выход';
$PALANG['pMain_welcome'] = 'Добро пожаловать в Postfix Admin!';
$PALANG['pMain_overview'] = 'Список ваших почтовых ящиков и алиасов. Вы можете удалять и редактировать их отсюда.';
$PALANG['pMain_overview'] = 'Список ваших почтовых ящиков и алиасов. Вы можете редактировать и удалять их отсюда.';
$PALANG['pMain_create_alias'] = 'Создание нового алиаса в вашем домене.';
$PALANG['pMain_create_mailbox'] = 'Создание нового почтового ящика в вашем домене.';
$PALANG['pMain_sendmail'] = 'Отправить письмо на созданный почтовый ящик.';
$PALANG['pMain_password'] = 'Смена пароля для учетной записи администратора.';
$PALANG['pMain_sendmail'] = 'Отправка письма на один из созданных вами почтовых ящиков.';
$PALANG['pMain_password'] = 'Смена пароля для вашей учетной записи администратора.';
$PALANG['pMain_viewlog'] = 'Просмотр журнала работы с системой.';
$PALANG['pMain_logout'] = 'Выход из системы';
$PALANG['pMain_logout'] = 'Выход из системы.';
$PALANG['pOverview_disabled'] = 'Отключено';
$PALANG['pOverview_unlimited'] = 'Неограничено';
@ -74,12 +75,12 @@ $PALANG['pOverview_title'] = ':: Заданные домены';
$PALANG['pOverview_up_arrow'] = 'Наверх';
$PALANG['pOverview_right_arrow'] = 'Следующая страница';
$PALANG['pOverview_left_arrow'] = 'Предыдущая страница';
$PALANG['pOverview_alias_domain_title'] = ':: Домены-алиасы';
$PALANG['pOverview_alias_domain_title'] = ':: Алиасы доменов';
$PALANG['pOverview_alias_title'] = ':: Алиасы';
$PALANG['pOverview_mailbox_title'] = ':: Ящики';
$PALANG['go'] = 'Выбрать';
$PALANG['pOverview_welcome'] = 'Обзор для ';
$PALANG['pOverview_alias_domain_aliases'] = 'Домены-алиасы';
$PALANG['pOverview_alias_domain_aliases'] = 'Алиасы доменов';
$PALANG['pOverview_alias_address'] = 'От';
$PALANG['active'] = 'Активен';
$PALANG['and_x_more'] = '[и еще %s...]';
@ -89,10 +90,10 @@ $PALANG['pOverview_mailbox_quota'] = 'Квота (МБ)';
$PALANG['pOverview_vacation_edit'] = 'ВКЛЮЧЕН АВТООТВЕТЧИК';
$PALANG['pOverview_vacation_option'] = 'Установить автоответчик';
$PALANG['no_domains_for_this_admin'] = 'У вас нет разрешений ни на один домен.';
$PALANG['no_domains_exist'] = 'Вам нужно создать хотя бы один домен, чтобы использовать обзор.'; # "virtual list" should match $PALANG['pAdminMenu_list_virtual']
$PALANG['no_domains_exist'] = 'Вам нужно создать хотя бы один домен, прежде чем вы сможете использовать обзор.'; # "virtual list" should match $PALANG['pAdminMenu_list_virtual']
$PALANG['domain'] = 'Домен';
$PALANG['pOverview_get_alias_domains'] = 'Домены-алиасы';
$PALANG['pOverview_get_alias_domains'] = 'Алиасы доменов';
$PALANG['mailboxes'] = 'Ящики';
$PALANG['pOverview_get_quota'] = 'Квота ящика (МБ)';
@ -101,108 +102,109 @@ $PALANG['pDelete_delete_success'] = '%s удален.';
$PALANG['pDelete_domain_error'] = 'Этот домен не принадлежит вам ';
$PALANG['pDelete_alias_error'] = 'Невозможно удалить алиас ';
$PALANG['pCreate_alias_domain_welcome'] = 'Отображать адреса одного вашего домена на другой.';
$PALANG['pCreate_alias_domain_alias'] = 'Домен-алиас';
$PALANG['pCreate_alias_domain_alias_text'] = 'Домен, в который приходит почта.';
$PALANG['pCreate_alias_domain_welcome'] = 'Отображение адреса одного вашего домена на другой';
$PALANG['pCreate_alias_domain_alias'] = 'Алиас домена';
$PALANG['pCreate_alias_domain_alias_text'] = 'Домен, на который приходит почта.';
$PALANG['pCreate_alias_domain_target'] = 'Целевой домен';
$PALANG['pCreate_alias_domain_target_text'] = 'Домен, куда должна направляться почта.';
$PALANG['pCreate_alias_domain_error1'] = 'Вам не разрешено создавать выбранную конфигурацию.';
$PALANG['pCreate_alias_domain_error2'] = 'Выбранная конфигурация некорректна, пожалуйста, выберите другую!';
$PALANG['alias_domain_already_exists'] = 'This domain is already an alias domain!'; # XXX
$PALANG['alias_domain_does_not_exist'] = 'This domain isn\'t an alias domain!'; # XXX
$PALANG['alias_domain_create_failed'] = 'Не удалось добавить запись в базу данных. (%s)'; # XXX Text changed to: Creating the alias domain %s failed!
$PALANG['alias_domain_change_failed'] = 'Changing the alias domain %s failed!'; # XXX
$PALANG['pCreate_alias_domain_error4'] = 'Все домены уже задействованы в доменах-алиасах.';
$PALANG['pCreate_alias_domain_success'] = 'Домен-алиас добавлен в таблицу доменов-алиасов! (%s)'; # XXX Text changed to: The alias domain %s has been created.
$PALANG['alias_domain_changed'] = 'The alias domain %s has been changed.'; # XXX
$PALANG['alias_domain_to_itsself'] = 'A domain can\'t be an alias domain to itsself!'; # XXX
$PALANG['delete_domain_aliasdomain_target'] = 'The domain %s is the target for one or more alias domains and can\'t be deleted! (Delete the alias domains first.)'; # XXX
$PALANG['alias_domain_already_exists'] = 'Указанный домен уже является алиасом домена!';
$PALANG['alias_domain_does_not_exist'] = 'Указанный домен не является алиасом домена!';
$PALANG['alias_domain_create_failed'] = 'Не удалось создать алиас домена %s!';
$PALANG['alias_domain_change_failed'] = 'Не удалось изменить алиас домена %s!';
$PALANG['pCreate_alias_domain_error4'] = 'Все домены уже задействованы в алиасах доменов.';
$PALANG['pCreate_alias_domain_success'] = 'Алиас домена %s успешно создан.';
$PALANG['alias_domain_changed'] = 'Алиас домена %s успешно изменен.';
$PALANG['alias_domain_to_itsself'] = 'Домен не может быть алиасом для самого себя!';
$PALANG['delete_domain_aliasdomain_target'] = 'Домен %s является целевым для одного или нескольких алиасов доменов и не может быть удален! (Сначала удалите алиасы доменов.)';
$PALANG['pCreate_alias_address_text_error1'] = 'Неверное имя алиаса!';
$PALANG['alias_does_not_exist'] = 'This alias does not exist!'; # XXX
$PALANG['email_address_already_exists'] = 'Этот почтовый адрес уже существует, пожалуйста, выберите другой.'; # XXX check text - should be 'This email address already exists, please choose a different one\!'
$PALANG['alias_does_not_exist'] = 'Указанный алиас не существует!';
$PALANG['email_address_already_exists'] = 'Указанный почтовый адрес уже существует, пожалуйста, выберите другой!';
$PALANG['pCreate_alias_address_text_error3'] = 'Вы достигли лимита по созданным алиасам!';
$PALANG['pCreate_alias_goto_text'] = 'Куда должна доставляться почта.';
$PALANG['pCreate_alias_goto_text_error'] = 'Неверное поле Кому!';
$PALANG['pCreate_alias_result_error'] = 'Невозможно добавить алиас в список! (%s)'; # XXX Text changed to: Creating the alias %s failed!
$PALANG['pCreate_alias_result_success'] = 'Алиас был успешно создан!'; # XXX text change: 'The alias %s has been created!'
$PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
$PALANG['pCreate_alias_result_error'] = 'Не удалось создать алиас %s!';
$PALANG['pCreate_alias_result_success'] = 'Алиас %s успешно создан!';
$PALANG['alias_updated'] = 'Алиас %s успешно обновлен!';
$PALANG['pCreate_alias_catchall_text'] = 'Для создания catch-all почтового ящика используйте "*" в качестве имени алиаса.'; # XXX don't propagate usage of *@target-domain.com for domain-aliasing any longer
$PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox and can\'t be deleted!'; # XXX
$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and can only be deleted by a superadmin'; # XXX
$PALANG['mailbox_alias_cant_be_deleted'] = 'Указанный алиас ссылается на почтовый ящик и не может быть удален!';
$PALANG['protected_alias_cant_be_deleted'] = 'Алиас %s защищен и может быть удален только суперадмином';
$PALANG['pEdit_alias_welcome'] = 'Редактирование настроек пересылки';
$PALANG['pEdit_alias_help'] = 'Можно указать несколько целей, одна запись на строку.';
$PALANG['pEdit_alias_help'] = 'Можно указать несколько целей, по одной записи на строку.';
$PALANG['alias'] = 'Алиас';
$PALANG['to'] = 'Кому';
$PALANG['pEdit_alias_goto_text_error1'] = 'Вы ничего не ввели в поле Кому';
$PALANG['pEdit_alias_goto_text_error2'] = 'Вы ввели неверный адрес: ';
$PALANG['pEdit_alias_domain_result_error'] = 'Невозможно изменить домен-алиас!';
$PALANG['pEdit_alias_goto_text_error2'] = 'Вы ввели некорректный почтовый адрес: ';
$PALANG['pEdit_alias_domain_result_error'] = 'Невозможно изменить алиас домена!';
$PALANG['pEdit_alias_forward_and_store'] = 'Доставлять в локальный почтовый ящик.';
$PALANG['pEdit_alias_forward_only'] = 'Только пересылать на указанные адреса.';
$PALANG['pEdit_alias_result_error'] = 'Невозможно изменить алиас! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pEdit_alias_result_error'] = 'Не удалось изменить алиас %s!';
$PALANG['pCreate_mailbox_welcome'] = 'Создание нового почтового ящика для вашего домена.';
$PALANG['pCreate_mailbox_welcome'] = 'Создание нового почтового ящика для вашего домена';
$PALANG['pCreate_mailbox_local_part_error'] = 'Не задано значение до знака @.';
$PALANG['pCreate_mailbox_username_text_error1'] = 'Неверное имя!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Вы достигли лимита по созданию почтовых ящиков!';
$PALANG['pCreate_mailbox_password_text'] = 'Пароль для POP3/IMAP';
$PALANG['pCreate_mailbox_name_text'] = 'Полное имя';
$PALANG['pCreate_mailbox_phone'] = 'Mobile phone'; # XXX
$PALANG['pCreate_mailbox_phone_desc'] = "Used to send a SMS if the password is forgotten"; # XXX
$PALANG['pCreate_mailbox_email'] = 'Other e-mail'; # XXX
$PALANG['pCreate_mailbox_email_desc'] = "Used if the password is forgotten"; # XXX
$PALANG['pCreate_mailbox_phone'] = 'Мобильный телефон';
$PALANG['pCreate_mailbox_phone_desc'] = 'Используется для отправки SMS, если вы забыли пароль';
$PALANG['pCreate_mailbox_email'] = 'Другой email';
$PALANG['pCreate_mailbox_email_desc'] = 'Используется, если вы забыли пароль';
$PALANG['pCreate_mailbox_mail'] = 'Отправить приветственное письмо';
$PALANG['pCreate_mailbox_result_error'] = 'Невозможно добавить ящик в список существующих ящиков! (%s)'; # XXX Text changed to: Creating the mailbox %s failed!
$PALANG['pCreate_mailbox_result_success'] = 'Почтовый ящик был успешно создан! (%s)'; # XXX Text changed to: The mailbox %s has been added to the mailbox table!
$PALANG['pCreate_mailbox_result_succes_nosubfolders'] = 'Почтовый ящик был успешно создан, но в нем не удалось создать (некоторые) стандартные папки (%s)'; # XXX Text changed to: The mailbox %s has been added to the mailbox table, but none (or only some) of the predefined sub-folders could be created.
$PALANG['mailbox_updated'] = "The mailbox %s has been updated."; # XXX
$PALANG['mailbox_update_failed'] = "Updating the mailbox %s failed!"; # XXX
$PALANG['pCreate_mailbox_result_error'] = 'Не удалось создать почтовый ящик %s!';
$PALANG['pCreate_mailbox_result_success'] = 'Почтовый ящик %s успешно добавлен в список существующих ящиков!';
$PALANG['pCreate_mailbox_result_succes_nosubfolders'] = 'Почтовый ящик %s успешно добавлен в список существующих ящиков, но в нем не удалось создать некоторые стандартные папки.';
$PALANG['mailbox_updated'] = "Почтовый ящик %s успешно обновлен.";
$PALANG['mailbox_update_failed'] = "Не удалось обновить почтовый ящик %s!";
$PALANG['pEdit_mailbox_welcome'] = 'Редактирование ящика для вашего домена.';
$PALANG['pEdit_mailbox_welcome'] = 'Редактирование почтового ящика вашего домена.';
$PALANG['pEdit_mailbox_username'] = 'Название';
$PALANG['pEdit_mailbox_password_text_error'] = 'Введенные вами пароли не совпадают!';
$PALANG['pEdit_mailbox_quota'] = 'Квота';
$PALANG['pEdit_mailbox_quota_text'] = 'МБ';
$PALANG['mb_max'] = 'MB (max: %s)'; # XXX
$PALANG['mb_max'] = 'МБ (максимум: %s)';
$PALANG['pEdit_mailbox_quota_text_error'] = 'Квота, выставленная вами, слишком велика!';
$PALANG['pEdit_mailbox_domain_error'] = 'Этот домен не принадлежит вам: ';
$PALANG['pEdit_mailbox_domain_error'] = 'Указанный домен не принадлежит вам: ';
$PALANG['pEdit_mailbox_result_error'] = 'Невозможно изменить пароль!';
$PALANG['pPassword_welcome'] = 'Изменение вашего пароля.';
$PALANG['pPassword_admin'] = 'Имя для входа';
$PALANG['pPassword_welcome'] = 'Изменение вашего пароля';
$PALANG['pPassword_admin'] = 'Логин';
$PALANG['pPassword_password_current'] = 'Текущий пароль';
$PALANG['pPassword_password_current_text_error'] = 'Вы не указали ваш текущий пароль!';
$PALANG['pPassword_password'] = 'Новый пароль';
$PALANG['pPassword_password2'] = 'Новый пароль (еще раз)';
$PALANG['pPassword_password_text_error'] = 'Введенные вами пароли не совпадают либо пусты!';
$PALANG['change_password'] = 'Изменить пароль';
$PALANG['pPassword_result_error'] = 'Невозможно изменить ваш пароль! (%s)'; # XXX Text changed to: Changing the password for %s failed!
$PALANG['pPassword_result_success'] = 'Ваш пароль был изменен! (%s)'; # XXX Text changed to: The password for %s has been changed.
$PALANG['pPassword_recovery_title'] = 'Follow the instructions to reset your password.'; # XXX
$PALANG['pPassword_recovery_button'] = 'Send me the code'; # XXX
$PALANG['pPassword_recovery_email_body'] = "Hello,\n\nUse the following link to change your email password :\n%s\n\nRegards,\n\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_sms_body'] = "Hello,\nThe code to change your password is: %s\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_processed'] = "We processed your request. If you entered a valid username, you'll receive an email/SMS with a password code."; # XXX
$PALANG['pPassword_password_code'] = 'Code sent by email/SMS'; # XXX
$PALANG['pPassword_code_text_error'] = 'Invalid code'; # XXX
$PALANG['pPassword_result_error'] = 'Не удалось изменить пароль для %s!';
$PALANG['pPassword_result_success'] = 'Пароль для %s успешно изменен.';
$PALANG['pPassword_recovery_title'] = 'Следуйте инструкциям для сброса вашего пароля.';
$PALANG['pPassword_recovery_button'] = 'Прислать мне код';
$PALANG['pPassword_recovery_email_body'] = "Здравствуйте!\n\nИспользуйте следующую ссылку для изменения вашего пароля от электронной почты:\n%s\n\nС уважением,\n\n" . $CONF['admin_name'];
$PALANG['pPassword_recovery_sms_body'] = "Здравствуйте!\nКод для изменения вашего пароля: %s\n" . $CONF['admin_name'];
$PALANG['pPassword_recovery_processed'] = "Мы обработали ваш запрос. Если вы ввели корректное имя пользователя, вы получите письмо/SMS с кодовым словом.";
$PALANG['pPassword_password_code'] = 'Код отправлен по почте/SMS';
$PALANG['pPassword_code_text_error'] = 'Неверный код';
$PALANG['pEdit_vacation_set'] = 'Поменять / задать сообщение об отсутствии';
$PALANG['pEdit_vacation_remove'] = 'Убрать сообщение об отсутствии';
$PALANG['pVacation_result_error'] = 'Невозможно обновить настройки автоответчика! (%s)'; # XXX Text changed to: Updating the auto response settings for %s failed
$PALANG['pVacation_result_error'] = 'Не удалось обновить настройки автоответчика для %s!';
$PALANG['pVacation_result_removed'] = 'Автоответчик для %s отключен!';
$PALANG['pVacation_result_added'] = 'Автоответчик для %s включен!';
$PALANG['pVacation_reply_type'] = 'Choice of reply'; # XXX
$PALANG['pVacation_reply_delay_time'] = 'Interval time'; # XXX
$PALANG['pVacation_reply_delay_time_text'] = 'Time in seconds'; # XXX
$PALANG['pVacation_until_before_today'] = 'The Date of [Active until] is set before Today'; # XXX
$PALANG['pVacation_until_before_from'] = 'The Date of [Active until] is set before [Active from]'; # XXX
$PALANG['reply_once'] = 'Reply once'; # XXX
$PALANG['reply_every_mail'] = 'Reply on every mail'; # XXX
$PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX
$PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX
$PALANG['pViewlog_welcome'] = 'Просмотреть %s последних действий для ';
$PALANG['pVacation_reply_type'] = 'Выбор ответа';
$PALANG['pVacation_reply_delay_time'] = 'Интервал времени';
$PALANG['pVacation_reply_delay_time_text'] = 'Время в секундах';
$PALANG['pVacation_until_before_today'] = 'Дата [Активен по] установлена до Сегодня';
$PALANG['pVacation_until_before_from'] = 'Дата [Активен по] установлена до [Активен с]';
$PALANG['reply_once'] = 'Отвечать один раз';
$PALANG['reply_every_mail'] = 'Отвечать на каждое письмо';
$PALANG['reply_once_per_day'] = 'Отвечать один раз в день';
$PALANG['reply_once_per_week'] = 'Отвечать один раз в неделю';
$PALANG['pViewlog_welcome'] = 'Просмотр %s последних действий для ';
$PALANG['pViewlog_timestamp'] = 'Время создания/модификации';
$PALANG['pViewlog_action'] = 'Действие';
$PALANG['pViewlog_data'] = 'Данные';
@ -215,34 +217,34 @@ $PALANG['pViewlog_action_delete_mailbox'] = 'удаление ящика';
$PALANG['pViewlog_action_edit_mailbox'] = 'редактирование ящика';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'изменение активности ящика';
$PALANG['pViewlog_action_create_alias'] = 'создание алиаса';
$PALANG['pViewlog_action_create_alias_domain'] = 'создание домена-алиаса';
$PALANG['pViewlog_action_edit_alias_domain'] = 'edit alias domain'; # XXX
$PALANG['pViewlog_action_create_alias_domain'] = 'создание алиаса домена';
$PALANG['pViewlog_action_edit_alias_domain'] = 'редактирование алиаса домена';
$PALANG['pViewlog_action_delete_alias'] = 'удаление алиаса';
$PALANG['pViewlog_action_delete_alias_domain'] = 'удаление домена-алиаса';
$PALANG['pViewlog_action_delete_alias_domain'] = 'удаление алиаса домена';
$PALANG['pViewlog_action_edit_alias'] = 'редактирование алиаса';
$PALANG['pViewlog_action_edit_alias_state'] = 'изменение активности алиаса';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'изменение активности домена-алиаса';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'изменение активности алиаса домена';
$PALANG['pViewlog_action_edit_password'] = 'изменение пароля';
$PALANG['pViewlog_action_create_admin'] = 'create admin'; # XXX
$PALANG['pViewlog_action_edit_admin'] = 'edit admin'; # XXX
$PALANG['pViewlog_action_delete_admin'] = 'delete admin'; # XXX
$PALANG['pViewlog_action_edit_vacation'] = 'edit vacation'; # XXX
$PALANG['pViewlog_action_create_fetchmail'] = 'create fetchmail job'; # XXX
$PALANG['pViewlog_action_edit_fetchmail'] = 'edit fetchmail job'; # XXX
$PALANG['pViewlog_action_delete_fetchmail'] = 'delete fetchmail job'; # XXX
$PALANG['pViewlog_action_create_admin'] = 'создание админа';
$PALANG['pViewlog_action_edit_admin'] = 'редактирование админа';
$PALANG['pViewlog_action_delete_admin'] = 'удаление админа';
$PALANG['pViewlog_action_edit_vacation'] = 'редактирование автоответчика';
$PALANG['pViewlog_action_create_fetchmail'] = 'создание задания fetchmail';
$PALANG['pViewlog_action_edit_fetchmail'] = 'редактирование задания fetchmail';
$PALANG['pViewlog_action_delete_fetchmail'] = 'удаление задания fetchmail';
$PALANG['pViewlog_result_error'] = 'Невозможно найти журнал!';
$PALANG['pSendmail_welcome'] = 'Послать письмо.';
$PALANG['pSendmail_welcome'] = 'Отправка письма';
$PALANG['from'] = 'От';
$PALANG['pSendmail_to'] = 'Кому';
$PALANG['pSendmail_to_text_error'] = 'Поле Кому пустое либо содержит некорректный адрес!';
$PALANG['subject'] = 'Тема';
$PALANG['pSendmail_subject_text'] = 'Добро пожаловать!';
$PALANG['pSendmail_body'] = 'Текст';
$PALANG['pSendmail_button'] = 'Послать сообщение';
$PALANG['pSendmail_result_error'] = 'Невозможно отправить сообщение! (%s)'; # XXX text change - new: Unable to send email to %s!
$PALANG['pSendmail_result_success'] = 'Сообщение отправлено! (%s)'; # XXX text change - new: Email sent to %s.
$PALANG['pSendmail_button'] = 'Отправить сообщение';
$PALANG['pSendmail_result_error'] = 'Не удалось отправить сообщение для %s!';
$PALANG['pSendmail_result_success'] = 'Сообщение для %s отправлено.';
$PALANG['pAdminMenu_list_admin'] = 'Список админов';
$PALANG['pAdminMenu_list_domain'] = 'Список доменов';
@ -263,22 +265,22 @@ $PALANG['last_modified'] = 'Последнее изменение';
$PALANG['pAdminCreate_domain_welcome'] = 'Добавление нового домена';
$PALANG['pAdminCreate_domain_domain_text_error'] = 'Домен уже существует!';
$PALANG['domain_does_not_exist'] = 'Этот домен не существует!';
$PALANG['domain_does_not_exist'] = 'Указанный домен не существует!';
$PALANG['pAdminCreate_domain_domain_text_error2'] = 'Некорректный домен!';
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Добавить стандартные алиасы для домена';
$PALANG['pAdminCreate_domain_button'] = 'Добавить домен';
$PALANG['pAdminCreate_domain_result_error'] = 'Невозможно добавить домен! (%s)'; # XXX Text changed to: Adding the domain %s failed!
$PALANG['pAdminCreate_domain_result_success'] = 'Домен был добавлен! (%s)'; # XXX Text changed to: The domain %s has been added.
$PALANG['domain_updated'] = 'The domain %s has been updated.'; # XXX
$PALANG['pAdminCreate_domain_result_error'] = 'Не удалось добавить домен %s!';
$PALANG['pAdminCreate_domain_result_success'] = 'Домен %s успешно добавлен.';
$PALANG['domain_updated'] = 'Домен %s успешно обновлен.';
$PALANG['pAdminDelete_admin_error'] = 'Невозможно удалить администратора!';
$PALANG['domain_postdel_failed'] = 'Невозможно удалить домен!'; # XXX Text changed to: The domain postdeletion script failed, check the error log for details!
$PALANG['domain_postcreate_failed'] = 'The domain postcreate script failed, check the error log for details!'; # XXX
$PALANG['mailbox_postdel_failed'] = 'The mailbox postdeletion script failed, check the error log for details!'; # XXX
$PALANG['mailbox_postedit_failed'] = 'The mailbox postedit script failed, check the error log for details!'; # XXX
$PALANG['mailbox_postcreate_failed'] = 'The mailbox postcreate script failed, check the error log for details!'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = 'Невозможно удалить домен-алиас!';
$PALANG['domain_conflict_vacation_domain'] = 'You can\'t use the vacation domain as mail domain!'; # XXX
$PALANG['domain_postdel_failed'] = 'Не удалось корректно выполнить скрипт после удаления домена, подробности смотрите в журнале ошибок!';
$PALANG['domain_postcreate_failed'] = 'Не удалось корректно выполнить скрипт после создания домена, подробности смотрите в журнале ошибок!';
$PALANG['mailbox_postdel_failed'] = 'Не удалось корректно выполнить скрипт после удаления почтового ящика, подробности смотрите в журнале ошибок!';
$PALANG['mailbox_postedit_failed'] = 'Не удалось корректно выполнить скрипт после изменения почтового ящика, подробности смотрите в журнале ошибок!';
$PALANG['mailbox_postcreate_failed'] = 'Не удалось корректно выполнить скрипт после создания почтового ящика, подробности смотрите в журнале ошибок!';
$PALANG['pAdminDelete_alias_domain_error'] = 'Невозможно удалить алиас домена!';
$PALANG['domain_conflict_vacation_domain'] = 'Вы не можете использовать домен автоответчика в качестве почтового домена!';
$PALANG['pAdminEdit_domain_welcome'] = 'Редактирование домена';
$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = отключить | 0 = неограниченное';
@ -288,40 +290,40 @@ $PALANG['pAdminEdit_domain_quota'] = 'Квота домена';
$PALANG['transport'] = 'Транспорт';
$PALANG['pAdminEdit_domain_transport_text'] = 'Укажите транспорт';
$PALANG['pAdminEdit_domain_backupmx'] = 'Почтовый сервер является резервным MX';
$PALANG['pAdminEdit_domain_result_error'] = 'Невозможно изменить домен! (%s)'; # XXX Text changed to: Modifying the domain %s failed!
$PALANG['pAdminEdit_domain_result_error'] = 'Не удалось изменить домен %s!';
$PALANG['pAdminCreate_admin_welcome'] = 'Добавление нового администратора домена';
$PALANG['email_address'] = 'Почтовый адрес';
$PALANG['pAdminCreate_admin_username_text_error1'] = 'Некорректный адрес администратора!';
$PALANG['admin_already_exists'] = 'Администратор уже существует либо некорректное имя'; # XXX Text changed to: The admin already exists!
$PALANG['admin_does_not_exist'] = 'The admin does not exist!'; # XXX
$PALANG['admin_already_exists'] = 'Администратор уже существует!';
$PALANG['admin_does_not_exist'] = 'Администратор не существует!';
$PALANG['pAdminCreate_admin_button'] = 'Добавить администратора';
$PALANG['pAdminCreate_admin_result_error'] = 'Невозможно добавить администратора! (%s)'; # XXX Text changed to: Adding the admin %s failed!
$PALANG['pAdminCreate_admin_result_success'] = 'Администратор был добавлен! (%s)'; # XXX Text changed to: The admin %s has been added.
$PALANG['pAdminCreate_admin_result_error'] = 'Не удалось добавить администратора %s!';
$PALANG['pAdminCreate_admin_result_success'] = 'Администратор %s успешно добавлен!';
$PALANG['pAdminEdit_admin_welcome'] = 'Редактирование администратора домена';
$PALANG['admin'] = 'Администратор'; # XXX check text - should be 'Admin'
$PALANG['pAdminEdit_admin_welcome'] = 'Редактирование настроек администратора домена';
$PALANG['admin'] = 'Админ';
$PALANG['password_again'] = 'Пароль (еще раз)';
$PALANG['super_admin'] = 'Супер админ';
$PALANG['super_admin_desc'] = 'Super admins have access to all domains, can manage domains and admin accounts.'; # XXX
$PALANG['pAdminEdit_admin_result_error'] = 'Невозможно изменить администратора! (%s)'; # XXX Text changed to: Modifying the admin %s failed!
$PALANG['pAdminEdit_admin_result_success'] = 'Администратор был изменен! (%s)'; # XXX Text changed to: The admin %s has been modified.
$PALANG['super_admin'] = 'Суперадмин';
$PALANG['super_admin_desc'] = 'Суперадмины имеют доступ ко всем доменам, могут управлять доменами и учетными записями администраторов.';
$PALANG['pAdminEdit_admin_result_error'] = 'Не удалось изменить настройки администратора %s!';
$PALANG['pAdminEdit_admin_result_success'] = 'Настройки администратора %s успешно изменены!';
$PALANG['pUsersLogin_welcome'] = 'Вход пользователей для изменения пароля и алиасов.';
$PALANG['pUsersLogin_username_incorrect'] = 'Введено неправильное имя. Проверьте, что вы ввели свой адрес электронной почты!';
$PALANG['pUsersLogin_password_incorrect'] = 'Введен неверный пароль!';
$PALANG['pUsersLogin_password_recover'] = 'I forgot my password'; # XXX
$PALANG['pUsersLogin_password_recover'] = 'Я забыл свой пароль';
$PALANG['pUsersMenu_vacation'] = 'Автоответчик';
$PALANG['pUsersMenu_edit_alias'] = 'Изменить пересылку почты';
$PALANG['pUsersMain_vacation'] = 'Настроить сообщение "вне офиса" либо автоответчик для вашей почты.';
$PALANG['pUsersMain_vacationSet'] = 'Автоответчик ВКЛЮЧЕН, щелкните \'Автоответчик\', чтобы его редактировать/убрать';
$PALANG['pUsersMain_vacationSet'] = 'Автоответчик ВКЛЮЧЕН, нажмите \'Автоответчик\' для редактирования/удаления';
$PALANG['pUsersMain_edit_alias'] = 'Изменить перенаправление почты.';
$PALANG['pUsersMain_password'] = 'Изменить текущий пароль.';
$PALANG['pUsersVacation_welcome'] = 'Автоответчик.';
$PALANG['pUsersVacation_welcome_text'] = 'У вас уже есть настроенный автоответчик! (%s)'; # XXX Text changed to: 'Auto response for %s is active!'
$PALANG['pUsersVacation_welcome_text'] = 'Автоответчик для %s включен!';
$PALANG['pUsersVacation_subject_text'] = 'Вне офиса';
$PALANG['message'] = 'Сообщение';
$PALANG['pUsersVacation_body_text'] = <<<EOM
@ -341,49 +343,53 @@ $PALANG['pReturn_to'] = 'Вернуться к';
$PALANG['pBroadcast_title'] = 'Отправка широковещательного сообщения';
$PALANG['pBroadcast_name'] = 'Ваше имя';
$PALANG['pBroadcast_success'] = 'Ваше широковещательное сообщение было отправлено.';
$PALANG['pBroadcast_success'] = 'Ваше широковещательное сообщение успешно отправлено.';
$PALANG['pAdminMenu_broadcast_message'] = 'Широковещательное сообщение';
$PALANG['pBroadcast_error_empty'] = 'Поля Имя, Тема и Сообщение не должны быть пустыми!';
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['broadcast_mailboxes_only'] = 'Отправить только на почтовые ящики';
$PALANG['broadcast_to_domains'] = 'Отправить на домены:';
$PALANG['pStatus_undeliverable'] = 'возможно НЕ ДОСТАВЛЕНО ';
$PALANG['pStatus_disabled'] = 'Учетная запись отключена ';
$PALANG['pStatus_expired'] = 'Срок действия пароля истек ';
$PALANG['pStatus_vacation'] = 'Автоответчик включен ';
$PALANG['pStatus_custom'] = 'Доставляется для ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Пароль слишком короткий - требуется %s символов";
$PALANG['password_too_short'] = "Пароль слишком короткий: требуется %s символов";
$PALANG['password_no_characters'] = "Ваш пароль должен содержать не менее %s символов.";
$PALANG['password_no_digits'] = "Ваш пароль должен содержать не менее %s цифр(ы).";
$PALANG['pInvalidDomainRegex'] = "Некорректное имя домена %s, не соответствует регулярному выражению";
$PALANG['pInvalidDomainDNS'] = "Некорректный домен %s, и/или не обнаруживается в DNS";
$PALANG['pInvalidMailRegex'] = "Некорректный адрес e-mail, не соответствует регулярному выражению (%s)"; # XXX %s added - but it should be in the text, not at the end
$PALANG['pInvalidMailRegex'] = "Некорректный email %s, не соответствует регулярному выражению";
$PALANG['pFetchmail_welcome'] = 'Собирать почту для:';
$PALANG['pFetchmail_new_entry'] = 'Новая запись';
$PALANG['fetchmail_already_exists'] = 'This fetchmail job already exists!'; # XXX
$PALANG['fetchmail_does_not_exist'] = 'This fetchmail job does not exist!'; # XXX
$PALANG['pFetchmail_database_save_error'] = 'Не удалось сохранить эту запись в базе данных!';
$PALANG['fetchmail_already_exists'] = 'Указанное задание fetchmail уже существует!';
$PALANG['fetchmail_does_not_exist'] = 'Указанное задание fetchmail не существует!';
$PALANG['pFetchmail_database_save_error'] = 'Не удалось сохранить запись в базе данных!';
$PALANG['pFetchmail_database_save_success'] = 'Запись сохранена в базе данных.';
$PALANG['pFetchmail_error_invalid_id'] = 'Не найдена запись с номером %s!';
$PALANG['pFetchmail_invalid_mailbox'] = 'Некорректный почтовый ящик!';
$PALANG['pFetchmail_server_missing'] = 'Пожалуйста введите имя удаленного сервера!';
$PALANG['pFetchmail_user_missing'] = 'Пожалуйста введите имя удаленного пользователя!';
$PALANG['pFetchmail_password_missing'] = 'Пожалуйста введите пароль удаленного пользователя!';
$PALANG['pFetchmail_server_missing'] = 'Пожалуйста, введите имя удаленного сервера!';
$PALANG['pFetchmail_user_missing'] = 'Пожалуйста, введите имя удаленного пользователя!';
$PALANG['pFetchmail_password_missing'] = 'Пожалуйста, введите пароль удаленного пользователя!';
$PALANG['pFetchmail_field_id'] = 'Номер';
$PALANG['pFetchmail_field_mailbox'] = 'Ящик';
$PALANG['pFetchmail_field_src_server'] = 'Сервер';
$PALANG['pFetchmail_field_src_port'] = 'Порт';
$PALANG['pFetchmail_field_src_auth'] = 'Тип аутентификации';
$PALANG['pFetchmail_field_src_user'] = 'Пользователь';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
$PALANG['pFetchmail_field_src_folder'] = 'Папка';
$PALANG['pFetchmail_field_poll_time'] = 'Опрашивать';
$PALANG['pFetchmail_field_fetchall'] = 'Скачивать все';
$PALANG['pFetchmail_field_fetchall'] = 'Забирать все';
$PALANG['pFetchmail_field_keep'] = 'Не удалять';
$PALANG['pFetchmail_field_protocol'] = 'Протокол';
$PALANG['pFetchmail_field_usessl'] = 'Включить SSL';
$PALANG['pFetchmail_field_sslcertck'] = 'SSL certificate check'; # XXX
$PALANG['pFetchmail_field_sslcertpath'] = 'SSL path to certificates'; # XXX
$PALANG['pFetchmail_field_sslfingerprint'] = 'SSL fingerprint (md5)'; # XXX
$PALANG['pFetchmail_field_sslcertck'] = 'Проверка SSL сертификата';
$PALANG['pFetchmail_field_sslcertpath'] = 'Путь к SSL сертификатам';
$PALANG['pFetchmail_field_sslfingerprint'] = 'SSL отпечаток (md5)';
$PALANG['pFetchmail_field_extra_options'] = 'Дополнительные параметры';
$PALANG['pFetchmail_field_mda'] = 'MDA';
$PALANG['pFetchmail_field_date'] = 'Дата';
@ -391,21 +397,24 @@ $PALANG['pFetchmail_field_returned_text'] = 'Текст отчета';
$PALANG['pFetchmail_desc_id'] = 'Номер записи';
$PALANG['pFetchmail_desc_mailbox'] = 'Локальный ящик';
$PALANG['pFetchmail_desc_src_server'] = 'Удаленный сервер';
$PALANG['pFetchmail_desc_src_port'] = 'Номер удаленного порта, если требуется нестандартный удаленный порт. (0: использовать порт по умолчанию)';
$PALANG['pFetchmail_desc_src_auth'] = 'Обычно \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Удаленный пользователь';
$PALANG['pFetchmail_desc_src_password'] = 'Удаленный пароль';
$PALANG['pFetchmail_desc_src_folder'] = 'Удаленная папка';
$PALANG['pFetchmail_desc_poll_time'] = 'Опрашивать каждые ... минут';
$PALANG['pFetchmail_desc_fetchall'] = 'Скачивать и старые (виденные), и новые сообщения';
$PALANG['pFetchmail_desc_keep'] = 'Не удалять скачанные сообщения с удаленного сервера';
$PALANG['pFetchmail_desc_protocol'] = 'Какой протокол использовать';
$PALANG['pFetchmail_desc_fetchall'] = 'Забирать как старые (просмотренные), так и новые сообщения';
$PALANG['pFetchmail_desc_keep'] = 'Не удалять полученные сообщения с удаленного сервера';
$PALANG['pFetchmail_desc_protocol'] = 'Используемый протокол';
$PALANG['pFetchmail_desc_usessl'] = 'Шифрование SSL';
$PALANG['pFetchmail_desc_extra_options'] = 'Дополнительные параметры fetchmail';
$PALANG['pFetchmail_desc_mda'] = 'Агент доставки почты (Mail Delivery Agent)';
$PALANG['pFetchmail_desc_mda'] = 'Агент доставки почты (MDA)';
$PALANG['pFetchmail_desc_date'] = 'Дата последнего опроса/изменения конфигурации';
$PALANG['pFetchmail_desc_returned_text'] = 'Текст отчета о последнем опросе';
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['dateformat_pgsql'] = 'dd.mm.YYYY'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%d.%m.%Y'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Пароль истекает';
$PALANG['password_expiration_desc'] = 'Дата истечения срока действия пароля';
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -140,6 +140,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Len presmerovať na zadané emailové adr
$PALANG['pEdit_alias_result_error'] = 'Nepodarilo se upraviť alias %s!';
$PALANG['pCreate_mailbox_welcome'] = 'Vytvoriť novú schránku v doméne';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'Adresa nie je platná!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Dosiahli ste limit, nemôžete vytvárať ďalšie schránky!';
$PALANG['pCreate_mailbox_password_text'] = 'Heslo pre POP3/IMAP/SMTP';
@ -338,10 +339,13 @@ $PALANG['pBroadcast_error_empty'] = 'Polia Vaše meno, Predmet a Obsah nemôžu
$PALANG['broadcast_mailboxes_only'] = 'Posielať len do schránok';
$PALANG['broadcast_to_domains'] = 'Posielať na domény:';
$PALANG['pStatus_undeliverable'] = 'možno NEDORUČITEĽNÉ ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Doručuje sa na ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "Heslo je príliš krátke - musí mať aspoň %s znakov";
$PALANG['password_no_characters'] = "Heslo musí obsahovať aspoň %s písmen.";
$PALANG['password_no_characters'] = "Heslo musí obsahovať aspoň %s písmen."; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "Heslo musí obsahovať aspoň %s číslic.";
$PALANG['pInvalidDomainRegex'] = "Neplatný názov domény %s";
$PALANG['pInvalidDomainDNS'] = "Neplatná doména %s alebo neexistuje jej DNS záznam";
@ -360,6 +364,7 @@ $PALANG['pFetchmail_password_missing'] = 'Zadajte heslo vzdialeného používate
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Schránka';
$PALANG['pFetchmail_field_src_server'] = 'Server';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Autentifikácia';
$PALANG['pFetchmail_field_src_user'] = 'Meno';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -379,6 +384,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Výsledok';
$PALANG['pFetchmail_desc_id'] = 'ID záznamu';
$PALANG['pFetchmail_desc_mailbox'] = 'Lokálna schránka';
$PALANG['pFetchmail_desc_src_server'] = 'Vzdialený server';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Väčšinou \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Vzdialené meno používateľa';
$PALANG['pFetchmail_desc_src_password'] = 'Vzdialené heslo';
@ -394,6 +400,8 @@ $PALANG['pFetchmail_desc_date'] = 'Dátum poslednej zmeny konfigurá
$PALANG['pFetchmail_desc_returned_text'] = 'Správa z posledného sťahovania';
$PALANG['dateformat_pgsql'] = 'dd.mm.YYYY'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%d.%m.%Y'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -139,6 +139,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.';
$PALANG['pEdit_alias_result_error'] = 'Aliasa ni bilo mogoče spremeniti! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Ustvari nov predal za izbrano domeno.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-poštni naslov ni pravilen!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Maksimalno število predalov je preseženo!';
$PALANG['pCreate_mailbox_password_text'] = 'Geslo za POP3/IMAP';
@ -337,10 +338,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s letters (A-Z, a-z)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
@ -359,6 +363,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -378,6 +383,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -393,6 +399,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -142,6 +142,7 @@ $PALANG['pEdit_alias_forward_only'] = 'Vidarebefordra endast till angivna e-post
$PALANG['pEdit_alias_result_error'] = 'Misslyckades att ändra på alias %s!';
$PALANG['pCreate_mailbox_welcome'] = 'Skapa en ny lokal brevlåda i din domän.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-postadressen är inte korrekt!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Du har redan skapat max tillåtet antal brevlådor!';
$PALANG['pCreate_mailbox_password_text'] = 'Lösenord för POP3/IMAP';
@ -347,11 +348,14 @@ $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'kan eventuellt ej levereras ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = 'Levereras till ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['password_too_short'] = "För kort lösenord - ett lösenord på %s tecken krävs";
$PALANG['password_no_characters'] = "Lösenordet måste innehålla minst %s tecken.";
$PALANG['password_no_characters'] = "Lösenordet måste innehålla minst %s tecken."; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "Lösenordet måste innehålla minst %s siffra/siffror.";
$PALANG['pInvalidDomainRegex'] = "Regexp-kollen misslyckas på domänen %s";
$PALANG['pInvalidDomainDNS'] = "Domänen %s finns inte i DNS";
@ -371,6 +375,7 @@ $PALANG['pFetchmail_password_missing'] = 'Var snäll och fyll i lösenordet till
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'E-postkonto';
$PALANG['pFetchmail_field_src_server'] = 'Värddator';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Autentiseringstyp';
$PALANG['pFetchmail_field_src_user'] = 'Användarnamn';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -390,6 +395,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returtext';
$PALANG['pFetchmail_desc_id'] = 'Händelse-ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Lokal brevlåda';
$PALANG['pFetchmail_desc_src_server'] = 'Värddator';
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Oftast \'password\'';
$PALANG['pFetchmail_desc_src_user'] = 'Användarnamn';
$PALANG['pFetchmail_desc_src_password'] = 'Lösenord';
@ -406,6 +412,8 @@ $PALANG['pFetchmail_desc_returned_text'] = 'Textmeddelande från senaste kont
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -3,239 +3,240 @@
//
// Language file Türkçe
// by Onuryalazi
//
// by Özgür Kazancci (Özgür Kazanççı): Turkish characters fixed&Lots of typo(s) corrected and non-Turkish new lines translated
$PALANG['YES'] = 'EVET';
$PALANG['NO'] = 'HAYIR';
$PALANG['edit'] = 'düzenle';
$PALANG['del'] = 'sil';
$PALANG['exit'] = 'Exit'; # XXX
$PALANG['cancel'] = 'Cancel'; # XXX
$PALANG['save'] = 'Save changes'; # XXX
$PALANG['confirm'] = 'Bunu silmek istediðinizden emin misiniz?\n';
$PALANG['confirm_delete_admin'] = 'Do you really want to delete the admin %s?'; # XXX
$PALANG['confirm_delete_alias'] = 'Do you really want to delete the alias %s?'; # XXX
$PALANG['confirm_delete_aliasdomain'] = 'Do you really want to delete the alias domain %s?'; # XXX
$PALANG['confirm_delete_domain'] = 'Bu domain için tüm kayýtlarý silmek istediðinizden emin misiniz? Bu iþlem geri alýnamaz!\n (%s)'; # XXX text changed to: 'Do you really want to delete all records for the domain %s? This can not be undone'
$PALANG['confirm_delete_fetchmail'] = 'Do you really want to delete the fetchmail job %s?'; # XXX
$PALANG['confirm_delete_mailbox'] = 'Do you really want to delete the mailbox %s?'; # XXX
$PALANG['confirm_delete_vacation'] = 'Do you really want to delete the vacation message for %s?'; # XXX
$PALANG['no_delete_permissions'] = 'You are not allowed to delete %s!'; # XXX
$PALANG['check_update'] = 'Check for update'; # XXX
$PALANG['invalid_parameter'] = 'Invalid parameter!'; # XXX
$PALANG['show'] = 'Show:'; # XXX
$PALANG['all'] = 'All'; # XXX
$PALANG['created'] = 'Created'; # XXX
$PALANG['unknown'] = 'unknown'; # XXX
$PALANG['download_csv'] = 'Download this list as CSV file'; # XXX
$PALANG['missing_field'] = 'Field %s is missing'; # XXX
$PALANG['must_be_numeric'] = '%s must be numeric'; # XXX
$PALANG['must_be_numeric_bigger_than_null'] = '%s must be numeric and bigger than 0'; # XXX
$PALANG['must_be_boolean'] = '%s must be boolean'; # XXX
$PALANG['invalid_value_given'] = 'Invalid value given for %s'; # XXX
$PALANG['edit_not_allowed'] = 'You are not allowed to edit %s'; # XXX
$PALANG['searchparams'] = 'Search parameters:'; # XXX
$PALANG['pFooter_logged_as'] = 'Logged in as %s'; # XXX
$PALANG['exit'] = 'Çıkış';
$PALANG['cancel'] = 'İptal';
$PALANG['save'] = 'Değişiklikleri kaydet';
$PALANG['confirm'] = 'Bunu silmek istediğinizden emin misiniz?\n';
$PALANG['confirm_delete_admin'] = 'Şu yöneticiyi silmek istediğinizden emin misiniz: %s?';
$PALANG['confirm_delete_alias'] = 'Şu yönlendirmeyi silmek istediğinizden emin misiniz: %s?';
$PALANG['confirm_delete_aliasdomain'] = 'Şu yönlendirme domainini silmek istediğinizden emin misiniz: %s?';
$PALANG['confirm_delete_domain'] = 'Bu domain için tüm kayıtları silmek istediğinizden emin misiniz? Bu işlem geri alınamaz!\n (%s)'; # XXX text changed to: 'Do you really want to delete all records for the domain %s? This can not be undone'
$PALANG['confirm_delete_fetchmail'] = 'Bu e-posta yakalama işlerini silmek istediğinizden emin misiniz: %s?';
$PALANG['confirm_delete_mailbox'] = 'Bu e-posta kutusunu silmek istediğinizden emin misiniz: %s?';
$PALANG['confirm_delete_vacation'] = 'Bu hesap için otomatik tatil mesajlarını silmek istediğinizden emin misiniz: %s?';
$PALANG['no_delete_permissions'] = 'Silmeye yetkiniz yok: %s!';
$PALANG['check_update'] = 'Güncelleştirmeleri denetleyin';
$PALANG['invalid_parameter'] = 'Geçersiz parametre!';
$PALANG['show'] = 'Göster:';
$PALANG['all'] = 'Tümü';
$PALANG['created'] = 'Oluşturuldu';
$PALANG['unknown'] = 'bilinmeyen';
$PALANG['download_csv'] = 'Bu listeyi CSV dosyası olarak indirin';
$PALANG['missing_field'] = 'Girilmesi gereken alan %s boş';
$PALANG['must_be_numeric'] = '%s rakamlardan oluşmalı';
$PALANG['must_be_numeric_bigger_than_null'] = '%s rakamlardan oluşmalı ve sıfırdan büyük olmalı';
$PALANG['must_be_boolean'] = '%s girilen değer boolean olmalı';
$PALANG['invalid_value_given'] = '%s için girilen değer yanlış';
$PALANG['edit_not_allowed'] = 'Düzenlemeye yetkiniz yok: %s';
$PALANG['searchparams'] = 'Arama parametreleri:';
$PALANG['pFooter_logged_as'] = 'Giriş yapılan kullanıcı: %s';
$PALANG['pLogin_welcome'] = 'Posta Yöneticileri buradan domainlerinizi yönetmek için giriþ yapabilirsiniz.';
$PALANG['pLogin_username'] = 'Kullanýcý adý (eposta)'; # # XXX check translation - should be "Login (email)"
$PALANG['password'] = 'Þifre'; # XXX compare with pUsersLogin_password - should be "Password"
$PALANG['pLogin_language'] = 'Language'; # XXX
$PALANG['pLogin_button'] = 'Giriþ'; # XXX compare with pUsersLogin_button - should be "Login"
$PALANG['pLogin_failed'] = 'Your email address or password are not correct.'; # XXX
$PALANG['pLogin_login_users'] = 'Kullanýcý iþlemlerine girmek için burayý kullanýnýz.';
$PALANG['pLogin_welcome'] = 'E-Posta Yöneticileri, buradan domainlerinizi yönetmek için giriş yapabilirsiniz.';
$PALANG['pLogin_username'] = 'Kullanıcı adı (e-posta)'; # # XXX check translation - should be "Login (email)"
$PALANG['password'] = 'Şifre'; # XXX compare with pUsersLogin_password - should be "Password"
$PALANG['pLogin_language'] = 'Dil';
$PALANG['pLogin_button'] = 'Giriş'; # XXX compare with pUsersLogin_button - should be "Login"
$PALANG['pLogin_failed'] = 'E-posta adresiniz veya şifreniz yanlış.';
$PALANG['pLogin_login_users'] = 'Kullanıcı işlemlerine girmek için burayı kullanınız.';
$PALANG['pMenu_main'] = 'Main'; # XXX
$PALANG['pMenu_main'] = 'Ana';
$PALANG['pMenu_overview'] = 'Genel Bilgiler';
$PALANG['add_alias'] = 'Alias Ekle';
$PALANG['add_alias_domain'] = 'Add Alias Domain'; # XXX
$PALANG['add_mailbox'] = 'Posta kutusu ekle';
$PALANG['pMenu_fetchmail'] = 'Fetch Email'; # XXX
$PALANG['add_alias_domain'] = 'Alias Domain Kaydı Ekle';
$PALANG['add_mailbox'] = 'E-posta kutusu ekle';
$PALANG['pMenu_fetchmail'] = 'E-posta Yakala';
$PALANG['pMenu_sendmail'] = 'E-posta Gönder';
$PALANG['pMenu_password'] = 'Þifre';
$PALANG['pMenu_viewlog'] = 'Log Ýncele';
$PALANG['pMenu_logout'] = 'Çýkýþ';
$PALANG['pMenu_password'] = 'Şifre';
$PALANG['pMenu_viewlog'] = 'Logları İncele';
$PALANG['pMenu_logout'] = 'Çıkış';
$PALANG['pMain_welcome'] = 'Postfix Admin\'e hoþ geldiniz!';
$PALANG['pMain_overview'] = 'posta kutularýnýzýn ve aliaslarýnýzýn listesi. buradan silip düzenleyebilirsiniz.';
$PALANG['pMain_create_alias'] = 'Domaininiz icin yeni bir alias yaratýn.'; # XXX check text - should be 'Create a new alias for your domain.'
$PALANG['pMain_create_mailbox'] = 'Domaininiz için yeni bir posta kutusu yaratýn.';
$PALANG['pMain_sendmail'] = 'Yeni yaratmýþ olduðunuz posta kutularýndan birine posta gönderin.';
$PALANG['pMain_password'] = 'Yönetici hesabýnýzýn þifresini deðiþtirin.';
$PALANG['pMain_viewlog'] = 'log dosyalarýný inceleyin.';
$PALANG['pMain_logout'] = 'Sistemden çýkýn.';
$PALANG['pMain_welcome'] = 'Postfix Admin\'e Hoş Geldiniz!';
$PALANG['pMain_overview'] = 'E-posta kutularınızın ve aliaslarınızın listesi. Buradan silip düzenleyebilirsiniz.';
$PALANG['pMain_create_alias'] = 'Domaininiz için yeni bir alias yaratın.'; # XXX check text - should be 'Create a new alias for your domain.'
$PALANG['pMain_create_mailbox'] = 'Domaininiz için yeni bir e-posta kutusu yaratın.';
$PALANG['pMain_sendmail'] = 'Yeni yaratmış olduğunuz e-posta kutularından birine e-posta gönderin.';
$PALANG['pMain_password'] = 'Yönetici hesabınızın şifresini değiştirin.';
$PALANG['pMain_viewlog'] = 'log dosyalarını inceleyin.';
$PALANG['pMain_logout'] = 'Sistemden çıkın.';
$PALANG['pOverview_disabled'] = 'Disabled'; # XXX
$PALANG['pOverview_unlimited'] = 'Unlimited'; # XXX
$PALANG['pOverview_title'] = ':: Defined Domains'; # XXX
$PALANG['pOverview_up_arrow'] = 'Go Top'; # XXX
$PALANG['pOverview_right_arrow'] = 'Next Page'; # XXX
$PALANG['pOverview_left_arrow'] = 'Previous Page'; # XXX
$PALANG['pOverview_alias_domain_title'] = ':: Domain Aliases'; # XXX
$PALANG['pOverview_disabled'] = 'Kapalı';
$PALANG['pOverview_unlimited'] = 'Sınırsız';
$PALANG['pOverview_title'] = ':: Tanımlı Domainler';
$PALANG['pOverview_up_arrow'] = 'En Üste Git';
$PALANG['pOverview_right_arrow'] = 'Sonraki Sayfa';
$PALANG['pOverview_left_arrow'] = 'Önceki Sayfa';
$PALANG['pOverview_alias_domain_title'] = ':: Domain Aliasları';
$PALANG['pOverview_alias_title'] = ':: Alias'; # XXX
$PALANG['pOverview_mailbox_title'] = ':: Mailboxes'; # XXX
$PALANG['pOverview_mailbox_title'] = ':: E-posta Kutuları';
$PALANG['go'] = 'Git';
$PALANG['pOverview_welcome'] = 'Genel Bilgiler: ';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX
$PALANG['pOverview_alias_domain_aliases'] = 'Alias Domainleri';
$PALANG['pOverview_alias_address'] = 'Kimden';
$PALANG['active'] = 'Aktif';
$PALANG['and_x_more'] = '[and %s more...]'; # XXX
$PALANG['pOverview_mailbox_username'] = 'Eposta';
$PALANG['name'] = 'Ýsim';
$PALANG['pOverview_mailbox_quota'] = 'kota (MB)';
$PALANG['pOverview_vacation_edit'] = 'VACATION IS ON'; # XXX
$PALANG['pOverview_vacation_option'] = 'Set Vacation'; # XXX
$PALANG['no_domains_for_this_admin'] = 'You don\'t have permissions for any domains.'; # XXX
$PALANG['no_domains_exist'] = 'You have to create at least one domain before you can use virtual list.'; # "virtual list" should match $PALANG['pAdminMenu_list_virtual'] # XXX
$PALANG['and_x_more'] = '[ve %s daha fazla...]';
$PALANG['pOverview_mailbox_username'] = 'E-posta';
$PALANG['name'] = 'İsim';
$PALANG['pOverview_mailbox_quota'] = 'Kota (MB)';
$PALANG['pOverview_vacation_edit'] = 'TATİL MODU AÇIK';
$PALANG['pOverview_vacation_option'] = 'Tatil Modu Ayarla';
$PALANG['no_domains_for_this_admin'] = 'Herhangi bir domain için yetkiniz yok.';
$PALANG['no_domains_exist'] = 'Sanal liste kullanabilmeniz için en az bir domain oluşturmalısınız.'; # "virtual list" should match $PALANG['pAdminMenu_list_virtual']
$PALANG['domain'] = 'Domain';
$PALANG['pOverview_get_alias_domains'] = 'Domain Aliases'; # XXX
$PALANG['mailboxes'] = 'Postakutularý'; # XXX check / compare with pAdminCreate_domain_mailboxes - should be "Mailboxes"
$PALANG['pOverview_get_quota'] = 'Posta kutusu Kotasý (MB)';
$PALANG['pOverview_get_alias_domains'] = 'Domain Aliasları';
$PALANG['mailboxes'] = 'E-Posta Kutuları'; # XXX check / compare with pAdminCreate_domain_mailboxes - should be "Mailboxes"
$PALANG['pOverview_get_quota'] = 'E-Posta Kutusu Kotası (MB)';
$PALANG['pDelete_delete_error'] = 'Kayýt silinemiyor ';
$PALANG['pDelete_delete_success'] = '%s deleted.'; # XXX
$PALANG['pDelete_domain_error'] = 'Bu domain size ait deðil ';
$PALANG['pDelete_alias_error'] = 'Unable to delete alias '; # XXX
$PALANG['pCreate_alias_domain_welcome'] = 'Mirror addresses of one of your domains to another.'; # XXX
$PALANG['pCreate_alias_domain_alias'] = 'Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_alias_text'] = 'The domain that mails come in for.'; # XXX
$PALANG['pCreate_alias_domain_target'] = 'Target Domain'; # XXX
$PALANG['pCreate_alias_domain_target_text'] = 'The domain where mails should go to.'; # XXX
$PALANG['pCreate_alias_domain_error1'] = 'You are not allowed to create the chosen configuration.'; # XXX
$PALANG['pCreate_alias_domain_error2'] = 'The chosen configuration is invalid, please choose a different one!'; # XXX
$PALANG['alias_domain_already_exists'] = 'This domain is already an alias domain!'; # XXX
$PALANG['alias_domain_does_not_exist'] = 'This domain isn\'t an alias domain!'; # XXX
$PALANG['alias_domain_create_failed'] = 'Creating the alias domain %s failed!'; # XXX
$PALANG['alias_domain_change_failed'] = 'Changing the alias domain %s failed!'; # XXX
$PALANG['pCreate_alias_domain_error4'] = 'All domains are already aliased.'; # XXX
$PALANG['pCreate_alias_domain_success'] = 'The alias domain %s has been created.'; # XXX
$PALANG['alias_domain_changed'] = 'The alias domain %s has been changed.'; # XXX
$PALANG['alias_domain_to_itsself'] = 'A domain can\'t be an alias domain to itsself!'; # XXX
$PALANG['delete_domain_aliasdomain_target'] = 'The domain %s is the target for one or more alias domains and can\'t be deleted! (Delete the alias domains first.)'; # XXX
$PALANG['pDelete_delete_error'] = 'Kayıt silinemiyor ';
$PALANG['pDelete_delete_success'] = '%s silindi.';
$PALANG['pDelete_domain_error'] = 'Bu domain size ait değil ';
$PALANG['pDelete_alias_error'] = 'Alias kaydı silinemedi ';
$PALANG['pCreate_alias_domain_welcome'] = 'Bir domaininizin, bir diğerine yansıyan adresleri.';
$PALANG['pCreate_alias_domain_alias'] = 'Domain Aliasları';
$PALANG['pCreate_alias_domain_alias_text'] = 'Gelen e-postaların domain adresi.';
$PALANG['pCreate_alias_domain_target'] = 'Hedef Domain';
$PALANG['pCreate_alias_domain_target_text'] = 'E-postaların gideceği domain adresi.';
$PALANG['pCreate_alias_domain_error1'] = 'Seçtiğiniz konfigürasyonu oluşturma yetkiniz yok.';
$PALANG['pCreate_alias_domain_error2'] = 'Seçtiğiniz konfigürasyon geçersiz, lütfen bir başka seçim yapınız!';
$PALANG['alias_domain_already_exists'] = 'Bu domain, zaten bir alias domain!';
$PALANG['alias_domain_does_not_exist'] = 'Bu domain bir alias domain değil!';
$PALANG['alias_domain_create_failed'] = 'Belirtilen alias domain %s oluşturulamadı!';
$PALANG['alias_domain_change_failed'] = 'Alias domain %s değişiklikleri yapılamadı!';
$PALANG['pCreate_alias_domain_error4'] = 'Tüm domainler zaten aliaslı şekilde.';
$PALANG['pCreate_alias_domain_success'] = 'Alias domain %s oluşturuldu.';
$PALANG['alias_domain_changed'] = 'Alias domain %s değiştirildi.';
$PALANG['alias_domain_to_itsself'] = 'Bir domain, kendi alias domaini olamaz!';
$PALANG['delete_domain_aliasdomain_target'] = 'Domaininiz %s bir veya birden fazla alias domaini olarak kayıtlı, ve silinemez. (Öncelikle alias domainleri siliniz.)';
$PALANG['pCreate_alias_address_text_error1'] = 'ALIAS uygun deðil!';
$PALANG['alias_does_not_exist'] = 'This alias does not exist!'; # XXX
$PALANG['email_address_already_exists'] = 'Bu e-posta zaten kullanýlýyor, lütfen baþka bir tane seçin!'; # XXX check text - should be 'This email address already exists, please choose a different one\!'
$PALANG['pCreate_alias_address_text_error3'] = 'Alias limitine ulaþtýnýz!';
$PALANG['pCreate_alias_goto_text'] = 'E-postanýn gitmesi gereken yer.';
$PALANG['pCreate_alias_goto_text_error'] = 'Kime alaný uygun deðil!';
$PALANG['pCreate_alias_result_error'] = 'Alias\'ý alias tabþlosuna eklenemedi! (%s)'; # XXX Text changed to: Creating the alias %s failed!
$PALANG['pCreate_alias_result_success'] = 'Alias tabloya eklendi!'; # XXX text change: 'The alias %s has been created!'
$PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
$PALANG['pCreate_alias_catchall_text'] = 'Hepsini-yakala yaratmak için alias olarak "*" kullanýn. Domain yönlendirme domaini için kime kýsmýnda "*@domain.tld" kullanýn.'; # XXX check/beautify - was split in two lines before
$PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox and can\'t be deleted!'; # XXX
$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and can only be deleted by a superadmin'; # XXX
$PALANG['pCreate_alias_address_text_error1'] = 'ALIAS uygun değil!';
$PALANG['alias_does_not_exist'] = 'Bu alias mevcut değil!';
$PALANG['email_address_already_exists'] = 'Bu e-posta zaten kullanılıyor, lütfen başka bir tane seçin!'; # XXX check text - should be 'This email address already exists, please choose a different one\!'
$PALANG['pCreate_alias_address_text_error3'] = 'Alias limitine ulaştınız!';
$PALANG['pCreate_alias_goto_text'] = 'E-postanın gitmesi gereken yer.';
$PALANG['pCreate_alias_goto_text_error'] = 'Kime alanı uygun değil!';
$PALANG['pCreate_alias_result_error'] = 'Belirtilen alias oluşturulamadı! (%s)'; # XXX Text changed to: Creating the alias %s failed!
$PALANG['pCreate_alias_result_success'] = '%s aliasınız oluşturuldu!'; # XXX text change: 'The alias %s has been created!'
$PALANG['alias_updated'] = '%s aliasınız güncellendi!';
$PALANG['pCreate_alias_catchall_text'] = 'Tümünü-yakala oluşturmak için alias olarak "*" kullanın. Domain yönlendirme domaini için kime kısmında "*@domain.tld" kullanın.'; # XXX check/beautify - was split in two lines before
$PALANG['mailbox_alias_cant_be_deleted'] = 'Bu alias, sistemde kayıtlı bir e-posta hesabına ait ve silinemez!';
$PALANG['protected_alias_cant_be_deleted'] = '%s isimli alias korumalı olarak ayarlı ve ancak bir süper yönetici tarafından silinebilir';
$PALANG['pEdit_alias_welcome'] = 'domaniniz için bir domain\'i düzenleyin. '; # XXX Text change to: 'Edit forwarding settings'
$PALANG['pEdit_alias_help'] = 'Satýr baþýna bir giriþ.'; # XXX # XXX Text change to: 'Accepts multiple targets, one entry per line.'
$PALANG['pEdit_alias_welcome'] = 'Yönlendirme ayarlarını düzenleyin. '; # XXX Text change to: 'Edit forwarding settings'
$PALANG['pEdit_alias_help'] = 'Her bir satıra bir giriş şeklinde, çoklu hedefler kabul edilir.'; # XXX # XXX Text change to: 'Accepts multiple targets, one entry per line.'
$PALANG['alias'] = 'Alias';
$PALANG['to'] = 'Kime'; # XXX check text - should be 'To'
$PALANG['pEdit_alias_goto_text_error1'] = 'Kime kýsmýna hiçbirþey girmediniz.';
$PALANG['pEdit_alias_goto_text_error2'] = 'Girdiðiniz e-posta uygun deðil: ';
$PALANG['pEdit_alias_domain_result_error'] = 'Unable to modify the alias domain!'; # XXX
$PALANG['pEdit_alias_forward_and_store'] = 'Deliver to the local mailbox.'; # XXX
$PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.'; # XXX
$PALANG['pEdit_alias_goto_text_error1'] = 'Kime kısmına hiçbir şey girmediniz.';
$PALANG['pEdit_alias_goto_text_error2'] = 'Girdiğiniz e-posta uygun değil: ';
$PALANG['pEdit_alias_domain_result_error'] = 'Alias domain düzenlenemedi!';
$PALANG['pEdit_alias_forward_and_store'] = 'Yerel bir e-posta hesabına ulaştır.';
$PALANG['pEdit_alias_forward_only'] = 'Sadece belirtilen e-posta adreslerine yönlendirin.';
$PALANG['pEdit_alias_result_error'] = 'Alias düzenlenemiyor! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = 'Domaininiz için yeni bir lokal e-posta yaratýn.';
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-POSTA uygun deðil!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'Posta kutusu yaratma limitinize eriþtiniz!';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP için þifre';
$PALANG['pCreate_mailbox_welcome'] = 'Domaininiz için yeni bir lokal e-posta yaratın.';
$PALANG['pCreate_mailbox_local_part_error'] = '@ işaretinden önce değer belirtilmeli.';
$PALANG['pCreate_mailbox_username_text_error1'] = 'E-posta uygun değil!';
$PALANG['pCreate_mailbox_username_text_error3'] = 'E-posta kutusu yaratma limitinize eriştiniz!';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP için şifre';
$PALANG['pCreate_mailbox_name_text'] = 'Tam isim';
$PALANG['pCreate_mailbox_phone'] = 'Mobile phone'; # XXX
$PALANG['pCreate_mailbox_phone_desc'] = "Used to send a SMS if the password is forgotten"; # XXX
$PALANG['pCreate_mailbox_email'] = 'Other e-mail'; # XXX
$PALANG['pCreate_mailbox_email_desc'] = "Used if the password is forgotten"; # XXX
$PALANG['pCreate_mailbox_mail'] = 'Posta kutusu yarat'; # XXX Text change to 'Send Welcome mail'
$PALANG['pCreate_mailbox_result_error'] = 'Posta kutusu posta kutusu tablosuna eklenemiyor! (%s)'; # XXX Text changed to: Creating the mailbox %s failed!
$PALANG['pCreate_mailbox_result_success'] = 'Posta kutusu tabloya eklendi! (%s)'; # XXX Text changed to: The mailbox %s has been added to the mailbox table!
$PALANG['pCreate_mailbox_result_succes_nosubfolders'] = 'The mailbox %s has been added to the mailbox table, but none (or only some) of the predefined sub-folders could be created.'; # XXX
$PALANG['mailbox_updated'] = "The mailbox %s has been updated."; # XXX
$PALANG['mailbox_update_failed'] = "Updating the mailbox %s failed!"; # XXX
$PALANG['pCreate_mailbox_phone'] = 'Cep telefonu';
$PALANG['pCreate_mailbox_phone_desc'] = "Şifrenizi unuttuğunuz durumlarda SMS gönderilmesi için";
$PALANG['pCreate_mailbox_email'] = 'Diğer e-posta';
$PALANG['pCreate_mailbox_email_desc'] = "Şifrenizi unuttuğunuzda kullanılması için";
$PALANG['pCreate_mailbox_mail'] = 'Hoş Geldin e-posta iletisi gönder'; # XXX Text change to 'Send Welcome mail'
$PALANG['pCreate_mailbox_result_error'] = 'E-posta hesabı oluşturulamadı: %s'; # XXX Text changed to: Creating the mailbox %s failed!
$PALANG['pCreate_mailbox_result_success'] = 'E-posta hesabı, e-posta tablolarına eklendi! (%s)'; # XXX Text changed to: The mailbox %s has been added to the mailbox table!
$PALANG['pCreate_mailbox_result_succes_nosubfolders'] = 'E-posta hesabı %s e-posta tablolar listesine kaydedildi, fakat hiçbir (veya bir takım) ön tanımlı alt-klasörler oluşturulamadı.';
$PALANG['mailbox_updated'] = "E-posta hesabı %s güncelleştirildi.";
$PALANG['mailbox_update_failed'] = "E-posta hesabının güncelleştirilmesi başarısız: %s";
$PALANG['pEdit_mailbox_welcome'] = 'Domaninizdeki bir posta kutusunu düzenleyin.';
$PALANG['pEdit_mailbox_username'] = 'kullanýcý adý'; # XXX check / compare with pCreate_mailbox_username - should be "Username"
$PALANG['pEdit_mailbox_password_text_error'] = 'Verdiðiniz þifreler birbirini tutmuyor!';
$PALANG['pEdit_mailbox_quota'] = 'kota';
$PALANG['pEdit_mailbox_welcome'] = 'Domaininize ait bir e-posta kutusunu düzenleyin.';
$PALANG['pEdit_mailbox_username'] = 'Kullanıcı adı'; # XXX check / compare with pCreate_mailbox_username - should be "Username"
$PALANG['pEdit_mailbox_password_text_error'] = 'Verdiğiniz şifreler birbirini tutmuyor!';
$PALANG['pEdit_mailbox_quota'] = 'Kota';
$PALANG['pEdit_mailbox_quota_text'] = 'MB';
$PALANG['mb_max'] = 'MB (max: %s)'; # XXX
$PALANG['pEdit_mailbox_quota_text_error'] = 'Verdiðiniz kota çok yüksek!';
$PALANG['pEdit_mailbox_domain_error'] = 'Bu domain dizin deðil: ';
$PALANG['pEdit_mailbox_result_error'] = 'Þifre deðiþtirilemedi!';
$PALANG['mb_max'] = 'MB (maks: %s)';
$PALANG['pEdit_mailbox_quota_text_error'] = 'Verdiğiniz kota çok yüksek!';
$PALANG['pEdit_mailbox_domain_error'] = 'Bu domain dizin değil: ';
$PALANG['pEdit_mailbox_result_error'] = 'Şifre değiştirilemedi!';
$PALANG['pPassword_welcome'] = 'Giriþ þifrenizi deðiþtirin.';
$PALANG['pPassword_admin'] = 'Giriþ';
$PALANG['pPassword_password_current'] = 'þuanki þifre';
$PALANG['pPassword_password_current_text_error'] = 'Þuanki þifrenizi vermediniz!';
$PALANG['pPassword_password'] = 'Yeni Þifre';
$PALANG['pPassword_password2'] = 'Yeni þifre (tekrar)';
$PALANG['pPassword_password_text_error'] = 'Verdiðiniz þifreler birbirini tutmuyor! Ya da boþ!'; # XXX check/beautify - was split in two lines before
$PALANG['change_password'] = 'Þifreyi deðiþtir'; # XXX check text - should be 'Change Password'
$PALANG['pPassword_result_error'] = 'Þifreniz deðiþtirilemedi! (%s)'; # XXX Text changed to: Changing the password for %s failed!
$PALANG['pPassword_result_success'] = 'þifreniz deðiþtirildi! (%s)'; # XXX Text changed to: The password for %s has been changed.
$PALANG['pPassword_recovery_title'] = 'Follow the instructions to reset your password.'; # XXX
$PALANG['pPassword_recovery_button'] = 'Send me the code'; # XXX
$PALANG['pPassword_recovery_email_body'] = "Hello,\n\nUse the following link to change your email password :\n%s\n\nRegards,\n\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_sms_body'] = "Hello,\nThe code to change your password is: %s\n" . $CONF['admin_name']; # XXX
$PALANG['pPassword_recovery_processed'] = "We processed your request. If you entered a valid username, you'll receive an email/SMS with a password code."; # XXX
$PALANG['pPassword_password_code'] = 'Code sent by email/SMS'; # XXX
$PALANG['pPassword_code_text_error'] = 'Invalid code'; # XXX
$PALANG['pEdit_vacation_set'] = 'Change / Set away message'; # XXX
$PALANG['pEdit_vacation_remove'] = 'Remove away message'; # XXX
$PALANG['pVacation_result_error'] = 'Updating the auto response settings for %s failed'; # XXX
$PALANG['pVacation_result_removed'] = 'Auto response for %s has been disabled!'; # XXX
$PALANG['pVacation_result_added'] = 'Auto response for %s has been enabled!'; # XXX
$PALANG['pVacation_reply_type'] = 'Choice of reply'; # XXX
$PALANG['pVacation_reply_delay_time'] = 'Interval time'; # XXX
$PALANG['pVacation_reply_delay_time_text'] = 'Time in seconds'; # XXX
$PALANG['pVacation_until_before_today'] = 'The Date of [Active until] is set before Today'; # XXX
$PALANG['pVacation_until_before_from'] = 'The Date of [Active until] is set before [Active from]'; # XXX
$PALANG['reply_once'] = 'Reply once'; # XXX
$PALANG['reply_every_mail'] = 'Reply on every mail'; # XXX
$PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX
$PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX
$PALANG['pPassword_welcome'] = 'Giriş şifrenizi değiştirin.';
$PALANG['pPassword_admin'] = 'Giriş';
$PALANG['pPassword_password_current'] = 'Mevcut şifre';
$PALANG['pPassword_password_current_text_error'] = 'Şu anki şifrenizi girmediniz!';
$PALANG['pPassword_password'] = 'Yeni şifre';
$PALANG['pPassword_password2'] = 'Yeni şifre (tekrar)';
$PALANG['pPassword_password_text_error'] = 'Girdiğiniz şifreler birbirini tutmuyor! Veya boş!'; # XXX check/beautify - was split in two lines before
$PALANG['change_password'] = 'Şifreyi değiştir'; # XXX check text - should be 'Change Password'
$PALANG['pPassword_result_error'] = 'Şifreniz değiştirilemedi! (%s)'; # XXX Text changed to: Changing the password for %s failed!
$PALANG['pPassword_result_success'] = 'Şifreniz değiştirildi! (%s)'; # XXX Text changed to: The password for %s has been changed.
$PALANG['pPassword_recovery_title'] = 'Şifrenizi sıfırlamak için yönergeleri izleyin.';
$PALANG['pPassword_recovery_button'] = 'Bana kodu gönder';
$PALANG['pPassword_recovery_email_body'] = "Merhaba,\n\nE-posta hesabınızın şifresini değiştirmek için şu linki kullanın: \n%s\n\nSaygılarımızla,\n\n" . $CONF['admin_name'];
$PALANG['pPassword_recovery_sms_body'] = "Merhaba,\nŞifrenizi değiştirebilmeniz için gerekli kod: %s\n" . $CONF['admin_name'];
$PALANG['pPassword_recovery_processed'] = "Talebiniz gerçekleştirildi. Şayet geçerli bir kullanıcı adı girdiyseniz, şifre kodunuzu e-posta veya SMS ile alacaksınız.";
$PALANG['pPassword_password_code'] = 'Kod tarafınıza e-posta veya SMS yoluyla gönderildi';
$PALANG['pPassword_code_text_error'] = 'Geçersiz kod';
$PALANG['pEdit_vacation_set'] = 'Meşgul mesajı oluştur / değiştir';
$PALANG['pEdit_vacation_remove'] = 'Meşgul mesajını kaldır';
$PALANG['pVacation_result_error'] = 'Otomatik yanıt ayarları düzenlenemedi: %s';
$PALANG['pVacation_result_removed'] = 'Otomatik yanıt sistemi kapatılmış: %s';
$PALANG['pVacation_result_added'] = 'Otomatik yanıt sistemi aktifleştirildi: %s';
$PALANG['pVacation_reply_type'] = 'Yanıt biçimi';
$PALANG['pVacation_reply_delay_time'] = 'Zaman aralığı';
$PALANG['pVacation_reply_delay_time_text'] = 'Saniye bazında zaman';
$PALANG['pVacation_until_before_today'] = '[Aktiflik Süresi] tarihi, bugünden daha erken bir güne kayıtlı';
$PALANG['pVacation_until_before_from'] = '[Aktif Olma Süresi] tarihi, [İtibariyle Aktif] tarihinden öncesi bir tarihe kayıtlı';
$PALANG['reply_once'] = 'Bir kez yanıtla';
$PALANG['reply_every_mail'] = 'Her e-posta iletisinde yanıtla';
$PALANG['reply_once_per_day'] = 'Günde bir kez yanıtla';
$PALANG['reply_once_per_week'] = 'Haftada bir kez yanıtla';
$PALANG['pViewlog_welcome'] = 'Son %s hareket:';
$PALANG['pViewlog_timestamp'] = 'Timestamp';
$PALANG['pViewlog_action'] = 'Aksiyon';
$PALANG['pViewlog_welcome'] = 'Son %s hareketi:';
$PALANG['pViewlog_timestamp'] = 'Timestamp'; # XXX
$PALANG['pViewlog_action'] = 'Hareket';
$PALANG['pViewlog_data'] = 'Veri';
$PALANG['pViewlog_action_create_domain'] = 'create domain'; # XXX
$PALANG['pViewlog_action_delete_domain'] = 'delete domain'; # XXX
$PALANG['pViewlog_action_edit_domain'] = 'edit domain'; # XXX
$PALANG['pViewlog_action_create_mailbox'] = 'create mailbox'; # XXX
$PALANG['pViewlog_action_delete_mailbox'] = 'delete mailbox'; # XXX
$PALANG['pViewlog_action_edit_mailbox'] = 'edit mailbox'; # XXX
$PALANG['pViewlog_action_edit_mailbox_state'] = 'edit mailbox active'; # XXX
$PALANG['pViewlog_action_create_alias'] = 'create alias'; # XXX
$PALANG['pViewlog_action_create_alias_domain'] = 'create alias domain'; # XXX
$PALANG['pViewlog_action_edit_alias_domain'] = 'edit alias domain'; # XXX
$PALANG['pViewlog_action_delete_alias'] = 'delete alias'; # XXX
$PALANG['pViewlog_action_delete_alias_domain'] = 'delete alias domain'; # XXX
$PALANG['pViewlog_action_edit_alias'] = 'edit alias'; # XXX
$PALANG['pViewlog_action_edit_alias_state'] = 'edit alias active'; # XXX
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'edit alias domain active'; # XXX
$PALANG['pViewlog_action_edit_password'] = 'change password'; # XXX
$PALANG['pViewlog_action_create_admin'] = 'create admin'; # XXX
$PALANG['pViewlog_action_edit_admin'] = 'edit admin'; # XXX
$PALANG['pViewlog_action_delete_admin'] = 'delete admin'; # XXX
$PALANG['pViewlog_action_edit_vacation'] = 'edit vacation'; # XXX
$PALANG['pViewlog_action_create_fetchmail'] = 'create fetchmail job'; # XXX
$PALANG['pViewlog_action_edit_fetchmail'] = 'edit fetchmail job'; # XXX
$PALANG['pViewlog_action_delete_fetchmail'] = 'delete fetchmail job'; # XXX
$PALANG['pViewlog_action_create_domain'] = 'domain oluştur';
$PALANG['pViewlog_action_delete_domain'] = 'domain sil';
$PALANG['pViewlog_action_edit_domain'] = 'domain düzenle';
$PALANG['pViewlog_action_create_mailbox'] = 'e-posta kutusu oluştur';
$PALANG['pViewlog_action_delete_mailbox'] = 'e-posta kutusu sil';
$PALANG['pViewlog_action_edit_mailbox'] = 'e-posta kutusu düzenle';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'e-posta kutusunu aktifleştir';
$PALANG['pViewlog_action_create_alias'] = 'alias oluştur';
$PALANG['pViewlog_action_create_alias_domain'] = 'domain aliası oluştur';
$PALANG['pViewlog_action_edit_alias_domain'] = 'domain aliası düzenle';
$PALANG['pViewlog_action_delete_alias'] = 'alias sil';
$PALANG['pViewlog_action_delete_alias_domain'] = 'domain aliası sil';
$PALANG['pViewlog_action_edit_alias'] = 'alias düzenle';
$PALANG['pViewlog_action_edit_alias_state'] = 'aliası aktifleştir';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'domain aliası aktifleştir';
$PALANG['pViewlog_action_edit_password'] = 'şifreyi değiştir';
$PALANG['pViewlog_action_create_admin'] = 'yönetici oluştur';
$PALANG['pViewlog_action_edit_admin'] = 'yönetici düzenle';
$PALANG['pViewlog_action_delete_admin'] = 'yönetici sil';
$PALANG['pViewlog_action_edit_vacation'] = 'tatil düzenle';
$PALANG['pViewlog_action_create_fetchmail'] = 'tümünü-yakala oluştur';
$PALANG['pViewlog_action_edit_fetchmail'] = 'tümünü-yakala iş düzenle';
$PALANG['pViewlog_action_delete_fetchmail'] = 'tümünü-yakala sil';
$PALANG['pViewlog_result_error'] = 'Loglar bulunamýyor!';
$PALANG['pViewlog_result_error'] = 'Loglar bulunamıyor!';
$PALANG['pSendmail_welcome'] = 'Eposta gönder.';
$PALANG['pSendmail_welcome'] = 'E-posta gönder.';
$PALANG['from'] = 'kimden';
$PALANG['pSendmail_to'] = 'Kime';
$PALANG['pSendmail_to_text_error'] = 'Kime doðru bir e-posta deðil!';
$PALANG['pSendmail_to_text_error'] = 'Kime doğru bir e-posta değil!';
$PALANG['subject'] = 'konu';
$PALANG['pSendmail_subject_text'] = 'Hoþ geldiniz';
$PALANG['pSendmail_subject_text'] = 'Hoş geldiniz';
$PALANG['pSendmail_body'] = 'Metin';
$PALANG['pSendmail_button'] = 'Mesaj Gönder';
$PALANG['pSendmail_result_error'] = 'Posta kutusu yaratýlamadý! (%s)'; # XXX text change - new: Unable to send email to %s!
$PALANG['pSendmail_result_success'] = 'Posta kutusu yaratýldý! (%s)'; # XXX text change - new: Email sent to %s.
$PALANG['pSendmail_result_error'] = 'E-posta gönderilemedi: (%s)'; # XXX text change - new: Unable to send email to %s!
$PALANG['pSendmail_result_success'] = 'E-posta gönderildi: (%s)'; # XXX text change - new: Email sent to %s.
$PALANG['pAdminMenu_list_admin'] = 'Yönetici Listesi';
$PALANG['pAdminMenu_list_domain'] = 'Domain Listesi';
@ -247,152 +248,159 @@ $PALANG['pAdminMenu_create_domain'] = 'Yeni Domain';
$PALANG['pAdminList_admin_count'] = 'Domainler';
$PALANG['description'] = 'Açýklama';
$PALANG['description'] = 'Açıklama';
$PALANG['aliases'] = 'Aliaslar'; # XXX check text - should be 'Aliases'
$PALANG['pAdminList_domain_quota'] = 'Domain quota (MB)'; # XXX
$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
$PALANG['pAdminList_domain_quota'] = 'Domain kotası (MB)';
$PALANG['pAdminList_domain_backupmx'] = 'Yedek Backup MX';
$PALANG['last_modified'] = 'Son Düzenleme';
$PALANG['pAdminCreate_domain_welcome'] = 'Yeni domain ekle';
$PALANG['pAdminCreate_domain_domain_text_error'] = 'Bu Domain halen bulunmakta!';
$PALANG['domain_does_not_exist'] = 'This domain does not exist!'; # XXX
$PALANG['pAdminCreate_domain_domain_text_error2'] = 'The domain is invalid!'; # XXX
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Öntanýmlý posta aliasý ekle';
$PALANG['pAdminCreate_domain_domain_text_error'] = 'Bu domain halen mevcut!';
$PALANG['domain_does_not_exist'] = 'Bu domain mevcut değil!';
$PALANG['pAdminCreate_domain_domain_text_error2'] = 'Domain geçersiz!';
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Öntanımlı e-posta aliası ekle';
$PALANG['pAdminCreate_domain_button'] = 'Domain ekle';
$PALANG['pAdminCreate_domain_result_error'] = 'Domain eklenemedi! (%s)'; # XXX Text changed to: Adding the domain %s failed!
$PALANG['pAdminCreate_domain_result_success'] = 'Domain eklendi! (%s)'; # XXX Text changed to: The domain %s has been added.
$PALANG['domain_updated'] = 'The domain %s has been updated.'; # XXX
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['domain_postdel_failed'] = 'The domain postdeletion script failed, check the error log for details!'; # XXX
$PALANG['domain_postcreate_failed'] = 'The domain postcreate script failed, check the error log for details!'; # XXX
$PALANG['mailbox_postdel_failed'] = 'The mailbox postdeletion script failed, check the error log for details!'; # XXX
$PALANG['mailbox_postedit_failed'] = 'The mailbox postedit script failed, check the error log for details!'; # XXX
$PALANG['mailbox_postcreate_failed'] = 'The mailbox postcreate script failed, check the error log for details!'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = 'Unable to remove domain alias!'; # XXX
$PALANG['domain_conflict_vacation_domain'] = 'You can\'t use the vacation domain as mail domain!'; # XXX
$PALANG['domain_updated'] = 'Domain güncelleştirildi: %s';
$PALANG['pAdminDelete_admin_error'] = 'Yönetici silinemedi!';
$PALANG['domain_postdel_failed'] = 'Bu domaine ait silme-sonrası skript çalıştırılamadı, lütfen detaylar için kayıtları, logları inceleyin!';
$PALANG['domain_postcreate_failed'] = 'Bu domaine ait oluşturma-sonrası skript çalıştırılamadı, lütfen detaylar için kayıtları, logları inceleyin!';
$PALANG['mailbox_postdel_failed'] = 'E-posta hesabı silme-sonrası skript çalıştırılamadı, lütfen detaylar için kayıtları, logları inceleyin!';
$PALANG['mailbox_postedit_failed'] = 'E-posta düzenleme-sonrası skript çalıştırılamadı, lütfen detaylar için kayıtları, logları inceleyin!';
$PALANG['mailbox_postcreate_failed'] = 'E-posta oluşturma-sonrası skript çalıştırılamadı, lütfen detaylar için kayıtları, logları inceleyin!';
$PALANG['pAdminDelete_alias_domain_error'] = 'Domain aliasları silinemedi!';
$PALANG['domain_conflict_vacation_domain'] = 'Tatil domain adresini e-posta domaini olarak kullanamazsınız!';
$PALANG['pAdminEdit_domain_welcome'] = 'Domain düzenle';
$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = iptal | 0 = limitsiz'; # XXX check - "limisiz" or "limi_t_siz"?
$PALANG['pAdminEdit_domain_maxquota'] = 'Max Kota';
$PALANG['pAdminEdit_domain_maxquota'] = 'Maks Kota';
$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB | -1 = iptal | 0 = limitsiz';
$PALANG['pAdminEdit_domain_quota'] = 'Domain Quota'; # XXX
$PALANG['pAdminEdit_domain_quota'] = 'Domain Kota';
$PALANG['transport'] = 'Transport'; # XXX
$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport'; # XXX
$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX'; # XXX
$PALANG['pAdminEdit_domain_transport_text'] = 'Transport tanımlama';
$PALANG['pAdminEdit_domain_backupmx'] = 'Mail sunucusu bir yedek backup MX kaydıdır';
$PALANG['pAdminEdit_domain_result_error'] = 'Domain düzenlenemedi! (%s)'; # XXX Text changed to: Modifying the domain %s failed!
$PALANG['pAdminCreate_admin_welcome'] = 'Yöneticiye yeni bir domain ekle';
$PALANG['email_address'] = 'Eposta adresi';
$PALANG['pAdminCreate_admin_username_text_error1'] = 'Yönetici uygun bir eposta adresi deðil!';
$PALANG['admin_already_exists'] = 'Yönetici halen bulunmakta ya da uygun deðil'; # XXX Text changed to: The admin already exists!
$PALANG['admin_does_not_exist'] = 'The admin does not exist!'; # XXX
$PALANG['email_address'] = 'E-posta adresi';
$PALANG['pAdminCreate_admin_username_text_error1'] = 'Yönetici uygun bir e-posta adresi değil!';
$PALANG['admin_already_exists'] = 'Yönetici zaten mevcut veya uygun değil'; # XXX Text changed to: The admin already exists!
$PALANG['admin_does_not_exist'] = 'Yönetici mevcut değil!';
$PALANG['pAdminCreate_admin_button'] = 'Yönetici ekle';
$PALANG['pAdminCreate_admin_result_error'] = 'Yönetici eklenemiyor! (%s)'; # XXX Text changed to: Adding the admin %s failed!
$PALANG['pAdminCreate_admin_result_success'] = 'Yönetici eklendi! (%s)'; # XXX Text changed to: The admin %s has been added.
$PALANG['pAdminEdit_admin_welcome'] = 'Domain yöneticisi düzenle';
$PALANG['admin'] = 'Yönetici';
$PALANG['password_again'] = 'Þifre (tekrar)';
$PALANG['super_admin'] = 'Super admin'; # XXX
$PALANG['super_admin_desc'] = 'Super admins have access to all domains, can manage domains and admin accounts.'; # XXX
$PALANG['password_again'] = 'Şifre (tekrar)';
$PALANG['super_admin'] = 'Süper admin';
$PALANG['super_admin_desc'] = 'Süper admin yöneticiler, tüm domainler üzerinde yetkilidirler, tüm domainleri ve yönetici admin hesaplarını düzenleyebilirler.';
$PALANG['pAdminEdit_admin_result_error'] = 'Yönetici düzenlenemedi! (%s)'; # XXX Text changed to: Modifying the admin %s failed!
$PALANG['pAdminEdit_admin_result_success'] = 'Yönetici düzenlendi! (%s)'; # XXX Text changed to: The admin %s has been modified.
$PALANG['pUsersLogin_welcome'] = 'Posta kutusu sahipleri, þifre ddeðiþtirmek için giriþ yapýn.';
$PALANG['pUsersLogin_username_incorrect'] = 'Kullanýcý adýnýz doðru deðil. E-posta adresiniz ile giriþ yaptýðýnýzdan emin olunuz!';
$PALANG['pUsersLogin_password_incorrect'] = 'Þifreniz doðru deðil!';
$PALANG['pUsersLogin_password_recover'] = 'I forgot my password'; # XXX
$PALANG['pUsersLogin_welcome'] = 'E-posta kutusu sahipleri, şifre değiştirmek için giriş yapın.';
$PALANG['pUsersLogin_username_incorrect'] = 'Kullanıcı adınız doğru değil. E-posta adresiniz ile giriş yaptığınızdan emin olunuz!';
$PALANG['pUsersLogin_password_incorrect'] = 'Şifreniz doğru değil!';
$PALANG['pUsersLogin_password_recover'] = 'Şifremi unuttum';
$PALANG['pUsersMenu_vacation'] = 'Otomatik cevaplama';
$PALANG['pUsersMenu_edit_alias'] = 'Yönlendirmen deðiþtir';
$PALANG['pUsersMenu_edit_alias'] = 'Yönlendirme değiştir';
$PALANG['pUsersMain_vacation'] = 'Posta kutunuz için "ofis dýþý" mesajý veya otomatik cevaplama ekleyin.';
$PALANG['pUsersMain_vacationSet'] = $PALANG['pUsersMenu_vacation'] . ' is ON, click \'' . $PALANG['pUsersMenu_vacation'] . '\' to ' . $PALANG['edit'] . '/remove'; # XXX
$PALANG['pUsersMain_edit_alias'] = 'Eposta yönlendirmenizi deðiþtirin.';
$PALANG['pUsersMain_password'] = 'þifrenizi deðiþtirin.';
$PALANG['pUsersMain_vacation'] = 'Posta kutunuz için "ofis dışı" mesajı veya otomatik cevaplama ekleyin.';
$PALANG['pUsersMain_vacationSet'] = 'Otomatik cevaplama AKTİF durumda. \'Otomatik Cevaplama\' linkine tıklayarak düzenleyin veya kaldırın.';
$PALANG['pUsersMain_edit_alias'] = 'E-posta yönlendirmenizi değiştirin.';
$PALANG['pUsersMain_password'] = 'Şifrenizi değiştirin.';
$PALANG['pUsersVacation_welcome'] = 'Otomatik Cevaplama.';
$PALANG['pUsersVacation_welcome_text'] = 'Zaten bir otomatik cevaplamanýz bulunmakta! (%s)'; # XXX Text changed to: 'Auto response for %s is active!'
$PALANG['pUsersVacation_subject_text'] = 'Ofis dýþýnda';
$PALANG['pUsersVacation_welcome_text'] = 'Zaten bir otomatik cevaplamanız bulunmakta! (%s)'; # XXX Text changed to: 'Auto response for %s is active!'
$PALANG['pUsersVacation_subject_text'] = 'Ofis dışında';
$PALANG['message'] = 'Metin'; # XXX text changed to 'Message'
$PALANG['pUsersVacation_body_text'] = <<<EOM
<date> tarihinden den <date> ine burada bulunmayacaðým.
Acil durumlarda lütfen <contact person> a baþvurunuz.
<date> ile <date> tarihleri arası burada bulunmayacağım.
Acil durumlarda lütfen <contact person> adresli yetkiliye başvurunuz.
EOM;
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pUsersVacation_activefrom'] = 'Aktif olma tarih başlangıç';
$PALANG['pUsersVacation_activeuntil'] = 'Aktif olma tarih bitiş';
$PALANG['pEdit_dbLog_editactive'] = 'change active state'; # XXX
$PALANG['pEdit_dbLog_editactive'] = 'Aktiflik durumunu değiştir';
$PALANG['pSearch'] = 'search'; # XXX
$PALANG['pSearch_welcome'] = 'Searching for: '; # XXX
$PALANG['pReturn_to'] = 'Return to'; # XXX
$PALANG['pBroadcast_title'] = 'Send broadcast message'; # XXX
$PALANG['pBroadcast_name'] = 'Your name'; # XXX
$PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX
$PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX
$PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pSearch'] = 'ara';
$PALANG['pSearch_welcome'] = 'Aranan: ';
$PALANG['pReturn_to'] = 'Geri dön';
$PALANG['pBroadcast_title'] = 'Toplu sistem mesajı gönder';
$PALANG['pBroadcast_name'] = 'İsminiz';
$PALANG['pBroadcast_success'] = 'Toplu sistem mesajınız gönderildi.';
$PALANG['pAdminMenu_broadcast_message'] = 'Sistem mesajı';
$PALANG['pBroadcast_error_empty'] = 'İsim, Konu ve Mesaj gibi alanlar boş bırakılmamalı!';
$PALANG['broadcast_mailboxes_only'] = 'Sadece belirtilen e-posta hesaplarına gönder';
$PALANG['broadcast_to_domains'] = 'Domainlere gönder:';
$PALANG['pStatus_undeliverable'] = 'GÖNDERİLEMEMİŞ veya gönderilemeyen olabilir ';
$PALANG['pStatus_disabled'] = 'Hesap pasif ';
$PALANG['pStatus_expired'] = 'Şifrenin süresi doldu ';
$PALANG['pStatus_vacation'] = 'Tatil modu aktif ';
$PALANG['pStatus_custom'] = 'İletilen ';
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "Password is too short - requires %s characters"; # XXX
$PALANG['password_no_characters'] = "Your password must contain at least %s character(s)."; # XXX
$PALANG['password_no_digits'] = "Your password must contain at least %s digit(s)."; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
$PALANG['pInvalidMailRegex'] = "Invalid email address %s, fails regexp check"; # XXX
$PALANG['pFetchmail_welcome'] = 'Fetch mail for:'; # XXX
$PALANG['pFetchmail_new_entry'] = 'New entry'; # XXX
$PALANG['fetchmail_already_exists'] = 'This fetchmail job already exists!'; # XXX
$PALANG['fetchmail_does_not_exist'] = 'This fetchmail job does not exist!'; # XXX
$PALANG['pFetchmail_database_save_error'] = 'Could not save this entry in the database!'; # XXX
$PALANG['pFetchmail_database_save_success'] = 'Entry saved in database.'; # XXX
$PALANG['pFetchmail_error_invalid_id'] = 'No entry with ID %s found!'; # XXX
$PALANG['pFetchmail_invalid_mailbox'] = 'Invalid mailbox!'; # XXX
$PALANG['pFetchmail_server_missing'] = 'Please enter the remote server name!'; # XXX
$PALANG['pFetchmail_user_missing'] = 'Please enter the remote username!'; # XXX
$PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; # XXX
$PALANG['password_too_short'] = "Şifre çok kısa - en az %s karakter gerekli";
$PALANG['password_no_characters'] = "Şifreniz en az %s karakter içermeli (A-Z, a-z).";
$PALANG['password_no_digits'] = "Şifreniz en az %s rakam içermeli.";
$PALANG['pInvalidDomainRegex'] = "Geçersiz domain ismi: %s, kontrol edilemedi";
$PALANG['pInvalidDomainDNS'] = "Geçersiz domain: %s, ve/veya DNS tarafından çözümlenemedi";
$PALANG['pInvalidMailRegex'] = "Geçersiz e-posta adresi: %s, kontrol edilemedi";
$PALANG['pFetchmail_welcome'] = 'Adrese gelen mailleri yakala:';
$PALANG['pFetchmail_new_entry'] = 'Yeni girdi';
$PALANG['fetchmail_already_exists'] = 'Bu e-posta yakalama işi zaten mevcut!';
$PALANG['fetchmail_does_not_exist'] = 'Bu e-posta yakalama işi mevcut değil!';
$PALANG['pFetchmail_database_save_error'] = 'Bu girdi, veritabanına kaydedilemedi!';
$PALANG['pFetchmail_database_save_success'] = 'Girdiler veritabanına kaydedildi.';
$PALANG['pFetchmail_error_invalid_id'] = '%s isimli herhangi bir girdi bulunamadı!';
$PALANG['pFetchmail_invalid_mailbox'] = 'Geçersiz e-posta!';
$PALANG['pFetchmail_server_missing'] = 'Lütfen uzaktaki sunucunun adını giriniz!';
$PALANG['pFetchmail_user_missing'] = 'Lütfen uzaktaki sunucunun kullanıcı adını giriniz!';
$PALANG['pFetchmail_password_missing'] = 'Lütfen uzaktaki sunucunun şifresini giriniz!';
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'E-posta Kutusu';
$PALANG['pFetchmail_field_src_server'] = 'Sunucu';
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Giriş Biçimi';
$PALANG['pFetchmail_field_src_user'] = 'Kullanıcı';
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
$PALANG['pFetchmail_field_src_folder'] = 'Folder'; # XXX
$PALANG['pFetchmail_field_src_folder'] = 'Klasör';
$PALANG['pFetchmail_field_poll_time'] = 'Poll'; # XXX
$PALANG['pFetchmail_field_fetchall'] = 'Fetch All'; # XXX
$PALANG['pFetchmail_field_keep'] = 'Keep'; # XXX
$PALANG['pFetchmail_field_protocol'] = 'Protocol'; # XXX
$PALANG['pFetchmail_field_usessl'] = 'SSL active'; # XXX
$PALANG['pFetchmail_field_sslcertck'] = 'SSL certificate check'; # XXX
$PALANG['pFetchmail_field_sslcertpath'] = 'SSL path to certificates'; # XXX
$PALANG['pFetchmail_field_fetchall'] = 'Yakala ';
$PALANG['pFetchmail_field_keep'] = 'Tut';
$PALANG['pFetchmail_field_protocol'] = 'Protokol';
$PALANG['pFetchmail_field_usessl'] = 'SSL etkin';
$PALANG['pFetchmail_field_sslcertck'] = 'SSL sertifika kontrol';
$PALANG['pFetchmail_field_sslcertpath'] = 'SSL sertifikası yolu';
$PALANG['pFetchmail_field_sslfingerprint'] = 'SSL fingerprint (md5)'; # XXX
$PALANG['pFetchmail_field_extra_options'] = 'Extra Options'; # XXX
$PALANG['pFetchmail_field_mda'] = 'MDA'; # XXX
$PALANG['pFetchmail_field_date'] = 'Date'; # XXX
$PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
$PALANG['pFetchmail_desc_src_folder'] = 'Remote Folder'; # XXX
$PALANG['pFetchmail_desc_poll_time'] = 'Poll every ... minutes'; # XXX
$PALANG['pFetchmail_desc_fetchall'] = 'Retrieve both old (seen) and new messages'; # XXX
$PALANG['pFetchmail_desc_keep'] = 'Keep retrieved messages on the remote mailserver'; # XXX
$PALANG['pFetchmail_desc_protocol'] = 'Protocol to use'; # XXX
$PALANG['pFetchmail_desc_usessl'] = 'SSL encryption'; # XXX
$PALANG['pFetchmail_desc_extra_options'] = 'Extra fetchmail Options'; # XXX
$PALANG['pFetchmail_desc_mda'] = 'Mail Delivery Agent'; # XXX
$PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuration change'; # XXX
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['pFetchmail_field_extra_options'] = 'Ekstra Seçenekler';
$PALANG['pFetchmail_field_mda'] = 'PDA';
$PALANG['pFetchmail_field_date'] = 'Tarih';
$PALANG['pFetchmail_field_returned_text'] = 'Geri Dönen Metin';
$PALANG['pFetchmail_desc_id'] = 'Kayıt ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Yerel e-posta kutusu';
$PALANG['pFetchmail_desc_src_server'] = 'Uzak Sunucu';
$PALANG['pFetchmail_desc_src_port'] = 'Uzak port numarası - şayet standart olmayan bir port kullanılıyorsa. (0: varsayılan standardı kullan)';
$PALANG['pFetchmail_desc_src_auth'] = 'Çoğunlukla \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Uzak Kullanıcı';
$PALANG['pFetchmail_desc_src_password'] = 'Uzak Şifre';
$PALANG['pFetchmail_desc_src_folder'] = 'Uzak Klasör';
$PALANG['pFetchmail_desc_poll_time'] = 'Her .... dakikada bi poll';
$PALANG['pFetchmail_desc_fetchall'] = 'Hem eski (okunan) hem de yeni iletileri çek';
$PALANG['pFetchmail_desc_keep'] = 'Eski iletileri uzaktaki mail sunucusunda saklı tut';
$PALANG['pFetchmail_desc_protocol'] = 'Kullanılacak protokol';
$PALANG['pFetchmail_desc_usessl'] = 'SSL şifreleme';
$PALANG['pFetchmail_desc_extra_options'] = 'Ekstra ileti-yakalama Seçenekleri';
$PALANG['pFetchmail_desc_mda'] = 'Posta Dağıtım Aracısı';
$PALANG['pFetchmail_desc_date'] = 'Son poll/konfigürasyon değişikliği tarihi';
$PALANG['pFetchmail_desc_returned_text'] = 'Son poll işleminden gelen metin iletisi';
$PALANG['dateformat_pgsql'] = 'dd-mm-YYYY'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format
$PALANG['dateformat_mysql'] = '%d-%m-%Y'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format
$PALANG['password_expiration'] = 'Şifrenin geçerlilik süresi dolma';
$PALANG['password_expiration_desc'] = 'Şifrenin geçerlilik süresinin doluş tarihi';
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -140,6 +140,7 @@ $PALANG['pEdit_alias_forward_only'] = '只轉寄到以上電郵地址';
$PALANG['pEdit_alias_result_error'] = '不能修改該別名! (%s)'; # XXX Text changed to: Modifying the alias %s failed!
$PALANG['pCreate_mailbox_welcome'] = '在你的網域中新建一個本地郵箱.';
$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX
$PALANG['pCreate_mailbox_username_text_error1'] = '郵件非法!';
$PALANG['pCreate_mailbox_username_text_error3'] = '郵箱地址已經達到上限!';
$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP 密碼';
@ -339,10 +340,13 @@ $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should
$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX
$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX
$PALANG['pStatus_undeliverable'] = '可能無法送遞 ';
$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX
$PALANG['pStatus_expired'] = 'Password expired '; # XXX
$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX
$PALANG['pStatus_custom'] = '送遞至 ';
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['password_too_short'] = "密碼太短 - 需要 %s 個字附";
$PALANG['password_no_characters'] = "你的密碼最少要有 %s 字母。";
$PALANG['password_no_characters'] = "你的密碼最少要有 %s 字母。"; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)."
$PALANG['password_no_digits'] = "你的密碼最少要有 %s 數字。";
$PALANG['pInvalidDomainRegex'] = "網域名 %s 不正確,未能通過 regexp 檢查";
$PALANG['pInvalidDomainDNS'] = "網域名 %s 不正確或在DNS找不到";
@ -361,6 +365,7 @@ $PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; #
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler
@ -380,6 +385,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
@ -395,6 +401,8 @@ $PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuratio
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['dateformat_pgsql'] = 'YYYY-mm-dd'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format # XXX
$PALANG['dateformat_mysql'] = '%Y-%m-%d'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format # XXX
$PALANG['password_expiration'] = 'Pass expires'; # XXX
$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -0,0 +1,89 @@
<?php
/**
* Turn on sanitisation of all data by default so it's not possible for XSS flaws to occur in PFA
*/
class PFASmarty {
/**
* @var Smarty
*/
protected $template;
/**
* @param string $template_theme
*/
public function __construct($template_theme = 'default') {
$this->template = new Smarty();
//$this->template->debugging = true;
if($template_theme == 'default') {
$this->template->setTemplateDir(dirname(__FILE__) . '/../templates');
}
else {
$this->template->setTemplateDir(dirname(__FILE__) . '/../templates/'. $template_theme);
}
// if it's not present or writeable, smarty should just not cache.
$templates_c = dirname(__FILE__) . '/../templates_c';
if (is_dir($templates_c) && is_writeable($templates_c)) {
$this->template->setCompileDir($templates_c);
} else {
# unfortunately there's no sane way to just disable compiling of templates
clearstatcache(); // just incase someone just fixed it; on their next refresh it should work.
error_log("ERROR: directory $templates_c doesn't exist or isn't writeable for the webserver");
die("ERROR: the templates_c directory doesn't exist or isn't writeable for the webserver");
}
$this->template->setConfigDir(dirname(__FILE__) . '/../configs');
}
/**
* @param string $key
* @param mixed $value
* @param bool $sanitise
*/
public function assign($key, $value, $sanitise = true) {
$this->template->assign("RAW_$key", $value);
if ($sanitise == false) {
return $this->template->assign($key, $value);
}
$clean = $this->sanitise($value);
/* we won't run the key through sanitise() here... some might argue we should */
return $this->template->assign($key, $clean);
}
/**
* @return void
* @param string $template
*/
public function display($template) {
header("Expires: Sun, 16 Mar 2003 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: text/html; charset=UTF-8");
$this->template->display($template);
unset($_SESSION['flash']); # cleanup flash messages
}
/**
* Recursive cleaning of data, using htmlentities - this assumes we only ever output to HTML and we're outputting in UTF-8 charset
*
* @param mixed $data - array or primitive type; objects not supported.
* @return mixed $data
* */
public function sanitise($data) {
if (!is_array($data)) {
return htmlentities($data, ENT_QUOTES, 'UTF-8', false);
}
$clean = array();
foreach ($data as $key => $value) {
/* as this is a nested data structure it's more likely we'll output the key too (at least in my opinion, so we'll sanitise it too */
$clean[$this->sanitise($key)] = $this->sanitise($value);
}
return $clean;
}
}

@ -0,0 +1,17 @@
<?php
/**
* This file should only be loaded if you're :
* a. running PHP < 7.0, and
* b. have the php_crypt password hash configured, and
* c. have not loaded paragonie's random_compat library.
*
*/
if(function_exists('random_int')) {
return;
}
function random_int($a, $b) { // someone might not be using php_crypt or ask for password generation, in which case random_int() won't be called
die(__FILE__ . " Postfixadmin security: Please install https://github.com/paragonie/random_compat OR enable the 'Phar' extension.");
}

@ -1,104 +1,43 @@
<?php
require_once(dirname(__FILE__) . '/smarty/libs/Autoloader.php');
Smarty_Autoloader::register();
/**
* Turn on sanitisation of all data by default so it's not possible for XSS flaws to occur in PFA
*/
class PFASmarty {
protected $template = null;
public function __construct() {
$this->template = new Smarty();
//$this->template->debugging = true;
$this->template->setTemplateDir(dirname(__FILE__) . '/../templates');
// if it's not present or writeable, smarty should just not cache.
$templates_c = dirname(__FILE__) . '/../templates_c';
if (is_dir($templates_c) && is_writeable($templates_c)) {
$this->template->setCompileDir($templates_c);
} else {
# unfortunately there's no sane way to just disable compiling of templates
clearstatcache(); // just incase someone just fixed it; on their next refresh it should work.
error_log("ERROR: directory $templates_c doesn't exist or isn't writeable for the webserver");
die("ERROR: the templates_c directory doesn't exist or isn't writeable for the webserver");
}
if (!isset($CONF) || !isset($PALANG)) {
die("environment not setup correctly");
}
$this->template->setConfigDir(dirname(__FILE__) . '/../configs');
}
require_once(dirname(__FILE__) . '/smarty/libs/Autoloader.php');
public function assign($key, $value, $sanitise = true) {
$this->template->assign("RAW_$key", $value);
if ($sanitise == false) {
return $this->template->assign($key, $value);
}
$clean = $this->sanitise($value);
/* we won't run the key through sanitise() here... some might argue we should */
return $this->template->assign($key, $clean);
}
require_once(dirname(__FILE__) . '/PFASmarty.php');
public function display($template) {
header("Expires: Sun, 16 Mar 2003 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: text/html; charset=UTF-8");
Smarty_Autoloader::register();
$this->template->display($template);
unset($_SESSION['flash']); # cleanup flash messages
}
/**
* Recursive cleaning of data, using htmlentities - this assumes we only ever output to HTML and we're outputting in UTF-8 charset
*
* @param mixed $data - array or primitive type; objects not supported.
* @return mixed $data
* */
public function sanitise($data) {
if (!is_array($data)) {
return htmlentities($data, ENT_QUOTES, 'UTF-8', false);
}
if (is_array($data)) {
$clean = array();
foreach ($data as $key => $value) {
/* as this is a nested data structure it's more likely we'll output the key too (at least in my opinion, so we'll sanitise it too */
$clean[$this->sanitise($key)] = $this->sanitise($value);
}
return $clean;
}
}
if (isset($CONF['theme']) && is_dir(dirname(__FILE__) . "/../templates/" . $CONF['theme'])) {
$smarty = new PFASmarty($CONF['theme']);
} else {
$smarty = new PFASmarty();
}
$smarty = new PFASmarty();
if (!isset($rel_path)) {
$rel_path = '';
} # users/* sets this to '../'
$CONF['theme_css'] = $rel_path . htmlentities($CONF['theme_css']);
$CONF['theme_css'] = $rel_path . htmlentities($CONF['theme_css']);
if (!empty($CONF['theme_custom_css'])) {
$CONF['theme_custom_css'] = $rel_path . htmlentities($CONF['theme_custom_css']);
$CONF['theme_custom_css'] = $rel_path . htmlentities($CONF['theme_custom_css']);
}
$CONF['theme_favicon'] = $rel_path . htmlentities($CONF['theme_favicon']);
$CONF['theme_logo'] = $rel_path . htmlentities($CONF['theme_logo']);
$smarty->assign('CONF', $CONF);
$smarty->assign('PALANG', $PALANG);
$smarty->assign('url_domain', '');
//*** footer.tpl
if (!isset($version)) {
$version = 'dev/unknown';
}
$smarty->assign('version', $version);
//*** menu.tpl
$smarty->assign('boolconf_alias_domain', Config::bool('alias_domain'));
$smarty->assign('authentication_has_role', array('global_admin' => authentication_has_role('global-admin'), 'admin' => authentication_has_role('admin'), 'user' => authentication_has_role('user')));
function eval_size($aSize) {
if ($aSize == 0) {
$ret_val = Config::Lang('pOverview_unlimited');
} elseif ($aSize < 0) {
$ret_val = Config::Lang('pOverview_disabled');
} else {
$ret_val = $aSize;
}
return $ret_val;
}
/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */

@ -2,14 +2,14 @@
/**
* Smarty Autoloader
*
* @package Smarty
* @package Smarty
*/
/**
* Smarty Autoloader
*
* @package Smarty
* @author Uwe Tews
* @package Smarty
* @author Uwe Tews
* Usage:
* require_once '...path/Autoloader.php';
* Smarty_Autoloader::register();
@ -20,7 +20,7 @@
*/
class Smarty_Autoloader
{
/**
/**
* Filepath to Smarty root
*
* @var string
@ -54,8 +54,8 @@ class Smarty_Autoloader
if (!defined('SMARTY_SPL_AUTOLOAD')) {
define('SMARTY_SPL_AUTOLOAD', 0);
}
if (SMARTY_SPL_AUTOLOAD &&
set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
if (SMARTY_SPL_AUTOLOAD
&& set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
) {
$registeredAutoLoadFunctions = spl_autoload_functions();
if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {

@ -27,7 +27,7 @@
* @author Uwe Tews <uwe dot tews at gmail dot com>
* @author Rodney Rehm
* @package Smarty
* @version 3.1.32
* @version 3.1.33
*/
/**
* set SMARTY_DIR to absolute path to Smarty library files.
@ -112,7 +112,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* smarty version
*/
const SMARTY_VERSION = '3.1.32';
const SMARTY_VERSION = '3.1.33';
/**
* define variable scopes
*/
@ -166,133 +166,157 @@ class Smarty extends Smarty_Internal_TemplateBase
const PLUGIN_COMPILER = 'compiler';
const PLUGIN_MODIFIER = 'modifier';
const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
/**
* assigned global tpl vars
*/
public static $global_tpl_vars = array();
/**
* Flag denoting if Multibyte String functions are available
*/
public static $_MBSTRING = SMARTY_MBSTRING;
/**
* The character set to adhere to (e.g. "UTF-8")
*/
public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET;
/**
* The date format to be used internally
* (accepts date() and strftime())
*/
public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT;
/**
* Flag denoting if PCRE should run in UTF-8 mode
*/
public static $_UTF8_MODIFIER = 'u';
/**
* Flag denoting if operating system is windows
*/
public static $_IS_WINDOWS = false;
/**
* auto literal on delimiters with whitespace
*
* @var boolean
*/
public $auto_literal = true;
/**
* display error on not assigned variables
*
* @var boolean
*/
public $error_unassigned = false;
/**
* look up relative file path in include_path
*
* @var boolean
*/
public $use_include_path = false;
/**
* flag if template_dir is normalized
*
* @var bool
*/
public $_templateDirNormalized = false;
/**
* joined template directory string used in cache keys
*
* @var string
*/
public $_joined_template_dir = null;
/**
* flag if config_dir is normalized
*
* @var bool
*/
public $_configDirNormalized = false;
/**
* joined config directory string used in cache keys
*
* @var string
*/
public $_joined_config_dir = null;
/**
* default template handler
*
* @var callable
*/
public $default_template_handler_func = null;
/**
* default config handler
*
* @var callable
*/
public $default_config_handler_func = null;
/**
* default plugin handler
*
* @var callable
*/
public $default_plugin_handler_func = null;
/**
* flag if template_dir is normalized
*
* @var bool
*/
public $_compileDirNormalized = false;
/**
* flag if plugins_dir is normalized
*
* @var bool
*/
public $_pluginsDirNormalized = false;
/**
* flag if template_dir is normalized
*
* @var bool
*/
public $_cacheDirNormalized = false;
/**
* force template compiling?
*
* @var boolean
*/
public $force_compile = false;
/**
/**
* use sub dirs for compiled/cached files?
*
* @var boolean
*/
public $use_sub_dirs = false;
/**
* allow ambiguous resources (that are made unique by the resource handler)
*
* @var boolean
*/
public $allow_ambiguous_resources = false;
/**
* merge compiled includes
*
* @var boolean
*/
public $merge_compiled_includes = false;
/*
* flag for behaviour when extends: resource and {extends} tag are used simultaneous
* if false disable execution of {extends} in templates called by extends resource.
@ -301,30 +325,35 @@ class Smarty extends Smarty_Internal_TemplateBase
* @var boolean
*/
public $extends_recursion = true;
/**
* force cache file creation
*
* @var boolean
*/
public $force_cache = false;
/**
* template left-delimiter
*
* @var string
*/
public $left_delimiter = "{";
/**
* template right-delimiter
*
* @var string
*/
public $right_delimiter = "}";
/**
* array of strings which shall be treated as literal by compiler
*
* @var array string
*/
public $literals = array();
/**
* class name
* This should be instance of Smarty_Security.
@ -333,24 +362,28 @@ class Smarty extends Smarty_Internal_TemplateBase
* @see Smarty_Security
*/
public $security_class = 'Smarty_Security';
/**
* implementation of security class
*
* @var Smarty_Security
*/
public $security_policy = null;
/**
* controls handling of PHP-blocks
*
* @var integer
*/
public $php_handling = self::PHP_PASSTHRU;
/**
* controls if the php template file resource is allowed
*
* @var bool
*/
public $allow_php_templates = false;
/**
* debug mode
* Setting this to true enables the debug-console.
@ -358,6 +391,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @var boolean
*/
public $debugging = false;
/**
* This determines if debugging is enable-able from the browser.
* <ul>
@ -368,6 +402,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @var string
*/
public $debugging_ctrl = 'NONE';
/**
* Name of debugging URL-param.
* Only used when $debugging_ctrl is set to 'URL'.
@ -376,54 +411,63 @@ class Smarty extends Smarty_Internal_TemplateBase
* @var string
*/
public $smarty_debug_id = 'SMARTY_DEBUG';
/**
* Path of debug template.
*
* @var string
*/
public $debug_tpl = null;
/**
* When set, smarty uses this value as error_reporting-level.
*
* @var int
*/
public $error_reporting = null;
/**
* Controls whether variables with the same name overwrite each other.
*
* @var boolean
*/
public $config_overwrite = true;
/**
* Controls whether config values of on/true/yes and off/false/no get converted to boolean.
*
* @var boolean
*/
public $config_booleanize = true;
/**
* Controls whether hidden config sections/vars are read from the file.
*
* @var boolean
*/
public $config_read_hidden = false;
/**
* locking concurrent compiles
*
* @var boolean
*/
public $compile_locking = true;
/**
* Controls whether cache resources should use locking mechanism
*
* @var boolean
*/
public $cache_locking = false;
/**
* seconds to wait for acquiring a lock before ignoring the write lock
*
* @var float
*/
public $locking_timeout = 10;
/**
* resource type used if none given
* Must be an valid key of $registered_resources.
@ -431,6 +475,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @var string
*/
public $default_resource_type = 'file';
/**
* caching type
* Must be an element of $cache_resource_types.
@ -438,160 +483,189 @@ class Smarty extends Smarty_Internal_TemplateBase
* @var string
*/
public $caching_type = 'file';
/**
* config type
*
* @var string
*/
public $default_config_type = 'file';
/**
* check If-Modified-Since headers
*
* @var boolean
*/
public $cache_modified_check = false;
/**
* registered plugins
*
* @var array
*/
public $registered_plugins = array();
/**
* registered objects
*
* @var array
*/
public $registered_objects = array();
/**
* registered classes
*
* @var array
*/
public $registered_classes = array();
/**
* registered filters
*
* @var array
*/
public $registered_filters = array();
/**
* registered resources
*
* @var array
*/
public $registered_resources = array();
/**
* registered cache resources
*
* @var array
*/
public $registered_cache_resources = array();
/**
* autoload filter
*
* @var array
*/
public $autoload_filters = array();
/**
* default modifier
*
* @var array
*/
public $default_modifiers = array();
/**
* autoescape variable output
*
* @var boolean
*/
public $escape_html = false;
/**
* start time for execution time calculation
*
* @var int
*/
public $start_time = 0;
/**
* required by the compiler for BC
*
* @var string
*/
public $_current_file = null;
/**
* internal flag to enable parser debugging
*
* @var bool
*/
public $_parserdebug = false;
/**
* This object type (Smarty = 1, template = 2, data = 4)
*
* @var int
*/
public $_objType = 1;
/**
* Debug object
*
* @var Smarty_Internal_Debug
*/
public $_debug = null;
/**
* template directory
*
* @var array
*/
protected $template_dir = array('./templates/');
/**
* flags for normalized template directory entries
*
* @var array
*/
protected $_processedTemplateDir = array();
/**
* config directory
*
* @var array
*/
protected $config_dir = array('./configs/');
/**
* flags for normalized template directory entries
*
* @var array
*/
protected $_processedConfigDir = array();
/**
* compile directory
*
* @var string
*/
protected $compile_dir = './templates_c/';
/**
* plugins directory
*
* @var array
*/
protected $plugins_dir = array();
/**
* cache directory
*
* @var string
*/
protected $cache_dir = './cache/';
/**
* removed properties
*
* @var string[]
*/
protected $obsoleteProperties = array('resource_caching', 'template_resource_caching', 'direct_access_security',
'_dir_perms', '_file_perms', 'plugin_search_order',
'inheritance_merge_compiled_includes', 'resource_cache_mode',);
protected $obsoleteProperties = array(
'resource_caching', 'template_resource_caching', 'direct_access_security',
'_dir_perms', '_file_perms', 'plugin_search_order',
'inheritance_merge_compiled_includes', 'resource_cache_mode',
);
/**
* List of private properties which will call getter/setter on a direct access
*
* @var string[]
*/
protected $accessMap = array('template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
'cache_dir' => 'CacheDir',);
protected $accessMap = array(
'template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
'cache_dir' => 'CacheDir',
);
/**
* Initialize new Smarty object
@ -618,7 +692,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Enable error handler to mute expected messages
*
* @return boolean
* @return boolean
* @deprecated
*/
public static function muteExpectedErrors()
@ -639,7 +713,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Check if a template resource exists
*
* @param string $resource_name template name
* @param string $resource_name template name
*
* @return bool status
* @throws \SmartyException
@ -654,10 +728,10 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Loads security class and enables security
*
* @param string|Smarty_Security $security_class if a string is used, it must be class-name
* @param string|Smarty_Security $security_class if a string is used, it must be class-name
*
* @return Smarty current Smarty instance for chaining
* @throws SmartyException when an invalid class name is provided
* @throws \SmartyException
*/
public function enableSecurity($security_class = null)
{
@ -679,9 +753,9 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Add template directory(s)
*
* @param string|array $template_dir directory(s) of template sources
* @param string $key of the array element to assign the template dir to
* @param bool $isConfig true for config_dir
* @param string|array $template_dir directory(s) of template sources
* @param string $key of the array element to assign the template dir to
* @param bool $isConfig true for config_dir
*
* @return Smarty current Smarty instance for chaining
*/
@ -747,8 +821,8 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Set template directory
*
* @param string|array $template_dir directory(s) of template sources
* @param bool $isConfig true for config_dir
* @param string|array $template_dir directory(s) of template sources
* @param bool $isConfig true for config_dir
*
* @return \Smarty current Smarty instance for chaining
*/
@ -835,7 +909,7 @@ class Smarty extends Smarty_Internal_TemplateBase
$this->plugins_dir = (array)$this->plugins_dir;
}
foreach ($this->plugins_dir as $k => $v) {
$this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, "/\\") . DIRECTORY_SEPARATOR, true);
$this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, '/\\') . DIRECTORY_SEPARATOR, true);
}
$this->_cache[ 'plugin_files' ] = array();
$this->_pluginsDirNormalized = true;
@ -846,7 +920,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Set plugins directory
*
* @param string|array $plugins_dir directory(s) of plugins
* @param string|array $plugins_dir directory(s) of plugins
*
* @return Smarty current Smarty instance for chaining
*/
@ -901,7 +975,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Set cache directory
*
* @param string $cache_dir directory to store cached templates in
* @param string $cache_dir directory to store cached templates in
*
* @return Smarty current Smarty instance for chaining
*/
@ -915,11 +989,11 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* creates a template object
*
* @param string $template the resource handle of the template file
* @param mixed $cache_id cache id to be used with this template
* @param mixed $compile_id compile id to be used with this template
* @param object $parent next higher level of Smarty variables
* @param boolean $do_clone flag is Smarty object shall be cloned
* @param string $template the resource handle of the template file
* @param mixed $cache_id cache id to be used with this template
* @param mixed $compile_id compile id to be used with this template
* @param object $parent next higher level of Smarty variables
* @param boolean $do_clone flag is Smarty object shall be cloned
*
* @return \Smarty_Internal_Template template object
* @throws \SmartyException
@ -946,7 +1020,7 @@ class Smarty extends Smarty_Internal_TemplateBase
Smarty_Internal_Template::$isCacheTplObj[ $_templateId ];
$tpl->inheritance = null;
$tpl->tpl_vars = $tpl->config_vars = array();
} else if (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) {
} elseif (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) {
$tpl = clone Smarty_Internal_Template::$tplObjCache[ $_templateId ];
$tpl->inheritance = null;
$tpl->tpl_vars = $tpl->config_vars = array();
@ -981,11 +1055,11 @@ class Smarty extends Smarty_Internal_TemplateBase
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
*
* @throws SmartyException
* @return string |boolean filepath of loaded file or false
* @throws \SmartyException
*/
public function loadPlugin($plugin_name, $check = true)
{
@ -1004,12 +1078,13 @@ class Smarty extends Smarty_Internal_TemplateBase
* @return string
* @throws \SmartyException
*/
public function _getTemplateId($template_name,
$cache_id = null,
$compile_id = null,
$caching = null,
Smarty_Internal_Template $template = null)
{
public function _getTemplateId(
$template_name,
$cache_id = null,
$compile_id = null,
$caching = null,
Smarty_Internal_Template $template = null
) {
$template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" :
$template_name;
$cache_id = $cache_id === null ? $this->cache_id : $cache_id;
@ -1033,33 +1108,22 @@ class Smarty extends Smarty_Internal_TemplateBase
* - remove /./ and /../
* - make it absolute if required
*
* @param string $path file path
* @param bool $realpath if true - convert to absolute
* false - convert to relative
* null - keep as it is but remove /./ /../
* @param string $path file path
* @param bool $realpath if true - convert to absolute
* false - convert to relative
* null - keep as it is but
* remove /./ /../
*
* @return string
*/
public function _realpath($path, $realpath = null)
{
static $nds = null;
static $sepDotsep = null;
static $sepDot = null;
static $sepSep =null;
if (!isset($nds)) {
$nds = array('/' => '\\', '\\' => '/');
$sepDotsep = DIRECTORY_SEPARATOR . '.' . DIRECTORY_SEPARATOR;
$sepDot = DIRECTORY_SEPARATOR . '.';
$sepSep = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR;
}
// normalize DIRECTORY_SEPARATOR
$path = str_replace(array($nds[DIRECTORY_SEPARATOR], $sepDotsep), DIRECTORY_SEPARATOR, $path);
if (strpos($path,$sepDot) === false && (($realpath === false && $path[0] === '.') || $realpath === null) && $path[0] !== '\\') {
return $path;
}
preg_match('%^(?<root>(?:[[:alpha:]]:[\\\\]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(.*))$%u',
$path,
$parts);
$nds = array('/' => '\\', '\\' => '/');
preg_match(
'%^(?<root>(?:[[:alpha:]]:[\\\\/]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(.*))$%u',
$path,
$parts
);
$path = $parts[ 'path' ];
if ($parts[ 'root' ] === '\\') {
$parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ];
@ -1068,24 +1132,18 @@ class Smarty extends Smarty_Internal_TemplateBase
$path = getcwd() . DIRECTORY_SEPARATOR . $path;
}
}
// remove noop 'DIRECTORY_SEPARATOR DIRECTORY_SEPARATOR' and 'DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR' patterns
$path = str_replace(array($sepDotsep,$sepSep), DIRECTORY_SEPARATOR, $path);
// resolve '..DIRECTORY_SEPARATOR' pattern, smallest first
if (strpos($path, '..' . DIRECTORY_SEPARATOR) !== false &&
preg_match_all('#[\\\\/]([.][.][\\\\/])+#u', $path, $match)
) {
$counts = array();
foreach ($match[ 0 ] as $m) {
$counts[] = (int)((strlen($m) - 1) / 3);
}
sort($counts);
foreach ($counts as $count) {
$path = preg_replace('#([\\\\/]+[^\\\\/]+){' . $count .
'}[\\\\/]+([.][.][\\\\/]+){' . $count . '}#u',
DIRECTORY_SEPARATOR,
$path);
}
}
// normalize DIRECTORY_SEPARATOR
$path = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $path);
$parts[ 'root' ] = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $parts[ 'root' ]);
do {
$path = preg_replace(
array('#[\\\\/]{2}#', '#[\\\\/][.][\\\\/]#', '#[\\\\/]([^\\\\/.]+)[\\\\/][.][.][\\\\/]#'),
DIRECTORY_SEPARATOR,
$path,
-1,
$count
);
} while ($count > 0);
return $realpath !== false ? $parts[ 'root' ] . $path : str_ireplace(getcwd(), '.', $parts[ 'root' ] . $path);
}
@ -1279,19 +1337,18 @@ class Smarty extends Smarty_Internal_TemplateBase
* Calls the appropriate getter function.
* Issues an E_USER_NOTICE if no valid getter is found.
*
* @param string $name property name
* @param string $name property name
*
* @return mixed
* @throws \SmartyException
*/
public function __get($name)
{
if (isset($this->accessMap[ $name ])) {
$method = 'get' . $this->accessMap[ $name ];
return $this->{$method}();
} else if (isset($this->_cache[ $name ])) {
} elseif (isset($this->_cache[ $name ])) {
return $this->_cache[ $name ];
} else if (in_array($name, $this->obsoleteProperties)) {
} elseif (in_array($name, $this->obsoleteProperties)) {
return null;
} else {
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
@ -1307,21 +1364,18 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param string $name property name
* @param mixed $value parameter passed to setter
*
* @throws \SmartyException
*/
public function __set($name, $value)
{
if (isset($this->accessMap[ $name ])) {
$method = 'set' . $this->accessMap[ $name ];
$this->{$method}($value);
} else if (in_array($name, $this->obsoleteProperties)) {
} elseif (in_array($name, $this->obsoleteProperties)) {
return;
} elseif (is_object($value) && method_exists($value, $name)) {
$this->$name = $value;
} else {
if (is_object($value) && method_exists($value, $name)) {
$this->$name = $value;
} else {
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
}
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
}
}
@ -1345,7 +1399,6 @@ class Smarty extends Smarty_Internal_TemplateBase
* Normalize template_dir or config_dir
*
* @param bool $isConfig true for config_dir
*
*/
private function _normalizeTemplateConfig($isConfig)
{

@ -28,7 +28,7 @@
/**
* @ignore
*/
require_once(dirname(__FILE__) . '/Smarty.class.php');
require_once dirname(__FILE__) . '/Smarty.class.php';
/**
* Smarty Backward Compatibility Wrapper Class
@ -53,7 +53,6 @@ class SmartyBC extends Smarty
/**
* Initialize new SmartyBC object
*
*/
public function __construct()
{
@ -127,12 +126,16 @@ class SmartyBC extends Smarty
* @param boolean $smarty_args smarty argument format, else traditional
* @param array $block_methods list of methods that are block format
*
* @throws SmartyException
* @throws SmartyException
* @internal param array $block_functs list of methods that are block format
*/
public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true,
$block_methods = array())
{
public function register_object(
$object,
$object_impl,
$allowed = array(),
$smarty_args = true,
$block_methods = array()
) {
settype($allowed, 'array');
settype($smarty_args, 'boolean');
$this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
@ -326,10 +329,10 @@ class SmartyBC extends Smarty
/**
* clear cached content for the given template and cache id
*
* @param string $tpl_file name of template file
* @param string $cache_id name of cache_id
* @param string $compile_id name of compile_id
* @param string $exp_time expiration time
* @param string $tpl_file name of template file
* @param string $cache_id name of cache_id
* @param string $compile_id name of compile_id
* @param string $exp_time expiration time
*
* @return boolean
*/
@ -341,7 +344,7 @@ class SmartyBC extends Smarty
/**
* clear the entire contents of cache (all templates)
*
* @param string $exp_time expire time
* @param string $exp_time expire time
*
* @return boolean
*/
@ -353,9 +356,9 @@ class SmartyBC extends Smarty
/**
* test to see if valid cache exists for this template
*
* @param string $tpl_file name of template file
* @param string $cache_id
* @param string $compile_id
* @param string $tpl_file name of template file
* @param string $cache_id
* @param string $compile_id
*
* @return bool
* @throws \Exception
@ -379,9 +382,9 @@ class SmartyBC extends Smarty
* or all compiled template files if one is not specified.
* This function is for advanced use only, not normally needed.
*
* @param string $tpl_file
* @param string $compile_id
* @param string $exp_time
* @param string $tpl_file
* @param string $compile_id
* @param string $exp_time
*
* @return boolean results of {@link smarty_core_rm_auto()}
*/
@ -393,7 +396,7 @@ class SmartyBC extends Smarty
/**
* Checks whether requested template exists.
*
* @param string $tpl_file
* @param string $tpl_file
*
* @return bool
* @throws \SmartyException
@ -406,7 +409,7 @@ class SmartyBC extends Smarty
/**
* Returns an array containing template variables
*
* @param string $name
* @param string $name
*
* @return array
*/
@ -418,7 +421,7 @@ class SmartyBC extends Smarty
/**
* Returns an array containing config variables
*
* @param string $name
* @param string $name
*
* @return array
*/
@ -442,7 +445,7 @@ class SmartyBC extends Smarty
/**
* return a reference to a registered object
*
* @param string $name
* @param string $name
*
* @return object
*/

@ -1,5 +1,5 @@
<?php
/*
/**
* This file is part of the Smarty package.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
@ -7,11 +7,10 @@
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/*
/**
* Load and register Smarty Autoloader
*/
if (!class_exists('Smarty_Autoloader')) {
require dirname(__FILE__) . '/Autoloader.php';
include dirname(__FILE__) . '/Autoloader.php';
}
Smarty_Autoloader::register(true);

@ -113,10 +113,10 @@
<div>
{foreach $template_data as $template}
<font color=brown>{$template.name}</font>
<br>&nbsp;&nbsp;<span class="exectime">
<br />&nbsp;&nbsp;<span class="exectime">
(compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
</span>
<br>
<br />
{/foreach}
</div>
{/if}
@ -127,7 +127,7 @@
{foreach $assigned_vars as $vars}
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
<td><h3><font color=blue>${$vars@key}</font></h3>
{if isset($vars['nocache'])}<b>Nocache</b></br>{/if}
{if isset($vars['nocache'])}<b>Nocache</b><br />{/if}
{if isset($vars['scope'])}<b>Origin:</b> {$vars['scope']|debug_print_var nofilter}{/if}
</td>
<td><h3>Value</h3>{$vars['value']|debug_print_var:10:80 nofilter}</td>

@ -20,7 +20,6 @@
* - indent_char - string (" ")
* - wrap_boundary - boolean (true)
*
*
* @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
* (Smarty online manual)
*
@ -39,10 +38,15 @@ function smarty_block_textformat($params, $content, Smarty_Internal_Template $te
return;
}
if (Smarty::$_MBSTRING) {
$template->_checkPlugins(array(array('function' => 'smarty_modifier_mb_wordwrap',
'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_modifier_mb_wordwrap',
'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php'
)
)
);
}
$style = null;
$indent = 0;
$indent_first = 0;
@ -51,47 +55,48 @@ function smarty_block_textformat($params, $content, Smarty_Internal_Template $te
$wrap_char = "\n";
$wrap_cut = false;
$assign = null;
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'style':
case 'indent_char':
case 'wrap_char':
case 'assign':
$$_key = (string) $_val;
$$_key = (string)$_val;
break;
case 'indent':
case 'indent_first':
case 'wrap':
$$_key = (int) $_val;
$$_key = (int)$_val;
break;
case 'wrap_cut':
$$_key = (bool) $_val;
$$_key = (bool)$_val;
break;
default:
trigger_error("textformat: unknown attribute '{$_key}'");
}
}
if ($style === 'email') {
$wrap = 72;
}
// split into paragraphs
$_paragraphs = preg_split('![\r\n]{2}!', $content);
foreach ($_paragraphs as &$_paragraph) {
if (!$_paragraph) {
continue;
}
// convert mult. spaces & special chars to single space
$_paragraph =
preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER,
'!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER),
array(' ',
''), $_paragraph);
preg_replace(
array(
'!\s+!' . Smarty::$_UTF8_MODIFIER,
'!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER
),
array(
' ',
''
),
$_paragraph
);
// indent first line
if ($indent_first > 0) {
$_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
@ -108,7 +113,6 @@ function smarty_block_textformat($params, $content, Smarty_Internal_Template $te
}
}
$_output = implode($wrap_char . $wrap_char, $_paragraphs);
if ($assign) {
$template->assign($assign, $_output);
} else {

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {counter} function plugin
* Type: function
@ -24,50 +23,40 @@
function smarty_function_counter($params, $template)
{
static $counters = array();
$name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default';
if (!isset($counters[ $name ])) {
$counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1);
}
$counter =& $counters[ $name ];
if (isset($params[ 'start' ])) {
$counter[ 'start' ] = $counter[ 'count' ] = (int) $params[ 'start' ];
$counter[ 'start' ] = $counter[ 'count' ] = (int)$params[ 'start' ];
}
if (!empty($params[ 'assign' ])) {
$counter[ 'assign' ] = $params[ 'assign' ];
}
if (isset($counter[ 'assign' ])) {
$template->assign($counter[ 'assign' ], $counter[ 'count' ]);
}
if (isset($params[ 'print' ])) {
$print = (bool) $params[ 'print' ];
$print = (bool)$params[ 'print' ];
} else {
$print = empty($counter[ 'assign' ]);
}
if ($print) {
$retval = $counter[ 'count' ];
} else {
$retval = null;
}
if (isset($params[ 'skip' ])) {
$counter[ 'skip' ] = $params[ 'skip' ];
}
if (isset($params[ 'direction' ])) {
$counter[ 'direction' ] = $params[ 'direction' ];
}
if ($counter[ 'direction' ] === 'down') {
$counter[ 'count' ] -= $counter[ 'skip' ];
} else {
$counter[ 'count' ] += $counter[ 'skip' ];
}
return $retval;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {cycle} function plugin
* Type: function
@ -29,34 +28,29 @@
* {cycle name=row values="one,two,three" reset=true}
* {cycle name=row}
*
*
* @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
* @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author credit to Mark Priatel <mpriatel@rogers.com>
* @author credit to Gerard <gerard@interfold.com>
* @author credit to Jason Sweat <jsweat_php@yahoo.com>
* @version 1.3
* @author Monte Ohrt <monte at ohrt dot com>
* @author credit to Mark Priatel <mpriatel@rogers.com>
* @author credit to Gerard <gerard@interfold.com>
* @author credit to Jason Sweat <jsweat_php@yahoo.com>
* @version 1.3
*
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
*
* @return string|null
*/
function smarty_function_cycle($params, $template)
{
static $cycle_vars;
$name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
$print = (isset($params[ 'print' ])) ? (bool) $params[ 'print' ] : true;
$advance = (isset($params[ 'advance' ])) ? (bool) $params[ 'advance' ] : true;
$reset = (isset($params[ 'reset' ])) ? (bool) $params[ 'reset' ] : false;
$print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true;
$advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true;
$reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false;
if (!isset($params[ 'values' ])) {
if (!isset($cycle_vars[ $name ][ 'values' ])) {
trigger_error('cycle: missing \'values\' parameter');
return;
}
} else {
@ -65,41 +59,34 @@ function smarty_function_cycle($params, $template)
}
$cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
}
if (isset($params[ 'delimiter' ])) {
$cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
} elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
$cycle_vars[ $name ][ 'delimiter' ] = ',';
}
if (is_array($cycle_vars[ $name ][ 'values' ])) {
$cycle_array = $cycle_vars[ $name ][ 'values' ];
} else {
$cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
}
if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
$cycle_vars[ $name ][ 'index' ] = 0;
}
if (isset($params[ 'assign' ])) {
$print = false;
$template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
}
if ($print) {
$retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
} else {
$retval = null;
}
if ($advance) {
if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
$cycle_vars[ $name ][ 'index' ] = 0;
} else {
$cycle_vars[ $name ][ 'index' ] ++;
$cycle_vars[ $name ][ 'index' ]++;
}
}
return $retval;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {fetch} plugin
* Type: function
@ -26,20 +25,16 @@ function smarty_function_fetch($params, $template)
{
if (empty($params[ 'file' ])) {
trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE);
return;
}
// strip file protocol
if (stripos($params[ 'file' ], 'file://') === 0) {
$params[ 'file' ] = substr($params[ 'file' ], 7);
}
$protocol = strpos($params[ 'file' ], '://');
if ($protocol !== false) {
$protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
}
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
@ -53,7 +48,6 @@ function smarty_function_fetch($params, $template)
}
}
}
$content = '';
if ($protocol === 'http') {
// http fetch
@ -104,7 +98,6 @@ function smarty_function_fetch($params, $template)
if (!empty($param_value)) {
if (!preg_match('![\w\d-]+: .+!', $param_value)) {
trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE);
return;
} else {
$extra_headers[] = $param_value;
@ -118,10 +111,9 @@ function smarty_function_fetch($params, $template)
break;
case 'proxy_port':
if (!preg_match('!\D!', $param_value)) {
$proxy_port = (int) $param_value;
$proxy_port = (int)$param_value;
} else {
trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE);
return;
}
break;
@ -137,16 +129,14 @@ function smarty_function_fetch($params, $template)
break;
case 'timeout':
if (!preg_match('!\D!', $param_value)) {
$timeout = (int) $param_value;
$timeout = (int)$param_value;
} else {
trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE);
return;
}
break;
default:
trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE);
return;
}
}
@ -156,10 +146,8 @@ function smarty_function_fetch($params, $template)
} else {
$fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
}
if (!$fp) {
trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
return;
} else {
if ($_is_proxy) {
@ -187,23 +175,19 @@ function smarty_function_fetch($params, $template)
if (!empty($user) && !empty($pass)) {
fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n");
}
fputs($fp, "\r\n");
while (!feof($fp)) {
$content .= fgets($fp, 4096);
}
fclose($fp);
$csplit = preg_split("!\r\n\r\n!", $content, 2);
$content = $csplit[ 1 ];
if (!empty($params[ 'assign_headers' ])) {
$template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ]));
}
}
} else {
trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
return;
}
} else {
@ -212,7 +196,6 @@ function smarty_function_fetch($params, $template)
throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'");
}
}
if (!empty($params[ 'assign' ])) {
$template->assign($params[ 'assign' ], $content);
} else {

@ -29,25 +29,29 @@
* - assign (optional) - assign the output as an array to this variable
* - escape (optional) - escape the content (not value), defaults to true
*
*
* @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
* @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
* (Smarty online manual)
* @author Christopher Kvarme <christopher.kvarme@flashjab.com>
* @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
* @author Christopher Kvarme <christopher.kvarme@flashjab.com>
* @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
*
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
*
* @return string
* @uses smarty_function_escape_special_chars()
* @uses smarty_function_escape_special_chars()
* @throws \SmartyException
*/
function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
)
)
);
$name = 'checkbox';
$values = null;
$options = null;
@ -57,31 +61,25 @@ function smarty_function_html_checkboxes($params, Smarty_Internal_Template $temp
$labels = true;
$label_ids = false;
$output = null;
$extra = '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'separator':
$$_key = (string) $_val;
$$_key = (string)$_val;
break;
case 'escape':
case 'labels':
case 'label_ids':
$$_key = (bool) $_val;
$$_key = (bool)$_val;
break;
case 'options':
$$_key = (array) $_val;
$$_key = (array)$_val;
break;
case 'values':
case 'output':
$$_key = array_values((array) $_val);
$$_key = array_values((array)$_val);
break;
case 'checked':
case 'selected':
if (is_array($_val)) {
@ -89,57 +87,61 @@ function smarty_function_html_checkboxes($params, Smarty_Internal_Template $temp
foreach ($_val as $_sel) {
if (is_object($_sel)) {
if (method_exists($_sel, '__toString')) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
$_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
} else {
trigger_error('html_checkboxes: selected attribute contains an object of class \'' .
get_class($_sel) . '\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_checkboxes: selected attribute contains an object of class \'' .
get_class($_sel) . '\' without __toString() method',
E_USER_NOTICE
);
continue;
}
} else {
$_sel = smarty_function_escape_special_chars((string) $_sel);
$_sel = smarty_function_escape_special_chars((string)$_sel);
}
$selected[ $_sel ] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, '__toString')) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
$selected = smarty_function_escape_special_chars((string)$_val->__toString());
} else {
trigger_error('html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method',
E_USER_NOTICE
);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
$selected = smarty_function_escape_special_chars((string)$_val);
}
break;
case 'checkboxes':
trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
E_USER_WARNING);
$options = (array) $_val;
trigger_error(
'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
E_USER_WARNING
);
$options = (array)$_val;
break;
case 'assign':
break;
case 'strict':
break;
case 'disabled':
case 'readonly':
if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
E_USER_NOTICE);
trigger_error(
"html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
E_USER_NOTICE
);
}
if ($_val === true || $_val === $_key) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
}
break;
}
// omit break; to fall through!
// no break
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
@ -149,34 +151,49 @@ function smarty_function_html_checkboxes($params, Smarty_Internal_Template $temp
break;
}
}
if (!isset($options) && !isset($values)) {
return '';
} /* raise error here? */
$_html_result = array();
if (isset($options)) {
foreach ($options as $_key => $_val) {
$_html_result[] =
smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
$label_ids, $escape);
smarty_function_html_checkboxes_output(
$name,
$_key,
$_val,
$selected,
$extra,
$separator,
$labels,
$label_ids,
$escape
);
}
} else {
foreach ($values as $_i => $_key) {
$_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
$_html_result[] =
smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
$label_ids, $escape);
smarty_function_html_checkboxes_output(
$name,
$_key,
$_val,
$selected,
$extra,
$separator,
$labels,
$label_ids,
$escape
);
}
}
if (!empty($params[ 'assign' ])) {
$template->assign($params[ 'assign' ], $_html_result);
} else {
return implode("\n", $_html_result);
}
}
/**
* @param $name
* @param $value
@ -190,59 +207,69 @@ function smarty_function_html_checkboxes($params, Smarty_Internal_Template $temp
*
* @return string
*/
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels,
$label_ids, $escape = true)
{
function smarty_function_html_checkboxes_output(
$name,
$value,
$output,
$selected,
$extra,
$separator,
$labels,
$label_ids,
$escape = true
) {
$_output = '';
if (is_object($value)) {
if (method_exists($value, '__toString')) {
$value = (string) $value->__toString();
$value = (string)$value->__toString();
} else {
trigger_error('html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method',
E_USER_NOTICE
);
return '';
}
} else {
$value = (string) $value;
$value = (string)$value;
}
if (is_object($output)) {
if (method_exists($output, '__toString')) {
$output = (string) $output->__toString();
$output = (string)$output->__toString();
} else {
trigger_error('html_options: output is an object of class \'' . get_class($output) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: output is an object of class \'' . get_class($output) .
'\' without __toString() method',
E_USER_NOTICE
);
return '';
}
} else {
$output = (string) $output;
$output = (string)$output;
}
if ($labels) {
if ($label_ids) {
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_',
$name . '_' . $value));
$_id = smarty_function_escape_special_chars(
preg_replace(
'![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,
'_',
$name . '_' . $value
)
);
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
}
}
$name = smarty_function_escape_special_chars($name);
$value = smarty_function_escape_special_chars($value);
if ($escape) {
$output = smarty_function_escape_special_chars($output);
}
$_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
if ($labels && $label_ids) {
$_output .= ' id="' . $_id . '"';
}
if (is_array($selected)) {
if (isset($selected[ $value ])) {
$_output .= ' checked="checked"';
@ -250,13 +277,10 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
} elseif ($value === $selected) {
$_output .= ' checked="checked"';
}
$_output .= $extra . ' />' . $output;
if ($labels) {
$_output .= '</label>';
}
$_output .= $separator;
return $_output;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_image} function plugin
* Type: function
@ -22,7 +21,6 @@
* - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
* - path_prefix - prefix for path output (optional, default empty)
*
*
* @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
@ -38,9 +36,14 @@
*/
function smarty_function_html_image($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
)
)
);
$alt = '';
$file = '';
$height = '';
@ -60,53 +63,50 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
case 'basedir':
$$_key = $_val;
break;
case 'alt':
if (!is_array($_val)) {
$$_key = smarty_function_escape_special_chars($_val);
} else {
throw new SmartyException ("html_image: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
throw new SmartyException(
"html_image: extra attribute '{$_key}' cannot be an array",
E_USER_NOTICE
);
}
break;
case 'link':
case 'href':
$prefix = '<a href="' . $_val . '">';
$suffix = '</a>';
break;
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
throw new SmartyException ("html_image: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
throw new SmartyException(
"html_image: extra attribute '{$_key}' cannot be an array",
E_USER_NOTICE
);
}
break;
}
}
if (empty($file)) {
trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
return;
}
if ($file[ 0 ] === '/') {
$_image_path = $basedir . $file;
} else {
$_image_path = $file;
}
// strip file protocol
if (stripos($params[ 'file' ], 'file://') === 0) {
$params[ 'file' ] = substr($params[ 'file' ], 7);
}
$protocol = strpos($params[ 'file' ], '://');
if ($protocol !== false) {
$protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
}
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
@ -120,25 +120,20 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
}
}
}
if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) {
// FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
if (!$_image_data = @getimagesize($_image_path)) {
if (!file_exists($_image_path)) {
trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
return;
} elseif (!is_readable($_image_path)) {
trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
return;
} else {
trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
return;
}
}
if (!isset($params[ 'width' ])) {
$width = $_image_data[ 0 ];
}
@ -146,7 +141,6 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
$height = $_image_data[ 1 ];
}
}
if (isset($params[ 'dpi' ])) {
if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) {
// FIXME: (rodneyrehm) wrong dpi assumption
@ -159,7 +153,6 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
$width = round($width * $_resize);
$height = round($height * $_resize);
}
return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' .
$height . '"' . $extra . ' />' . $suffix;
}

@ -21,25 +21,29 @@
* - id (optional) - string default not set
* - class (optional) - string default not set
*
*
* @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
* @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
* @author Monte Ohrt <monte at ohrt dot com>
* @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
*
* @param array $params parameters
*
* @param \Smarty_Internal_Template $template
*
* @return string
* @uses smarty_function_escape_special_chars()
* @uses smarty_function_escape_special_chars()
* @throws \SmartyException
*/
function smarty_function_html_options($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
)
)
);
$name = null;
$values = null;
$options = null;
@ -47,74 +51,73 @@ function smarty_function_html_options($params, Smarty_Internal_Template $templat
$output = null;
$id = null;
$class = null;
$extra = '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'class':
case 'id':
$$_key = (string) $_val;
$$_key = (string)$_val;
break;
case 'options':
$options = (array) $_val;
$options = (array)$_val;
break;
case 'values':
case 'output':
$$_key = array_values((array) $_val);
$$_key = array_values((array)$_val);
break;
case 'selected':
if (is_array($_val)) {
$selected = array();
foreach ($_val as $_sel) {
if (is_object($_sel)) {
if (method_exists($_sel, '__toString')) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
$_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
} else {
trigger_error('html_options: selected attribute contains an object of class \'' .
get_class($_sel) . '\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: selected attribute contains an object of class \'' .
get_class($_sel) . '\' without __toString() method',
E_USER_NOTICE
);
continue;
}
} else {
$_sel = smarty_function_escape_special_chars((string) $_sel);
$_sel = smarty_function_escape_special_chars((string)$_sel);
}
$selected[ $_sel ] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, '__toString')) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
$selected = smarty_function_escape_special_chars((string)$_val->__toString());
} else {
trigger_error('html_options: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method',
E_USER_NOTICE
);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
$selected = smarty_function_escape_special_chars((string)$_val);
}
break;
case 'strict':
break;
case 'disabled':
case 'readonly':
if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
E_USER_NOTICE);
trigger_error(
"html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
E_USER_NOTICE
);
}
if ($_val === true || $_val === $_key) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
}
break;
}
// omit break; to fall through!
// no break
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
@ -124,16 +127,12 @@ function smarty_function_html_options($params, Smarty_Internal_Template $templat
break;
}
}
if (!isset($options) && !isset($values)) {
/* raise error here? */
return '';
}
$_html_result = '';
$_idx = 0;
if (isset($options)) {
foreach ($options as $_key => $_val) {
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
@ -144,7 +143,6 @@ function smarty_function_html_options($params, Smarty_Internal_Template $templat
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
}
}
if (!empty($name)) {
$_html_class = !empty($class) ? ' class="' . $class . '"' : '';
$_html_id = !empty($id) ? ' id="' . $id . '"' : '';
@ -152,9 +150,9 @@ function smarty_function_html_options($params, Smarty_Internal_Template $templat
'<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result .
'</select>' . "\n";
}
return $_html_result;
}
/**
* @param $key
* @param $value
@ -181,28 +179,36 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
$_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
if (is_object($value)) {
if (method_exists($value, '__toString')) {
$value = smarty_function_escape_special_chars((string) $value->__toString());
$value = smarty_function_escape_special_chars((string)$value->__toString());
} else {
trigger_error('html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method',
E_USER_NOTICE
);
return '';
}
} else {
$value = smarty_function_escape_special_chars((string) $value);
$value = smarty_function_escape_special_chars((string)$value);
}
$_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
$idx ++;
$idx++;
} else {
$_idx = 0;
$_html_result =
smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null,
$class, $_idx);
$idx ++;
smarty_function_html_options_optgroup(
$key,
$value,
$selected,
!empty($id) ? ($id . '-' . $idx) : null,
$class,
$_idx
);
$idx++;
}
return $_html_result;
}
/**
* @param $key
* @param $values
@ -220,6 +226,5 @@ function smarty_function_html_options_optgroup($key, $values, $selected, $id, $c
$optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
}
$optgroup_html .= "</optgroup>\n";
return $optgroup_html;
}

@ -29,7 +29,6 @@
* {html_radios values=$ids name='box' separator='<br>' output=$names}
* {html_radios values=$ids checked=$checked separator='<br>' output=$names}
*
*
* @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
* (Smarty online manual)
* @author Christopher Kvarme <christopher.kvarme@flashjab.com>
@ -45,9 +44,14 @@
*/
function smarty_function_html_radios($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
)
)
);
$name = 'radio';
$values = null;
$options = null;
@ -58,73 +62,69 @@ function smarty_function_html_radios($params, Smarty_Internal_Template $template
$label_ids = false;
$output = null;
$extra = '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'separator':
$$_key = (string) $_val;
$$_key = (string)$_val;
break;
case 'checked':
case 'selected':
if (is_array($_val)) {
trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
} elseif (is_object($_val)) {
if (method_exists($_val, '__toString')) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
$selected = smarty_function_escape_special_chars((string)$_val->__toString());
} else {
trigger_error('html_radios: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_radios: selected attribute is an object of class \'' . get_class($_val) .
'\' without __toString() method',
E_USER_NOTICE
);
}
} else {
$selected = (string) $_val;
$selected = (string)$_val;
}
break;
case 'escape':
case 'labels':
case 'label_ids':
$$_key = (bool) $_val;
$$_key = (bool)$_val;
break;
case 'options':
$$_key = (array) $_val;
$$_key = (array)$_val;
break;
case 'values':
case 'output':
$$_key = array_values((array) $_val);
$$_key = array_values((array)$_val);
break;
case 'radios':
trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
E_USER_WARNING);
$options = (array) $_val;
trigger_error(
'html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
E_USER_WARNING
);
$options = (array)$_val;
break;
case 'assign':
break;
case 'strict':
break;
case 'disabled':
case 'readonly':
if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
E_USER_NOTICE);
trigger_error(
"html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
E_USER_NOTICE
);
}
if ($_val === true || $_val === $_key) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
}
break;
}
// omit break; to fall through!
// no break
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
@ -134,36 +134,50 @@ function smarty_function_html_radios($params, Smarty_Internal_Template $template
break;
}
}
if (!isset($options) && !isset($values)) {
/* raise error here? */
return '';
}
$_html_result = array();
if (isset($options)) {
foreach ($options as $_key => $_val) {
$_html_result[] =
smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
$label_ids, $escape);
smarty_function_html_radios_output(
$name,
$_key,
$_val,
$selected,
$extra,
$separator,
$labels,
$label_ids,
$escape
);
}
} else {
foreach ($values as $_i => $_key) {
$_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
$_html_result[] =
smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
$label_ids, $escape);
smarty_function_html_radios_output(
$name,
$_key,
$_val,
$selected,
$extra,
$separator,
$labels,
$label_ids,
$escape
);
}
}
if (!empty($params[ 'assign' ])) {
$template->assign($params[ 'assign' ], $_html_result);
} else {
return implode("\n", $_html_result);
}
}
/**
* @param $name
* @param $value
@ -177,69 +191,76 @@ function smarty_function_html_radios($params, Smarty_Internal_Template $template
*
* @return string
*/
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids,
$escape)
{
function smarty_function_html_radios_output(
$name,
$value,
$output,
$selected,
$extra,
$separator,
$labels,
$label_ids,
$escape
) {
$_output = '';
if (is_object($value)) {
if (method_exists($value, '__toString')) {
$value = (string) $value->__toString();
$value = (string)$value->__toString();
} else {
trigger_error('html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: value is an object of class \'' . get_class($value) .
'\' without __toString() method',
E_USER_NOTICE
);
return '';
}
} else {
$value = (string) $value;
$value = (string)$value;
}
if (is_object($output)) {
if (method_exists($output, '__toString')) {
$output = (string) $output->__toString();
$output = (string)$output->__toString();
} else {
trigger_error('html_options: output is an object of class \'' . get_class($output) .
'\' without __toString() method', E_USER_NOTICE);
trigger_error(
'html_options: output is an object of class \'' . get_class($output) .
'\' without __toString() method',
E_USER_NOTICE
);
return '';
}
} else {
$output = (string) $output;
$output = (string)$output;
}
if ($labels) {
if ($label_ids) {
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_',
$name . '_' . $value));
$_id = smarty_function_escape_special_chars(
preg_replace(
'![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,
'_',
$name . '_' . $value
)
);
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
}
}
$name = smarty_function_escape_special_chars($name);
$value = smarty_function_escape_special_chars($value);
if ($escape) {
$output = smarty_function_escape_special_chars($output);
}
$_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
if ($labels && $label_ids) {
$_output .= ' id="' . $_id . '"';
}
if ($value === $selected) {
$_output .= ' checked="checked"';
}
$_output .= $extra . ' />' . $output;
if ($labels) {
$_output .= '</label>';
}
$_output .= $separator;
return $_output;
}

@ -28,13 +28,12 @@
* - 2.0 complete rewrite for performance,
* added attributes month_names, *_id
*
*
* @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
* @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
* (Smarty online manual)
* @version 2.0
* @author Andrei Zmievski
* @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm
* @version 2.0
* @author Andrei Zmievski
* @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm
*
* @param array $params parameters
*
@ -45,19 +44,24 @@
*/
function smarty_function_html_select_date($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
)
)
);
// generate timestamps used for month names only
static $_month_timestamps = null;
static $_current_year = null;
if ($_month_timestamps === null) {
$_current_year = date('Y');
$_month_timestamps = array();
for ($i = 1; $i <= 12; $i ++) {
for ($i = 1; $i <= 12; $i++) {
$_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000);
}
}
/* Default values. */
$prefix = 'Date_';
$start_year = null;
@ -106,17 +110,21 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
$day_id = null;
$month_id = null;
$year_id = null;
foreach ($params as $_key => $_value) {
switch ($_key) {
case 'time':
if (!is_array($_value) && $_value !== null) {
$template->_checkPlugins(array(array('function' => 'smarty_make_timestamp',
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_make_timestamp',
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'
)
)
);
$time = smarty_make_timestamp($_value);
}
break;
case 'month_names':
if (is_array($_value) && count($_value) === 12) {
$$_key = $_value;
@ -124,7 +132,6 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE);
}
break;
case 'prefix':
case 'field_array':
case 'start_year':
@ -151,17 +158,15 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
case 'month_id':
case 'day_id':
case 'year_id':
$$_key = (string) $_value;
$$_key = (string)$_value;
break;
case 'display_days':
case 'display_months':
case 'display_years':
case 'year_as_text':
case 'reverse_years':
$$_key = (bool) $_value;
$$_key = (bool)$_value;
break;
default:
if (!is_array($_value)) {
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
@ -171,15 +176,16 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
break;
}
}
// Note: date() is faster than strftime()
// Note: explode(date()) is faster than date() date() date()
if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
if (isset($params[ 'time' ][ $prefix . 'Year' ])) {
// $_REQUEST[$field_array] given
foreach (array('Y' => 'Year',
'm' => 'Month',
'd' => 'Day') as $_elementKey => $_elementName) {
foreach (array(
'Y' => 'Year',
'm' => 'Month',
'd' => 'Day'
) as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName =
isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
@ -187,9 +193,11 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
}
} elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Year' ])) {
// $_REQUEST given
foreach (array('Y' => 'Year',
'm' => 'Month',
'd' => 'Day') as $_elementKey => $_elementName) {
foreach (array(
'Y' => 'Year',
'm' => 'Month',
'd' => 'Day'
) as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
$params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
@ -207,31 +215,30 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
} else {
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time));
}
// make syntax "+N" or "-N" work with $start_year and $end_year
// Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
foreach (array('start',
'end') as $key) {
foreach (array(
'start',
'end'
) as $key) {
$key .= '_year';
$t = $$key;
if ($t === null) {
$$key = (int) $_current_year;
$$key = (int)$_current_year;
} elseif ($t[ 0 ] === '+') {
$$key = (int) ($_current_year + (int) trim(substr($t, 1)));
$$key = (int)($_current_year + (int)trim(substr($t, 1)));
} elseif ($t[ 0 ] === '-') {
$$key = (int) ($_current_year - (int) trim(substr($t, 1)));
$$key = (int)($_current_year - (int)trim(substr($t, 1)));
} else {
$$key = (int) $$key;
$$key = (int)$$key;
}
}
// flip for ascending or descending
if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
$t = $end_year;
$end_year = $start_year;
$start_year = $t;
}
// generate year <select> or <input>
if ($display_years) {
$_extra = '';
@ -242,7 +249,6 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
if ($year_extra) {
$_extra .= ' ' . $year_extra;
}
if ($year_as_text) {
$_html_years =
'<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra .
@ -250,31 +256,29 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
} else {
$_html_years = '<select name="' . $_name . '"';
if ($year_id !== null || $all_id !== null) {
$_html_years .= ' id="' . smarty_function_escape_special_chars($year_id !== null ?
($year_id ? $year_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)) . '"';
$_html_years .= ' id="' . smarty_function_escape_special_chars(
$year_id !== null ?
($year_id ? $year_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)
) . '"';
}
if ($year_size) {
$_html_years .= ' size="' . $year_size . '"';
}
$_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($year_empty) || isset($all_empty)) {
$_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' .
$option_separator;
}
$op = $start_year > $end_year ? - 1 : 1;
$op = $start_year > $end_year ? -1 : 1;
for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
$_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i .
'</option>' . $option_separator;
}
$_html_years .= '</select>';
}
}
// generate month <select> or <input>
if ($display_months) {
$_extra = '';
@ -285,25 +289,24 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
if ($month_extra) {
$_extra .= ' ' . $month_extra;
}
$_html_months = '<select name="' . $_name . '"';
if ($month_id !== null || $all_id !== null) {
$_html_months .= ' id="' . smarty_function_escape_special_chars($month_id !== null ?
($month_id ? $month_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)) . '"';
$_html_months .= ' id="' . smarty_function_escape_special_chars(
$month_id !== null ?
($month_id ? $month_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)
) . '"';
}
if ($month_size) {
$_html_months .= ' size="' . $month_size . '"';
}
$_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($month_empty) || isset($all_empty)) {
$_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' .
$option_separator;
}
for ($i = 1; $i <= 12; $i ++) {
for ($i = 1; $i <= 12; $i++) {
$_val = sprintf('%02d', $i);
$_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) :
($month_format === '%m' ? $_val : strftime($month_format, $_month_timestamps[ $i ]));
@ -311,10 +314,8 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
$_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') .
'>' . $_text . '</option>' . $option_separator;
}
$_html_months .= '</select>';
}
// generate day <select> or <input>
if ($display_days) {
$_extra = '';
@ -325,37 +326,34 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
if ($day_extra) {
$_extra .= ' ' . $day_extra;
}
$_html_days = '<select name="' . $_name . '"';
if ($day_id !== null || $all_id !== null) {
$_html_days .= ' id="' .
smarty_function_escape_special_chars($day_id !== null ? ($day_id ? $day_id : $_name) :
($all_id ? ($all_id . $_name) : $_name)) . '"';
smarty_function_escape_special_chars(
$day_id !== null ? ($day_id ? $day_id : $_name) :
($all_id ? ($all_id . $_name) : $_name)
) . '"';
}
if ($day_size) {
$_html_days .= ' size="' . $day_size . '"';
}
$_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($day_empty) || isset($all_empty)) {
$_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' .
$option_separator;
}
for ($i = 1; $i <= 31; $i ++) {
for ($i = 1; $i <= 31; $i++) {
$_val = sprintf('%02d', $i);
$_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i);
$_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i);
$_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' .
$_text . '</option>' . $option_separator;
}
$_html_days .= '</select>';
}
// order the fields for output
$_html = '';
for ($i = 0; $i <= 2; $i ++) {
for ($i = 0; $i <= 2; $i++) {
switch ($field_order[ $i ]) {
case 'Y':
case 'y':
@ -366,7 +364,6 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
$_html .= $_html_years;
}
break;
case 'm':
case 'M':
if (isset($_html_months)) {
@ -376,7 +373,6 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
$_html .= $_html_months;
}
break;
case 'd':
case 'D':
if (isset($_html_days)) {
@ -388,6 +384,5 @@ function smarty_function_html_select_date($params, Smarty_Internal_Template $tem
break;
}
}
return $_html;
}

@ -11,130 +11,124 @@
* Name: html_select_time
* Purpose: Prints the dropdowns for time selection
*
* @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
* @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
* (Smarty online manual)
* @author Roberto Berto <roberto@berto.net>
* @author Monte Ohrt <monte AT ohrt DOT com>
* @author Roberto Berto <roberto@berto.net>
* @author Monte Ohrt <monte AT ohrt DOT com>
*
* @param array $params parameters
*
* @param \Smarty_Internal_Template $template
*
* @return string
* @uses smarty_make_timestamp()
* @uses smarty_make_timestamp()
* @throws \SmartyException
*/
function smarty_function_html_select_time($params, Smarty_Internal_Template $template)
{
$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_function_escape_special_chars',
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
)
)
);
$prefix = 'Time_';
$field_array = null;
$field_separator = "\n";
$option_separator = "\n";
$time = null;
$display_hours = true;
$display_minutes = true;
$display_seconds = true;
$display_meridian = true;
$hour_format = '%02d';
$hour_value_format = '%02d';
$minute_format = '%02d';
$minute_value_format = '%02d';
$second_format = '%02d';
$second_value_format = '%02d';
$hour_size = null;
$minute_size = null;
$second_size = null;
$meridian_size = null;
$all_empty = null;
$hour_empty = null;
$minute_empty = null;
$second_empty = null;
$meridian_empty = null;
$all_id = null;
$hour_id = null;
$minute_id = null;
$second_id = null;
$meridian_id = null;
$use_24_hours = true;
$minute_interval = 1;
$second_interval = 1;
$extra_attrs = '';
$all_extra = null;
$hour_extra = null;
$minute_extra = null;
$second_extra = null;
$meridian_extra = null;
foreach ($params as $_key => $_value) {
switch ($_key) {
case 'time':
if (!is_array($_value) && $_value !== null) {
$template->_checkPlugins(array(array('function' => 'smarty_make_timestamp',
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php')));
$template->_checkPlugins(
array(
array(
'function' => 'smarty_make_timestamp',
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'
)
)
);
$time = smarty_make_timestamp($_value);
}
break;
case 'prefix':
case 'field_array':
case 'field_separator':
case 'option_separator':
case 'all_extra':
case 'hour_extra':
case 'minute_extra':
case 'second_extra':
case 'meridian_extra':
case 'all_empty':
case 'hour_empty':
case 'minute_empty':
case 'second_empty':
case 'meridian_empty':
case 'all_id':
case 'hour_id':
case 'minute_id':
case 'second_id':
case 'meridian_id':
case 'hour_format':
case 'hour_value_format':
case 'minute_format':
case 'minute_value_format':
case 'second_format':
case 'second_value_format':
$$_key = (string) $_value;
$$_key = (string)$_value;
break;
case 'display_hours':
case 'display_minutes':
case 'display_seconds':
case 'display_meridian':
case 'use_24_hours':
$$_key = (bool) $_value;
$$_key = (bool)$_value;
break;
case 'minute_interval':
case 'second_interval':
case 'hour_size':
case 'minute_size':
case 'second_size':
case 'meridian_size':
$$_key = (int) $_value;
$$_key = (int)$_value;
break;
default:
if (!is_array($_value)) {
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
@ -144,13 +138,14 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
break;
}
}
if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
if (isset($params[ 'time' ][ $prefix . 'Hour' ])) {
// $_REQUEST[$field_array] given
foreach (array('H' => 'Hour',
'i' => 'Minute',
's' => 'Second') as $_elementKey => $_elementName) {
foreach (array(
'H' => 'Hour',
'i' => 'Minute',
's' => 'Second'
) as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName =
isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
@ -163,9 +158,11 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
} elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) {
// $_REQUEST given
foreach (array('H' => 'Hour',
'i' => 'Minute',
's' => 'Second') as $_elementKey => $_elementName) {
foreach (array(
'H' => 'Hour',
'i' => 'Minute',
's' => 'Second'
) as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
$params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
@ -187,7 +184,6 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
} else {
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
}
// generate hour <select>
if ($display_hours) {
$_html_hours = '';
@ -199,42 +195,37 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
if ($hour_extra) {
$_extra .= ' ' . $hour_extra;
}
$_html_hours = '<select name="' . $_name . '"';
if ($hour_id !== null || $all_id !== null) {
$_html_hours .= ' id="' .
smarty_function_escape_special_chars($hour_id !== null ? ($hour_id ? $hour_id : $_name) :
($all_id ? ($all_id . $_name) : $_name)) . '"';
smarty_function_escape_special_chars(
$hour_id !== null ? ($hour_id ? $hour_id : $_name) :
($all_id ? ($all_id . $_name) : $_name)
) . '"';
}
if ($hour_size) {
$_html_hours .= ' size="' . $hour_size . '"';
}
$_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($hour_empty) || isset($all_empty)) {
$_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' .
$option_separator;
}
$start = $use_24_hours ? 0 : 1;
$end = $use_24_hours ? 23 : 12;
for ($i = $start; $i <= $end; $i ++) {
for ($i = $start; $i <= $end; $i++) {
$_val = sprintf('%02d', $i);
$_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i);
$_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i);
if (!$use_24_hours) {
$_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
}
$selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
$_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' .
$_text . '</option>' . $option_separator;
}
$_html_hours .= '</select>';
}
// generate minute <select>
if ($display_minutes) {
$_html_minutes = '';
@ -246,24 +237,23 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
if ($minute_extra) {
$_extra .= ' ' . $minute_extra;
}
$_html_minutes = '<select name="' . $_name . '"';
if ($minute_id !== null || $all_id !== null) {
$_html_minutes .= ' id="' . smarty_function_escape_special_chars($minute_id !== null ?
($minute_id ? $minute_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)) . '"';
$_html_minutes .= ' id="' . smarty_function_escape_special_chars(
$minute_id !== null ?
($minute_id ? $minute_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)
) . '"';
}
if ($minute_size) {
$_html_minutes .= ' size="' . $minute_size . '"';
}
$_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($minute_empty) || isset($all_empty)) {
$_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' .
$option_separator;
}
$selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
for ($i = 0; $i <= 59; $i += $minute_interval) {
$_val = sprintf('%02d', $i);
@ -272,10 +262,8 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
$_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
'>' . $_text . '</option>' . $option_separator;
}
$_html_minutes .= '</select>';
}
// generate second <select>
if ($display_seconds) {
$_html_seconds = '';
@ -287,24 +275,23 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
if ($second_extra) {
$_extra .= ' ' . $second_extra;
}
$_html_seconds = '<select name="' . $_name . '"';
if ($second_id !== null || $all_id !== null) {
$_html_seconds .= ' id="' . smarty_function_escape_special_chars($second_id !== null ?
($second_id ? $second_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)) . '"';
$_html_seconds .= ' id="' . smarty_function_escape_special_chars(
$second_id !== null ?
($second_id ? $second_id : $_name) :
($all_id ? ($all_id . $_name) :
$_name)
) . '"';
}
if ($second_size) {
$_html_seconds .= ' size="' . $second_size . '"';
}
$_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($second_empty) || isset($all_empty)) {
$_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' .
$option_separator;
}
$selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
for ($i = 0; $i <= 59; $i += $second_interval) {
$_val = sprintf('%02d', $i);
@ -313,10 +300,8 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
$_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
'>' . $_text . '</option>' . $option_separator;
}
$_html_seconds .= '</select>';
}
// generate meridian <select>
if ($display_meridian && !$use_24_hours) {
$_html_meridian = '';
@ -328,36 +313,36 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
if ($meridian_extra) {
$_extra .= ' ' . $meridian_extra;
}
$_html_meridian = '<select name="' . $_name . '"';
if ($meridian_id !== null || $all_id !== null) {
$_html_meridian .= ' id="' . smarty_function_escape_special_chars($meridian_id !== null ?
($meridian_id ? $meridian_id :
$_name) :
($all_id ? ($all_id . $_name) :
$_name)) . '"';
$_html_meridian .= ' id="' . smarty_function_escape_special_chars(
$meridian_id !== null ?
($meridian_id ? $meridian_id :
$_name) :
($all_id ? ($all_id . $_name) :
$_name)
) . '"';
}
if ($meridian_size) {
$_html_meridian .= ' size="' . $meridian_size . '"';
}
$_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($meridian_empty) || isset($all_empty)) {
$_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
'</option>' . $option_separator;
}
$_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') .
'>AM</option>' . $option_separator . '<option value="pm"' .
($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator .
'</select>';
}
$_html = '';
foreach (array('_html_hours',
'_html_minutes',
'_html_seconds',
'_html_meridian') as $k) {
foreach (array(
'_html_hours',
'_html_minutes',
'_html_seconds',
'_html_meridian'
) as $k) {
if (isset($$k)) {
if ($_html) {
$_html .= $field_separator;
@ -365,6 +350,5 @@ function smarty_function_html_select_time($params, Smarty_Internal_Template $tem
$_html .= $$k;
}
}
return $_html;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_table} function plugin
* Type: function
@ -35,12 +34,11 @@
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
* {table loop=$data cols="first,second,third" tr_attr=$colors}
*
*
* @author Monte Ohrt <monte at ohrt dot com>
* @author credit to Messju Mohr <messju at lammfellpuschen dot de>
* @author credit to boots <boots dot smarty at yahoo dot com>
* @version 1.1
* @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
* @author Monte Ohrt <monte at ohrt dot com>
* @author credit to Messju Mohr <messju at lammfellpuschen dot de>
* @author credit to boots <boots dot smarty at yahoo dot com>
* @version 1.1
* @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
* (Smarty online manual)
*
* @param array $params parameters
@ -61,19 +59,15 @@ function smarty_function_html_table($params)
$inner = 'cols';
$caption = '';
$loop = null;
if (!isset($params[ 'loop' ])) {
trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
return;
}
foreach ($params as $_key => $_value) {
switch ($_key) {
case 'loop':
$$_key = (array) $_value;
$$_key = (array)$_value;
break;
case 'cols':
if (is_array($_value) && !empty($_value)) {
$cols = $_value;
@ -82,25 +76,22 @@ function smarty_function_html_table($params)
$cols = explode(',', $_value);
$cols_count = count($cols);
} elseif (!empty($_value)) {
$cols_count = (int) $_value;
$cols_count = (int)$_value;
} else {
$cols_count = $cols;
}
break;
case 'rows':
$$_key = (int) $_value;
$$_key = (int)$_value;
break;
case 'table_attr':
case 'trailpad':
case 'hdir':
case 'vdir':
case 'inner':
case 'caption':
$$_key = (string) $_value;
$$_key = (string)$_value;
break;
case 'tr_attr':
case 'td_attr':
case 'th_attr':
@ -108,7 +99,6 @@ function smarty_function_html_table($params)
break;
}
}
$loop_count = count($loop);
if (empty($params[ 'rows' ])) {
/* no rows specified */
@ -119,37 +109,30 @@ function smarty_function_html_table($params)
$cols_count = ceil($loop_count / $rows);
}
}
$output = "<table $table_attr>\n";
if (!empty($caption)) {
$output .= '<caption>' . $caption . "</caption>\n";
}
if (is_array($cols)) {
$cols = ($hdir === 'right') ? $cols : array_reverse($cols);
$output .= "<thead><tr>\n";
for ($r = 0; $r < $cols_count; $r ++) {
for ($r = 0; $r < $cols_count; $r++) {
$output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
$output .= $cols[ $r ];
$output .= "</th>\n";
}
$output .= "</tr></thead>\n";
}
$output .= "<tbody>\n";
for ($r = 0; $r < $rows; $r ++) {
for ($r = 0; $r < $rows; $r++) {
$output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
$rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
for ($c = 0; $c < $cols_count; $c ++) {
for ($c = 0; $c < $cols_count; $c++) {
$x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
if ($inner !== 'cols') {
/* shuffle x to loop over rows*/
$x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
}
if ($x < $loop_count) {
$output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[ $x ] . "</td>\n";
} else {
@ -160,9 +143,9 @@ function smarty_function_html_table($params)
}
$output .= "</tbody>\n";
$output .= "</table>\n";
return $output;
}
/**
* @param $name
* @param $var
@ -177,6 +160,5 @@ function smarty_function_html_table_cycle($name, $var, $no)
} else {
$ret = $var[ $no % count($var) ];
}
return ($ret) ? ' ' . $ret : '';
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {mailto} function plugin
* Type: function
@ -37,12 +36,11 @@
* {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
* {mailto address="me@domain.com" extra='class="mailto"'}
*
*
* @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
* @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
* (Smarty online manual)
* @version 1.2
* @author Monte Ohrt <monte at ohrt dot com>
* @author credits to Jason Sweat (added cc, bcc and subject functionality)
* @version 1.2
* @author Monte Ohrt <monte at ohrt dot com>
* @author credits to Jason Sweat (added cc, bcc and subject functionality)
*
* @param array $params parameters
*
@ -53,15 +51,12 @@ function smarty_function_mailto($params)
static $_allowed_encoding =
array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
$extra = '';
if (empty($params[ 'address' ])) {
trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
return;
} else {
$address = $params[ 'address' ];
}
$text = $address;
// netscape and mozilla do not decode %40 (@) in BCC field (bug?)
// so, don't encode it.
@ -77,61 +72,52 @@ function smarty_function_mailto($params)
$mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
}
break;
case 'subject':
case 'newsgroups':
$mail_parms[] = $var . '=' . rawurlencode($value);
break;
case 'extra':
case 'text':
$$var = $value;
// no break
default:
}
}
if ($mail_parms) {
$address .= '?' . join('&', $mail_parms);
}
$encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ];
if (!isset($_allowed_encoding[ $encode ])) {
trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
E_USER_WARNING);
trigger_error(
"mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
E_USER_WARNING
);
return;
}
// FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
if ($encode === 'javascript') {
$string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
$js_encode = '';
for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) {
for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
$js_encode .= '%' . bin2hex($string[ $x ]);
}
return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
} elseif ($encode === 'javascript_charcode') {
$string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
for ($x = 0, $y = strlen($string); $x < $y; $x++) {
$ord[] = ord($string[ $x ]);
}
$_ret = "<script type=\"text/javascript\" language=\"javascript\">\n" . "{document.write(String.fromCharCode(" .
implode(',', $ord) . "))" . "}\n" . "</script>\n";
return $_ret;
} elseif ($encode === 'hex') {
preg_match('!^(.*)(\?.*)$!', $address, $match);
if (!empty($match[ 2 ])) {
trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
return;
}
$address_encode = '';
for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) {
for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) {
$address_encode .= '%' . bin2hex($address[ $x ]);
} else {
@ -139,12 +125,10 @@ function smarty_function_mailto($params)
}
}
$text_encode = '';
for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) {
for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
$text_encode .= '&#x' . bin2hex($text[ $x ]) . ';';
}
$mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
} else {
// no encoding

@ -6,16 +6,15 @@
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {math} function plugin
* Type: function
* Name: math
* Purpose: handle math computations in template
*
* @link http://www.smarty.net/manual/en/language.function.math.php {math}
* @link http://www.smarty.net/manual/en/language.function.math.php {math}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author Monte Ohrt <monte at ohrt dot com>
*
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
@ -25,66 +24,71 @@
function smarty_function_math($params, $template)
{
static $_allowed_funcs =
array('int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true, 'rand' => true,
'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true);
array(
'int' => true,
'abs' => true,
'ceil' => true,
'cos' => true,
'exp' => true,
'floor' => true,
'log' => true,
'log10' => true,
'max' => true,
'min' => true,
'pi' => true,
'pow' => true,
'rand' => true,
'round' => true,
'sin' => true,
'sqrt' => true,
'srand' => true,
'tan' => true
);
// be sure equation parameter is present
if (empty($params[ 'equation' ])) {
trigger_error("math: missing equation parameter", E_USER_WARNING);
return;
}
$equation = $params[ 'equation' ];
// make sure parenthesis are balanced
if (substr_count($equation, '(') !== substr_count($equation, ')')) {
trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
return;
}
// disallow backticks
if (strpos($equation, '`') !== false) {
trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
return;
}
// also disallow dollar signs
if (strpos($equation, '$') !== false) {
trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
return;
}
foreach ($params as $key => $val) {
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
// make sure value is not empty
if (strlen($val) === 0) {
trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
return;
}
if (!is_numeric($val)) {
trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
return;
}
}
}
// match all vars in equation, make sure all are passed
preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
foreach ($match[ 1 ] as $curr_var) {
if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) {
trigger_error("math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", E_USER_WARNING);
trigger_error(
"math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'",
E_USER_WARNING
);
return;
}
}
foreach ($params as $key => $val) {
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
@ -92,7 +96,6 @@ function smarty_function_math($params, $template)
}
$smarty_math_result = null;
eval("\$smarty_math_result = " . $equation . ";");
if (empty($params[ 'format' ])) {
if (empty($params[ 'assign' ])) {
return $smarty_math_result;

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty capitalize modifier plugin
* Type: modifier
@ -29,50 +28,75 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
$upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
} else {
// uppercase word breaks
$upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
'smarty_mod_cap_mbconvert_cb', $string);
$upper_string = preg_replace_callback(
"!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
'smarty_mod_cap_mbconvert_cb',
$string
);
}
// check uc_digits case
if (!$uc_digits) {
if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches,
PREG_OFFSET_CAPTURE)) {
if (preg_match_all(
"!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER,
$string,
$matches,
PREG_OFFSET_CAPTURE
)
) {
foreach ($matches[ 1 ] as $match) {
$upper_string =
substr_replace($upper_string, mb_strtolower($match[ 0 ], Smarty::$_CHARSET), $match[ 1 ],
strlen($match[ 0 ]));
substr_replace(
$upper_string,
mb_strtolower($match[ 0 ], Smarty::$_CHARSET),
$match[ 1 ],
strlen($match[ 0 ])
);
}
}
}
$upper_string =
preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb',
$upper_string);
preg_replace_callback(
"!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER,
'smarty_mod_cap_mbconvert2_cb',
$upper_string
);
return $upper_string;
}
// lowercase first
if ($lc_rest) {
$string = strtolower($string);
}
// uppercase (including hyphenated words)
$upper_string =
preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb',
$string);
preg_replace_callback(
"!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
'smarty_mod_cap_ucfirst_cb',
$string
);
// check uc_digits case
if (!$uc_digits) {
if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches,
PREG_OFFSET_CAPTURE)) {
if (preg_match_all(
"!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER,
$string,
$matches,
PREG_OFFSET_CAPTURE
)
) {
foreach ($matches[ 1 ] as $match) {
$upper_string =
substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ]));
}
}
}
$upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb',
$upper_string);
$upper_string = preg_replace_callback(
"!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER,
'smarty_mod_cap_ucfirst2_cb',
$upper_string
);
return $upper_string;
}
/*
/**
*
* Bug: create_function() use exhausts memory when used in long loops
* Fix: use declared functions for callbacks instead of using create_function()
@ -89,6 +113,7 @@ function smarty_mod_cap_mbconvert_cb($matches)
{
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
}
/**
* @param $matches
*
@ -98,6 +123,7 @@ function smarty_mod_cap_mbconvert2_cb($matches)
{
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
}
/**
* @param $matches
*
@ -107,6 +133,7 @@ function smarty_mod_cap_ucfirst_cb($matches)
{
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ]));
}
/**
* @param $matches
*

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty date_format modifier plugin
* Type: modifier
@ -38,7 +37,7 @@ function smarty_modifier_date_format($string, $format = null, $default_date = ''
static $is_loaded = false;
if (!$is_loaded) {
if (!is_callable('smarty_make_timestamp')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php';
}
$is_loaded = true;
}
@ -51,20 +50,24 @@ function smarty_modifier_date_format($string, $format = null, $default_date = ''
}
if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
if (Smarty::$_IS_WINDOWS) {
$_win_from = array('%D',
'%h',
'%n',
'%r',
'%R',
'%t',
'%T');
$_win_to = array('%m/%d/%y',
'%b',
"\n",
'%I:%M:%S %p',
'%H:%M',
"\t",
'%H:%M:%S');
$_win_from = array(
'%D',
'%h',
'%n',
'%r',
'%R',
'%t',
'%T'
);
$_win_to = array(
'%m/%d/%y',
'%b',
"\n",
'%I:%M:%S %p',
'%H:%M',
"\t",
'%H:%M:%S'
);
if (strpos($format, '%e') !== false) {
$_win_from[] = '%e';
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
@ -75,7 +78,6 @@ function smarty_modifier_date_format($string, $format = null, $default_date = ''
}
$format = str_replace($_win_from, $_win_to, $format);
}
return strftime($format, $timestamp);
} else {
return date($format, $timestamp);

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage Debug
*/
/**
* Smarty debug_print_var modifier plugin
* Type: modifier
@ -26,7 +25,7 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
{
$_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
switch (gettype($var)) {
case 'array' :
case 'array':
$results = '<b>Array (' . count($var) . ')</b>';
if ($depth === $max) {
break;
@ -34,12 +33,11 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
foreach ($var as $curr_key => $curr_val) {
$results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b>' . strtr($curr_key, $_replace) .
'</b> =&gt; ' .
smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
$depth --;
smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
$depth--;
}
break;
case 'object' :
case 'object':
$object_vars = get_object_vars($var);
$results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
if (in_array($var, $objects)) {
@ -52,14 +50,13 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
$objects[] = $var;
foreach ($object_vars as $curr_key => $curr_val) {
$results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b> -&gt;' . strtr($curr_key, $_replace) .
'</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
$depth --;
'</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
$depth--;
}
break;
case 'boolean' :
case 'NULL' :
case 'resource' :
case 'boolean':
case 'NULL':
case 'resource':
if (true === $var) {
$results = 'true';
} elseif (false === $var) {
@ -67,17 +64,15 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
} elseif (null === $var) {
$results = 'null';
} else {
$results = htmlspecialchars((string) $var);
$results = htmlspecialchars((string)$var);
}
$results = '<i>' . $results . '</i>';
break;
case 'integer' :
case 'float' :
$results = htmlspecialchars((string) $var);
case 'integer':
case 'float':
$results = htmlspecialchars((string)$var);
break;
case 'string' :
case 'string':
$results = strtr($var, $_replace);
if (Smarty::$_MBSTRING) {
if (mb_strlen($var, Smarty::$_CHARSET) > $length) {
@ -88,13 +83,11 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
$results = substr($var, 0, $length - 3) . '...';
}
}
$results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET);
break;
case 'unknown type' :
default :
$results = strtr((string) $var, $_replace);
case 'unknown type':
default:
$results = strtr((string)$var, $_replace);
if (Smarty::$_MBSTRING) {
if (mb_strlen($results, Smarty::$_CHARSET) > $length) {
$results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...';
@ -104,9 +97,7 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
$results = substr($results, 0, $length - 3) . '...';
}
}
$results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET);
}
return $results;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty escape modifier plugin
* Type: modifier
@ -30,11 +29,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
if ($_double_encode === null) {
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
}
if (!$char_set) {
$char_set = Smarty::$_CHARSET;
}
switch ($esc_type) {
case 'html':
if ($_double_encode) {
@ -48,14 +45,21 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// php <5.2.3 - prevent double encoding
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'), array('&',
';'), $string);
$string = str_replace(
array(
'%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'
),
array(
'&',
';'
),
$string
);
return $string;
}
}
// no break
case 'htmlall':
if (Smarty::$_MBSTRING) {
// mb_convert_encoding ignores htmlspecialchars()
@ -71,18 +75,23 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
$string =
str_replace(array('%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'), array('&',
';'), $string);
str_replace(
array(
'%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'
),
array(
'&',
';'
),
$string
);
return $string;
}
}
// htmlentities() won't convert everything, so use mb_convert_encoding
return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set);
}
// no MBString fallback
if ($_double_encode) {
return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
@ -92,41 +101,43 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
} else {
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlentities($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'), array('&',
';'), $string);
$string = str_replace(
array(
'%%%SMARTY_START%%%',
'%%%SMARTY_END%%%'
),
array(
'&',
';'
),
$string
);
return $string;
}
}
// no break
case 'url':
return rawurlencode($string);
case 'urlpathinfo':
return str_replace('%2F', '/', rawurlencode($string));
case 'quotes':
// escape unescaped single quotes
return preg_replace("%(?<!\\\\)'%", "\\'", $string);
case 'hex':
// escape every byte into hex
// Note that the UTF-8 encoded character ä will be represented as %c3%a4
$return = '';
$_length = strlen($string);
for ($x = 0; $x < $_length; $x ++) {
for ($x = 0; $x < $_length; $x++) {
$return .= '%' . bin2hex($string[ $x ]);
}
return $return;
case 'hexentity':
$return = '';
if (Smarty::$_MBSTRING) {
if (!$is_loaded_1) {
if (!is_callable('smarty_mb_to_unicode')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php';
}
$is_loaded_1 = true;
}
@ -134,23 +145,20 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#x' . strtoupper(dechex($unicode)) . ';';
}
return $return;
}
// no MBString fallback
$_length = strlen($string);
for ($x = 0; $x < $_length; $x ++) {
for ($x = 0; $x < $_length; $x++) {
$return .= '&#x' . bin2hex($string[ $x ]) . ';';
}
return $return;
case 'decentity':
$return = '';
if (Smarty::$_MBSTRING) {
if (!$is_loaded_1) {
if (!is_callable('smarty_mb_to_unicode')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php';
}
$is_loaded_1 = true;
}
@ -158,50 +166,66 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#' . $unicode . ';';
}
return $return;
}
// no MBString fallback
$_length = strlen($string);
for ($x = 0; $x < $_length; $x ++) {
for ($x = 0; $x < $_length; $x++) {
$return .= '&#' . ord($string[ $x ]) . ';';
}
return $return;
case 'javascript':
// escape quotes and backslashes, newlines, etc.
return strtr($string, array('\\' => '\\\\',
"'" => "\\'",
'"' => '\\"',
"\r" => '\\r',
"\n" => '\\n',
'</' => '<\/'));
return strtr(
$string,
array(
'\\' => '\\\\',
"'" => "\\'",
'"' => '\\"',
"\r" => '\\r',
"\n" => '\\n',
'</' => '<\/'
)
);
case 'mail':
if (Smarty::$_MBSTRING) {
if (!$is_loaded_2) {
if (!is_callable('smarty_mb_str_replace')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php';
}
$is_loaded_2 = true;
}
return smarty_mb_str_replace(array('@',
'.'), array(' [AT] ',
' [DOT] '), $string);
return smarty_mb_str_replace(
array(
'@',
'.'
),
array(
' [AT] ',
' [DOT] '
),
$string
);
}
// no MBString fallback
return str_replace(array('@',
'.'), array(' [AT] ',
' [DOT] '), $string);
return str_replace(
array(
'@',
'.'
),
array(
' [AT] ',
' [DOT] '
),
$string
);
case 'nonstd':
// escape non-standard chars, such as ms document quotes
$return = '';
if (Smarty::$_MBSTRING) {
if (!$is_loaded_1) {
if (!is_callable('smarty_mb_to_unicode')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php';
}
$is_loaded_1 = true;
}
@ -212,12 +236,10 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$return .= chr($unicode);
}
}
return $return;
}
$_length = strlen($string);
for ($_i = 0; $_i < $_length; $_i ++) {
for ($_i = 0; $_i < $_length; $_i++) {
$_ord = ord(substr($string, $_i, 1));
// non-standard char, escape it
if ($_ord >= 126) {
@ -226,9 +248,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$return .= substr($string, $_i, 1);
}
}
return $return;
default:
return $string;
}

@ -11,13 +11,12 @@
* Name: mb_wordwrap
* Purpose: Wrap a string to a given number of characters
*
* @link http://php.net/manual/en/function.wordwrap.php for similarity
*
* @param string $str the string to wrap
* @param int $width the width of the output
* @param string $break the character used to break the line
* @param boolean $cut ignored parameter, just for the sake of
* @param string $str the string to wrap
* @param int $width the width of the output
* @param string $break the character used to break the line
* @param boolean $cut ignored parameter, just for the sake of
*
* @return string wrapped string
* @author Rodney Rehm
@ -30,30 +29,28 @@ function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = fa
$t = '';
$_previous = false;
$_space = false;
foreach ($tokens as $_token) {
$token_length = mb_strlen($_token, Smarty::$_CHARSET);
$_tokens = array($_token);
if ($token_length > $width) {
if ($cut) {
$_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER,
$_token,
-1,
PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
$_tokens = preg_split(
'!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER,
$_token,
-1,
PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE
);
}
}
foreach ($_tokens as $token) {
$_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
$token_length = mb_strlen($token, Smarty::$_CHARSET);
$length += $token_length;
if ($length > $width) {
// remove space before inserted break
if ($_previous) {
$t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
}
if (!$_space) {
// add the break before the token
if (!empty($t)) {
@ -61,7 +58,7 @@ function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = fa
}
$length = $token_length;
}
} else if ($token === "\n") {
} elseif ($token === "\n") {
// hard break must reset counters
$length = 0;
}
@ -70,6 +67,5 @@ function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = fa
$t .= $token;
}
}
return $t;
}

@ -5,16 +5,15 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty regex_replace modifier plugin
* Type: modifier
* Name: regex_replace
* Purpose: regular expression search/replace
*
* @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
* @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
* regex_replace (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string input string
* @param string|array $search regular expression(s) to search for
@ -23,7 +22,7 @@
*
* @return string
*/
function smarty_modifier_regex_replace($string, $search, $replace, $limit = - 1)
function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1)
{
if (is_array($search)) {
foreach ($search as $idx => $s) {
@ -32,7 +31,6 @@ function smarty_modifier_regex_replace($string, $search, $replace, $limit = - 1)
} else {
$search = _smarty_regex_replace_check($search);
}
return preg_replace($search, $replace, $string, $limit);
}
@ -51,8 +49,7 @@ function _smarty_regex_replace_check($search)
}
// remove eval-modifier from $search
if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) {
$search = substr($search, 0, - strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]);
$search = substr($search, 0, -strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]);
}
return $search;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty replace modifier plugin
* Type: modifier
@ -28,12 +27,11 @@ function smarty_modifier_replace($string, $search, $replace)
if (Smarty::$_MBSTRING) {
if (!$is_loaded) {
if (!is_callable('smarty_mb_str_replace')) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php';
}
$is_loaded = true;
}
return smarty_mb_str_replace($search, $replace, $string);
return smarty_mb_str_replace($search, $replace, $string);
}
return str_replace($search, $replace, $string);
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty spacify modifier plugin
* Type: modifier
@ -23,5 +22,5 @@
function smarty_modifier_spacify($string, $spacify_char = ' ')
{
// well… what about charsets besides latin and UTF-8?
return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, - 1, PREG_SPLIT_NO_EMPTY));
return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY));
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty truncate modifier plugin
* Type: modifier
@ -30,25 +29,24 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_wo
if ($length === 0) {
return '';
}
if (Smarty::$_MBSTRING) {
if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
$length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '',
mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
$string = preg_replace(
'/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER,
'',
mb_substr($string, 0, $length + 1, Smarty::$_CHARSET)
);
}
if (!$middle) {
return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
}
return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc .
mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
mb_substr($string, -$length / 2, $length, Smarty::$_CHARSET);
}
return $string;
}
// no MBString fallback
if (isset($string[ $length ])) {
$length -= min($length, strlen($etc));
@ -58,9 +56,7 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_wo
if (!$middle) {
return substr($string, 0, $length) . $etc;
}
return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
return substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2);
}
return $string;
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty cat modifier plugin
* Type: modifier
@ -15,9 +14,9 @@
* Input: string to catenate
* Example: {$var|cat:"foo"}
*
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
* (Smarty online manual)
* @author Uwe Tews
* @author Uwe Tews
*
* @param array $params parameters
*

@ -5,14 +5,14 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty count_characters modifier plugin
* Type: modifier
* Name: count_characters
* Purpose: count the number of characters in a text
*
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online
* manual)
* @author Uwe Tews
*
* @param array $params parameters

@ -5,16 +5,15 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty count_paragraphs modifier plugin
* Type: modifier
* Name: count_paragraphs
* Purpose: count the number of paragraphs in a text
*
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
* count_paragraphs (Smarty online manual)
* @author Uwe Tews
* @author Uwe Tews
*
* @param array $params parameters
*

@ -5,16 +5,15 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty count_sentences modifier plugin
* Type: modifier
* Name: count_sentences
* Purpose: count the number of sentences in a text
*
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
* count_sentences (Smarty online manual)
* @author Uwe Tews
* @author Uwe Tews
*
* @param array $params parameters
*

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty count_words modifier plugin
* Type: modifier

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty default modifier plugin
* Type: modifier
@ -25,11 +24,9 @@ function smarty_modifiercompiler_default($params)
if (!isset($params[ 1 ])) {
$params[ 1 ] = "''";
}
array_shift($params);
foreach ($params as $param) {
$output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)';
}
return $output;
}

@ -14,8 +14,8 @@
* @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
* @author Rodney Rehm
*
* @param array $params parameters
* @param Smarty_Internal_TemplateCompilerBase $compiler
* @param array $params parameters
* @param Smarty_Internal_TemplateCompilerBase $compiler
*
* @return string with compiled code
* @throws \SmartyException
@ -24,21 +24,24 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
{
static $_double_encode = null;
static $is_loaded = false;
$compiler->template->_checkPlugins(array(array('function' => 'smarty_literal_compiler_param',
'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php')));
$compiler->template->_checkPlugins(
array(
array(
'function' => 'smarty_literal_compiler_param',
'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php'
)
)
);
if ($_double_encode === null) {
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
}
try {
$esc_type = smarty_literal_compiler_param($params, 1, 'html');
$char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
$double_encode = smarty_literal_compiler_param($params, 3, true);
if (!$char_set) {
$char_set = Smarty::$_CHARSET;
}
switch ($esc_type) {
case 'html':
if ($_double_encode) {
@ -49,7 +52,7 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
} else {
// fall back to modifier.escape.php
}
// no break
case 'htmlall':
if (Smarty::$_MBSTRING) {
if ($_double_encode) {
@ -65,7 +68,6 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
// fall back to modifier.escape.php
}
}
// no MBString fallback
if ($_double_encode) {
// php >=5.2.3 - go native
@ -77,27 +79,23 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
} else {
// fall back to modifier.escape.php
}
// no break
case 'url':
return 'rawurlencode(' . $params[ 0 ] . ')';
case 'urlpathinfo':
return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))';
case 'quotes':
// escape unescaped single quotes
return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')';
case 'javascript':
// escape quotes and backslashes, newlines, etc.
return 'strtr(' . $params[ 0 ] .
return 'strtr(' .
$params[ 0 ] .
', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
}
}
catch (SmartyException $e) {
} catch (SmartyException $e) {
// pass through to regular plugin fallback
}
// could not optimize |escape call, so fallback to regular plugin
if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
$compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] =
@ -110,6 +108,5 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] =
'smarty_modifier_escape';
}
return 'smarty_modifier_escape(' . join(', ', $params) . ')';
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty from_charset modifier plugin
* Type: modifier
@ -24,10 +23,8 @@ function smarty_modifiercompiler_from_charset($params)
// FIXME: (rodneyrehm) shouldn't this throw an error?
return $params[ 0 ];
}
if (!isset($params[ 1 ])) {
$params[ 1 ] = '"ISO-8859-1"';
}
return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')';
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty indent modifier plugin
* Type: modifier
@ -19,7 +18,6 @@
*
* @return string with compiled code
*/
function smarty_modifiercompiler_indent($params)
{
if (!isset($params[ 1 ])) {
@ -28,6 +26,5 @@ function smarty_modifiercompiler_indent($params)
if (!isset($params[ 2 ])) {
$params[ 2 ] = "' '";
}
return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')';
}

@ -5,7 +5,6 @@
* @package Smarty
* @subpackage PluginsModifierCompiler
*/
/**
* Smarty lower modifier plugin
* Type: modifier
@ -20,7 +19,6 @@
*
* @return string with compiled code
*/
function smarty_modifiercompiler_lower($params)
{
if (Smarty::$_MBSTRING) {

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save