Compare commits

..

2151 Commits

Author SHA1 Message Date
mdipierro
4e704ca6f7 R-2.15.1 2017-07-10 16:18:35 -05:00
mdipierro
047ed786ac fixed some error in hashlib_md5 2017-07-10 16:02:15 -05:00
mdipierro
ca1e5156ba fixed hashlib_md5 again, thanks Paolo 2017-07-10 15:10:16 -05:00
mdipierro
4854b84ff9 fixed a python 3 problem, thanks kato 2017-07-10 14:54:08 -05:00
mdipierro
aa252cdbd8 Merge branch 'BuhtigithuB-improve/pep8-globals-py' 2017-07-10 14:20:45 -05:00
mdipierro
e3ec4d4075 merged hashlib conflict 2017-07-10 14:20:39 -05:00
mdipierro
81b000d47a Merge branch 'master' of github.com:web2py/web2py 2017-07-10 14:19:08 -05:00
mdipierro
305dac4976 fixed changelog 2017-07-10 14:19:01 -05:00
mdipierro
876cc634a8 Merge pull request #1679 from leonelcamara/fix1675
Fixes #1675 dropdown not working in the "manage" button
2017-07-10 14:18:17 -05:00
mdipierro
c004d2c16e Merge pull request #1678 from willimoa/issue/1674
Issue/1674
2017-07-10 14:17:56 -05:00
mdipierro
e3cce4d752 Merge pull request #1669 from ilvalle/testing_pypy3_trusty
Testing pypy3.5 in travis, switching to ubuntu trusty
2017-07-10 14:17:20 -05:00
mdipierro
2c84b88466 Merge pull request #1668 from ilvalle/fix_compile_views
fix performance regression with compiled views
2017-07-10 14:17:04 -05:00
mdipierro
fe652c851b Merge pull request #1667 from BuhtigithuB/improve/pep8-main-py
Enhance main.py PEP8
2017-07-10 14:16:09 -05:00
mdipierro
c183c7b18b Merge pull request #1666 from abastardi/ajax-uploads
Enable Ajax file uploads
2017-07-10 14:15:01 -05:00
mdipierro
e2c9875cd5 Merge pull request #1665 from BuhtigithuB/clean/python-2-6-remaining-code-in-import-all-py
Close #1664 remaining py2.6 specific code
2017-07-10 14:14:44 -05:00
mdipierro
579c54f926 Merge pull request #1663 from BuhtigithuB/improve/pep8-http-py
Enhance http.py PEP8
2017-07-10 14:14:09 -05:00
mdipierro
b2cb0bc189 Merge pull request #1662 from BuhtigithuB/improve/pep8-html-py
Enhance html.py PEP8
2017-07-10 14:13:53 -05:00
mdipierro
3f6e8c755a Merge pull request #1660 from BuhtigithuB/improve/pep8-highlight-py
Enhance highlight.py PEP8
2017-07-10 14:13:19 -05:00
mdipierro
023d7f3e6c Merge pull request #1659 from BuhtigithuB/improve/pep8-decoder-py
Enhance decoder.py PEP8
2017-07-10 14:13:04 -05:00
mdipierro
01285ad4cd Merge pull request #1657 from BuhtigithuB/improve/pep8-dal-py
Enhance dal.py PEP8
2017-07-10 14:12:55 -05:00
mdipierro
0d855c1e9c Merge pull request #1656 from BuhtigithuB/improve/pep8-contenttype-py
Enhance contenttype.py PEP8
2017-07-10 14:12:45 -05:00
mdipierro
2d21c00e8d Merge pull request #1655 from BuhtigithuB/improve/pep8-compileapp-py
Enhance compileapp.py PEP8
2017-07-10 14:12:30 -05:00
mdipierro
de9d0eb895 Merge pull request #1654 from BuhtigithuB/improve/pep8-admin-py
Enhance admin.py PEP8
2017-07-10 14:12:16 -05:00
mdipierro
9998916ef6 Merge pull request #1653 from BuhtigithuB/improve/pep8-validators-py
Enhance validators.py PEP8 and fix docstring py3 compatibility
2017-07-10 14:11:58 -05:00
mdipierro
453123a8ed Merge pull request #1652 from BuhtigithuB/improve/pep8-tools-py
Enhance tools.py PEP8 compliancy
2017-07-10 14:11:11 -05:00
mdipierro
2396cad2d1 Merge pull request #1658 from ilvalle/fix_minify
fix minify, added tests
2017-07-10 14:09:53 -05:00
mdipierro
540eecc207 R-2.15.0b2 2017-07-10 03:23:13 -05:00
mdipierro
83681f3f5d fixed markmin test, change beahvior 2017-07-10 03:16:42 -05:00
mdipierro
b0a01ef720 fixed some relative imports, thanks steve.van.christen 2017-07-10 03:13:12 -05:00
mdipierro
da5543f62e tracking newest pydal 2017-07-10 03:06:08 -05:00
mdipierro
dc4ff7c3cc made markmin2html independens on gluon again and fixed reported problem, thanks mweissen 2017-07-10 03:01:35 -05:00
mdipierro
0223b0871e jquery 2.2.4 in admin 2017-07-10 02:43:56 -05:00
Leonel Câmara
c6c027dbec Fixes #1675 dropdown not working in the "manage" button 2017-07-07 18:10:31 +01:00
Andrew Willimott
60edb11420 Explicit path added for graph css file. 2017-07-07 21:03:55 +12:00
Andrew Willimott
51ce3ffd36 Path to css file changed to explicitly point to admin app 2017-07-07 20:39:42 +12:00
mdipierro
89832479fc R-2.16.0b1 2017-07-05 01:48:28 -05:00
mdipierro
15ffdd9a20 R-2.16.0b1 2017-07-05 01:46:01 -05:00
mdipierro
8505c7b282 R-2.16.0b1 2017-07-05 01:42:59 -05:00
mdipierro
5583e9cdc7 R-2.16.0b1 2017-07-05 01:37:48 -05:00
mdipierro
5d8a25626c tracking PyDAL 17.07 2017-07-05 01:32:50 -05:00
mdipierro
9ded289924 fixed minor pylint -E errors 2017-07-02 01:55:51 -05:00
mdipierro
f657b42f65 fixed undefined variable 2017-07-02 01:34:05 -05:00
mdipierro
1c0b498880 fixed undefined variable 2017-07-02 01:32:25 -05:00
mdipierro
2fd0c7c778 new dal 2017-06-30 09:22:50 -05:00
mdipierro
3d0b81cbe6 reverted backward imcompatible change 2017-06-30 08:22:26 -05:00
mdipierro
48d69e9724 Merge branch 'master' of github.com:web2py/web2py 2017-06-27 16:43:58 -05:00
mdipierro
757ce4e76e fixes #1528 2017-06-27 16:43:42 -05:00
ilvalle
af7bfac1e2 Testing pypy3.5 in travis, switching to ubuntu trusty 2017-06-24 08:07:50 +02:00
ilvalle
054320820c fix performance regression with compiled views 2017-06-24 07:21:23 +02:00
Richard Vézina
1a52b0ee3b Enhance main.py PEP8 2017-06-22 09:46:55 -04:00
abastardi
78f3af6fc1 Use FormData when supported to allow Ajax file uploads 2017-06-21 16:29:19 -04:00
Richard Vézina
b5b98d6e19 Close #1664 remaining py2.6 specific code 2017-06-21 15:32:28 -04:00
Richard Vézina
aa1b71e431 Enhance http.py PEP8 2017-06-21 15:14:41 -04:00
Richard Vézina
472c0ff2fb Enhance html.py PEP8 2017-06-21 15:08:52 -04:00
Richard Vézina
58bedd4c1a Enhance highlight.py PEP8 2017-06-21 14:54:59 -04:00
Richard Vézina
88790dcaee Enhance globals.py PEP8 2017-06-21 14:49:10 -04:00
Richard Vézina
a8fb41333b Enhance decoder.py PEP8 2017-06-21 14:38:52 -04:00
Richard Vézina
8d5464692f Enhance dal.py PEP8 2017-06-21 13:41:10 -04:00
Richard Vézina
2080e0460f Enhance contenttype.py PEP8 2017-06-21 13:32:42 -04:00
Richard Vézina
7f5fc798c5 Enhance compileapp.py PEP8 2017-06-21 13:30:02 -04:00
Richard Vézina
833cb03ee1 Enhance admin.py PEP8 2017-06-21 13:22:30 -04:00
Richard Vézina
590de9c890 Enhance validators.py PEP8 and fix docstring py3 compatibility 2017-06-21 11:57:31 -04:00
Richard Vézina
583d106104 Fix docstring py3 compatibility issues print -> print() 2017-06-21 11:33:00 -04:00
Richard Vézina
7ada2cf89a Enhance tools.py PEP8 compliancy 2017-06-21 11:27:54 -04:00
mdipierro
2f0b429f9e Merge pull request #1651 from BuhtigithuB/improve/pep8-authapi-py
Enhance authapi.py PEP8 compliancy
2017-06-20 16:44:18 -05:00
ilvalle
9f79dccb05 fix minify, added tests 2017-06-20 22:12:43 +02:00
Richard Vézina
a78662e4cc Enhance authapi.py PEP8 compliancy 2017-06-20 16:02:50 -04:00
mdipierro
81fa787ec2 fixes #1514, thanks RekGRpth 2017-06-20 14:59:57 -05:00
mdipierro
159dd0d022 fixed #1542, thanks RekGRpth 2017-06-20 14:49:54 -05:00
mdipierro
16df6840ed fixes #1547, thanks yaminle 2017-06-20 14:47:59 -05:00
mdipierro
0674111129 fixes #1579, thanks Nico 2017-06-20 14:29:47 -05:00
mdipierro
18b755b8da fixed #1583, thanks matclab 2017-06-20 14:24:35 -05:00
mdipierro
2174fc3bec partially fixes #1621, thanks Nico. The strip issue is a python3 error in my opinion 2017-06-20 12:26:14 -05:00
mdipierro
77a947b35c fixed #1638, thanks Anthony 2017-06-20 12:02:40 -05:00
mdipierro
954cef48da fixes #1648, thanks you tbear 2017-06-20 11:53:47 -05:00
mdipierro
566feb79d4 Merge pull request #1649 from ilvalle/fix_globals
fix Pickler.dispatch_table
2017-06-15 04:01:14 -05:00
mdipierro
c117e3d1b9 Merge pull request #1644 from leonelcamara/test_is_url_py3
Changed URL validation to use urlparse instead of regex for spliting …
2017-06-15 04:00:30 -05:00
mdipierro
0c3662fb6d scheduler should decode credentials 2017-06-15 03:59:51 -05:00
ilvalle
2ea5939640 fix Pickler.dispatch_table 2017-06-14 21:45:18 +02:00
Leonel Câmara
7c9653ae23 Merge branch 'master' into test_is_url_py3 2017-06-14 15:41:07 +01:00
mdipierro
a02538549b Merge pull request #1642 from leonelcamara/restful
Fixes #1634 by adding a parameter "ignore_extension" to Request.restf…
2017-06-14 09:30:52 -05:00
mdipierro
ce965cf62a Merge pull request #1641 from leonelcamara/i1639
Fixes #1639
2017-06-14 09:30:25 -05:00
Leonel Câmara
2a33c0faff Changed URL validation to use urlparse instead of regex for spliting the URL
Enabled test_is_url in Python 3 since it is now passing
This might be one of the last fixes to #1353
Fixes #1598
2017-06-07 04:59:03 +01:00
Leonel Câmara
ac67beb280 Fixes #1634 by adding a parameter "ignore_extension" to Request.restful which allows you to leave the args untouched if you set it to True. 2017-06-06 01:53:42 +01:00
Leonel Câmara
617ca4a98d Fixes #1639 2017-06-05 23:52:25 +01:00
mdipierro
85ecebc3a4 Merge pull request #1640 from leonelcamara/i1628better
Fixes #1628
2017-06-05 17:44:01 -05:00
Leonel Câmara
376c12a225 Fixes #1628 2017-06-05 23:35:41 +01:00
mdipierro
7769917102 Merge pull request #1637 from timrichardson/issues/1636
fix to #1636: sqlgrid left= (left outer join) fails because db._adapt…
2017-06-05 11:48:33 -05:00
mdipierro
30c28ad44c Merge pull request #1630 from ilvalle/fix_1629
fix web debugger
2017-06-05 11:41:25 -05:00
mdipierro
d905968197 Merge pull request #1626 from willimoa/issue/1472
Issue/1472
2017-06-05 11:40:38 -05:00
mdipierro
f1ef95e15f Merge pull request #1625 from Scimonster/master
Fix #1624 -- Unicode in XML sanitizing causes error
2017-06-05 11:39:52 -05:00
mdipierro
da6688360d Merge pull request #1623 from ilvalle/fix_tag_py3
fix TAG helper on PY3
2017-06-05 11:39:15 -05:00
Tim Richardson
f30c31a8a2 fix to #1636: sqlgrid left= (left outer join) fails because db._adapter.tables() now returns dict (previously a table) 2017-06-01 16:53:04 +10:00
Andrew Willimott
59405b9f18 d3 js check was pointing to app, now checking in admin app. 2017-05-16 06:54:51 +12:00
Andrew Willimott
1c747357b0 Repointed appadmin to admin/static for d3 files 2017-05-16 06:47:30 +12:00
Andrew Willimott
6342bf0ddb Consistent set of d3 js and css across admin, examples, and welcome 2017-05-15 20:12:58 +12:00
ilvalle
f76437703b fix web debugger, close #1629 2017-05-13 08:26:09 +02:00
Andrew Willimott
6f256be1f1 Added databases variable check 2017-05-08 07:02:31 +12:00
Andrew Willimott
3505e372d8 Remove graphviz graph code from appadmin and design files 2017-05-08 06:40:50 +12:00
Scimonster
49bf14e79a Fix #1624 -- Unicode in XML sanitizing causes error
Add unit test for it
2017-05-07 14:32:52 +03:00
ilvalle
cf1ea98217 fix TAG helper on PY3, updated web2pyHTMLParser 2017-05-06 08:51:58 +02:00
mdipierro
8a741023d8 Merge pull request #1622 from willimoa/enhancement/d3_graph
Enhancement/d3 graph
2017-05-03 23:57:42 -05:00
mdipierro
1f4a490a84 Merge pull request #1620 from ilvalle/issue_1618
fix cron with py3, added initial tests, close #1618
2017-05-03 23:57:12 -05:00
Andrew Willimott
ca5539561f Typo delete fix for hooks() return 2017-05-04 07:17:04 +12:00
Andrew Willimott
57b554d618 Initial d3 graph commit. Add d3 to graph layout 2017-05-04 07:03:07 +12:00
mdipierro
baa129f871 Merge pull request #1527 from leonelcamara/authapi2
Auth refactor
2017-05-01 09:13:18 -05:00
ilvalle
90e606dcfd fix cron with py3, added initial tests, close #1618 2017-05-01 15:31:37 +02:00
mdipierro
1d77968a06 Merge pull request #1617 from ilvalle/issue_1609
fix open file in py3
2017-04-28 08:12:54 -05:00
mdipierro
1842a2e42c Merge pull request #1616 from cccaballero/py3welcome
Fixes in generic layouts for python 3 compatibility
2017-04-28 08:11:42 -05:00
mdipierro
c9b6b0faf8 Merge pull request #1607 from sugizo/fix_memcache_appadmin
appadmin can use ccache with cache.ram = cache.disk = cache.memcache
2017-04-28 08:09:17 -05:00
mdipierro
d8be963656 Merge pull request #1606 from cccaballero/master
Added on_succes and custom options for web2py ajax function
2017-04-28 08:08:39 -05:00
mdipierro
496112c4fe Merge pull request #1604 from ilvalle/fix_1570
prevent is_empty from stripping whitespaces, close #1570
2017-04-28 08:07:20 -05:00
mdipierro
a186f5c51f Merge pull request #1603 from ilvalle/fix_1582_internazionalized_domain_names
fix IS_EMAIL for internationalized domain names
2017-04-28 08:05:30 -05:00
mdipierro
fef43cd053 Merge pull request #1602 from leonelcamara/fix_webclientforget
Create a CookieJar on __init__ instead of creating a new one each post
2017-04-28 08:04:56 -05:00
mdipierro
ab41cd94ec Merge pull request #1601 from leonelcamara/port_dialog
Make web2pyDialog Python 3 compatible
2017-04-28 08:04:06 -05:00
mdipierro
9ab7ed0029 catching errors in python3 in custom_import 2017-04-28 08:01:20 -05:00
ilvalle
4d117af85f fix open file in py3, close #1609 2017-04-27 18:08:59 +02:00
Carlos Cesar Caballero Díaz
60a6180a77 fixes in generic layouts for python 3 compatibility 2017-04-27 10:35:27 -04:00
sugizo
ab537242c4 appadmin can use ccache with cache.ram = cache.disk = cache.memcache 2017-04-13 06:31:40 +07:00
Carlos Cesar Caballero Díaz
02d2fefc21 renamed "on_succes" option to "done" allowing multiple inputs
renamed "on_succes" option to "done" allowing multiple inputs,code
refactoring
2017-04-12 08:48:52 -04:00
Carlos Cesar Caballero Díaz
232598fd8d Added on_succes and custom options for web2py ajax function 2017-04-10 12:23:34 -04:00
ilvalle
7a69e087f7 prevent is_empty from stripping whitespaces, close #1570 2017-04-06 20:48:12 +02:00
ilvalle
6da3a9d8fd fix is_email with internationalized Domain Names, close #1582 2017-04-05 22:16:21 +02:00
Leonel Câmara
fe0f506efc Create a CookieJar on __init__ instead of creating a new one each post
Fixes #1505
2017-04-03 19:54:06 +01:00
Leonel Câmara
140023e920 Make web2pyDialog Python 3 compatible
checks "port web2pyDialog" in #1353
2017-03-31 12:04:55 +01:00
mdipierro
ad43249f61 Merge branch 'master' of github.com:web2py/web2py 2017-03-21 12:28:14 -05:00
mdipierro
dd31fb480c Merge branch 'ilvalle-py36' 2017-03-21 12:27:29 -05:00
mdipierro
e5121876db Merge branch 'py36' of https://github.com/ilvalle/web2py into ilvalle-py36 2017-03-21 12:27:11 -05:00
mdipierro
532137bce5 Merge pull request #1594 from BuhtigithuB/improve/translations
Improve french translation and close #1592
2017-03-21 12:24:44 -05:00
mdipierro
35f7caa2f0 Merge pull request #1591 from cccaballero/master
Some fixes on ldap_auth
2017-03-21 12:24:05 -05:00
mdipierro
98dddee697 Merge pull request #1578 from ndegroot/minorcleanupbs3
minor cleanup removed unused class 'navbar-ex1-collapse' see https://…
2017-03-21 12:22:48 -05:00
mdipierro
5000c47472 Merge pull request #1568 from amerikan/patch-2
Remove ! from tag
2017-03-21 12:22:16 -05:00
mdipierro
bf3d53ad96 Merge pull request #1567 from amerikan/patch-3
Removed ! from tag
2017-03-21 12:21:13 -05:00
mdipierro
b2f221bbaa Merge pull request #1566 from BrenBarn/flexserve
Add FlexibleService, which allows @service-style methods with varargs
2017-03-21 12:18:09 -05:00
mdipierro
868d6f6369 Merge branch 'master' of github.com:web2py/web2py 2017-03-21 12:06:11 -05:00
mdipierro
0e1831bcc7 Merge pull request #1581 from nextghost/pydal-17.01
Update SQLTABLE for API changes in PyDAL 17.01
2017-03-21 12:06:00 -05:00
mdipierro
dda808ebda pydal 17.03 2017-03-21 12:05:47 -05:00
mdipierro
f31c9002f7 reverted pydal 16.11 2017-03-21 00:42:02 -05:00
mdipierro
6354fbedf8 commented a test 2017-03-21 00:24:17 -05:00
mdipierro
cc11a14ce3 commented a test 2017-03-21 00:21:21 -05:00
mdipierro
2fa9597cd8 added debug info 2017-03-21 00:04:55 -05:00
mdipierro
c9d656ea45 added logging, thanks gi0baro 2017-03-20 18:06:23 -05:00
mdipierro
1eec01b830 pydal 17.03 2017-03-20 16:21:05 -05:00
mdipierro
c10983b191 Merge branch 'master' of github.com:web2py/web2py 2017-03-20 16:15:31 -05:00
mdipierro
975ab7b923 SQLFORM.grid(showblobs=True) 2017-03-20 16:15:18 -05:00
Hardirc
a81e116274 Improve french translation and close #1592 2017-03-15 01:03:21 -04:00
Carlos Cesar Caballero Díaz
34f2825a49 fix ldap_auth logging info not shown 2017-03-14 13:09:29 -04:00
Carlos Cesar Caballero Díaz
7dec909254 fixed group mapping on ldap auth 2017-03-14 13:00:32 -04:00
ilvalle
ca9198a26e updated to latest dal 2017-03-07 21:11:05 +01:00
ilvalle
ad421e42c6 added tests for py36 2017-03-06 21:35:23 +01:00
Martin Doucha
6954988851 Update SQLTABLE for API changes in PyDAL 17.01 2017-02-28 22:12:54 +01:00
Nico de Groot
f0382d646c minor cleanup removed unused class 'navbar-ex1-collapse' see https://github.com/twbs/bootstrap/issues/10948 2017-02-26 13:21:44 +01:00
Erik Montes
48a0683dd1 Removed ! from tag 2017-02-07 10:47:26 -08:00
Erik Montes
d7fb270e7e Remove ! from tag 2017-02-07 10:46:22 -08:00
BrenBarn
86a2c529b9 Change to modify Service instead of adding FlexibleService 2017-01-31 14:13:43 -08:00
BrenBarn
55592e7c6e Add FlexibleService, which allows @service-style methods that accept varargs 2017-01-31 11:48:28 -08:00
mdipierro
16f60d5cff Merge pull request #1565 from kristjanvalur/master
Update compileapp.py
2017-01-30 12:48:37 -06:00
mdipierro
930370ee91 Merge pull request #1562 from richboss/dev_urandom
don't write to /dev/urandom on Windows platforms
2017-01-30 12:47:50 -06:00
mdipierro
215abc9e4f download over https for security 2017-01-30 12:46:50 -06:00
Kristján Valur Jónsson
b6e5e16526 Update compileapp.py
The "current" may have been altered by the controller.  This is the case for admin/controllers/shell.py, in callback(), where a new shell environment is created (from gluon/shell)
If this happens, the incorrect "response" is being referenced and the output of the controller is lost.
2017-01-25 20:10:03 +00:00
Richard Boß
b2548f5631 don't write to /dev/urandom on Windows platforms 2017-01-22 21:05:22 +01:00
mdipierro
f14c384d83 Merge pull request #1558 from abastardi/fix-router
Fix router functions check
2017-01-19 09:23:16 -06:00
mdipierro
9f186e5d5d Merge pull request #1555 from maxslimmer/master
ccache page fix for disk cache statistics value
2017-01-19 09:23:02 -06:00
mdipierro
51dd427b9e Merge pull request #1550 from senolakkas/patch-2
fix css validation error
2017-01-19 09:22:38 -06:00
abastardi
7b3fe560ed Update test_router_functions to test extensions 2017-01-14 13:14:04 -05:00
abastardi
bd526452a8 Fix router functions check
When the router checks whether the requested route matches a function in the
functions list, it does not strip the extension, causing failures for URLs with extensions.
This change strips the extension before comparing to the list of functions.
2017-01-13 15:52:42 -05:00
maxslimmer
d862da3543 revert part of fix to displaying cache statistics (#1) 2017-01-04 18:08:57 -08:00
maxslimmer
0165cfadef get cache.disk statistics value for update and display 2017-01-04 18:03:37 -08:00
maxslimmer
46b7716b1d get cache.disk statistics for update 2017-01-04 18:02:23 -08:00
Şenol AKKAŞ
7e5277030a fix css validation error 2016-12-26 14:21:41 +03:00
mdipierro
b2e03c9dee Merge pull request #1540 from ilvalle/fix_ipaddress
Replaced ipaddr with ipaddress.py (backported from py3)
2016-12-23 21:58:13 -06:00
mdipierro
0644df5283 Merge pull request #1549 from amerikan/patch-1
typo fix
2016-12-23 21:57:56 -06:00
Erik Montes
4acd9f8f2b typo fix 2016-12-21 11:17:12 -08:00
mdipierro
ce0c5f2d5a Merge branch 'master' of github.com:web2py/web2py 2016-12-20 15:49:44 -06:00
mdipierro
28b0385d9b changes to fabfile 2016-12-20 15:49:30 -06:00
mdipierro
ac9bccb9a2 Merge pull request #1548 from nextghost/languages
Include Auth and Crud messages in language file updates
2016-12-20 15:42:38 -06:00
mdipierro
aa5b40528f Merge pull request #1546 from wish7code/master
Fix for #1443 - PR will enable emperor.uwsgi.service on boot
2016-12-20 15:42:10 -06:00
mdipierro
96efc7bfce Merge pull request #1539 from smorrison/master
when mkdir of missing app folders, handle broken links properly
2016-12-20 15:40:30 -06:00
mdipierro
aa584faed6 Merge pull request #1538 from vinyldarkscratch/master
Add web2py componentBegin event
2016-12-20 15:39:55 -06:00
Martin Doucha
e7cab3b975 Add Auth and Crud messages when updating language files 2016-12-20 18:54:20 +01:00
wish7
867f93b634 Fix for #1443 - currently emperor.uwsgi.service is not started on boot,
PR will enable emperor.uwsgi.service on boot
(behaviour as in old versions of this script)
2016-12-09 17:21:04 +01:00
mdipierro
efff27ffe4 improved fabfile 2016-12-07 23:02:56 -06:00
ilvalle
637579f531 replaced ipaddr with ipaddress.py (backported from py3) 2016-12-03 08:42:35 +01:00
sean
52fe4407b8 when mkdir of missing app folders, handle broken links properly 2016-12-01 10:29:23 -05:00
Vinyl Darkscratch
fc0add67b5 Add web2py componentBegin event
Like the “w2p:componentComplete” event I added a while back, this is
another event that I use in my website, and I thought it would be
helpful to share it with others.  This way, you can easily catch when a
web2py component starts loading, and write a handler for whatever
reason (in my case, determining when the user is navigating to a new
page through a smooth loading function piggybacking off of the web2py
component system)
2016-11-29 14:05:17 -08:00
Vinyl Darkscratch
3d2834c81a Merge remote-tracking branch 'web2py/master' 2016-11-29 13:57:46 -08:00
Leonel Câmara
a23b264a37 make sudo false again 2016-11-21 19:48:41 +00:00
mdipierro
0b8ecea4dc sudo: required, thanks Leonel 2016-11-21 10:27:16 -06:00
Leonel Câmara
79e256b1d7 require sudo 2016-11-21 15:53:10 +00:00
mdipierro
67945c2d5c Merge pull request #1533 from gchiesa/casv3
implemented base support for CASv3
2016-11-21 09:13:41 -06:00
mdipierro
c600854f4b Merge pull request #1532 from vinyldarkscratch/translations
Fix T.M() not adding to language files
2016-11-21 09:12:42 -06:00
Leonel Câmara
920ab72415 fixed _update_session_user not really updating the session 2016-11-20 20:11:45 +00:00
Leonel Câmara
757d46274e fix bug with new login_user 2016-11-20 20:00:51 +00:00
Leonel Câmara
7b66ec0ae3 Fixes #1506 2016-11-20 19:51:51 +00:00
Leonel Câmara
bf5ec0d7cf Fixed a long standing bug in login_user which was using 'password' instead of settings.password_field
Fixes #636
2016-11-20 19:38:21 +00:00
Giuseppe Chiesa
2c70a858f1 implemented base support for CASv3 2016-11-17 13:30:11 +01:00
mdipierro
ad9ebea900 Merge pull request #1531 from vinyldarkscratch/master
Mobile (iOS) flash dismissal fix
2016-11-14 08:34:00 -06:00
mdipierro
c72330f2cd Merge pull request #1530 from BMarvi/master
Update extract_mysql_models.py
2016-11-14 08:33:30 -06:00
mdipierro
091d9c74b0 Merge pull request #1525 from michele-comitini/confirm_registration_redirect_fix
keep the _next while doing the redirect
2016-11-14 08:27:39 -06:00
mdipierro
bebdbd9d5e Merge pull request #1519 from matclab/fix/1518
Allow for firstname and lastname in verify_email message
2016-11-14 08:27:10 -06:00
mdipierro
05e28ddffd Merge pull request #1516 from pixelbandito/grammar-uppercase-lowercase
Corrected use of 'lowercase' and 'uppercase' to fix #1515
2016-11-14 08:26:44 -06:00
Vinyl Darkscratch
e19435dbcf Prevent Firefox from loading the page "javascript:null;" 2016-11-11 18:51:38 -08:00
Vinyl Darkscratch
90ee6f3754 Add three-quote support on markmin 2016-11-11 15:51:01 -08:00
Vinyl Darkscratch
d51ea90e18 Code fix to allow adding markmin translations
Playing with this file made me realize that the quotes defining the
strings themselves are added to the regex searches, and that my
previous addition caused invalid syntax.  So, I decided to fix this by
placing the first quote before the markmin decorator.  (Triple quotes
won’t work, however…)
2016-11-11 15:49:28 -08:00
Vinyl Darkscratch
3fed558bdd Merge remote-tracking branch 'web2py/master' into translations 2016-11-11 15:44:21 -08:00
Vinyl Darkscratch
870d9d3e57 Fix .DS_Store ignore 2016-11-11 13:52:43 -08:00
Vinyl Darkscratch
0a07af55f9 Replace "#" link with "javascript:null;" 2016-11-11 03:31:10 -08:00
Vinyl Darkscratch
f7adfbde76 Replace "#" link with "javascript:null;" 2016-11-11 03:30:50 -08:00
Vinyl Darkscratch
75c1d80824 Replace "#" link with "javascript:null;" 2016-11-11 03:30:16 -08:00
Marvi
c64a9192d4 Update extract_mysql_models.py 2016-11-11 10:12:11 +01:00
Vinyl Darkscratch
8e79e49ae3 Mobile (iOS) fix for dismissing flashes
iOS devices don’t like listening to clicks on most objects.  They
typically prefer a and button objects.  This fix replaces the
#closeflash span with a link to “#” instead (while also inheriting
text-decoration and color styling), so that mobile (iOS) devices will
allow you to close the flash.
2016-11-10 01:19:06 -08:00
Vinyl Darkscratch
46ce04355f Merge remote-tracking branch 'web2py/master' 2016-11-10 01:14:40 -08:00
Leonel Câmara
85c68e6876 typo 2016-11-05 16:52:42 +00:00
Leonel Câmara
d1dfc4a06a use _compat's long 2016-11-05 16:51:54 +00:00
Leonel Câmara
02f0bdb8d3 Auth refactor, extracted many methods into a base class for more generic auth mechanisms.
Partially addresses #1526
Includes a solution for IS_LOWER and IS_UPPER validator problems I mentioned in #1353
2016-11-05 16:37:22 +00:00
Michele Comitini
6b1225da02 keep the _next while doing the redirect 2016-11-04 09:59:49 +01:00
Michele Comitini
4ea31820aa Merge pull request #1520 from michele-comitini/wrong_serializers_import
fix wrong import in default controller of admin app
2016-11-03 12:00:15 +01:00
Michele Comitini
8e1630843a fix wrong import in default controller of admin app 2016-11-02 00:41:40 +01:00
Mathieu Clabaut
2d4817841f Allow for firstname and lastname in verify_email message 2016-11-01 11:31:01 +01:00
Chris Garcia
4226b6d0e1 Corrected use of 'lowercase' and 'uppercase' to fix #1515 2016-10-28 15:23:18 -05:00
mdipierro
6d38aa7a3d Merge pull request #1507 from vinyldarkscratch/master
Fire event after web2py component completed (Enhancement)
2016-10-22 10:14:43 -05:00
Vinyl Darkscratch
7615848f83 Add a fired event after the component has finished loading
Sometimes we may want to know when the component is finished with it’s
loading process entirely to trigger animations or something similar.  I
added this for my own website, and I think that others may want to use
this.  It’s a small addition, but I hope that it will be helpful to
others!
2016-10-18 18:27:37 -07:00
Vinyl Darkscratch
3ad052de26 Merge remote-tracking branch 'web2py/master' 2016-10-18 18:19:55 -07:00
mdipierro
77dfec9e4d Merge pull request #1504 from vinyldarkscratch/master
Updated and functional version of #1420
2016-10-14 10:12:36 -05:00
mdipierro
77968b5034 Merge pull request #1502 from matclab/issue_1500
Allow cookie to contains several '='
2016-10-14 10:12:05 -05:00
mdipierro
f9a41875e6 Merge pull request #1499 from ilvalle/fix-app-admin
fix few app admin py3 issues, updated qdb (close #1471)
2016-10-14 10:11:36 -05:00
mdipierro
bc7232456e Merge pull request #1498 from niphlod/fix/1491
fixes #1491
2016-10-14 10:10:16 -05:00
mdipierro
d15d0e69cc Merge pull request #1497 from niphlod/fix/1489
fixes #1489
2016-10-14 10:09:25 -05:00
mdipierro
94d449630d Merge pull request #1496 from niphlod/fix/1493
fixes #1493 (at @abastardi's bidding)
2016-10-14 10:09:05 -05:00
mdipierro
8c252e99cb Merge pull request #1495 from niphlod/fix/appadmin_ccache
fix ccache page in appadmin, thanks MDSIII
2016-10-14 10:08:41 -05:00
mdipierro
df3524878d Merge pull request #1492 from BuhtigithuB/improve/make-pass-test-tools-py-login-bare
Make pass test_login_bare() and little other improvements
2016-10-14 10:08:20 -05:00
Vinyl Darkscratch
63c494c24d Fixed accidental module-to-import swap 2016-10-10 20:59:31 -07:00
Vinyl Darkscratch
f8d62423e5 Update custom 503 page code to be less...idiotic 2016-10-10 20:53:21 -07:00
Vinyl Darkscratch
a28b1e30c9 Merge remote-tracking branch 'web2py/master' 2016-10-10 20:49:54 -07:00
Vinyl Darkscratch
3e2b8f89aa Merge remote-tracking branch 'web2py/master' into translations 2016-10-10 20:45:42 -07:00
Mathieu Clabaut
3f96c521f3 Allow cookie to contains several '='
close #1500
2016-10-09 21:48:10 +02:00
ilvalle
c1d81a8f60 fix few app admin py3 issues, updated qdb (close #1471) 2016-10-08 12:26:04 +02:00
niphlod
87489f3363 fixes #1491 2016-10-07 22:43:06 +02:00
niphlod
8efd0cb01f fixes #1489 2016-10-07 21:23:00 +02:00
niphlod
555f2ad040 fixes #1493 (at @abastardi's bidding) 2016-10-07 21:20:10 +02:00
niphlod
39e8cfb11a fix ccache page in appadmin, thanks MDSIII
fixes the ccache page to now raise an exception if a dict is stored in
cache
2016-10-07 21:14:56 +02:00
mdipierro
e6a3081b42 Merge pull request #1494 from niphlod/fix/appadmin
fix issue with regex
2016-10-07 11:17:45 -05:00
niphlod
27ce91474d fix issue with regex 2016-10-07 13:10:44 +02:00
Richard Vézina
77c0384f79 Make pass test_login_bare() and little other improvements 2016-10-05 12:41:47 -04:00
mdipierro
1877f49730 Merge pull request #1490 from niphlod/fix/1485
fixes #1485, thanks @abastardi once again
2016-10-04 19:40:11 -05:00
mdipierro
b8c1d39375 Merge pull request #1489 from niphlod/fix/appadmin
remove __pycache__ from the list of apps
2016-10-04 19:39:50 -05:00
mdipierro
a9d3d31417 merged with niphlod 2016-10-03 17:42:39 -05:00
niphlod
b9c1b4d62b fixes #1485, thanks @abastardi once again 2016-10-04 00:40:29 +02:00
niphlod
a1c1d1357f remove __pycache__ from the list of apps
in case someone wonders how many core devs are actively using the admin
app...here's the evidence ^_^'
2016-10-04 00:30:11 +02:00
mdipierro
cf9b2d8fa0 Merge pull request #1487 from niphlod/fix/update_pg8000
updates pg8000 driver and freshens travis.yml
2016-10-03 17:27:03 -05:00
niphlod
bcc237ead8 removing pycrypto hard dep 2016-10-04 00:11:54 +02:00
niphlod
15769857cb 1st trial 2016-10-03 22:16:55 +02:00
mdipierro
4f68c418f8 Merge pull request #1486 from niphlod/fix/1484
fixes #1484, thanks @abastardi
2016-10-03 14:48:53 -05:00
mdipierro
99c3e06589 Merge pull request #1483 from niphlod/fix/pymysql_local_imports
make pymysql usable inside web2py
2016-10-03 14:48:30 -05:00
niphlod
b7219ba2fd fixes #1484, thanks @abastardi 2016-10-03 21:09:27 +02:00
niphlod
9256d67ec7 remove pymysql dependency 2016-10-01 11:25:52 +02:00
niphlod
9539cc7542 make pymysql usable inside web2py 2016-10-01 00:15:47 +02:00
mdipierro
d602631c7e Merge pull request #1480 from gi0baro/master
Updated pyDAL to 16.9
2016-09-30 17:15:25 -05:00
mdipierro
92ca527426 Merge pull request #1481 from ilvalle/compileapp_refactor
minor compileapp refactor
2016-09-30 17:15:18 -05:00
mdipierro
91b616d1cf Merge pull request #1482 from niphlod/fix/1407_and_T_v2
fixes #1407 passing a properly escaped string
2016-09-30 17:14:45 -05:00
mdipierro
590a505c54 upgraded PyMysql to 0.7.9, thanks niphlod 2016-09-30 16:02:40 -05:00
mdipierro
a867a65ebe syncing pydal 16.09 2016-09-30 13:55:48 -05:00
mdipierro
b19c3419ec do not cache normal views because of dependencies 2016-09-30 13:54:37 -05:00
mdipierro
d03337a737 compile views with . separator anot _ seperator 2016-09-30 11:24:55 -05:00
mdipierro
a1154a6f42 reverted 28db54d0e8 changes to compileapp.py 2016-09-30 09:59:08 -05:00
niphlod
3a6df38d62 fixes #1407 passing a properly escaped string 2016-09-29 00:12:59 +02:00
ilvalle
a31cf09dd3 minor compileapp refactor 2016-09-28 21:49:24 +02:00
Giovanni Barillari
3ab30295ed Updated pyDAL to 16.9 2016-09-28 13:10:42 +02:00
mdipierro
78cc6d69a2 fixed web2py_ajax.html and escaping (not backward compatible fix) 2016-09-27 17:09:05 -05:00
mdipierro
4026357689 fixed undefined var in web2py.js 2016-09-27 16:49:20 -05:00
mdipierro
cee7c87859 fixed error in serbian tranlation file 2016-09-27 16:41:17 -05:00
mdipierro
fd422faa8f Merge pull request #1476 from kelsa-pi/issue/1451new
Translation for serbian
2016-09-27 16:37:01 -05:00
mdipierro
28db54d0e8 Merge pull request #1470 from ilvalle/compileapp_getcfs
cache (and compile) views, models and controllers
2016-09-27 16:36:32 -05:00
mdipierro
6be68eb8ab Merge pull request #1469 from niphlod/fix/1069
fixes #1069, untangles the js, modernizes the approach
2016-09-27 16:36:02 -05:00
mdipierro
b9a606103e Merge pull request #1468 from niphlod/fix/the_new_pydal
here here, we can update pydal in the wait for a new release soon
2016-09-27 16:35:13 -05:00
mdipierro
9e80654d2b Merge pull request #1466 from niphlod/fix/system_tests
fix launching system_tests without coverage
2016-09-27 16:34:50 -05:00
sasa
e9473f570f Translation for serbian 2016-09-25 20:03:23 +02:00
ilvalle
4468355d01 fix py3 xmlrpc imports, close #1473 2016-09-25 10:43:42 +02:00
ilvalle
b4acfd0724 removed unnecessary env clone for _view_environment 2016-09-25 10:11:47 +02:00
ilvalle
576aaf668d cache (and compile) parse_template in run_view_in, fix #1474 2016-09-25 10:08:26 +02:00
niphlod
9978e63621 fixes #1069, untangles the js, modernizes the approach
plus, avoids hitting the backend for each and every keypress...
2016-09-23 23:45:00 +02:00
niphlod
54da251e46 here here 2016-09-23 21:17:43 +02:00
niphlod
55f929bab4 fix launching system_tests without coverage 2016-09-23 20:52:30 +02:00
mdipierro
0e4ff55306 Merge pull request #1461 from niphlod/fix/1310
fixes #1310 and improves upon ideas shared on #1450
2016-09-23 13:52:08 -05:00
mdipierro
62d14cca14 Merge pull request #1465 from niphlod/fix/1190
fixes #1190
2016-09-23 13:51:54 -05:00
mdipierro
e40c4835e7 Merge pull request #1464 from niphlod/fix/1309
fixes #1309 (and sessions2trash.py, too)
2016-09-23 13:51:22 -05:00
mdipierro
763e639915 Merge pull request #1463 from niphlod/fix/1407
fixes #1407, encouraging a sane default
2016-09-23 13:50:30 -05:00
mdipierro
31d7e1b9b2 Merge pull request #1462 from niphlod/fix/appveyor_pip
avoid downloading pip as 2.7 has ensurepip
2016-09-23 13:50:16 -05:00
mdipierro
e1ff748ea9 Merge pull request #1460 from niphlod/fix/cleanup
removed leftover (be careful (BOTH contributors and mergers))
2016-09-23 13:47:10 -05:00
mdipierro
0e18929905 Merge pull request #1459 from niphlod/fix/1413
fixes #1413
2016-09-23 13:46:55 -05:00
mdipierro
be1ab1346c Merge pull request #1458 from niphlod/fix/1455
fixes #1455
2016-09-23 13:46:36 -05:00
niphlod
4f0a2eb80b fixes #1190 2016-09-22 01:55:53 +02:00
niphlod
dd8b0760b5 fixes #1309 (and sessions2trash.py, too) 2016-09-22 01:34:34 +02:00
niphlod
e5355b5b12 fixes #1407, encouraging a sane default 2016-09-22 00:34:24 +02:00
niphlod
98d636314e avoid downloading pip as 2.7 has ensurepip 2016-09-22 00:17:17 +02:00
niphlod
e5dcdb074f fixes #1310 and improves upon ideas shared on #1450 2016-09-22 00:01:22 +02:00
niphlod
8ddccd4139 removed leftover (be careful (BOTH contributors and mergers)) 2016-09-21 23:13:45 +02:00
niphlod
37d2efaab8 fixes #1413 2016-09-21 23:00:55 +02:00
niphlod
40d6a72b90 fixes #1455 2016-09-21 22:35:04 +02:00
mdipierro
075f493332 Merge pull request #1454 from niphlod/fix/1449
fixes #1449
2016-09-21 09:52:55 -05:00
mdipierro
ae88d2f297 Merge pull request #1453 from niphlod/fix/1452
fixes #1452
2016-09-21 09:52:46 -05:00
mdipierro
0225b68d81 Merge pull request #1450 from ilvalle/getcfs_compiled
caching read_pyc
2016-09-21 09:52:32 -05:00
niphlod
25e8f4aef1 fixes #1449
codename "he who late imports by default makes everybody's life a misery
for no speedup at all"
2016-09-19 21:33:01 +02:00
niphlod
790593228f fixes #1452 2016-09-19 20:41:41 +02:00
ilvalle
352c93bc86 added getcfs for run_view_in 2016-09-16 20:19:38 +02:00
ilvalle
897e2ab95d caching read_pyc for controllers and models 2016-09-16 16:28:20 +02:00
mdipierro
44362aa429 Merge pull request #1448 from abastardi/master
Avoid folder creation race condition
2016-09-14 08:49:18 -05:00
abastardi
c0742190f0 Avoid folder creation race condition 2016-09-12 09:55:33 -04:00
mdipierro
0d646fa5e7 Merge pull request #1446 from ilvalle/fix_xmlescape
fix py3.5 xmlescape with bytes
2016-09-11 09:45:07 -05:00
mdipierro
d96fe2907e Merge pull request #1445 from vinyldarkscratch/translations
Translations and related improvements
2016-09-11 09:44:49 -05:00
mdipierro
251724a741 Merge pull request #1440 from niphlod/fix/sys_path_dance3
fixes #1439
2016-09-11 09:40:56 -05:00
Vinyl Darkscratch
808c85fdc3 Update welcome/es.py, Spanish complete! 2016-09-10 22:12:48 -07:00
Vinyl Darkscratch
9263f8c4c3 Fixed test errors
Cleaned the damage caused by a faulty script run that created a test
error as described in
https://travis-ci.org/web2py/web2py/builds/158680015
2016-09-10 22:06:14 -07:00
ilvalle
1623328678 fix missing to_unicode import, close #1442 2016-09-09 21:13:27 +02:00
ilvalle
2ec0c0b535 fix py3.5 xmlescape with bytes 2016-09-09 16:29:55 +02:00
Vinyl Darkscratch
aee0f8dbc5 Stripped unused strings from translations 2016-09-09 01:59:14 -07:00
Vinyl Darkscratch
2140eced79 Fixing a consistency error when updating T.M() translations 2016-09-09 01:26:41 -07:00
Vinyl Darkscratch
f9dce481f7 Added encoding to plural files
Added “# -*- coding: utf-8 -*-“ lines to all plural files
2016-09-09 01:09:39 -07:00
Vinyl Darkscratch
05537b9916 Language update 2016-09-09 00:43:39 -07:00
Vinyl Darkscratch
24d1eea554 Support for custom 503 responses
Added support for a custom 503 (temporary maintenance) page based upon
the DISABLED file in an app folder
2016-09-09 00:23:33 -07:00
Vinyl Darkscratch
38f1e318cf Update translations 2016-09-09 00:17:40 -07:00
mdipierro
b84b47dad2 Merge pull request #1436 from niphlod/fix/sys_path_dance2
fix sys.path dance part #2 and scheduler tests for py3
2016-09-01 10:23:29 -05:00
mdipierro
8370791b83 Merge pull request #1434 from niphlod/fix/sys_path_dance
first step towards dropping sys.path dance
2016-08-31 08:09:36 -05:00
niphlod
d1d765455f fixes #1439 2016-08-31 02:04:45 +02:00
niphlod
a1e1bf3500 fix sys.path dance part #2 and scheduler tests for py3 2016-08-31 01:47:42 +02:00
niphlod
1bf499e3be first step towards dropping sys.path dance 2016-08-29 23:01:22 +02:00
mdipierro
326335c3cd Merge pull request #1433 from BuhtigithuB/improve/ubuntu-nginx-script
No cleartext input password for setup nginx uwsgi ubuntu script
2016-08-27 22:13:35 -05:00
mdipierro
59315c874d Merge pull request #1431 from ShySec/fix_add_membership
fixed auth.add_membership succeeding with invalid group_id/user_id
2016-08-25 00:12:51 -05:00
mdipierro
c63dbf6045 Merge pull request #1429 from ShySec/websocket_compare
use constant-time comparison to verify websocket hmac
2016-08-25 00:12:33 -05:00
mdipierro
82714f31ad Merge pull request #1430 from ShySec/static_path_match
fixed "/app/static" throwing AttributeError instead of HTTP(404)
2016-08-25 00:11:17 -05:00
mdipierro
0cdf3bd832 Merge pull request #1428 from ShySec/pad_update
secure_dumps/secure_loads/pad update
2016-08-25 00:10:53 -05:00
mdipierro
93054a2dca pydal v16.08 2016-08-25 00:09:29 -05:00
Richard Vézina
2a3f90a30f No cleartext input password for setup nginx uwsgi ubuntu script 2016-08-24 15:47:46 -04:00
kelson
3bed4eee8c fixed deprecated assertRaisesRegexp
added additional coverage tests
2016-08-17 18:27:44 -04:00
kelson
2b0166a8de add_membership unittests 2016-08-17 18:14:39 -04:00
kelson
fe058bf817 fixed auth.add_membership succeeding with invalid group_id/user_id 2016-08-17 17:17:34 -04:00
kelson
f8f96ba613 fixed /app/static throwing AttributeError instead of HTTP(404) 2016-08-17 16:50:06 -04:00
kelson
b96d0697ee use constant-time comparison to verify websocket hmac 2016-08-17 16:18:44 -04:00
kelson
4b925bf297 added PKCS #7 v1.5 padding
updated secure_dumps to use SHA256
fixed secure_dumps using truncated encryption_key hash
fixed pad ignoring blocksize argument
2016-08-17 16:08:05 -04:00
mdipierro
e87378b07f allow a cllback in streamer 2016-08-16 19:12:47 -05:00
mdipierro
6e9c8212e2 Merge branch 'master' of github.com:web2py/web2py 2016-08-16 19:08:15 -05:00
mdipierro
fb0bca3709 Merge pull request #1425 from zvolsky/_plugin_failure
F redirect in admin/default/design (install of plugin)
2016-08-16 18:50:09 -05:00
mdipierro
a2354addec Merge pull request #1423 from gi0baro/master
Updated pyDAL to 16.08
2016-08-16 18:49:10 -05:00
mdipierro
9158f766e4 Merge pull request #1419 from ilvalle/test_sqlhtml
enabled tests/test_sqlhtml.py
2016-08-16 18:49:02 -05:00
mdipierro
7a20866d4f Merge pull request #1416 from vdubya/master
minor grammatical fix
2016-08-16 18:48:46 -05:00
zvolsky
9e5bf2bf03 F error message in admin/default/design (install of plugin) 2016-08-16 13:38:13 +02:00
zvolsky
16b11c7ef2 F redirect in admin/default/design (install of plugin) 2016-08-16 13:28:29 +02:00
Giovanni Barillari
0528a347b3 Updated pyDAL to 16.08 2016-08-13 15:38:55 +02:00
ilvalle
461e290768 added unittest for sqlform represent 2016-08-08 20:57:43 +02:00
ilvalle
032ee427c6 enabled tests/test_sqlhtml.py 2016-08-07 10:46:07 +02:00
mdipierro
3fc57bd9ad improved fabfile 2016-08-03 03:22:24 -05:00
mdipierro
be5ddca28f fixed last_sql_parse for py3 2016-08-01 05:23:40 -05:00
mdipierro
7440d38253 moved local_html_escape into utils, thanks Simone 2016-08-01 05:19:46 -05:00
mdipierro
2e0630c48c moved local_html_escape into utils, thanks Simone 2016-08-01 05:15:52 -05:00
mdipierro
116a7ff006 removed unwanted hosts.deny 2016-08-01 05:09:39 -05:00
mdipierro
a45bffc908 fixed admin imports 2016-08-01 05:02:52 -05:00
mdipierro
4bb261ec15 fixed py3 import 2016-08-01 04:41:51 -05:00
mdipierro
6543512983 fixed another import error in appadmin 2016-08-01 04:34:33 -05:00
mdipierro
cf12fea68b fixed more imports 2016-08-01 04:26:46 -05:00
mdipierro
68375a4ea7 removed training comma 2016-08-01 04:18:06 -05:00
mdipierro
92a03f397d fixed another _compat import 2016-08-01 04:16:29 -05:00
mdipierro
eebf406d97 fixed import error 2016-08-01 04:13:32 -05:00
mdipierro
cc1ff02079 only one portalocker 2016-08-01 03:46:51 -05:00
mdipierro
35eaba1096 removed duplicated code, using pydal's _compat.py 2016-08-01 03:39:22 -05:00
mdipierro
4519985dc2 fixed indentation in webclient, issue #1396 2016-07-29 08:53:56 -05:00
mdipierro
ab93b74b85 Merge branch 'master' of github.com:web2py/web2py 2016-07-29 08:50:53 -05:00
mdipierro
6be3977fa7 fixed issue #1409, py2 vs py3 2016-07-29 08:50:28 -05:00
mdipierro
fe7a049a0f Merge pull request #1359 from oscarfonts/grid-HTMLExporter-maxtextlength
Don't truncate texts on SQLFORM.grid HTML Export
2016-07-29 08:33:25 -05:00
mdipierro
a6b96ba85b minor change to fabfile 2016-07-29 07:12:29 -05:00
mdipierro
331216c2d4 Merge pull request #1411 from niphlod/fix/1406
fixes #1406
2016-07-29 07:06:35 -05:00
niphlod
3bc6769e28 fixes #1406 2016-07-28 21:36:43 +02:00
Van Woods
fe45dff9e4 minor grammatical fix 2016-07-26 18:16:10 -07:00
mdipierro
59b49e8f4c Merge pull request #1402 from niphlod/fix/py35_and_lock
this crashes win and 3.5
2016-07-25 12:51:33 -05:00
mdipierro
e0d45a3edf Merge pull request #1398 from niphlod/fix/redis_scheduler
feature parity (cron recurrence) with scheduler
2016-07-25 12:50:42 -05:00
niphlod
ae6fdb21c9 this crashes win and 3.5 2016-07-19 22:21:35 +02:00
mdipierro
759616e537 Merge pull request #1400 from niphlod/py3/fix_warnings
fixed most of py3 warnings, output is much cleaner this way
2016-07-18 18:21:24 -05:00
niphlod
cae10a68c0 fixed most of py3 warnings, output is much cleaner this way 2016-07-18 23:45:28 +02:00
niphlod
a0720ce01e feature parity (cron recurrence) with scheduler 2016-07-18 21:36:56 +02:00
mdipierro
7aa617a68f fixed regex (test) 2016-07-17 15:12:04 -05:00
mdipierro
665e14186e fixed issue with sessions in db on GAE 2016-07-17 04:18:56 -05:00
mdipierro
b6fc1b0809 Merge branch 'master' of github.com:web2py/web2py 2016-07-16 10:23:37 -05:00
mdipierro
fe04923d28 Merge pull request #1392 from ilvalle/py3_fixes_7
Py3 fixes
2016-07-16 03:01:16 -05:00
ilvalle
73399fdee6 fix py3 html 2016-07-15 20:35:54 +02:00
ilvalle
f9927f4f3d fix local import for contrib modules 2016-07-15 20:34:27 +02:00
mdipierro
584327553c fixed Link to Chrome extension that auto-opens error tickets #613 2016-07-11 03:30:48 -05:00
mdipierro
4a3ccfdeab fixed issue #1362, == in args 2016-07-11 03:20:38 -05:00
mdipierro
64df136e69 minor import fix 2016-07-11 03:15:31 -05:00
mdipierro
7fe2684ffa Merge branch 'master' of github.com:web2py/web2py 2016-07-11 03:04:08 -05:00
mdipierro
350dc4ed8b partially addressed scheduler in widget 2016-07-11 03:03:55 -05:00
mdipierro
170ca0eb12 Merge pull request #1390 from BuhtigithuB/improve/jquery-attr-prop-web2py-js
.att() -> .prop() for setting autocomplete off
2016-07-11 02:52:24 -05:00
Richard Vézina
bd47b7f80a .att() -> .prop() for setting autocomplete off 2016-07-10 12:30:22 -04:00
mdipierro
ccd807503a Merge pull request #1387 from ilvalle/appveyor_py35
enabled py35 unittests on win
2016-07-07 01:48:38 -05:00
mdipierro
d067897cef json(indent=...) parameter 2016-07-07 01:47:59 -05:00
ilvalle
967b2e27a7 added global_settings.is_py2 2016-07-06 17:25:26 +02:00
ilvalle
5e94c11e40 Enabled py35 on appveyor 2016-07-06 17:25:22 +02:00
mdipierro
d2aa83c8a7 Merge branch 'master' of github.com:web2py/web2py 2016-07-05 08:35:58 -05:00
mdipierro
c5bd7ca25d look for dal in packages by default 2016-07-05 08:35:42 -05:00
ilvalle
61c9b7991e py35 fix cacheOnDisk on win 2016-07-04 20:30:50 +02:00
mdipierro
b5ea78e5d6 Merge pull request #1385 from jnbrex/master
Changed tuple to list
2016-07-02 01:04:04 -05:00
Jason Bohrer
0c4d254a9c Changed tuple to list
The comparison between parts[1:3] and ('', host) would return false because a list and a tuple were being compared.
2016-07-01 13:26:23 -04:00
mdipierro
d9c2f778ee fixed auth next open redirect 2016-07-01 02:22:15 -05:00
mdipierro
409cfda1f6 Merge pull request #1382 from apa-1/master
Fix next redirect if only one / exists
2016-07-01 02:00:58 -05:00
mdipierro
229da5847b Merge pull request #1381 from niphlod/fix/1363
corner case - fixes #1363
2016-07-01 02:00:18 -05:00
mdipierro
c7eb1c1eae Merge branch 'niphlod-remove/webshell' 2016-07-01 01:59:42 -05:00
mdipierro
67b27f4daf removed webshell 2016-07-01 01:59:12 -05:00
mdipierro
9837aae642 Merge pull request #1378 from niphlod/fix/1331
fixes #1331 (just rocket, really)
2016-07-01 01:56:56 -05:00
mdipierro
5413b95320 Merge pull request #1377 from niphlod/fix/1347
fixes #1347
2016-07-01 01:56:37 -05:00
mdipierro
5d13e56dc5 Merge pull request #1376 from niphlod/fix/1354
fixes #1354
2016-07-01 01:56:21 -05:00
mdipierro
5a5c2b500a Merge pull request #1375 from niphlod/fix/1355
fixes #1355
2016-07-01 01:56:02 -05:00
mdipierro
46d02a3448 Merge pull request #1374 from niphlod/fix/1364
fixes #1364
2016-07-01 01:55:41 -05:00
mdipierro
a99096d6b3 Merge pull request #1373 from ilvalle/py3_fixes_6
Py3 fixes
2016-07-01 01:55:24 -05:00
Th3R3p0
d95acb6897 Fixed open redirect security vulnerability. The previous filter searched for two forward slashes "//" in the "_next” parameter and if the two forward slashes were found it would check the URI and determine if the hostname matched the hostname of the web server. If not, it would change the next variable to the None. However, browsers don't require two forward slashes. As a feature, browsers accept typos such as http:google.com or http:/google.com and redirect to http://google.com. This can be used to leverage an open redirect attack even with the current filter. This commit fixes the open redirect vulnerability in the _next get parameter. Thanks to jnbrex for helping debug/write the patch for this vulnerability. 2016-06-30 17:24:47 -04:00
Alex Artigues
f87c3e260c Fix next redirect if only one / exists 2016-06-29 20:54:13 -04:00
niphlod
9c8db3f65a corner case - fixes #1363 2016-06-28 23:52:28 +02:00
niphlod
595e37c2de removed web shell 2016-06-28 23:34:41 +02:00
niphlod
0708dd36e7 fixes #1331 (just rocket, really) 2016-06-28 22:00:57 +02:00
niphlod
5e0a53f4c2 fixes #1347 2016-06-28 21:49:23 +02:00
niphlod
4966466509 fixes #1354 2016-06-28 21:46:07 +02:00
niphlod
a96f137e03 fixes #1355 2016-06-28 21:43:31 +02:00
niphlod
955b30a871 fixes #1364 2016-06-28 21:36:59 +02:00
ilvalle
4cdcf8eae0 Since py2.7 compile() supports Win and Mac newlines. Also input in 'exec' mode does not have to end in a newline anymore. 2016-06-28 19:58:25 +02:00
ilvalle
ea337e07d0 p3 fixes in applications 2016-06-28 19:58:20 +02:00
mdipierro
5f80300c5d Merge pull request #1371 from ilvalle/py3_fixes_5
PY3 fixes
2016-06-26 00:32:09 -05:00
mdipierro
0b4b71ea09 Merge branch 'master' of github.com:web2py/web2py 2016-06-26 00:30:42 -05:00
mdipierro
f8f471f51f new cheatsheet 2016-06-26 00:30:25 -05:00
ilvalle
f343fab528 py3 fixes for admin app 2016-06-25 17:36:37 +02:00
ilvalle
d429554c5b fix travis, pip 8.1.2 no longer supports --download-cache option 2016-06-25 13:45:06 +02:00
ilvalle
abf8d9fb27 fix compiled app in py3 2016-06-25 13:27:35 +02:00
ilvalle
8aecaf4514 PY3 fixes and added tests for gluon/admin.py 2016-06-24 22:54:56 +02:00
mdipierro
48350664f0 Merge pull request #1369 from zvolsky/_transl_markmin
cs translation: removed unwanted '@markmin' literal from translated s…
2016-06-22 16:39:08 -05:00
mdipierro
dabe5c4589 Merge pull request #1368 from ilvalle/py3_fixes4
Py3 fixes4
2016-06-22 16:38:59 -05:00
ilvalle
61795bc65e enabled test_web.py in PY3 2016-06-22 19:07:58 +02:00
zvolsky
3bb0299b29 cs translation: removed unwanted '@markmin' literal from translated strings 2016-06-22 12:19:42 +02:00
ilvalle
3270d39596 py3 fixed http.to 2016-06-21 22:24:33 +02:00
ilvalle
476db87335 updated pysimplesoap to current master 2016-06-21 21:25:30 +02:00
mdipierro
1da93676a2 Merge pull request #1367 from ilvalle/py3_fixes_step3
Updated user_agent_parser
2016-06-19 14:15:58 -05:00
ilvalle
d9c7953147 updated user_agent_parser to 1.7.8, fix webclient 2016-06-19 11:49:16 +02:00
mdipierro
0dbd2ea6e5 added quote_template 2016-06-18 10:46:46 -05:00
mdipierro
e33dd01516 DAL v16.06.09 2016-06-18 08:50:56 -05:00
mdipierro
45a376eee9 added extra_mssql_models.py, thanks Kyle Flanagan 2016-06-18 08:12:01 -05:00
mdipierro
ce3f5fbff2 Merge pull request #1365 from niphlod/feature/scheduler_crontab
repeats via cronline expression
2016-06-18 07:49:08 -05:00
mdipierro
338ca6ba5c Merge pull request #1361 from ilvalle/py3_fixes_step2
few py3 fixes
2016-06-18 07:48:39 -05:00
mdipierro
ce3e314360 Merge pull request #1360 from ilvalle/master
fix request.json, close #1337
2016-06-18 07:48:14 -05:00
niphlod
6bb255286a repeats via cronline expression 2016-06-15 21:32:51 +02:00
ilvalle
2aeb063890 enabled test_appadmin, fix markmin2html, fix main.py 2016-06-15 20:17:58 +02:00
ilvalle
0f648eee56 enabled pg8000 pymysql 2016-06-14 18:01:12 +02:00
Oscar Fonts
11fec25927 Don't truncate texts on SQLFORM.grid HTML Export 2016-06-14 11:06:14 +02:00
ilvalle
48209f5bdf fix compileapp 2016-06-13 20:20:49 +02:00
ilvalle
34f753be56 fix languages 2016-06-13 20:20:49 +02:00
ilvalle
a27f6f88ef fix serializers, websocket_messaging 2016-06-13 20:20:49 +02:00
ilvalle
ab2cdd595b fix utils 2016-06-13 20:20:49 +02:00
ilvalle
7259516627 fix tools 2016-06-13 20:20:44 +02:00
ilvalle
180ada57da fix request.json, close #1337 2016-06-13 18:00:14 +02:00
Oscar Fonts
8fdedb7018 Add maxtextlenth option to SQLFORM.grid HTML exporter 2016-06-13 12:17:45 +02:00
mdipierro
a18e0e489f why is session.forget not callable in tests? 2016-06-12 21:08:33 -05:00
mdipierro
dfb0129f09 do not forget a missing session 2016-06-12 20:55:16 -05:00
mdipierro
cadb130518 fixed expose tests 2016-06-12 20:27:20 -05:00
mdipierro
a830f95f70 Merge branch 'ilvalle-py3_fixes' 2016-06-12 20:00:10 -05:00
mdipierro
f4a353960b merged conflicts 2016-06-12 19:59:58 -05:00
mdipierro
c5bafa16dd Merge pull request #1357 from chenl/master
fix issue#1261: security issue: gluon.tools.Expose will follow symlinks
2016-06-12 19:56:40 -05:00
Chen Rotem Levy
3c2ee85295 Merge branch 'issue_1261'
Adding to Expose.__init__(..., follow_symlink_out=False).

If the user didn't override this, and if the OS supports symlinks, we
test that the we will not expose any symlinks that points outside of
self.base.

Expose is not also covered by unittests.
2016-06-11 12:38:21 +03:00
Chen Rotem Levy
9877ad5155 fix in_base for base='/'
If the base directory already ends with '/' the test failed.

It failed because we added an extra '/' to make sure that '/foobar' is
not under '/foo', so ask '/foobar/'.startswith('/foo/').

Whoever when we have the base already start with '/' we might test:
'/foo/bar/'.startwith('/foo//'), and give a false negative.  We
shouldn't have this case, because we normalized the path, but in the
case of the root directory ('/') even a normalized path ends with '/',
and thus when base='/' this function failed.

Some re-factoring was needed to make this base testable.
2016-06-11 12:19:16 +03:00
Chen Rotem Levy
e020395bdc apply pull request #1313
This should have resolved security issue#1261 -- gluon.tools.Expose
symlinks, however it does not deal well with the case where the base
exposed directory is '/'
2016-06-11 11:20:23 +03:00
ilvalle
1f013d76f3 minor few fix 2016-06-10 14:14:40 +02:00
ilvalle
3103226686 revert fcgi changes 2016-06-10 14:14:39 +02:00
mdipierro
15a26c00b1 Merge pull request #1352 from zvolsky/_revert_wiki
revert wiki to earlier (properly working) state
2016-06-07 20:36:52 -05:00
mdipierro
df9928d69c Merge pull request #1349 from zvolsky/_represent_none
represent none
2016-06-07 20:36:01 -05:00
ilvalle
fd850ab46f fix validators, updated gluon/contrib/ipaddr 2016-06-07 19:50:49 +02:00
zvolsky
225a286162 revert wiki to earlier (properly working) state 2016-06-07 15:10:03 +02:00
zvolsky
876508a227 grid: custom representation of None value, in view 2016-06-06 12:43:11 +02:00
zvolsky
0c52f2a561 grid: custom representation of None value 2016-06-06 12:25:06 +02:00
ilvalle
92374741ff fix rewrite, enabled test_router & test_routes 2016-06-04 17:42:36 +02:00
ilvalle
71ba0e515f updated portalocker, few py3 syntax/import fix 2016-06-04 14:07:42 +02:00
ilvalle
dcd24cf88c Updated fpdf to the last version (py3 compatible), fix contrib/appconfig 2016-06-04 09:23:31 +02:00
ilvalle
2f7d76769c typo in globals 2016-06-03 23:44:45 +02:00
mdipierro
154073c3a6 Merge pull request #1341 from nextghost/master
Ignore internal attributes when checking whether new session was changed
2016-06-03 10:04:00 -05:00
mdipierro
14ac911ce7 Merge pull request #1344 from michele-comitini/jwt-renew-fix
Jwt renew fix
2016-06-03 10:02:41 -05:00
mdipierro
1554a29f5f Merge pull request #1345 from niphlod/fix/codecov
should turn off the codecov/changes report
2016-06-03 10:02:09 -05:00
ilvalle
97eb013831 fix test_html and test_template for py3 2016-06-03 11:46:32 +02:00
ilvalle
db8306b5c4 fix iteritems, enabled test_cache & test_dal for 3.5 2016-06-02 17:21:36 +02:00
ilvalle
707330accd Enabled 3.5 on travis 2016-06-02 16:06:49 +02:00
ilvalle
a1fd92b7f8 updated imports in tests 2016-06-02 14:28:21 +02:00
ilvalle
01bab81432 manually adapt few imports 2016-06-01 20:16:30 +02:00
niphlod
850d79c287 should turn off the codecov/changes report 2016-06-01 00:50:01 +02:00
Michele Comitini
67f85fd631 allow token renewal with http authorization header. 2016-05-31 23:55:58 +02:00
ilvalle
aa2bf4134e introduced _compact from pydal 2016-05-31 20:12:50 +02:00
ilvalle
48e10a3793 running libfuturize.fixes.fix_print_with_import 2016-05-30 21:23:40 +02:00
ilvalle
36ca754c77 running libfuturize.fixes.fix_raise 2016-05-30 18:03:48 +02:00
ilvalle
d74413bc16 running lib2to3.fixes.fix_methodattrs 2016-05-30 18:03:48 +02:00
ilvalle
02e0cd187a running lib2to3.fixes.fix_has_key 2016-05-29 08:31:20 +02:00
ilvalle
9588ba690c running lib2to3.fixes.fix_tuple_params 2016-05-29 08:31:20 +02:00
ilvalle
a5599f3eab running lib2to3.fixes.fix_idioms 2016-05-29 08:31:20 +02:00
ilvalle
9b9ed0ad0f running lib2to3.fixes.fix_funcattrs 2016-05-29 08:31:20 +02:00
ilvalle
8074927191 running lib2to3.fixes.fix_renames 2016-05-29 08:31:19 +02:00
ilvalle
35900da19b running lib2to3.fixes.fix_except 2016-05-29 08:31:19 +02:00
ilvalle
14830e8906 running lib2to3.fixes.fix_standarderror 2016-05-29 08:31:19 +02:00
ilvalle
d22222ebea running lib2to3.fixes.fix_reduce 2016-05-29 08:31:19 +02:00
ilvalle
ec8ea53917 running lib2to3.fixes.fix_apply 2016-05-29 07:45:46 +02:00
Martin Doucha
40b8a4d75d Whitespace fix 2016-05-28 22:25:58 +02:00
Martin Doucha
54e443dfad Ignore internal attributes when checking whether new session was changed 2016-05-28 21:54:24 +02:00
ilvalle
8d213a5b87 fix local import in __init__.py 2016-05-27 14:42:22 +02:00
Michele Comitini
95c1a734d1 fix wrong reference to request out of current namespace 2016-05-27 00:23:25 +02:00
mdipierro
cbd8c63b26 Merge pull request #1335 from zvolsky/_breadcrumb_divider
better breadcrumb divider for smartgrid
2016-05-23 22:20:57 -05:00
mdipierro
fec756213d Merge pull request #1336 from cccaballero/master
fixing dictionary changed size error on SQLFORM using extra_fields
2016-05-23 22:19:29 -05:00
Carlos Cesar Caballero Díaz
47b1bf7323 fixing dictionary changed size error on SQLFORM using extra_fields
When uses the extra_fields keyword argument in SQLFORM rises an
"RuntimeError: dictionary changed size during iteration" exception
because is trying to remove a dictionary element while is iterating the
dict
2016-05-23 14:36:10 -04:00
zvolsky
a70e966f0c breadcrumb divider, finished 2016-05-20 19:04:07 +02:00
mdipierro
d1889b922b Merge pull request #1333 from leonelcamara/versionchecks
Removed unnecessary version checks
2016-05-19 18:49:55 -05:00
Leonel Câmara
180ebcd7f1 Removed unnecessary version checks
Fixed 2 memory leaks in restricted.py
2016-05-19 19:03:54 +01:00
mdipierro
56b29553c5 Merge pull request #1330 from oscarfonts/catalan-plurals
Added catalan plural rules
2016-05-14 10:16:39 -05:00
mdipierro
8679ab1777 Merge pull request #1329 from leonelcamara/test_week11
more tests for languages module
2016-05-14 10:16:21 -05:00
mdipierro
73713f2e45 Merge pull request #1328 from niphlod/settings/codecov
added codecov setting file
2016-05-14 10:16:12 -05:00
Oscar Fonts
62f49d0f57 Added catalan plural rules 2016-05-12 16:14:01 +02:00
Leonel Câmara
1029a70d10 more tests for languages module
removed 2.5/2.6 compatibility in test_validators.py
2016-05-12 02:00:14 +01:00
niphlod
c15abd2585 added codecov setting file 2016-05-11 21:38:01 +02:00
mdipierro
be1845ad83 Merge pull request #1327 from leonelcamara/ditch26
Ditch python2.6
2016-05-11 01:35:52 -05:00
mdipierro
5246d808f0 Merge pull request #1326 from michele-comitini/jwt-decorator-fix
make allows_jwt a real decorator. Tests included!
2016-05-11 01:35:44 -05:00
mdipierro
32ac20c1c5 Merge pull request #1325 from gi0baro/issue-1324
Fix #1324
2016-05-11 01:35:30 -05:00
Leonel Câmara
261da3e346 fix setup.py 2016-05-11 01:12:00 +01:00
Leonel Câmara
87a3de22d7 remove ordereddict 2016-05-11 01:03:04 +01:00
Leonel Câmara
a9ee9a6b58 remove simplejson 2016-05-11 00:47:23 +01:00
Leonel Câmara
713fe8e2bc remove 2.6 from CI configs 2016-05-10 23:35:15 +01:00
mdipierro
cda35fd48a R-2.14.6 2016-05-09 19:19:07 -05:00
mdipierro
85c37af1f4 removed unwanted file 2016-05-09 19:11:08 -05:00
Michele Comitini
7d48d6ba03 removed logging leftover 2016-05-10 01:35:22 +02:00
Michele Comitini
4658e172c3 removed forgotten print statement 2016-05-10 01:11:08 +02:00
Michele Comitini
2c26a8c33a make allows_jwt a real decorator. Tests included! 2016-05-10 00:50:33 +02:00
Giovanni Barillari
625c7ae82e Fix #1324 2016-05-09 23:38:52 +02:00
mdipierro
87935a45ba Merge branch 'master' of github.com:web2py/web2py 2016-05-09 00:24:29 -05:00
mdipierro
0692272991 going back to dal 16.03 to prepare for 2.14.6 2016-05-09 00:24:14 -05:00
mdipierro
c9f11c068c Merge pull request #1322 from ShySec/oneall_optimization
simplified oneall dname handling
2016-05-09 00:05:06 -05:00
mdipierro
54b0feeffb Merge pull request #1321 from ShySec/master
fixed timing attack in gluon.utils.compare
2016-05-09 00:04:39 -05:00
mdipierro
8666f993d1 Merge pull request #1320 from niphlod/enhancement/redis_scheduler
sync with main scheduler
2016-05-09 00:03:42 -05:00
kelson
822e68ac16 simplified oneall dname handling 2016-05-06 16:10:19 -04:00
kelson
292af5adc6 fixed timing attack in gluon.utils.compare 2016-05-06 14:14:32 -04:00
niphlod
c6d4fb8f38 sync with main scheduler 2016-05-05 21:36:51 +02:00
mdipierro
82d79e74c6 Merge pull request #1318 from leonelcamara/admin_lockout
Check if host is denied before verifying password
2016-05-04 13:30:14 -05:00
Leonel Câmara
944d8bd8f3 Check if host is denied before verifying password 2016-05-04 19:02:53 +01:00
mdipierro
33c1144e2e fixing merge issue 2016-05-04 09:29:30 -05:00
mdipierro
ca21bb0b9a added contributor Narendra Bhati(security) 2016-05-04 09:28:25 -05:00
mdipierro
a2b98cd6df Merge pull request #1317 from leonelcamara/test_week9
more tests for validators
2016-05-04 09:25:30 -05:00
mdipierro
51c3b633fe remove XSS attack in installing plugin, thanks Nerendra Bhati 2016-05-04 09:21:20 -05:00
mdipierro
1e74c332d0 Merge branch 'master' of github.com:web2py/web2py 2016-05-04 09:12:52 -05:00
mdipierro
4bd002aee9 fixed CSRF in admin enabled/disable. thanks Nerendra Bhati 2016-05-04 09:11:55 -05:00
Leonel Câmara
1b42fe6547 Fixes #1316 2016-05-03 19:17:58 +01:00
Leonel Câmara
810520b3f0 more tests for validators 2016-05-03 02:38:50 +01:00
mdipierro
af18582198 Merge pull request #1315 from niphlod/enhancement/scheduler
can now process tasks with huge_results
2016-05-02 10:16:38 -05:00
mdipierro
2d6ca49675 Merge pull request #1314 from chenl/issue_1310
issue#1310
2016-05-02 10:16:03 -05:00
mdipierro
db36e4380d Merge pull request #1308 from leonelcamara/test_week8
partial tests for appadmin, testing a bunch of other stuff in the pro…
2016-05-02 10:13:54 -05:00
niphlod
2031a43058 can now process tasks with huge_results
Added tests, too. Cleanups leftovers better, so fixes #1304
2016-05-01 22:01:49 +02:00
Chen Rotem Levy
07d764f3c6 issue#1310
undo PR#1194
2016-04-30 13:41:11 +03:00
Leonel Câmara
b8b63302f4 add test_appadmin to tests/__init__.py 2016-04-26 17:17:19 +01:00
Leonel Câmara
fa1af36adf partial tests for appadmin, testing a bunch of other stuff in the process 2016-04-26 04:31:22 +01:00
mdipierro
2fc1378399 Merge pull request #1307 from zvolsky/master
script for language files update has new param to update existing tra…
2016-04-25 20:32:24 -05:00
zvolsky
b6ee82bbde script for language files update has new param to update existing translations 2016-04-25 11:06:02 +02:00
mdipierro
8ed6736e82 Merge pull request #1306 from BuhtigithuB/improve/html-and-it-tests
improve html.py, new url_encode=True/False test, review/close #1279
2016-04-24 18:44:38 -05:00
mdipierro
99b083ad43 Merge pull request #1305 from leonelcamara/test_week7
100% coverage for recfile
2016-04-24 18:43:31 -05:00
Hardirc
c6b844a3e4 minor improve html.py, new url_encode=True/False test, review and close 1279 2016-04-24 09:47:57 -04:00
Leonel Câmara
c7bb69a0b0 consistent naming 2016-04-21 20:12:00 +01:00
Leonel Câmara
8b402b491c 100% coverage for recfile 2016-04-21 20:01:23 +01:00
mdipierro
735d79c211 latest pydal fixed connection issue 2016-04-19 22:45:49 -05:00
mdipierro
4177b4fe58 included fixes from dal 2016-04-19 11:42:24 -05:00
mdipierro
82aec9ba39 new fixes from Giovanni 2016-04-19 11:30:40 -05:00
Giovanni Barillari
dc28664270 Tracking pydal 85c530c 2016-04-19 17:41:29 +02:00
Giovanni Barillari
78bb8e9b26 Updated to latest pydal, fixed IS_IN_DB validator for new pydal 2016-04-19 17:24:09 +02:00
mdipierro
0a633236e5 pydal fixes, thanks Giovanni 2016-04-19 08:17:55 -05:00
mdipierro
42d1544478 new experimental dal 2016-04-18 21:28:27 -05:00
mdipierro
85819a5f83 Merge pull request #1299 from BuhtigithuB/improve/auth-tests
New Auth tests
2016-04-17 21:27:35 -05:00
mdipierro
9ca1c28db3 Merge pull request #1298 from BuhtigithuB/new/prettydate-test-suite
New test suite for prettydate() + fix wrong number of days for month
2016-04-17 21:27:18 -05:00
Hardirc
37fa90fbd2 .has_..., .add_..., .del_permission tests cases 2016-04-17 13:28:41 -04:00
Hardirc
2f0de8d8a0 New Auth tests & del_membership('role') api harmonization 2016-04-17 11:35:17 -04:00
Hardirc
70a0209e31 Reorder tests cases and make inventory + news tests 2016-04-16 21:33:24 -04:00
Hardirc
92b3c8f777 New Auth tests 2016-04-16 19:35:06 -04:00
Hardirc
d622a8aa66 New test suite for prettydate() + fix wrong number of days for month 2016-04-16 14:54:34 -04:00
mdipierro
2a2771c4cc Merge pull request #1297 from BuhtigithuB/update/markdown2-contrib
Update markdown2.py 2.2.4 -> 2.3.1 (latest release)
2016-04-15 22:10:22 -05:00
mdipierro
4fbd612d1b Merge pull request #1296 from BuhtigithuB/enhancement/pep8-tools-py
Enhancement tools.py PEP8
2016-04-15 22:10:12 -05:00
mdipierro
190c77e0e7 Merge pull request #1295 from BuhtigithuB/refactor/auth-tools-tests
Refactor Auth tests, new test, old implementation commented for now
2016-04-15 22:09:44 -05:00
Richard Vézina
4fa8b3ed67 Update markdown2.py 2.2.4 -> 2.3.1 (latest release) 2016-04-15 12:33:04 -04:00
Richard Vézina
f109be363d Enhancement tools.py PEP8 2016-04-14 11:17:27 -04:00
Hardirc
b7cc1b2db5 Refactor Auth tests, new tests, old implementation commented for now 2016-04-14 03:01:15 -04:00
mdipierro
81d0291ce2 R-2.14.5 2016-04-13 22:22:39 -05:00
mdipierro
894ff3c140 Merge pull request #1294 from leonelcamara/fix_1274
fixes #1274
2016-04-13 22:16:46 -05:00
mdipierro
216ce5507c Merge pull request #1293 from leonelcamara/fix_1266
fixes #1266 and adds tests to make sure it doesn't happen again
2016-04-13 22:15:53 -05:00
mdipierro
068aecff93 Merge pull request #1292 from BuhtigithuB/add-more-html-test
Some more coverage for XML() and DIV()
2016-04-13 22:15:22 -05:00
Leonel Câmara
59cbe99347 pep8 and force travis to rebuild 2016-04-14 04:13:18 +01:00
Leonel Câmara
bdbc053285 fixes #1274 2016-04-14 03:57:20 +01:00
Leonel Câmara
d746d43be5 pep8 and make travis run again 2016-04-14 01:21:23 +01:00
Leonel Câmara
9a3e73031b fixes #1266 and adds tests to make sure it doesn't happen again 2016-04-14 01:02:25 +01:00
Richard Vézina
0468c16bc2 Some more coverage for XML() and DIV() 2016-04-13 11:44:16 -04:00
mdipierro
8c5858b6b7 fixed merge issue 2016-04-13 08:41:09 -05:00
mdipierro
6400e28a85 fixed stupid 2016-04-13 08:40:19 -05:00
mdipierro
3e46d50aa1 Merge pull request #1290 from carpaIdea/patch-3
box-sizing best practice
2016-04-13 08:33:29 -05:00
mdipierro
cb94fde80b Merge pull request #1289 from carpaIdea/patch-2
<main> semantic element IE fix
2016-04-13 08:30:20 -05:00
mdipierro
98593eefce Merge pull request #1291 from leonelcamara/test_week6
Test emails with alternative text and html
2016-04-13 08:27:33 -05:00
Leonel Câmara
4bbfe70927 install a more modern pypy version 2016-04-13 14:17:30 +01:00
Leonel Câmara
02a0d1c9b0 minor reorder 2016-04-13 14:01:36 +01:00
Leonel Câmara
2bf0ad9268 test emails with alternative text and html 2016-04-13 14:00:33 +01:00
carpaIdea
2e63b7637a box-sizing best practice
This code was updated to match new box-sizing best practices. Also prefixes are pretty much dead. (quote from http://www.paulirish.com/2012/box-sizing-border-box-ftw/).

More info on https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/
2016-04-13 00:53:42 +02:00
mdipierro
67485d16a5 R-2.14.4 2016-04-12 16:21:05 -05:00
carpaIdea
a9c5cf3072 <main> semantic element IE fix
Some versions of Internet Explorer consider the <main> semantic element as "unknown". So its initial value is "inline".If we want the behavior of the <main> element to be the same as in other browsers, we must set it explicitly as a "block."
2016-04-12 23:07:27 +02:00
mdipierro
eba8ad4b55 fixed CHANGELOG 2016-04-12 15:45:54 -05:00
mdipierro
4ed6fb7ed9 Merge pull request #1288 from carpaIdea/patch-1
Missing <!DOCTYPE html>
2016-04-12 15:44:19 -05:00
carpaIdea
294c67194f Missing <!DOCTYPE html>
Of course if there is not any intentional reason to turn on "quirks mode" in browsers.

https://developer.mozilla.org/en-US/docs/Web/CSS/Common_CSS_Questions#Why_doesn't_my_CSS_which_is_valid_render_correctly
https://developer.mozilla.org/it/docs/Quirks_Mode_and_Standards_Mode
2016-04-12 22:24:30 +02:00
mdipierro
70f793b422 Merge pull request #1287 from leonelcamara/test_week6
Test week6
2016-04-12 11:14:14 -05:00
Leonel Câmara
9552d9d6d0 fixed sort=True test 2016-04-12 16:28:33 +01:00
Leonel Câmara
9ead66b6db test IS_IN_DB label is a Field and self.sort = True 2016-04-12 16:00:33 +01:00
Leonel Câmara
00c65ad160 Complete coverage for Mail.Attachment 2016-04-12 15:28:48 +01:00
Leonel Câmara
b5c8b3ad25 closes #1286 2016-04-12 15:10:14 +01:00
mdipierro
5ca65d55d2 Merge pull request #1284 from BuhtigithuB/more-markmin-pep8
More markmin pep8
2016-04-11 13:38:54 -05:00
mdipierro
3f200fdc22 Merge pull request #1283 from leonelcamara/grid_issues
closes #1188
2016-04-11 13:38:37 -05:00
Hardirc
409c973dc4 Enhance markmin2pdf.py PEP8 2016-04-10 09:36:06 -04:00
Hardirc
59a194842d Enhance markmin2latex.py PEP8 2016-04-10 09:34:29 -04:00
Leonel Câmara
ee8b11db2c closes #1188 2016-04-10 12:08:25 +01:00
mdipierro
8ef04ac425 Merge pull request #1282 from BuhtigithuB/Feature/heading-anchor
Feature/heading anchor
2016-04-09 18:39:39 -05:00
mdipierro
83cf098c07 fixed stupid.css and impersonate 2016-04-09 10:30:31 -05:00
mdipierro
70b41fa15e Merge pull request #1280 from BuhtigithuB/pep8-gluon-html-py
Enhance gluon/html.py PEP8
2016-04-08 23:37:54 -05:00
mdipierro
56af81f247 Merge pull request #1278 from BuhtigithuB/pep8-welcome
Pep8 welcome
2016-04-08 23:37:32 -05:00
mdipierro
7fd30d8360 Merge pull request #1276 from BuhtigithuB/Improve/web2py-com-display
Improve/web2py com display
2016-04-08 23:35:43 -05:00
mdipierro
e1aefa2307 Merge pull request #1275 from BuhtigithuB/Improve/gluon-tools-py
PEP8 Recaptcha/2 docstring
2016-04-08 23:35:10 -05:00
mdipierro
7a2316ec9a Merge pull request #1260 from BuhtigithuB/add-test-sqlform
SQLFORM() basic check
2016-04-08 23:34:51 -05:00
Hardirc
e48e47beb2 Enhance markmin2html.py contrib PEP8 2016-04-08 22:12:43 -04:00
Hardirc
864c308246 Enhance gluon/html.py PEP8 2016-04-08 21:11:25 -04:00
Hardirc
994f3e7ae4 Enhance welcome menu.py PEP8 2016-04-08 20:17:35 -04:00
Hardirc
1d2f74440e Enhance welcome routes.example.py PEP8 2016-04-08 20:13:58 -04:00
Hardirc
704ceec16f Enhance welcome controllers/default.py PEP8 2016-04-08 20:13:30 -04:00
Hardirc
038e25c259 Enhance welcome db.py PEP8 2016-04-08 20:05:21 -04:00
Richard Vézina
c3aa02b3ce Improve welcome (web2py.com) site aesthetic 2016-04-08 15:16:58 -04:00
Richard Vézina
5cc4487d8c Improve PEP8 download.html 2016-04-08 14:17:56 -04:00
Richard Vézina
d50e6aab6b Improve default.py PEP8 2016-04-08 11:52:09 -04:00
Richard Vézina
1d21f45e3e PEP8 Recaptcha/2 docstring 2016-04-07 10:19:57 -04:00
mdipierro
99a323c7ad Merge pull request #1272 from BuhtigithuB/new-logout-bare
New logout_bare() for shell logout and refactor test using it
2016-04-07 09:17:19 -05:00
Hardirc
e0d86462c8 New logout_bare() for shell logout and refactor test using it 2016-04-06 22:46:24 -04:00
mdipierro
ff0d10ac4f Merge pull request #1271 from leonelcamara/delete_unused_reserved
delete unused reserved_sql_keywords.py because the DAL uses this one …
2016-04-06 20:58:05 -05:00
mdipierro
eee7be75c8 Merge pull request #1265 from BuhtigithuB/improve-tools-tests-some-more
Improve tools tests some more
2016-04-06 20:57:30 -05:00
mdipierro
3c69716672 Merge pull request #1270 from leonelcamara/test_week5b
Test Mail.Attachment sending test_tools.py itself
2016-04-06 20:57:06 -05:00
Leonel Câmara
ad4b0eee54 delete unused reserved_sql_keywords.py because the DAL uses this one pydal/contrib/reserved_sql_keywords.py 2016-04-06 23:06:57 +01:00
Richard Vézina
0128ce3a93 Make test_login_bare() works, new test_impersonate() 2016-04-06 16:58:58 -04:00
Leonel Câmara
0629df71ef Test Mail.Attachment sending test_tools.py itself 2016-04-06 20:04:21 +01:00
mdipierro
4d1a4c48e6 Merge pull request #1268 from mbelletti/fix/cas_login
Fix #1267 cas_login
2016-04-06 13:49:28 -05:00
Massimiliano Belletti
2ffdb716cd Fix #1267 cas_login 2016-04-06 17:06:23 +02:00
mdipierro
40f04de9d2 fixed scripts/setup-web2py-nginx-uwsgi-ubuntu.sh 2016-04-06 09:20:13 -05:00
mdipierro
52615fbca7 Merge pull request #1263 from niphlod/tests/scheduler
initial tests for scheduler.py, plus a minor fix for JobGraph
2016-04-05 17:00:00 -05:00
niphlod
6abb78c559 initial tests for scheduler.py 2016-04-04 22:58:42 +02:00
Hardirc
db701ffea8 correct unproperly generated SQLFORM methods and basic tests 2016-04-03 16:24:13 -04:00
mdipierro
0804c28331 Merge pull request #1259 from BuhtigithuB/new-test-sqlform
let start testing sqlhtml.py
2016-04-02 15:02:02 -05:00
mdipierro
24bc51447c Merge pull request #1257 from BuhtigithuB/improve-tools-tests
Improve tools tests
2016-04-02 15:00:41 -05:00
mdipierro
ccbbdc2493 Merge branch 'leonelcamara-prettier_examples' 2016-04-02 14:59:23 -05:00
mdipierro
d94e8415c7 reverted stupid 2016-04-02 14:57:36 -05:00
mdipierro
0a62e86156 Merge pull request #1254 from leonelcamara/test_week4b
Seriously increase template.py coverage
2016-04-02 14:53:39 -05:00
mdipierro
5744c06f59 Merge pull request #1253 from leonelcamara/test_week4
More test coverage for validators.py
2016-04-02 14:52:42 -05:00
mdipierro
947f92774b Merge pull request #1252 from BuhtigithuB/improve-test-chache
Improve test chache
2016-04-02 14:52:26 -05:00
Hardirc
4001407add let start testing sqlhtml.py 2016-04-02 15:49:18 -04:00
mdipierro
46ffaa6aea improved search form 2016-04-02 14:48:03 -05:00
mdipierro
ba2be80080 updated stupic.css and suport page 2016-04-02 14:35:28 -05:00
Richard Vézina
3a9221a2b9 Reach fully some partially hit lines 2016-03-31 17:00:50 -04:00
Richard Vézina
e0eb425223 Little improvement of tools.py 2016-03-31 16:25:55 -04:00
Richard Vézina
f7ad31f066 Refactor TestAuth() with setUp() and add test case 2016-03-31 16:25:02 -04:00
Leonel Câmara
d0f6ef4783 made stuff prettier
added myself to the contributor list :P
2016-03-31 00:29:28 +01:00
Richard Vézina
104d616cb9 Reorder test case and make inventory of what missing 2016-03-30 16:32:37 -04:00
Richard Vézina
a8703270da PEP8 enhancement 2016-03-30 16:20:02 -04:00
Leonel Câmara
ad57c3c613 test block extend, super, delimiters, etc. 2016-03-30 02:33:29 +01:00
Leonel Câmara
5c292640ba Complete coverage for IS_IN_SET
Removed unreachable code in IS_IN_SET
        if failures and self.theset:
            if self.multiple and (value is None or value == '')
It's impossible to have *failures* and have value be None or '' at the same time
2016-03-28 14:47:58 +01:00
Leonel Câmara
5cbf381a2c More test coverage for validators.py
Fixed a bug in IS_EMAIL throwing exceptions when asked to validate anything other than a string which was problematic for ANY_OF
Fixed a bug in ANY_OF.formatter where it was trying to format with a validator that didn't validate
2016-03-27 14:23:24 +01:00
mdipierro
a0bbd7885a Merge branch 'master' of github.com:web2py/web2py 2016-03-26 17:56:23 -05:00
mdipierro
c2ce90a1fe R-2.14.3 2016-03-26 17:55:52 -05:00
mdipierro
197b018534 fixed stupid.css again 2016-03-26 17:54:11 -05:00
Hardirc
9ac1e7188f tests inventory and reordering + PEP8 enhancement 2016-03-26 13:19:29 -04:00
Hardirc
58a8ba067c cache.py PEP8 enhancement 2016-03-26 13:11:27 -04:00
mdipierro
060aeff867 Merge pull request #1251 from BuhtigithuB/add-even-more-test-over-html-py
More coverage and some PEP8 enhencement to html.py
2016-03-26 00:00:43 -05:00
mdipierro
d4572c5f38 Merge branch 'master' of github.com:web2py/web2py 2016-03-25 23:57:24 -05:00
mdipierro
46dc83a1bb synced to latest stupid.css 2016-03-25 23:57:13 -05:00
Hardirc
f414356b67 More coverage and some PEP8 enhencement to html.py 2016-03-26 00:44:28 -04:00
mdipierro
460a017bab Merge pull request #1250 from Pierre-Thibault/strange_lines
Nonsense sys.exc_info parameter of traceback.format_exc calls.
2016-03-25 18:07:25 -05:00
mdipierro
0b966d7c0a Merge pull request #1249 from leonelcamara/patch-1
imageutils.py missing comma bug
2016-03-25 18:06:56 -05:00
Pierre Thibault
d2d16d4081 I was forgetting line 200. 2016-03-25 15:54:01 -04:00
Pierre Thibault
ebcf6e5671 Nonsense sys.exc_info parameter of traceback.format_exc calls. 2016-03-25 15:48:58 -04:00
Leonel Câmara
778cc3902b Update imageutils.py
missing comma
2016-03-25 12:45:33 +00:00
mdipierro
32650f0cbf R-2.14.2 2016-03-24 17:44:41 -05:00
mdipierro
8f8ef4cca5 fixed sessions for long keys 2016-03-24 16:58:04 -05:00
mdipierro
c9e92fc686 restored pickles in sessions 2016-03-24 16:50:02 -05:00
mdipierro
0820926b50 more secure sessions in cookies using json 2016-03-24 16:46:51 -05:00
mdipierro
1856c9dc7a fixed changelog 2016-03-24 12:33:43 -05:00
mdipierro
973bb4a16f R-2.14.1 2016-03-24 12:20:58 -05:00
mdipierro
2fa54f069c Merge pull request #1246 from BuhtigithuB/improve-test-validators
Improve PEP8 just a bit + more coverage
2016-03-24 12:10:17 -05:00
mdipierro
b11260d2e2 Merge pull request #1244 from mbelletti/fix/admin_enable_disable_apps
Fix missing w2p_ajax_disable_with_message #1234
2016-03-24 12:10:01 -05:00
mdipierro
a6a9b004ea Merge pull request #1235 from kjkuan/avoid-query-per-row-for-virtual-fields
Avoid issuing a separate sql query for each row in sqlform grid search results, for virtual fields
2016-03-24 12:09:36 -05:00
mdipierro
6ed204301d ok dropped backward compatibility in redis_*.py 2016-03-24 12:08:43 -05:00
Richard Vézina
52392a10ae Improve PEP8 just a bit + more coverage 2016-03-24 10:44:37 -04:00
Jack Kuan
6d68a40ddf Fix to work in cases, in which the query for the grid is not a join. 2016-03-24 10:25:37 -04:00
Jack Kuan
51bf802978 When deriving the value for a virtual field in a sqlform grid,
avoid issuing a separate sql query for each row found in the search
results.
2016-03-24 10:25:37 -04:00
Massimiliano Belletti
34267b7673 Fix missing w2p_ajax_disable_with_message #1234 2016-03-24 11:17:59 +01:00
mdipierro
26eb5e6f38 Merge pull request #1242 from BuhtigithuB/fix-assert-raise-test-html
fix some assertRaises leave commented + more coverage
2016-03-24 03:03:24 -05:00
mdipierro
13964c2c9b Merge pull request #1241 from gi0baro/master
Updated pyDAL to 16.03
2016-03-24 03:03:03 -05:00
mdipierro
6a876fffc2 Merge pull request #1240 from BuhtigithuB/add-utils-test
test_utils inventory and new tests
2016-03-24 03:02:50 -05:00
mdipierro
cd7850cc36 Merge pull request #1239 from BuhtigithuB/rework-fileutils-tests
rework test_fileutils.py mostly
2016-03-24 03:02:34 -05:00
Hardirc
e4705dd48a fix some assertRaises leave commented + more coverage 2016-03-24 03:09:47 -04:00
Richard Vézina
2ef079289b test_utils inventory and new tests 2016-03-24 01:59:39 -04:00
mdipierro
76e95a9f1c edited CHANGELOG 2016-03-23 19:32:23 -05:00
mdipierro
4c5664f701 backward compatible syntax for redis 2016-03-23 19:14:37 -05:00
mdipierro
cafba3fbe2 requires 2.14.1 2016-03-23 18:52:40 -05:00
Giovanni Barillari
8cb6678505 Updated pyDAL to 16.03 2016-03-24 00:38:48 +01:00
Richard Vézina
9fabfaac96 rework test_fileutils.py mostly 2016-03-23 14:32:14 -04:00
mdipierro
797ade202f Merge pull request #1238 from BuhtigithuB/add-more-test-over-html-py
BEAUTIFY, MENU, MARKMIN and ASSIGNJS basic tests and attempt ASSIGNJS…
2016-03-23 11:34:58 -05:00
Hardirc
dda81d1b95 SELECT('Option 1', 'Option 2') what else... 2016-03-23 00:25:56 -04:00
Hardirc
13ed29ffc3 OPTGROUP with OPTION 2016-03-23 00:18:17 -04:00
Hardirc
785276d294 some more corner cases for SELECT 2016-03-23 00:16:27 -04:00
Hardirc
52f634cb58 some more corner cases for TEXTAREA and commented DIV SyntaxError 2016-03-22 23:50:23 -04:00
Hardirc
f921b24a95 SELECT corner cases with option, multiple and selected 2016-03-22 23:25:37 -04:00
Hardirc
753c54dbfc HTML corner case for doctype=CustomDocType 2016-03-22 23:11:45 -04:00
Hardirc
89cf314358 XHTML corner tests for doctype=None/strict/transitional/frameset/xmlns 2016-03-22 22:47:59 -04:00
Hardirc
9299ecb64d HTML corner tests for doctype=stric/transitional/frameset/html5/None 2016-03-22 22:40:06 -04:00
Hardirc
94afe61477 BEAUTIFY, MENU, MARKMIN and ASSIGNJS basic tests and attempt ASSIGNJS documentation 2016-03-22 22:27:21 -04:00
mdipierro
a22f56ca0c removed unwanted print statements 2016-03-22 17:55:29 -05:00
mdipierro
656c490a21 Merge pull request #1232 from BuhtigithuB/improve-grib-button-display
a space between grid button icon and text is much more beautiful
2016-03-22 17:15:25 -05:00
mdipierro
8859ef04d3 Merge pull request #1231 from leonelcamara/test_week3b
tests for basic Mail functionality
2016-03-22 17:15:06 -05:00
mdipierro
5cf835d856 fixed session_cookie_key leak 2016-03-21 17:25:16 -05:00
mdipierro
6a569bf56e restored some of the deleted files 2016-03-21 10:37:36 -05:00
mdipierro
bd6115ad62 fixed Host header vulnerability #1196 2016-03-21 01:15:46 -05:00
Hardirc
3a265e3111 a space between grid button icon and text is much more beautiful 2016-03-20 14:05:40 -04:00
Leonel Câmara
78fc14df81 minor - pep8 and naming consistency 2016-03-20 12:46:26 +00:00
Leonel Câmara
4311820494 tests for basic Mail functionality 2016-03-20 12:33:38 +00:00
mdipierro
d1094e7b0c 2.14.1.beta 2016-03-19 17:16:01 -05:00
mdipierro
dbbbd44642 fixed space in bootstrap forms 2016-03-19 17:10:44 -05:00
mdipierro
fa9d1ccb8b fixed color or calendar popup 2016-03-19 17:05:43 -05:00
mdipierro
e6fad4f007 fixed default validators 2016-03-19 17:00:35 -05:00
mdipierro
23292754e3 fixed gae logging issue 2016-03-19 15:10:19 -05:00
mdipierro
dcd7f8b46c no more copy of the logfile, thanks Luca 2016-03-19 14:29:01 -05:00
mdipierro
7fd67c4e2e fixed default validators ofr string and boolean 2016-03-19 14:15:08 -05:00
mdipierro
ec3ae8211f possibly fixed #1162, validation of required notnull fields, hope this does not break something else 2016-03-19 13:39:27 -05:00
mdipierro
e8c0e0df92 #1192 again, going it the way Anthony suggests 2016-03-19 13:24:06 -05:00
mdipierro
7f9262f8f8 partially addressed issue #1192, comments there 2016-03-19 13:10:23 -05:00
mdipierro
11da1ed19a fixed issue #1206, translate T.M 2016-03-19 13:02:45 -05:00
mdipierro
9735477c35 requires version 2016-03-19 12:05:19 -05:00
mdipierro
f6f946f867 Merge pull request #1230 from leonelcamara/test_week3
test_IS_IMAGE and more
2016-03-19 11:29:58 -05:00
Leonel Câmara
8683b0680d add test for something that is NOT an image 2016-03-19 14:55:16 +00:00
Leonel Câmara
fbb5776432 test_IS_IMAGE
Removed unused and undocumented IS_IN_SUBSET
Fixed _options IS_EMPTY_OR not passing arguments to the other options method
Some tests for formatters
2016-03-19 12:52:48 +00:00
mdipierro
92b4bc4f94 fixed #778 PRE(repr()) in admin, thanks Simone 2016-03-19 04:08:33 -05:00
mdipierro
d886bf759e removed lots of junk from scripts folder 2016-03-19 04:02:22 -05:00
mdipierro
d5d25e8110 jquery 1.12.2 2016-03-18 20:49:19 -05:00
mdipierro
86c70df1e7 updated style and spacing 2016-03-18 20:47:59 -05:00
mdipierro
b6d923753a Merge pull request #1228 from cvaroqui/master
LDAP auth login method enhancements
2016-03-18 20:33:56 -05:00
mdipierro
d4cad7634c Merge pull request #1227 from BuhtigithuB/update-feedparser-contrib
Update feedparser.py 5.1.3 -> 5.2.1
2016-03-18 20:33:24 -05:00
mdipierro
45c28b1d76 Merge pull request #1226 from BuhtigithuB/patch-1
Delete obsolete comment left behind
2016-03-18 20:32:39 -05:00
mdipierro
b978bb90de Merge pull request #1225 from BuhtigithuB/pep8-test-web
Improve test_web.py PEP8
2016-03-18 20:32:16 -05:00
mdipierro
e76ecec14f Merge pull request #1224 from BuhtigithuB/pep8-html-py
Improve PEP8
2016-03-18 20:31:15 -05:00
mdipierro
8ce528327c Merge pull request #1164 from BuhtigithuB/fix/flash-w2p-flash
flash -> w2p_flash
2016-03-18 20:26:33 -05:00
mdipierro
fe0e23f4b9 Merge pull request #1223 from BuhtigithuB/add-missing-helpers-test
Add missing helpers test
2016-03-18 20:25:42 -05:00
mdipierro
e05da97b1d Merge branch 'master' of github.com:web2py/web2py 2016-03-18 19:38:22 -05:00
mdipierro
5290308dea global options are back 2016-03-18 19:37:46 -05:00
Christophe Varoqui
5817a1893b LDAP auth login method enhancements
1/
Allow user to pass a group mapping in manage_groups=True mode.
A group mapping is a structure like:

{
  "ldap_grp1": ["web2py_grp1", "web2py_grp2"],
  "ldap_grp2": ["ldap_grp2", "web2py_grp3"],
}

After fetching the ldap user's ldap groups, the list entries are
translated, before janitoring the auth_group and auth_membership
tables.

2/
Allow to define a callback to execute if the auth_group or
auth_membership tables are changed.

Typical use-case are cache flushing and app-driven replication.
2016-03-18 21:24:08 +01:00
Richard Vézina
aa2e302936 Update feedparser.py 5.1.3 -> 5.2.1 2016-03-18 12:04:27 -04:00
Hardirc
d02755eac2 add basic tests for html.py 2016-03-17 11:57:08 -04:00
BuhtigithuB
d037eaab44 Delete obsolete comment left behind
Comment at L111 :
         # COMMENTED BECAUSE FAILS BUT WHY?

Seems left behind and not useful anymore
2016-03-16 16:58:24 -04:00
Richard Vézina
9aa5995924 Improve test_web.py PEP8 2016-03-16 16:43:24 -04:00
Richard Vézina
a981ca52e8 Improve PEP8 2016-03-16 09:38:26 -04:00
mdipierro
327c40cd17 Merge pull request #1218 from leonelcamara/test_week2
Tests for IS_IN_DB, IS_NOT_IN_DB, IS_URL (also tests IS_HTTP_URL IS_G…
2016-03-15 11:54:25 -05:00
mdipierro
f9745e8a63 Merge pull request #1217 from niphlod/fix/redis_docstrings
fixes just docstrings about usage
2016-03-15 11:53:44 -05:00
mdipierro
51ce35c4e5 Merge pull request #1216 from BuhtigithuB/improve-rocket-test
create test_rocket.py with TODO inside about pathoc tests
2016-03-15 11:53:29 -05:00
mdipierro
0f7e4d774b Merge pull request #1215 from BuhtigithuB/improve-helper-test
Improve helper test
2016-03-15 11:53:11 -05:00
Richard Vézina
6e6612a57d add a todo about remain test() which may be deleted 2016-03-15 12:41:08 -04:00
Richard Vézina
83a3149849 Order tests in test_html.py todo for missing test + add many missing tests 2016-03-15 12:40:13 -04:00
Leonel Câmara
98d33bdded Tests for IS_IN_DB, IS_NOT_IN_DB, IS_URL (also tests IS_HTTP_URL IS_GENERIC_URL) 2016-03-14 23:59:08 +00:00
mdipierro
f370187332 removed double json.loads(body), thanks Simone 2016-03-14 18:03:54 -05:00
niphlod
1b15b0c6dc fixes just docstrings about usage 2016-03-14 23:32:53 +01:00
mdipierro
507c3d6c33 fixed typo 2016-03-14 15:20:08 -05:00
mdipierro
e62069c8b7 another error due to removing global settings from request 2016-03-14 15:13:10 -05:00
mdipierro
d94ea6b295 simplified beautify example 2016-03-14 15:08:18 -05:00
mdipierro
9533978b37 fixed error in previous commit 2016-03-14 14:57:21 -05:00
mdipierro
9706d125b4 DO NOT LEAK GLOBALS SETTINGS INTO request object 2016-03-14 14:52:41 -05:00
Richard Vézina
01aa9de919 create test_rocket.py with TODO inside about pathoc tests 2016-03-14 15:28:50 -04:00
Richard Vézina
55994c489b Improve test naming convention test_ 2016-03-14 15:09:33 -04:00
Richard Vézina
983627daa4 Improve PEP8 test_html.py 2016-03-14 15:02:40 -04:00
mdipierro
7c299936e4 plugins link broken 2016-03-14 13:57:59 -05:00
mdipierro
df55f52d8f fixed #1187 Field(.)Virtual typo, thanks RekGRpth 2016-03-14 12:45:01 -05:00
mdipierro
c81f1fd6c8 reverting previous commit 2016-03-14 12:34:09 -05:00
mdipierro
f15dd4b6e5 fixed #1204, updating session when add_membership 2016-03-14 12:32:34 -05:00
mdipierro
e9e61cbca4 fixed #1213, custom password field name 2016-03-14 12:27:37 -05:00
mdipierro
700821e372 Merge pull request #1209 from zvolsky/transl_update_script
new script to update untranslated messages from other language file
2016-03-14 12:18:05 -05:00
mdipierro
1d04f8837e resorted tests as suggested by BuhtigithuB 2016-03-14 12:16:52 -05:00
mdipierro
a375e047e9 Leonel new tests gluon/tests/test_validators.py 2016-03-14 12:04:47 -05:00
mdipierro
fe6b222aaf Merge pull request #1212 from BuhtigithuB/improve-validators-test
Order tests to match validators.py and flag missing tests
2016-03-14 11:54:18 -05:00
mdipierro
0b5bb9b996 Merge pull request #1210 from zvolsky/nginx_uwsgi
nginx/ubuntu deploy script: added uWSGI Emperor configuration
2016-03-14 11:52:49 -05:00
mdipierro
be4df0dee7 Merge pull request #1208 from zvolsky/czech_translation
updated czech translation (in admin and welcome)
2016-03-14 11:51:10 -05:00
mdipierro
d877e8b6d0 Merge pull request #1207 from niphlod/fix/redis_scheduler
fixes the same bugs reported in #1191 for the "standard" scheduler
2016-03-14 11:50:49 -05:00
Richard Vézina
2531c2c640 Improve PEP8 2016-03-10 22:09:38 -05:00
Richard Vézina
eca300af32 Order tests to match validators.py and flag missing tests 2016-03-10 21:56:46 -05:00
zvolsky
43c60df371 nginx/ubuntu deploy script: added uWSGI Emperor configuration 2016-03-10 10:20:36 +01:00
zvolsky
cdac608efc new script to update untranslated messages from other language file 2016-03-10 09:48:04 +01:00
zvolsky
3311486b14 updated czech translation (in admin and welcome) 2016-03-10 09:35:18 +01:00
niphlod
038d0d17a4 fixes the same bugs reported in #1191 for the "standard" scheduler 2016-03-10 00:01:39 +01:00
mdipierro
3999fd80f8 removed unwanted icons 2016-03-09 12:41:12 -06:00
mdipierro
2db3975a32 social icons 2016-03-09 12:37:15 -06:00
mdipierro
ebe3434a86 fixed commit error 2016-03-09 11:54:27 -06:00
mdipierro
b487583f92 admin2 - experimental 2016-03-09 11:53:07 -06:00
mdipierro
702e7cbea2 added missing file 2016-03-09 11:50:48 -06:00
mdipierro
18a901cce4 fixed buttons in quick examples 2016-03-09 09:44:51 -06:00
mdipierro
f23115cb9c better spacing and buttons examples 2016-03-09 09:35:01 -06:00
mdipierro
ea5e86e11e powered by fixed 2016-03-09 09:25:52 -06:00
mdipierro
db223dc70a examples in stupid.css 2016-03-09 09:24:47 -06:00
mdipierro
bcc4ae2ec6 remporarily addressing issue #1203, thanks Simone 2016-03-08 17:22:02 -06:00
mdipierro
4b81f721ac Merge branch 'master' of github.com:web2py/web2py 2016-03-08 16:44:05 -06:00
mdipierro
66f231eb4b Merge pull request #1193 from CzechErface/master
Fixed a bug whereby calling 'delete_record()' on a row object caused …
2016-03-08 16:39:54 -06:00
mdipierro
5fc9517803 Merge pull request #1194 from chenl/master
invalid view for purely compiled app
2016-03-08 16:38:34 -06:00
mdipierro
98294e0c69 Merge pull request #1199 from boriscougar/master
Update imageutils.py
2016-03-08 16:37:20 -06:00
mdipierro
5e28112eda new welcome css 2016-03-02 08:47:58 -06:00
mdipierro
dc5cac07e1 fixed bs3 form alignment 2016-03-01 23:39:08 -06:00
Boris Aramis Aguilar Rodríguez
8058dc2ce6 Update imageutils.py
Adding a padding statement into imageutils, the goal is to allow a padding transparent/white border on pictures when being resized in different aspect ratio.
2016-03-01 20:24:28 -06:00
mdipierro
3808b1f6ae optional parameters for setup-web2py-nginx-uwsgi-ubuntu.sh 2016-02-29 11:34:57 -06:00
mdipierro
10f2e4c3ad updates support.html, thanks Gael 2016-02-27 08:16:19 -06:00
mdipierro
3c6af5f920 updated support page 2016-02-27 00:12:01 -06:00
mdipierro
a5269b1a1a Merge branch 'master' of github.com:web2py/web2py 2016-02-26 23:37:47 -06:00
mdipierro
9a079e092f fixed typo in auth 2016-02-26 14:24:21 -06:00
mdipierro
218817753a myconf.take, myconf.get 2016-02-26 14:20:18 -06:00
mdipierro
ef9bf73973 example in rocket.py 2016-02-26 13:52:00 -06:00
mdipierro
f92f21b060 Merge pull request #1195 from niphlod/fix/1191
fixes #1191
2016-02-25 13:59:14 -06:00
niphlod
642ec2b934 fixes #1191
fix is in lines 828-835 . needed to backport total_seconds for py2.6
(694-701).
everything else is just pep8.
2016-02-25 02:46:36 +01:00
Chen Levy
d494ec9c88 fix invalid view for purly complied app
When packing a compiled app, and distributing it without the non-compiled view views, run_view_in searches only the old style compiled view file: e.g. views_default_index.html.pyc and not in views.default.index.html.pyc, resulting in "invalid view (default/index.html)" 404 Exception.
2016-02-22 14:13:02 +02:00
Jonathan Vasek
c4d1f3f414 Fixed a bug whereby calling 'delete_record()' on a row object caused an AttributeError. 2016-02-21 00:19:49 -06:00
mdipierro
5a59149514 italian group 2016-02-12 16:03:16 -06:00
mdipierro
484f02cae1 fixed grid button alignment, thanks SanDiego 2016-02-10 16:04:27 -06:00
mdipierro
d5db67d5ea Merge pull request #1182 from preactive/patch-1
Update ldap_auth.py
2016-02-07 00:14:31 -06:00
mdipierro
1480a10d6b Merge pull request #1176 from cccaballero/master
Added virtual field support to autocomplete widget
2016-02-07 00:14:22 -06:00
mdipierro
7259f273f3 fixed some body padding in welcome 2016-02-07 00:12:33 -06:00
mdipierro
8645365f58 fixed some button style issues in grid 2016-02-07 00:10:38 -06:00
mdipierro
106930ed73 fabfile now reads applications/app/hosts 2016-02-07 00:09:55 -06:00
preactive
f79b38a335 Update ldap_auth.py
In regards to comments in:

0036d9c45b

And: 

https://github.com/web2py/web2py/issues/1178
2016-02-04 13:41:49 -08:00
mdipierro
35216db750 grid(Set(..)) as well as grid(Query(..)) 2016-02-03 22:11:38 -06:00
Carlos Cesar Caballero Díaz
faa3d1d477 Added virtual field support to autocomplete widget
Added support to use Virtual Fields in autocomplete widget.

Gotchas:
- Using Virtual Fields is slower than normal fields.
- Virtual Fields must be declared with name and table_name attributes.
2016-01-30 10:20:37 -05:00
mdipierro
7aff79ca57 Merge pull request #1172 from dmatic/master
Fixed error with oneall login when login provider doesn't send user's full name
2016-01-29 22:20:51 -06:00
mdipierro
63bb4a7e8a Merge pull request #1171 from matclab/fix/1043
Fix #1170 by reverting fix to #1043
2016-01-29 22:20:26 -06:00
mdipierro
8fc322254e Merge pull request #1169 from BuhtigithuB/Improve/cache-redis-contrib
PEP8 enhancements, improve docstring and some vars rename
2016-01-29 22:18:28 -06:00
mdipierro
b4c28516ae Merge pull request #1166 from Rimbo/overblown-sessions-cleanup
Make SessionSetDb.get() a generator.
2016-01-29 22:18:18 -06:00
mdipierro
d233d3babb Merge pull request #1163 from rafaelol/fixes_mail_encoding_bug_for_non_ascii_text
Fix bug on Mail.send() when text or input are Unicode
2016-01-29 22:17:07 -06:00
mdipierro
f18a1d0555 fabfile remove _update.zip 2016-01-29 22:14:38 -06:00
Dragan Matic
2cb55b52e9 fixed error with oneall login when login provider doesn't send full name 2016-01-17 22:45:38 +01:00
Mathieu Clabaut
4f361b5aad Fix #1170 by reverting fix to #1043
The problem is only a styling issue and not a HTML one.

It was solved  in 864dbe73f2 by adding a `readonly ` class to labels which allow for properly vertical align with CSS.

This reverts commit 353db90a64 which add
specific HTML for some filed types and which breaks display of comments.
2016-01-16 10:02:12 +01:00
Dragan Matic
db122e7709 Merge pull request #2 from web2py/master
update from original
2016-01-15 17:05:39 +01:00
Richard Vézina
005e565a11 PEP8 enhancements, improve docstring and some vars rename 2016-01-14 12:28:05 -05:00
Jimmy Rimmer
1656c6cdeb Make the same change for SessionSetDb that's in SessionSetFiles: Make get() a generator, so that memory doesn't get blown out if there are 18 million sessions there to clean up. 2016-01-11 14:09:25 -08:00
mdipierro
b7a0f2043c fixed fabfile error 2016-01-09 22:20:42 -06:00
mdipierro
05df3b3029 smarter request.restful checks content-type for json body 2016-01-08 21:29:04 -06:00
Richard Vézina
dc1c85928d flash -> w2p_flash 2016-01-08 13:13:13 -05:00
rafaelol
ba2cb811be Changes encoding of text and subject on Mail.send()
On the previous commit we changed text and subject from unicode
to str. After a better solution from @cassiobotaro, we're using
unicode again, selecting the encoding as the one passed via encoding
parameter.
2016-01-07 14:59:58 -02:00
rafaelol
6a7c0525f5 Fix bug on Mail.send() when text or input are Unicode
On PR #964 @matclab forced the encoding of both subject and
text variables to unicode.

After merging it, matclab realized that when we send Unicode
text to the method it raises an exception and asked if he should
change the commit. Unfortunately this thing was kept untouched.

This problem exists because we previously encode the unicode variables
to utf-8 (for instance here https://github.com/web2py/web2py/blob/master/gluon/tools.py#L478-L481) and then force again to unicode. This piece of code shows what happens:

```
>>> a = u'áéí'
>>> a
u'\xe1\xe9\xed'
>>> b = a.encode('utf-8')
>>> b
'\xc3\xa1\xc3\xa9\xc3\xad'
>>> unicode(a)
u'\xe1\xe9\xed'
>>> unicode(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
```

If we force to str, just like @matclab suggested, we solve this issue.
2016-01-07 11:47:29 -02:00
mdipierro
5132616c6c check_all 2016-01-05 07:29:53 -06:00
mdipierro
e528c10c21 Merge pull request #1160 from sceeter89/portalocker-issues
Changed order of imports
2016-01-04 09:44:20 -06:00
mdipierro
41fd02fa2c Merge pull request #1158 from niphlod/enhancement/redis_toolset
new redis toolset to use with web2py
2016-01-04 09:43:58 -06:00
mdipierro
26dab37d9f Merge pull request #1157 from niphlod/fix/scheduler_stopped
fix for STOPPED tasks via stop_task()
2016-01-04 09:43:13 -06:00
mdipierro
cc40018e87 Merge pull request #1155 from niphlod/tests/recfile
tests for modules NEED to be in a separate unittest
2016-01-04 09:42:23 -06:00
mdipierro
b6db314612 Merge pull request #1154 from niphlod/fix/1044
fixes #1044
2016-01-04 09:41:58 -06:00
mdipierro
3498666115 Merge pull request #1153 from niphlod/fix/1100
fixes #1100
2016-01-04 09:41:43 -06:00
mdipierro
562a559169 Merge pull request #1152 from niphlod/fix/1143
fixes #1143
2016-01-04 09:40:35 -06:00
mdipierro
47cec80939 Merge pull request #1151 from niphlod/tests/reorg
better test_utils and reorg to compileapp
2016-01-04 09:39:59 -06:00
mdipierro
eceb579cdd Merge pull request #1149 from niphlod/enhancement/constant_time_compare
bultin constant time checking
2016-01-04 09:39:38 -06:00
Adam Marszałek
bd19986380 Changed order of imports 2016-01-04 13:23:22 +01:00
niphlod
12acdb51d7 new redis toolset to use with web2py
This is a refactor of everything web2py uses with redis.
Specifically:
- a refactored redis_cache.py that fixes #958, allowing a "fail
gracefully" behaviour in case redis is not available
- a refactored redis_session.py that blocks less with with_lock=True
(although still not optimal)
- a new (and NEEDED) redis_utils.py that serves as the base for
everything else, allowing an RConn object that you can freely use as a
redis.StrictRedis connection, and that you can override in case you're
using a different library (or that web2py will use in case redis-py
won't be the de-facto standard around)
- a newly - and much anticipated - redis_scheduler.py. It's a slip-in
replacement for the standard scheduler that uses redis for workers
coordination. Feel free to dig in the code and improve it.

For redis_cache and redis_session changes are BREAKING. It means that
users will need to change the import locations and tune a bit the code.
Now every module depends on an gluon.contrib.redis_utils.RConn object
(or similar) that in turns is very similar to a redis.StrictRedis one.
The redis instance is EXTERNAL to the modules themselves (no more "host,
port, db, password" parameters in RedisCache or RedisSession)
See the relevant docstrings for usage examples
2016-01-02 23:15:00 +01:00
niphlod
918590d1f3 fix for STOPPED tasks via stop_task()
they previously killed the main process
2016-01-02 22:50:27 +01:00
niphlod
d57428e8f0 fixes #1156 and other few issues 2016-01-01 20:48:55 +01:00
niphlod
13e3adf22d tests for modules NEED to be in a separate unittest 2015-12-30 21:20:24 +01:00
niphlod
d4ffcaf1b1 fixes #1044
This shouldn't have took that much to solve. Really sorry for the delay
2015-12-30 16:38:43 +01:00
niphlod
17f1a51133 fixes #1100
now elements with data-w2p_disable are not disabled.
in addition, for non-ajax forms, disabled submit buttons are reenabled
after 5 seconds

plus reindented, refactored AND jslinted
2015-12-30 16:19:39 +01:00
niphlod
d4bca008a8 better docstrings 2015-12-30 14:55:37 +01:00
niphlod
90c33911ab fixes #1143
don't even get me started about the current messy status of admin
2015-12-30 12:07:18 +01:00
niphlod
0a263ffc8d better test_utils and reorg to compileapp 2015-12-30 11:42:49 +01:00
niphlod
e94946d3d5 bultin constant time checking
- if hmac.compare_digest is there, we should use it instead of our own
fallback.
- jwt handler has been updated to use utils.compare (reported in
#web2py-users)
- includes the same mods as https://github.com/web2py/web2py/pull/1146
2015-12-30 10:37:14 +01:00
mdipierro
1ca0c9b0c0 Merge pull request #1145 from niphlod/fix/1142
fixes #1142
2015-12-29 12:07:40 -06:00
mdipierro
cee0f91b36 Merge pull request #1144 from niphlod/fix/external_folder
better support for -f
2015-12-29 12:06:54 -06:00
niphlod
eb49831726 fixes #1142 2015-12-28 15:05:51 +01:00
niphlod
b517c898b8 better support for -f
as exposed in
https://groups.google.com/d/msg/web2py-developers/uJoQeUlCABw/-MCXocwGAgAJ
2015-12-28 14:48:29 +01:00
mdipierro
71fba07e3a some sqlhtml renaming 2015-12-27 07:12:56 -06:00
mdipierro
2a7a4a3d04 removed print statements 2015-12-27 05:39:08 -06:00
mdipierro
999f235b75 IS_IN_DB(...,delimiter=',',auto_add=True) 2015-12-27 05:33:29 -06:00
mdipierro
da22554aed allow for IS_IN_DB(db,db.thing.id,db.thing.name) 2015-12-27 02:46:23 -06:00
mdipierro
0409d6f725 R-2.13.4 2015-12-25 22:56:50 -06:00
mdipierro
b6235249da fixed path issue when starting web2py 2015-12-25 22:56:13 -06:00
mdipierro
fabadcd21f do not remove gluon/packages/dal/.* files 2015-12-24 09:40:08 -06:00
mdipierro
8e4ea3497b fixed issue #1138, ldap and python 2.6.x problem 2015-12-24 09:15:19 -06:00
mdipierro
4b0e1856b5 reverted 2a245d36 2015-12-24 09:04:45 -06:00
mdipierro
94841c90c3 R-2.13.3 2015-12-24 08:50:24 -06:00
mdipierro
f14e5f728c fixing mess 2015-12-24 08:48:19 -06:00
mdipierro
8443c17839 sync'ed appadmins 2015-12-24 08:36:16 -06:00
mdipierro
be8114127e Merge pull request #1141 from gi0baro/master
Tracking latest pyDAL changes
2015-12-24 08:30:31 -06:00
gi0baro
4eaef303ff Tracking latest pyDAL changes 2015-12-24 15:21:52 +01:00
mdipierro
319a3fc1dc Merge branch 'BuhtigithuB-fix/no-more-deprecated-has-key' 2015-12-23 23:11:55 -06:00
mdipierro
463d643e2c fmerged 2015-12-23 23:11:34 -06:00
mdipierro
0cbed12952 Merge pull request #1137 from cassiobotaro/fix_logging
fixing logging old behaviour
2015-12-23 23:08:17 -06:00
mdipierro
b5994e57a4 Merge pull request #1136 from cassiobotaro/remove_25_support
update files removing 2.5 things
2015-12-23 23:07:54 -06:00
Cássio Botaro
e239b975be Change to re-run AppVeyor 2015-12-23 11:19:19 -02:00
Richard Vézina
0259ea3d29 no more deprecated .has_key(...) 2015-12-22 15:39:32 -05:00
cassiobotaro
db4c008de3 Minor changes 2015-12-21 15:40:25 -02:00
cassiobotaro
7921e5148a fixing logging old behaviour 2015-12-21 12:10:50 -02:00
cassiobotaro
ee23eab77a update files removing 2.5 things 2015-12-21 11:55:44 -02:00
mdipierro
2344386f77 better docstring for Auth.jwt 2015-12-18 19:19:43 -06:00
mdipierro
b5e12031c5 added Auth(db,jwt=dict(secret_key='secret')) and auth.allows_jwt() before auth.requires_login() 2015-12-18 19:12:41 -06:00
mdipierro
85e6840cf0 Merge branch 'master' of github.com:web2py/web2py 2015-12-18 18:09:09 -06:00
mdipierro
4c3006acb4 Merge pull request #1135 from gi0baro/master
Track latest pyDAL GAE fix by @mdipierro
2015-12-18 18:08:53 -06:00
gi0baro
f8f008cab5 Track latest pyDAL GAE fix by @mdipierro 2015-12-18 12:51:17 +01:00
mdipierro
6bff8af458 CHANGELOG 2015-12-18 04:52:43 -06:00
mdipierro
b67edb083e fixed compileapp problem in appveyor test (2nd attempt) 2015-12-18 04:44:03 -06:00
mdipierro
4125a97ce1 fixed compileapp problem in appveyor test 2015-12-18 04:39:51 -06:00
mdipierro
78cf55bf9a R-2.13.2 2015-12-18 04:28:16 -06:00
mdipierro
931daaff89 fixed security issue in reset password when registration_requires_authorization, thanks Giovanni Verde 2015-12-18 04:11:26 -06:00
mdipierro
c6550f0adc fixed a condition that allows reset_password if a reset link is sent before a user is blocked 2015-12-18 03:40:12 -06:00
mdipierro
22c89d8dcc version 2.13.1 2015-12-17 21:19:08 -06:00
mdipierro
1636528a0f Merge pull request #1132 from gi0baro/master
Tracking pyDAL v15.12
2015-12-17 21:08:30 -06:00
gi0baro
c02229d79c Tracking pyDAL v15.12 2015-12-16 21:55:23 +01:00
mdipierro
acb05dbfe1 added retrieve to fabfile and fixed minor bug 2015-12-15 23:13:46 -06:00
mdipierro
fda1117dd7 fixed import 2015-12-14 15:44:34 -06:00
mdipierro
d1fde23182 create_user spelling fixed 2015-12-14 15:43:50 -06:00
mdipierro
adf4c93860 Merge pull request #1124 from matclab/issue1123
Convert attachments to a list if necessary.
2015-12-14 15:32:07 -06:00
mdipierro
02f1903c3d Merge pull request #1127 from gi0baro/appveyor-skip
Avoid to run pyDAL adapters tests on appveyor
2015-12-14 15:31:23 -06:00
mdipierro
1137027ecc Merge pull request #1126 from nextghost/master
Parse GET vars from rewritten query string, not the original. Fixes #730
2015-12-14 15:31:10 -06:00
mdipierro
229616b9fc added fabfile form deployment and maintenance tasks 2015-12-14 15:16:00 -06:00
gi0baro
a75a8cbf46 Avoid to run pyDAL adapters tests on appveyor 2015-12-13 12:34:54 +01:00
Martin Doucha
9650ff7516 Parse GET vars from rewritten query string, not the original. Fixes #730 2015-12-12 23:59:15 +01:00
Mathieu Clabaut
5b90f3f532 Convert attachments to a list if necessary.
Also corrects a typo that was apparently silenced by the bug.
This closes issue #1123
2015-12-09 14:46:05 +01:00
mdipierro
483092787b Merge pull request #1120 from dokime7/patch-10
Fix oauth2 renew token
2015-12-07 19:58:24 -06:00
Jeremie Dokime
9b17048882 Fix oauth2 renew token
When getting an oauth token, we must use code or refresh_token but not twice.
2015-12-07 11:18:59 +01:00
mdipierro
30fe7400f9 syncing latest mydal 2015-12-04 15:14:02 -06:00
mdipierro
ada9353a7e removed unwanted referene to jwt in tools 2015-12-04 15:10:25 -06:00
mdipierro
b0373297e0 Browser auto-fill can corrupt data while using admin database interface #1045, thanks dkleissa 2015-12-04 12:31:35 -06:00
mdipierro
2dbbef724c DIV.elements fails when searching for an attribute with an integer value #1074 2015-12-04 12:21:05 -06:00
mdipierro
eb7017fd9a fixed auth.settings.register_onaccept is not firing when signing up through third-party #1081 2015-12-04 12:14:39 -06:00
mdipierro
4c039574df skip failed views, thanks Anthony 2015-12-04 12:06:46 -06:00
mdipierro
ab900957fe fixed Cookie parsing stopped after first invalid cookie #1084, thanks paultuckey 2015-12-04 11:44:51 -06:00
mdipierro
f960c8f6df fixed add_membership, del_membership, add_membership = IntegrityError (when auth.enable_record_versioning) #1087 2015-12-04 11:42:06 -06:00
mdipierro
d2910327c0 temp fix for IS_DATETIME with timezone info & record versioning causes TypeError: can't compare offset-naive and offset-aware datetimes #1094 2015-12-04 11:31:55 -06:00
mdipierro
dfd6d52192 fixed missing helper.get(attribute) 2015-12-04 11:28:39 -06:00
mdipierro
7dd8a3c853 fixed Reference to http://..../[app]/default/user/manage_users in welcome's default controller #1102 2015-12-04 11:24:00 -06:00
mdipierro
71ae754fcd fixed #1110, allow passing unicode to template render 2015-12-04 11:16:15 -06:00
mdipierro
0520770a7e fixed #1111, Validator IS_IPV4: options is_private=False not working, thanks Nbushkov 2015-12-04 11:12:44 -06:00
mdipierro
6b880fb455 fixed class concatenation 2015-12-04 10:46:20 -06:00
mdipierro
dd180019a1 Merge pull request #1118 from matclab/readonly-label
Add readonly class to labels of readonly fields and set padding to 0
2015-12-04 10:43:17 -06:00
mdipierro
638f1f902a Merge pull request #1116 from timnyborg/patch-7
Fix IS_NOT_IN_DB to work with custom primarykey
2015-12-04 10:42:25 -06:00
mdipierro
73061e3bf5 Merge pull request #1114 from BuhtigithuB/Improve/ldap-contrib-self-signed-certificate
Improve/ldap contrib self signed certificate
2015-12-04 10:42:05 -06:00
mdipierro
5a18e29c2e Merge pull request #1113 from timnyborg/patch-6
Fix grid count when using groupby on MSSQL
2015-12-04 10:41:36 -06:00
mdipierro
721af77c90 Merge pull request #1108 from dokime7/patch-9
Send client_secret when get oauth2 refresh_token
2015-12-04 10:38:04 -06:00
mdipierro
2cf6797b43 Merge pull request #1106 from erilyth/master
Added XML to retrieve pickled XML data #1067
2015-12-04 10:37:50 -06:00
mdipierro
5c4145743f Merge pull request #1103 from ilvalle/w2p_target
added w2p_target attribute in form to control the output destination
2015-12-04 10:37:14 -06:00
mdipierro
b4733e4617 added gluon/contrib/web2py_jwt.py, thanks Niphlod 2015-12-04 10:30:56 -06:00
mdipierro
b51d217d9b french pluralizaiton rules, thanks Mathieu Clabaut 2015-12-04 10:07:38 -06:00
Mathieu Clabaut
864dbe73f2 Add readonly class to labels of readonly fields and set padding to 0
This allow for readonly fields content to be vertical aligned with their label
2015-12-04 15:29:45 +01:00
Tim Nyborg
b942fc8f7a Fix IS_NOT_IN_DB to work with custom primarykey
Validator currently selects custom id properly, but then explicitly checks .id
2015-12-03 15:02:21 +00:00
Hardirc
b2a65dbba4 Support for self-signed certificate LDAPS implementation 2015-12-02 14:18:09 -05:00
Hardirc
d36d4d77f7 replace .has_key() by in, .has_key() is deprecated 2015-12-02 14:04:51 -05:00
Hardirc
c8db6d5fb7 Improve PEP8 and readability 2015-12-02 14:02:27 -05:00
Tim Nyborg
1b77c2294a Fix grid count when using groupby on MSSQL
Any query like SELECT COUNT(*) from (SELECT COUNT(*) FROM ...) will fail with 'No column name was specified for column 1 of '_tmp'', so I'm providing an alias for the subquery's field
2015-11-30 16:09:53 +00:00
Jeremie Dokime
98a81c9fbd Send client_secret when get oauth2 refresh_token
With some oauth2 providers, the oauth client_secret is required when getting a refresh_token.
2015-11-23 10:10:00 +01:00
Batchu Venkat Vishal
4bf5a70dc0 Added XML to retrieve pickled XML data #1067 2015-11-19 15:01:23 +05:30
ilvalle
d883e3d84e added w2p_target attribute in form to control the output destination 2015-11-14 12:03:20 +01:00
mdipierro
db37cf6a58 Revert "Labels should get their information from the render function of the records."
This reverts commit 65c87386c1.
2015-11-12 18:25:48 -06:00
mdipierro
dba5c97d51 fixed check for form tampering 2015-11-11 18:38:48 -06:00
mdipierro
948bd0c671 fixed check for form tampering 2015-11-11 18:20:37 -06:00
mdipierro
5d8ff8ba2c removed login_once_after_registration 2015-11-11 09:14:05 -06:00
mdipierro
503cd59adc auth.settings.login_once_after_registration 2015-11-11 09:03:54 -06:00
mdipierro
a0bcd2287b Merge branch 'josedesoto-issue/1095' 2015-10-30 23:10:35 -05:00
mdipierro
430163f70b fixed conflict 2015-10-30 23:10:25 -05:00
mdipierro
52b59e9b71 Merge pull request #1092 from niphlod/fix/1090
fixes #1090
2015-10-30 23:08:47 -05:00
mdipierro
e8f87ea274 Merge pull request #1091 from dokime7/patch-8
Add renew token by using refresh_token
2015-10-30 23:08:37 -05:00
mdipierro
fb6fa0c448 Merge pull request #1088 from niphlod/fix/1083
fixes #1083
2015-10-30 23:07:58 -05:00
mdipierro
935c95ccfc Merge pull request #1086 from gi0baro/pydal-tests
Run pydal's tests inside web2py using contrib adapters
2015-10-30 23:07:37 -05:00
mdipierro
e180e69467 fixed a typo, thanks James Burke 2015-10-30 23:06:00 -05:00
engeens
5c9d197f93 issue #1095. Added two-factor authentication methods and onvalidation. Fixed last attempt two-factor retry login
issue #1095. Added return user for two_factor_onvalidation
2015-10-30 15:09:51 +01:00
mdipierro
e417d311e5 added link to http://www.web2pyref.com/ 2015-10-29 20:59:15 -05:00
mdipierro
199f93f262 fixed typo in tools.py, thanks James Burke 2015-10-29 20:56:40 -05:00
niphlod
64a8880c80 fixes #1090
removed timezone for IS_DATE* validators
2015-10-26 09:50:09 +01:00
Jeremie Dokime
257c514bd4 Add renew token by using refresh_token
Handle the refresh_token mechanism to renew the access_token when expire.
2015-10-25 20:48:04 +01:00
niphlod
12f848c899 fixes #1083 2015-10-19 21:50:34 +02:00
mdipierro
4de007a946 fixed possible problem with cache.action 2015-10-16 21:39:30 -05:00
gi0baro
b59a93e24e Run pydal's tests inside web2py using contrib adapters 2015-10-16 14:44:41 +02:00
mdipierro
bbed326c20 fixed commit error 2015-10-07 13:15:39 -05:00
mdipierro
874398c38c Merge pull request #1080 from BuhtigithuB/improve/ldap-auth-more-dry
Make ldap_auth a bit more DRY
2015-10-07 13:12:30 -05:00
mdipierro
a9f8fbadae Merge pull request #1077 from leonelcamara/fix_wiki_extra
Fixes #721
2015-10-07 13:08:16 -05:00
mdipierro
e62320ff9f Merge pull request #1076 from gi0baro/master
Tracking pydal 15.09
2015-10-07 13:07:54 -05:00
mdipierro
b3e606295e committed changelog and removed unwanted file 2015-10-07 13:04:12 -05:00
mdipierro
b8c2bd7303 fixed LazyCrypt and fixed git problem 2015-10-07 13:02:30 -05:00
mdipierro
1387b26606 fixed LazyCrypt, thanks Denes 2015-10-07 12:57:20 -05:00
Richard Vézina
c6a7732d32 Don't update record when values are the same 2015-10-06 14:36:45 -04:00
Richard Vézina
0036d9c45b Make ldap_auth a bit more DRY 2015-10-06 14:30:50 -04:00
Leonel Câmara
b99fb7dedf Fixes #721
Fixes a bug where auth.wiki was not respecting the extra keyword argument
2015-09-29 00:21:01 +01:00
gi0baro
344590470b Tracking pydal 15.09 2015-09-28 15:50:42 +02:00
mdipierro
2c57dc084e Merge pull request #1073 from niphlod/fix/1043
fixes #1043 , thanks @bobstjon
2015-09-27 14:40:27 -05:00
mdipierro
c17ba0a020 Merge pull request #1072 from niphlod/fix/1039
fixes #1039
2015-09-27 14:40:14 -05:00
mdipierro
7d4b460e1b Merge pull request #1071 from niphlod/fix/1068
fixes #1068
2015-09-27 14:39:58 -05:00
mdipierro
6680ea8ab7 Merge pull request #1061 from nklever/master
small changes in sqlhtml.py, validator.py, contrib/spreadsheet.py
2015-09-27 14:39:47 -05:00
niphlod
353db90a64 fixes #1043 , thanks @bobstjon 2015-09-21 22:24:59 +02:00
niphlod
827e663ac4 better list: widget 2015-09-21 22:18:18 +02:00
niphlod
de399691ce fixes #1039
It was a REEEAALLY good catch :-)
2015-09-21 22:09:17 +02:00
niphlod
46f081c45c fixes #1068
threw in also a better list:string widget repr for bs3

Updated also the bootswatch theme because something was wrong
2015-09-21 21:38:28 +02:00
mdipierro
0fa0dbaeea Merge branch 'master' of github.com:web2py/web2py 2015-09-20 14:07:06 -05:00
mdipierro
b47511c896 token default = web2py_uuid 2015-09-20 14:07:01 -05:00
mdipierro
e31318eaa8 Merge pull request #1066 from lraphael/master
fix unindented lines
2015-09-18 00:41:34 -05:00
mdipierro
72ee538883 Merge pull request #1065 from leonelcamara/pa_integration
PythonAnywhere integration
2015-09-18 00:41:20 -05:00
mdipierro
b6ddc6098e Merge pull request #1060 from viniciusban/1059-response-render-uses-original-response-view
Closes #1059: get `response.view` from the environment
2015-09-18 00:40:04 -05:00
mdipierro
90854eae44 Merge pull request #1058 from niphlod/fix/735
fixes issue #735
2015-09-18 00:39:08 -05:00
mdipierro
2bceb3f95f Merge pull request #1057 from niphlod/fix/823
fixes #823
2015-09-18 00:38:55 -05:00
mdipierro
9da1e29014 Merge pull request #1056 from niphlod/fix/wiki_typo
fixes typo in wiki.
2015-09-18 00:38:38 -05:00
Raphael Lechner
39ba9dc1a9 fix unindent lines 2015-09-16 17:12:45 +02:00
Leonel Câmara
36db9719ef Deal with the corner case of already created accounts
Polished everything a bit
2015-09-15 17:24:57 +01:00
Leonel Câmara
125cbd93a0 Allow deploying to pythonanywhere from the web2py admin that you're running locally. 2015-09-08 00:51:09 +01:00
Nik Klever
bc267ce17b Added Column- and Row-Headers to be more flexible with the headers of the
spreadsheet.

Added also a boolean "select" parameter for the sheet.cell function which
allows to use a HTML select tag instead of an input tag for this cell.
2015-09-05 15:01:02 +02:00
Nik Klever
65c87386c1 Labels should get their information from the render function of the records. 2015-09-05 14:57:55 +02:00
Nik Klever
2a245d36f4 If in any of the form fields are unicode strings entered as input, the
unicode characters in these strings are lost in self.vars.

This conditions sets it back to the original input.

Might be, that this should be done at another place, but it works.
2015-09-05 14:38:32 +02:00
viniciusban
dcf64a661d Closes #1059: get response.view from the environment 2015-09-03 20:39:37 -03:00
niphlod
1c74afc01b fixes issue #735 2015-09-03 18:33:54 +02:00
niphlod
5dbcda9f38 fixes #823 2015-09-03 18:08:33 +02:00
niphlod
ac02d52f05 fixes typo in wiki. As usual, lack of unittests made this possible.
We should really make each developer "adopt" a piece of web2py to test
and care if we don't want to write unittests.
2015-09-03 17:56:45 +02:00
mdipierro
d4270373e1 fixed bug in redirect to cas service, thanks Fernando González 2015-09-01 23:07:18 -05:00
mdipierro
e4b27080ca Merge pull request #1051 from ShySec/master
added HttpOnly cookies (default)
2015-08-30 20:41:23 -05:00
mdipierro
692791a518 Merge pull request #1053 from BuhtigithuB/feature/redirect-next-var-when-logged-on-page-reload
No credentials request if logged in and URL contains user/login?_next=
2015-08-30 00:58:27 -05:00
mdipierro
9190191c7a changed the default BS3 theme 2015-08-23 10:07:32 -05:00
mdipierro
7bd8f6a1a9 Merge pull request #1054 from BuhtigithuB/Improve/PEP8-gluon-tools-py
Improve PEP8 gluon/tools.py
2015-08-21 00:07:06 -05:00
mdipierro
64e115f442 Merge pull request #1050 from timnyborg/patch-5
Update simplejsonrpc.py - move default to method signature
2015-08-21 00:03:24 -05:00
Richard Vézina
61f685d225 Improve PEP8 gluon/tools.py 2015-08-20 17:16:13 -04:00
Richard Vézina
c56fc2f6a0 Improve proposed enhancement #1052 2015-08-20 15:23:59 -04:00
mdipierro
bb2aa29867 fixed google link to viewer in autolinks.py 2015-08-20 14:00:21 -05:00
Richard Vézina
08b6832809 No credentials request if logged in and URL contains user/login?_next= 2015-08-19 14:47:21 -04:00
kelson
cbbd1246db re import required for assertRegexpMatches port 2015-08-19 11:33:47 -04:00
kelson
0a79bf3afd assertRegexpMatches requires port for python2.5 and python2.6 2015-08-19 11:30:07 -04:00
kelson
db5e58e49f added HttpOnly cookies (default)
added unit tests for cookie layout, secure cookies, and HttpOnly cookies
Session.httponly_cookies=False to revert HttpOnly cookies
2015-08-19 11:25:00 -04:00
Tim Nyborg
5030d3144f Update simplejsonrpc.py
Default best placed in method signature, 
Thanks to cassiobotaro for pointing it out
2015-08-19 11:59:40 +01:00
mdipierro
edcc2e44dc R-2.12.3 2015-08-18 19:15:01 -05:00
mdipierro
2cf9f26b0d fixed pydal tracking again 2015-08-18 15:13:57 -05:00
mdipierro
4b99b6fdd7 adding debounced ajax calls 2015-08-18 14:16:10 -05:00
mdipierro
622430583f Merge pull request #1047 from web2py/revert-1046-master
Revert "added default HttpOnly cookies"
2015-08-18 13:59:07 -05:00
mdipierro
89cc5a5f70 Revert "added default HttpOnly cookies" 2015-08-18 13:57:44 -05:00
mdipierro
6899154fcd reverted DAL to v15.07 2015-08-18 13:46:38 -05:00
mdipierro
47c0e461f1 Merge pull request #1046 from ShySec/master
added default HttpOnly cookies
2015-08-18 11:53:54 -05:00
mdipierro
93237837ed Merge pull request #1042 from cassiobotaro/master
Allow change quality when RESIZE
2015-08-18 11:52:52 -05:00
kelson
cf20ce5fae _js_cookies => not httponly_cookies 2015-08-18 12:25:13 -04:00
mdipierro
04c86f07ef Merge pull request #1032 from dsk7/allow_requires_login_to_be_determined_dynamically
Allow to specify a function for requires_login at auth decoration.
2015-08-18 11:03:37 -05:00
mdipierro
1a12c4011b Merge pull request #1031 from mmunz/master
Repair cache status page in appadmin for welcome, admin and examples …
2015-08-18 11:02:14 -05:00
mdipierro
85bbe15758 Merge pull request #1030 from josedesoto/issue/1028
fixed issue #1028, saml2 bug
2015-08-18 11:01:46 -05:00
mdipierro
5816481a44 Merge pull request #1029 from timnyborg/patch-3
simplejsonrpc: Fix TypeError when data is None
2015-08-18 11:01:19 -05:00
kelson
2675e9d229 added default HttpOnly cookies 2015-08-18 10:23:29 -04:00
mdipierro
41498917d5 Autocomplete(...at_beginning=False) 2015-08-16 15:22:45 -05:00
Cássio Botaro
8f7acd8154 Allow change quality when RESIZE 2015-08-13 02:12:49 -03:00
mdipierro
26865421b6 email change 2015-08-11 00:32:09 -05:00
mdipierro
b9ee4d4730 R-2.12.2 2015-08-09 09:27:42 -05:00
mdipierro
8fd7a27d5f fixed problem with pack all and missing cache folder 2015-08-09 09:26:57 -05:00
mdipierro
69231bdd7f R-1.12.1 2015-08-07 02:20:08 -05:00
mdipierro
55dfb9e8c4 R-1.12.1 2015-08-07 02:12:17 -05:00
mdipierro
7761219cba jquery 1.11.3, bootstrap 3.3.5 2015-08-07 02:10:27 -05:00
mdipierro
e31e4e236f prettydate can do UTC, fixes #1036 2015-08-07 02:04:07 -05:00
mdipierro
a43d822412 changed version for testing 2015-08-06 22:02:17 -05:00
dsk7
f94bc250eb Allow to specify a function for requires_login at auth decoration. 2015-08-02 13:21:20 +02:00
mdipierro
5775d2788d reverted apache processes=1 2015-08-01 00:24:21 -05:00
mdipierro
048f275076 fixed TLS support in ldap, thanks backseat 2015-08-01 00:21:56 -05:00
Manuel Munz
8078d4b0f3 Repair cache status page in appadmin for welcome, admin and examples apps.
This fixes how values are read. For cache.disk, we need to use the second value in the dict.
For cache.ram everything is already there in the object, no need trying to get the stats (which are not there) in the loop.
Also small fix for buttons that did not open the detailed statistics when clicked (class hidden has !important in bootstrap3).
2015-08-01 00:29:34 +02:00
Tim Nyborg
5ee8c9c930 simplejsonrpc: Fix TypeError when data is none 2015-07-27 12:07:26 +01:00
Jose de Soto
6659bc0793 fixed issue #1028, saml2 bug 2015-07-27 13:05:36 +02:00
mdipierro
d7caaf04cc fixed issue #933, wiki bug 2015-07-26 14:24:53 -05:00
mdipierro
e95115deb4 fixed order of confirm-password field 2015-07-26 10:18:45 -05:00
mdipierro
42c69b6343 changed indent 2015-07-20 02:26:13 -05:00
mdipierro
d2347dec41 CacheRepresenter 2015-07-20 02:17:59 -05:00
mdipierro
8420020c21 caching only refault represent for references 2015-07-20 02:07:47 -05:00
mdipierro
571fc6d919 changed version 2015-07-20 01:51:22 -05:00
mdipierro
52ec228eeb Merge branch 'master' of github.com:web2py/web2py 2015-07-20 01:20:22 -05:00
mdipierro
5848d9acaa Merge pull request #1023 from dmatic/master
Script to install web2py with nginx and uwsgi on centos 7
2015-07-19 11:35:31 -05:00
Dragan Matic
3e8cbd5a0d Script to install web2py with nginx and uwsgi on centos 7 2015-07-16 13:35:27 +02:00
mdipierro
e276cc2fc1 Merge pull request #1019 from gi0baro/master
Updated to pydal 15.07
2015-07-16 03:57:13 -05:00
mdipierro
39a048db61 Merge pull request #1018 from cassiobotaro/master
fix validations IS_IPV6 and IS_IPADDRESS
2015-07-16 03:57:06 -05:00
mdipierro
df4b896334 models speed up 2015-07-13 07:52:38 -05:00
gi0baro
6d58845153 Using pydal 15.07 2015-07-13 14:25:43 +02:00
Dragan Matic
ba1f8bf741 Merge pull request #1 from web2py/master
Update from original
2015-07-10 13:09:43 +02:00
cassiobotaro
a378ab3e51 fix validations IS_IPV6 and IS_IPADDRESS 2015-07-10 01:11:16 -03:00
mdipierro
2d866647e2 Merge pull request #1017 from raj454raj/master
Small typo
2015-07-07 03:55:17 -05:00
Raj
81863d69c9 Small typo
Sorry! Can't resist when you see typo on the terminal !
2015-07-07 02:38:30 +05:30
mdipierro
ee2879442f tracking last master since that works better at this time 2015-07-06 10:13:47 -05:00
mdipierro
ad68d2415d possibly fixed issue #243, SQLFORM.factory(..) and DAL(None) 2015-07-06 10:04:14 -05:00
mdipierro
928de67f8d fixed DAL(None) 2015-07-06 10:01:40 -05:00
mdipierro
68296f9e65 Merge pull request #1016 from ShySec/master
fix Field.Virtual use in multi-table queries
2015-07-06 07:44:49 -05:00
kelson
7ac6edae52 fix Field.Virtual use in multi-table queries 2015-07-06 08:35:58 -04:00
mdipierro
1fc90fdb6d scripts/web2py-scheduler.conf 2015-07-06 04:46:56 -05:00
mdipierro
34a9d72cde mail.settings.server='logging:filename' 2015-07-06 04:45:14 -05:00
mdipierro
198ce939d0 fixed css of population table 2015-07-04 17:12:25 -05:00
mdipierro
e31a099cb3 Merge pull request #1012 from ortgit/master
Security fix: Validate for open redirect everywhere, not just in login()
2015-07-02 06:40:12 -05:00
mdipierro
cc7e10d216 Merge pull request #1009 from rserbitar/master
Fix compatibility with Tornado 4
2015-07-02 06:38:35 -05:00
mdipierro
d8b68036c2 Merge pull request #1006 from kjkuan/workaround-urllib-bug
Workaround http://bugs.python.org/issue9405 on OS X.
2015-07-02 06:38:18 -05:00
pallav_fdsi
f9cd7e4ef4 Open redirect attacks should be caught for all functions that use the _next variable (for example: logout()) instead of just for the login() function. 2015-07-01 18:38:43 -04:00
pallav_fdsi
896b45b838 Merge branch 'master' of https://github.com/web2py/web2py 2015-07-01 17:49:47 -04:00
mdipierro
d6146c9c5d no more text shadow in buttons, was horrible 2015-07-01 12:18:10 -05:00
mdipierro
b3be806244 Merge pull request #1008 from leonelcamara/pack_exe
Moved pack as exe functionality to the pack_custom.html form
2015-07-01 09:01:49 -05:00
rserbitar
eac12d3a57 Fix compatibility with Tornado 4
http://stackoverflow.com/questions/24851207/tornado-403-get-warning-when-opening-websocket
2015-07-01 12:06:52 +02:00
mdipierro
2fc081bc3c no more module_installer 2015-06-30 16:12:54 -05:00
Leonel Câmara
032af7c04d Moved pack as exe functionality to the pack_custom.html form 2015-06-30 19:19:38 +01:00
mdipierro
8e63825def Merge pull request #1007 from leonelcamara/pack_exe
Allow packing an application with the windows executable
2015-06-30 12:32:05 -05:00
Leonel Câmara
5d2e5dded3 Allow packing an application with the windows executable 2015-06-30 17:51:39 +01:00
mdipierro
61e33da844 module installer 2015-06-30 11:14:47 -05:00
Jack Kuan
da9dbaa5d6 Workaround http://bugs.python.org/issue9405 on OS X.
See https://groups.google.com/forum/#!topic/web2py/WSjhhDet1UM
for context.
2015-06-30 10:56:31 -04:00
mdipierro
7543c54bdb enable_tokens in welcome 2015-06-30 02:32:44 -05:00
mdipierro
00608e4f04 auth.settings.enable_tokens and header web2py_user_token 2015-06-29 13:38:54 -05:00
mdipierro
cdbf48f09b fixed margin-top in welcome 2015-06-29 13:03:23 -05:00
mdipierro
f39db6331a dealing with issue of accidentally redefining request/response, thanks Auden RovelleQuartz 2015-06-29 03:56:22 -05:00
mdipierro
ef433da190 improvements to token logic, thanks Niphlod 2015-06-28 17:01:21 -05:00
mdipierro
d2375b4187 always allow access to <app>/appadmin/manage/auth if used is admin 2015-06-28 16:41:09 -05:00
mdipierro
26d87967c5 always allow access to appadmin/manage.auth if used is admin 2015-06-28 16:40:23 -05:00
mdipierro
044b2331c3 bulk_register_enabled=False 2015-06-28 10:30:05 -05:00
mdipierro
c89614ada6 more strict conditions on bulk_register 2015-06-28 10:20:33 -05:00
mdipierro
f0aba167b4 _token, not token 2015-06-28 09:51:45 -05:00
mdipierro
bde9562b78 api_tokens in example 2015-06-28 09:49:50 -05:00
mdipierro
9a1229470a support for api_tokens 2015-06-28 09:48:08 -05:00
mdipierro
f781b9e1f5 Merge branch 'peregrinius-master' 2015-06-28 09:08:54 -05:00
mdipierro
fa32b7577b fixed a bug and added support for user/bulk_register 2015-06-28 09:01:10 -05:00
mdipierro
68526a0c6d allow unsorted multiword query in grid search 2015-06-28 07:52:34 -05:00
mdipierro
ad2003c618 fixed recently introduced sanitize bug 2015-06-27 00:33:16 -05:00
mdipierro
c1ecf823d8 added link to new tutorial 2015-06-26 08:07:31 -05:00
mdipierro
6134f82452 fixed issuer #239, locking error on FreeBSD, thanks josejachuf 2015-06-26 06:58:07 -05:00
mdipierro
fbb5a8b9bb fixed issue #968, IS_MATCH validator bug with unicode, thanks alex0834 2015-06-25 04:36:16 -05:00
mdipierro
df34869d65 fixes #978, autotypes and unicode strings, thanks remcoboerma 2015-06-25 04:31:41 -05:00
mdipierro
28e6999e7d fixed issue #980, Admin application: can't access directories with space in directory name, thanks mmihaltz 2015-06-25 04:30:10 -05:00
mdipierro
f4f77b0cb6 fixed issue #982, LOAD with ajax=False and args 2015-06-25 04:23:49 -05:00
mdipierro
23ddb6c3c2 fixed issue #999, gluon.sanitiizer.sanitze improvement, thanks macfiron 2015-06-25 04:19:01 -05:00
mdipierro
b636a5d6e9 more companies 2015-06-25 03:26:18 -05:00
mdipierro
efc392966e Merge pull request #1005 from cs09g/patch-3
change misspelling
2015-06-18 06:31:51 -05:00
mdipierro
cffa59a80c Merge pull request #1004 from cs09g/patch-2
simplified conditions
2015-06-18 06:31:22 -05:00
mdipierro
82a1b9f628 Merge pull request #1003 from cs09g/patch-1
remove duplicated execution
2015-06-18 06:31:08 -05:00
mdipierro
94d2f1453d Merge pull request #1002 from cs09g/patch-5
change initialization
2015-06-18 06:30:30 -05:00
mdipierro
a1875ee362 Merge pull request #1001 from cs09g/patch-3
Update appadmin.py
2015-06-18 06:29:57 -05:00
mdipierro
5f13dca712 Merge pull request #1000 from niphlod/fix/readme
after appveyor hooks have been defined...
2015-06-18 06:28:39 -05:00
Chase choi
f78d423c92 change misspelling 2015-06-18 17:13:38 +09:00
Chase choi
f60ae809b6 simplified conditions 2015-06-18 17:05:34 +09:00
Chase choi
34dd8af101 remove duplicated execution
is that really duplicated or missing something to add for difference?
2015-06-18 16:55:04 +09:00
Chase choi
6bf6ebab1b change initialization
ok must be True or False. 
set False is better for initialization
2015-06-18 16:40:59 +09:00
Chase choi
29bf50425b Update appadmin.py 2015-06-18 16:31:28 +09:00
niphlod
8a7612c976 after appveyor hooks have been defined... 2015-06-17 21:23:29 +02:00
mdipierro
97489fd277 Merge pull request #998 from niphlod/build/appveyor
move to codecov and enable appveyor too
2015-06-17 02:00:48 -05:00
mdipierro
b86184fe58 Merge pull request #997 from niphlod/fix/bs3_grid_checkbox
fix display of checkboxes in search form of grid
2015-06-17 02:00:34 -05:00
niphlod
2ce53e9957 move to codecov and enable appveyor too 2015-06-14 21:17:52 +02:00
niphlod
d61c372c95 fix display of checkboxes in search form of grid 2015-06-11 21:54:21 +02:00
mdipierro
73e176365f Merge pull request #995 from niphlod/fix/994
fixes #994
2015-06-07 21:47:28 -05:00
mdipierro
33f12d91a5 Merge pull request #992 from btreecat/master
Fixed authentication using different login methods.
2015-06-07 21:47:08 -05:00
mdipierro
d0f1286f03 Merge pull request #991 from cs09g/patch-2
Update appadmin.py
2015-06-07 21:44:44 -05:00
mdipierro
04d698109e Merge pull request #990 from cs09g/patch-1
remove invalid initialize
2015-06-07 21:44:19 -05:00
mdipierro
0e9c5caf4d added request_reset_password_on... 2015-06-07 21:28:18 -05:00
niphlod
509b0a6987 fixes is_in_set repr too 2015-06-06 09:50:44 +02:00
niphlod
e0074ebcac fixes #994
we were overriding default classes for specific widgets
2015-06-05 22:10:33 +02:00
Stephen Tanner
918fdf2f0c Fixed authentication using different login methods. 2015-06-02 12:24:35 -04:00
Chase choi
8e827f7a09 Update appadmin.py 2015-06-02 01:28:51 +09:00
Chase choi
cf2d5b637b remove invalid initialize 2015-06-02 01:00:25 +09:00
mdipierro
236fdcfafc R-2.11.2 2015-05-30 11:30:16 -05:00
mdipierro
ce0f83d00c Merge pull request #988 from gi0baro/master
Track pyDAL 15.05.29
2015-05-30 11:29:09 -05:00
gi0baro
156d771ab3 Track pyDAL 15.05.29 2015-05-29 13:45:52 -05:00
mdipierro
01474c99b0 R-2.11.1 2015-05-28 23:22:16 -05:00
mdipierro
66d15491ca Merge pull request #984 from ilvalle/minorfix
lazy request.uuid
2015-05-28 23:17:21 -05:00
mdipierro
376a27da73 Merge pull request #983 from Euphorbium/patch-1
fix cPickle not defined error
2015-05-28 23:16:33 -05:00
mdipierro
0f95c13dc7 Merge pull request #981 from gi0baro/master
Track pyDAL 15.05.26
2015-05-28 23:16:02 -05:00
peregrinius
a2e7794b92 Invite user
Invite by email another user to access your application. Note, my
initial version was built on Auth.register_bare which doesn't seem to be
in this repository???
2015-05-29 15:22:36 +12:00
mdipierro
926de90ee4 fixed bug in orderby when it is a list 2015-05-28 13:59:03 -05:00
ilvalle
538f375284 lazy request.uuid 2015-05-28 18:30:06 +02:00
Juozas Masiulis
4c61c0962d fix cPickle not defined error 2015-05-28 14:29:43 +03:00
gi0baro
9b71646fc5 Track pyDAL 15.05.26 2015-05-26 14:36:04 +02:00
mdipierro
1e66fa3a93 new version number 2015-05-24 19:14:49 -05:00
mdipierro
57a8dfe034 Merge pull request #977 from austinprog/patch-1
Changed "Import about this GIT repo" Line 16, typo
2015-05-24 18:58:22 -05:00
mdipierro
77e7631740 Merge pull request #976 from niphlod/fix/ubuntu_nginx_hardening
thanks  @wmunguiam for spotting
2015-05-24 18:57:51 -05:00
mdipierro
ba978d55cf Merge pull request #975 from gi0baro/master
Track pyDAL 15.05
2015-05-24 18:57:36 -05:00
mdipierro
12e8ee5c25 Merge pull request #974 from niphlod/fix/redis_cache_multiapp
redis multi-app. Thanks Lisandro for spotting it
2015-05-24 18:57:26 -05:00
Austin
d293e98b43 Changed "Import about this GIT repo" Line 16, typo
My proposal is to change it to "Important reminder about this GIT Repo", as I think the "Import" part in the current one is a typo.
2015-05-24 18:13:03 -05:00
niphlod
4f316d0294 thanks @wmunguiam for spotting 2015-05-24 21:25:27 +02:00
gi0baro
81e15879d4 Track pyDAL 15.05 2015-05-23 16:37:52 +02:00
niphlod
cd1d6c5af1 redis multi-app. Thanks Lisandro for spotting it
redis_cache didn't play well with multiple apps for a silly mistake.
Glad that Lisadro pointed out
2015-05-21 22:26:04 +02:00
mdipierro
c7d3758c77 Merge pull request #973 from omniavx/patch-1
Update dal.py
2015-05-20 08:27:41 -05:00
mdipierro
040e52278e Merge pull request #956 from cassiobotaro/master
More changes in List (request.args)
2015-05-20 08:27:16 -05:00
mdipierro
3daf953c66 syncing maintenance again 2015-05-20 08:26:03 -05:00
mdipierro
de3d722ac9 fixed import, thanks Auden RovelleQuartz 2015-05-20 08:24:33 -05:00
omniavx
ff10eab373 Update dal.py
I was running my application and got this error

{
<type 'exceptions.ImportError'> cannot import name Set

Version
web2py™	Version 2.10.4-stable+timestamp.2015.04.26.15.11.54
Python	Python 2.7.3: /usr/bin/python (prefix: /usr)
Traceback
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Traceback (most recent call last):
  File "/home/www-data/web2py/gluon/restricted.py", line 227, in restricted
    exec ccode in environment
  File "/home/www-data/web2py/applications/omniavx_cxn/controllers/valuecache.py", line 6897, in <module>
  File "/home/www-data/web2py/gluon/globals.py", line 393, in <lambda>
    self._caller = lambda f: f()
  File "/home/www-data/web2py/applications/omniavx_cxn/controllers/valuecache.py", line 6584, in browse_bacct_callback
    from plugin_PowerGrid.CallBack import CallBack
  File "/home/www-data/web2py/gluon/custom_import.py", line 95, in custom_importer
    return base_importer(pname, globals, locals, fromlist, level)
  File "/home/www-data/web2py/gluon/custom_import.py", line 134, in __call__
    result = NATIVE_IMPORTER(name, globals, locals, fromlist, level)
  File "applications/omniavx_cxn/modules/plugin_PowerGrid/CallBack.py", line 41, in <module>
    from gluon.dal import Table ,Query, Set, Rows, Row
ImportError: cannot import name Set
}

same code produced no error in earlier version of web2py



line 15 of web2py/gluon/dal.py is 
{
from pydal.objects import Row, Rows, Table, Query, Expression
}

replacing that with 
{
from pydal.objects import Row, Rows, Table, Query, Set, Expression

}

solves the problem
2015-05-20 00:11:46 -05:00
mdipierro
eb4d159b37 fixed process_batch_upload 2015-05-18 23:28:17 -05:00
Cássio Botaro
5ef7a8e9a1 maintains web2py pattern 2015-05-14 12:24:58 -03:00
mdipierro
76cfba7047 Merge pull request #964 from matclab/mail-send-lazy-to-unicode
#963 : Convert subject and body to unicode before sending mail
2015-05-14 09:17:04 -05:00
mdipierro
f77f307869 Merge pull request #970 from ailnlv/patch-1
Fixing https://github.com/web2py/web2py/issues/969
2015-05-14 09:16:52 -05:00
mdipierro
5ef8648929 Merge pull request #967 from bletourmy/fix/966
fixes #966 - deadlock in cache.disk
2015-05-14 09:16:31 -05:00
mdipierro
ed042685ea Merge pull request #965 from niphlod/fix/962
fixes #962
2015-05-14 09:16:10 -05:00
mdipierro
d09ce57f12 Merge pull request #961 from niphlod/fix/628
fixes #628
2015-05-14 09:14:06 -05:00
ailnlv
169818b275 Fixing https://github.com/web2py/web2py/issues/969
Running readline.parse_and_bind("bind ^I rl_complete") makes the letter "b" stop working on the console. This patch solves the issue and correctly enables tab completition on OSX.
2015-05-13 19:23:56 -03:00
Bernard Letourmy
4b14a87463 fixes #966 - deadlock in cache.disk 2015-05-13 09:35:22 +08:00
niphlod
cadf38b4f6 fixes #962 2015-05-11 21:24:20 +02:00
Mathieu Clabaut
a6226d6391 Convert subject and body to unicode before sending mail
Not doing this was raising an exception :

Traceback (most recent call last):
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/gluon/restricted.py, line 227, in restricted
    exec ccode in environment
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/applications/foundit/controllers/default.py, line 127, in <module>
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/gluon/globals.py, line 393, in <lambda>
    self._caller = lambda f: f()
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/applications/foundit/controllers/default.py, line 34, in user
    return dict(form=auth())
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/gluon/tools.py, line 1595, in __call__
    return getattr(self, args[0])()
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/gluon/tools.py, line 3272, in request_reset_password
    if self.email_reset_password(user):
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/gluon/tools.py, line 3296, in email_reset_password
    message=self.messages.reset_password % d):
  File /base/data/home/apps/e~sacred-bonus-88417/1.384178859090314065/gluon/tools.py, line 798, in send
    subject=subject, body=text, **xcc)
  File /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py, line 402, in send_mail
    message.send(make_sync_call=make_sync_call)
  File /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py, line 1108, in send
    message = self.ToProto()
  File /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py, line 1350, in ToProto
    message = super(EmailMessage, self).ToProto()
  File /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py, line 1046, in ToProto
    message.set_subject(_to_str(self.subject))
  File cpp_message.pyx, line 124, in cpp_message.SetScalarAccessors.Setter (third_party/apphosting/python/protobuf/proto1/cpp_message.cc:2229)
TypeError: <class 'gluon.languages.lazyT'> has type <class 'gluon.languages.lazyT'>, but expected one of: str, unicode
2015-05-09 18:24:09 +02:00
niphlod
5c167907eb fixes #628
response.include_files is now cleaner and easier to maintain

You can specify a tuple of (type, url) to include external assets
without extension (such as the usecase described in #628)

Added tests for include_files, that was never included in CI tests
2015-05-08 21:51:56 +02:00
mdipierro
587ff56a94 linked 15.03-maintenance again 2015-05-07 22:26:42 -05:00
mdipierro
6f91fdd833 minor refactoring in grid(orderby) 2015-05-06 08:56:56 -05:00
mdipierro
6e2f9ad043 fixed examples support 2015-05-04 11:23:44 -05:00
Cássio Botaro
cdca2793e0 Maintain py2.6k compability 2015-05-04 12:55:44 -03:00
Cássio Botaro
a0ee649884 Update tests
- new tests to verify old behaviour 
- test otherwise without cast and defaut
- verify if behave like a list 
- more test with call function
2015-05-04 12:49:14 -03:00
Cássio Botaro
380b491724 Return old behaviours
- Better documented List
- Otherwise not binded with cast
2015-05-04 12:41:06 -03:00
mdipierro
f45bf73992 Merge branch 'master' of github.com:web2py/web2py 2015-05-03 16:42:42 -05:00
mdipierro
94461724f6 Merge pull request #954 from cassiobotaro/master
Mantain backward compatibility
2015-05-03 16:42:12 -05:00
Cássio Botaro
c36c391786 More test to prove backward compatibility 2015-05-03 14:03:26 -03:00
Cássio Botaro
f6db7c995f Its necessary because of default=None trick 2015-05-03 14:02:11 -03:00
Cássio Botaro
ccc4b96709 Added one more test
Added one more test to avoid mistake with backward compatibility
2015-05-03 13:36:24 -03:00
Cássio Botaro
71b02e3044 Maintain backward compatibility
Little change to maintain backward compatibility, related to #590
2015-05-03 13:35:05 -03:00
mdipierro
99fb1c3010 Merge branch 'master' of github.com:web2py/web2py 2015-05-03 10:31:37 -05:00
mdipierro
20067d7b93 Merge pull request #953 from niphlod/fix/691
fixes issue #691
2015-05-03 10:31:32 -05:00
mdipierro
44eb35c617 Merge pull request #952 from niphlod/fix/734
fixes #734
2015-05-03 10:31:21 -05:00
mdipierro
df03317054 Merge pull request #951 from niphlod/tests/cache_ram_and_disk
more tests, general cleanup
2015-05-03 10:31:08 -05:00
mdipierro
9d873cbd1c reverted last commit 2015-05-03 10:30:43 -05:00
mdipierro
1bb4117cbd Merge pull request #950 from cassiobotaro/master
Fix List behaviour and added new feature
2015-05-03 10:27:46 -05:00
mdipierro
e834186a86 Merge pull request #950 from cassiobotaro/master
Fix List behaviour and added new feature
2015-05-03 10:23:08 -05:00
mdipierro
1394942feb removed reference to python 2.5 2015-05-03 10:09:07 -05:00
niphlod
32b9b5c799 fixes issue #691 2015-05-03 16:06:10 +02:00
niphlod
340d7b5e6f fixes #734 2015-05-03 15:51:13 +02:00
niphlod
302f56ecc1 more tests, general cleanup 2015-05-03 15:33:19 +02:00
mdipierro
9b12459a82 Merge branch 'master' of github.com:web2py/web2py 2015-05-02 23:16:12 -05:00
mdipierro
8e3925820c allow disabling of confirmation in js delete 2015-05-02 23:16:05 -05:00
mdipierro
279d71d4cd Merge pull request #936 from niphlod/enhancement/919
added newer Recaptcha2 class to deal with v2.0. Fixes #919
2015-05-02 23:07:36 -05:00
Cássio Botaro
258e2e57ae Fix import errors 2015-05-02 20:36:35 -03:00
cassiobotaro
9357d810d8 Fix List behaviour and added new feature 2015-05-02 20:24:04 -03:00
mdipierro
54b385b321 grid(user_cursor=False) by default because it is broken 2015-04-26 17:16:19 -05:00
mdipierro
df039e734c 2.10.4 stable 2015-04-26 10:10:18 -05:00
mdipierro
58533954dc R-2.10.4 2015-04-26 09:07:07 -05:00
mdipierro
236dc4b943 fixed submodule tracking 2015-04-26 09:04:55 -05:00
mdipierro
6612fd1cfe told git to track the right submodule branch 2015-04-26 08:50:16 -05:00
mdipierro
520950ba74 track track 15.03-maintenance (19/04/15) 2015-04-26 08:44:45 -05:00
mdipierro
e943aa9c25 minor compatibility fix in ldap_auth 2015-04-26 08:39:47 -05:00
mdipierro
756aec7206 Merge pull request #944 from stephenrauch/ldap_auth-fix-nosql
Fix ldap_auth for NoSQL databases
2015-04-26 08:29:26 -05:00
mdipierro
970e2ed35c Merge pull request #939 from smorrison/slack_webhook_support
add support for reporting web2py errors via slack.com
2015-04-26 08:29:00 -05:00
mdipierro
1388c39636 Merge pull request #935 from niphlod/docs/dal
extend underline for proper sphinx formatting
2015-04-26 08:27:48 -05:00
mdipierro
6e84737924 Merge pull request #934 from niphlod/fix/931
fixes #931 . Thanks @butsyk for spotting the bug
2015-04-26 08:27:35 -05:00
stephenrauch
0ad50630f2 Fix ldap_auth for NoSQL databases
Unroll query with join to two queries when working with DB's which don't
support joins.
2015-04-24 11:02:18 -07:00
Sean Morrison
f42ee15f5f add support for reporting web2py errors via slack.com 2015-04-22 19:00:21 -05:00
niphlod
77f154a56b added newer Recaptcha2 class to deal with v2.0. Fixes #919
Improvements over the "old" v1.0
- behaves well also without javascript
- use_ssl is redundant, v2.0 works only in https mode
- ajax is not useful anymore as the newer API is a lot easier

Adjusted also the addrow() method that was missing newer formstyles.
2015-04-22 00:10:05 +02:00
niphlod
2b0bfba649 extend underline for proper sphinx formatting 2015-04-21 23:59:07 +02:00
niphlod
9f1edf267d fixes #931 . Thanks @butsyk for spotting the bug 2015-04-21 21:59:42 +02:00
mdipierro
f3bda9ad02 changed version 2015-04-20 18:02:17 -05:00
mdipierro
f8afc76263 Merge pull request #930 from gi0baro/master
pydal -> track 15.03-maintenance (20/04/15)
2015-04-20 10:39:29 -05:00
gi0baro
65b4aaf842 pydal -> track 15.03-maintenance (20/04/15) 2015-04-20 17:29:22 +02:00
mdipierro
1b729cfbfc Merge pull request #928 from niphlod/fix/920
small typo. Fixes #920
2015-04-19 15:32:28 -05:00
mdipierro
1aa5f30091 Merge pull request #926 from niphlod/enhancement/web2py_on_iis
added web.config to deploy web2py on IIS
2015-04-19 15:32:11 -05:00
mdipierro
b17174c04c Merge pull request #925 from gi0baro/master
pydal -> track 15.03-maintenance (19/04/15)
2015-04-19 15:31:41 -05:00
niphlod
ac80adc9b4 small typo. Fixes #920 2015-04-19 19:49:25 +02:00
niphlod
888fa3dfc8 added setup script 2015-04-19 19:00:59 +02:00
niphlod
f3d815e84b added web.config to deploy web2py on IIS 2015-04-19 15:51:17 +02:00
gi0baro
9915fdf093 pydal -> track 15.03-maintenance (19/04/15) 2015-04-19 14:45:19 +02:00
mdipierro
ef8f802df9 R-2.10.4.beta 2015-04-18 15:44:04 -05:00
mdipierro
f7bf1020df reverted gluon/packages/dal 2015-04-18 15:28:12 -05:00
mdipierro
75b8ceb022 Merge pull request #923 from gi0baro/validators
Fix serializers injection over new pydal
2015-04-18 15:17:06 -05:00
mdipierro
b4f3784136 Merge pull request #922 from dokime7/patch-7
Fix crash with list:reference field
2015-04-18 15:16:25 -05:00
mdipierro
f1297bb827 Merge pull request #918 from niphlod/enhancement/anyserver
added waitress to anyserver
2015-04-18 15:15:02 -05:00
mdipierro
435ebeaae4 more consulting companies 2015-04-18 15:13:03 -05:00
gi0baro
537045082c Updated dal test due to new serializers 2015-04-18 15:08:39 +02:00
gi0baro
4bea52a7b5 Fix serializers injection over new pydal 2015-04-18 15:04:01 +02:00
Jeremie Dokime
33295e516f Fix crash with list:reference field
When using validate_and_update() or validate_and_insert() on a table with a list:reference field, the request crashes after timeout with:
  File "web2py/gluon/globals.py", line 270, in body
    raise HTTP(400, "Bad Request - HTTP body is incomplete")

The request crashes because there is an hidden exception with the isinstance function:
isinstance() arg 2 must be a class, type, or tuple of classes and types

When no using GAE, the GoogleDatastoreAdapter variable is None, so isinstance crash.
See the last line of pydal/adapters/__init__.py

This is a regression intruduced after the v2.9.12.
2015-04-18 02:15:45 +02:00
mdipierro
f33ccf3366 experimental fix for represent 2015-04-16 16:53:12 -05:00
niphlod
0784680c90 added waitress to anyserver 2015-04-15 23:55:44 +02:00
mdipierro
e940228eaf Merge pull request #912 from ilvalle/sqlcustomtype
extend sqlcustomform to support widget/represent
2015-04-15 13:01:50 -05:00
mdipierro
50769a627a Merge pull request #916 from gi0baro/issue-904
Fixes #904
2015-04-15 13:01:19 -05:00
mdipierro
e68ecaa131 Merge pull request #915 from BuhtigithuB/update/gluon-contrib-pypyodbc
Update gluon/contrib/pypyodbc.py 1.3.0 -> 1.3.3
2015-04-15 13:01:01 -05:00
gi0baro
95e6e8577b Fixes #904 2015-04-14 15:25:26 +02:00
Hardirc
19c83d4ad6 Update gluon/contrib/pypyodbc.py 1.3.0 -> 1.3.3 2015-04-13 18:43:48 -04:00
ilvalle
9c92bd1050 extend sqlcustomform to support widget/represent (possible fix to web2py/pydal#127) 2015-04-12 21:04:05 +02:00
mdipierro
b3b95ccf5f Merge pull request #906 from niphlod/fix/895
file is already open at this point... fixes #895
2015-04-08 23:24:16 -05:00
niphlod
cefa30841b file is already open at this point... fixes #895 2015-04-08 21:47:04 +02:00
mdipierro
15ff8669cb fixed dal tracking, thanks Niphlod 2015-04-06 16:24:49 -05:00
mdipierro
a921751e8e stripe form bs3 compatible, disabled cache.ram max utilization 2015-04-05 18:17:27 -05:00
pallav_fdsi
842207ab33 Merge branch 'master' of https://github.com/web2py/web2py 2015-04-04 19:51:26 -04:00
mdipierro
b02e8a6d5f fixed problem with custom import and upgraded jquery.js 2015-04-02 16:30:15 -05:00
mdipierro
a2b17967cf Merge pull request #898 from ilvalle/issue-896
fix web2py/web2py#896, avoid to select blob fields in sqlform.grid
2015-04-02 16:24:26 -05:00
mdipierro
343ebf1714 Merge pull request #897 from BuhtigithuB/update-contrib/feedparser-py
Update gluon/contrib/feedparser.py from 5.1.2 -> 5.1.3
2015-04-02 16:23:34 -05:00
mdipierro
e330791fe3 Merge pull request #894 from niphlod/fix/windows_build
fix windows build
2015-04-02 16:22:49 -05:00
mdipierro
5e1e97ffc4 Merge pull request #893 from niphlod/fix/duplicate_module
not needed anymore module
2015-04-02 16:20:39 -05:00
ilvalle
60f8816a10 fix web2py/web2py#896, avoid to select blob fields in sqlform.grid 2015-04-02 21:38:05 +02:00
Richard Vézina
6187c89ba6 Update gluon/contrib/feedparser.py from 5.1.2 -> 5.1.3 2015-04-02 13:58:48 -04:00
niphlod
e441e15907 fix windows build 2015-04-01 21:35:52 +02:00
niphlod
e6c3410639 not needed anymore module 2015-04-01 20:55:47 +02:00
mdipierro
6b6cb5839c Merge branch 'master' of github.com:web2py/web2py 2015-04-01 13:55:07 -05:00
mdipierro
2a7e9c0c59 possible fix for issue #892 2015-04-01 13:54:48 -05:00
mdipierro
5b637c0a82 Merge pull request #891 from leonelcamara/cache_cleanup
Fixes issue with locked files during cleanup
2015-04-01 12:41:52 -05:00
Leonel Câmara
5cdd7c1215 Fixes issue with locked files during cleanup 2015-04-01 18:27:05 +01:00
mdipierro
0aade6b378 R-2.10.2 2015-03-31 22:26:25 -05:00
mdipierro
5b75130187 quick fix for cacheondisk problem and admin 2015-03-31 22:25:10 -05:00
mdipierro
2755354e2e fixed a problem with circular imports 2015-03-31 17:15:19 -05:00
mdipierro
d088c622a7 fixed VERSION 2015-03-31 15:15:48 -05:00
mdipierro
70b0d67345 R-2.10.1 2015-03-31 14:57:40 -05:00
mdipierro
1b39736561 Merge branch 'master' of github.com:web2py/web2py 2015-03-31 14:45:59 -05:00
mdipierro
267175b947 Merge pull request #888 from BuhtigithuB/fix/pep8-utils-py
Improve PEP8 gluon/utils.py
2015-03-31 14:45:48 -05:00
mdipierro
70aa5136a6 Merge pull request #887 from BuhtigithuB/fix/pep8-validators-py
Improve PEP8 gluon/validators.py
2015-03-31 14:45:38 -05:00
mdipierro
f036940ce1 Merge pull request #886 from BuhtigithuB/fix/pep8-widget-py
Improve PEP8 gluon/widget.py
2015-03-31 14:45:31 -05:00
mdipierro
42e2c150e7 Merge pull request #885 from BuhtigithuB/fix/pep8-tools-py
Improve PEP8 gluon/tools.py
2015-03-31 14:45:23 -05:00
Richard Vézina
bb64bb2b2e Improve PEP8 gluon/utils.py 2015-03-31 14:05:34 -04:00
Richard Vézina
bbd6a081eb Improve PEP8 gluon/validators.py 2015-03-31 14:03:38 -04:00
Richard Vézina
b2cd2dc149 Improve PEP8 gluon/widget.py 2015-03-31 14:01:25 -04:00
Richard Vézina
e4ef75c550 Improve PEP8 gluon/tools.py 2015-03-31 13:56:21 -04:00
mdipierro
f5b0bff445 Merge branch 'master' of github.com:web2py/web2py 2015-03-30 01:26:20 -05:00
mdipierro
f9c755bc18 Merge pull request #883 from BuhtigithuB/pep8-storage-py
Improve PEP8 gluon/storage.py
2015-03-30 01:26:06 -05:00
mdipierro
11a2ae36e6 Merge pull request #882 from leonelcamara/lock_disk
Finely grained lock disk
2015-03-30 01:25:55 -05:00
mdipierro
13897f00ad Merge branch 'master' of github.com:web2py/web2py 2015-03-29 18:07:29 -05:00
mdipierro
0c993db95f Merge pull request #880 from alimujtaba/master
check cmd_options existence before using it in restricted.py
2015-03-29 18:06:23 -05:00
mdipierro
7c4420aab2 Merge pull request #879 from ilvalle/fix-links
updated welcome menu with the 'Helping web2py' book chapter
2015-03-29 18:05:34 -05:00
mdipierro
ba32ba7c62 Merge pull request #876 from bbertka/master
Added CF deployment script
2015-03-29 18:05:19 -05:00
mdipierro
5bf1eca384 Merge pull request #875 from amerikan/master
Made buttons and table look styled in appadmin
2015-03-29 18:05:02 -05:00
mdipierro
f445619bee Merge pull request #874 from niphlod/welcome/bootstrap_update
bootstrap 3.3.4 is out...
2015-03-29 18:04:35 -05:00
mdipierro
da162e0941 Merge pull request #873 from sp1d3rx/patch-1
Update ajax_examples.py so it does what it says.
2015-03-29 18:04:17 -05:00
mdipierro
c63c91aa8a Merge pull request #872 from BuhtigithuB/pep8-sqlhtml-py
Improve PEP8 gluon/sqlhtml.py
2015-03-29 18:03:34 -05:00
Ali Mujtaba
4b3439f34c check cmd_options existence before using it in restricted.py 2015-03-29 22:09:47 +05:00
ilvalle
bd6235a00b updated welcome menu with the 'Helping web2py' book chapter 2015-03-29 11:11:24 +02:00
Leonel Câmara
3e46e985bf Fix thundering herd problem due to the lock for a key being released too early 2015-03-28 00:56:53 +00:00
Leonel Câmara
9050840962 Changed CacheOnDisk to use fine grained locking instead of atomic replacement 2015-03-27 01:49:48 +00:00
Ben Bertka
0a82c9c822 Added CF deployment script 2015-03-25 23:37:19 -07:00
Erik Montes
0b739ccb11 Made buttons and table look styled in appadmin
Bootstrap 3 requires ‘table’ and ‘btn-*’ as classes to make the
respective elements look styled
2015-03-25 17:40:42 -07:00
niphlod
6a3bd509e0 bootstrap 3.3.4 is out. 2015-03-25 21:25:29 +01:00
sp1d3rx
6d0e93d737 Update ajax_examples.py so it does what it says.
Fixed the example so it actually does what it says. It said "The last 10 entries will appear sorted in a table below.". What it did was if the number of entries was 10, it would truncate the entries and start over again. So, in order for this to show the last 10 entries, it has to delete the oldest entry after 10. The best way to do that is to not sort the list, except when displaying and then delete the first entry in the list before inserting the 11th entry.
2015-03-24 10:53:34 -07:00
mdipierro
0184d33e73 Merge branch 'master' of github.com:web2py/web2py 2015-03-24 11:40:28 -05:00
mdipierro
bd899ea304 Merge pull request #870 from BuhtigithuB/pep8-shell-py
Improve PEP8 gluon/shell.py
2015-03-24 11:40:13 -05:00
mdipierro
debd84e287 Merge pull request #871 from gi0baro/master
Track pyDAL 15.03
2015-03-24 11:39:42 -05:00
mdipierro
fb902dd9ce throttling cache collection 2015-03-24 11:26:01 -05:00
gi0baro
baeb156333 Track pyDAL 15.03 2015-03-24 11:45:23 +01:00
mdipierro
3be7ff0532 Merge pull request #869 from BuhtigithuB/pep8-settings-py
Improve PEP8 gluon/settings.py
2015-03-23 10:47:25 -05:00
mdipierro
4f64ffb606 Merge pull request #868 from Kalmuraee/master
Arabic Translation Added
2015-03-23 10:47:13 -05:00
mdipierro
e397ad5782 cache.ram.max_ram_utilization = 90 2015-03-22 19:16:29 -05:00
mdipierro
ac78bf2f7d Merge pull request #867 from BuhtigithuB/pep8-scheduler-py
Improve PEP8 gluon/scheduler.py
2015-03-22 19:13:16 -05:00
mdipierro
438cdc809b used gluon/contrib/orderddict 2015-03-22 19:12:26 -05:00
mdipierro
3ea49739d3 expire cache when ram excees 90% 2015-03-22 13:40:05 -05:00
mdipierro
81fc9dbc6c Merge pull request #866 from BuhtigithuB/pep8-rocket-py
Improve PEP8 gluon/rocket.py
2015-03-22 12:59:34 -05:00
mdipierro
e8357bff7f Merge pull request #863 from BuhtigithuB/pep8-rewrite-py
Improve PEP8 gluon/rewrite.py
2015-03-22 00:37:04 -05:00
mdipierro
d7435a07ad Merge pull request #864 from niphlod/fix/redis_sessions
fixes issue with deleting sessions
2015-03-22 00:36:47 -05:00
niphlod
3291075384 fixes issue with deleting sessions 2015-03-21 21:54:29 +01:00
mdipierro
aa82638c3b Merge pull request #862 from niphlod/fix/issue679
fixes #679
2015-03-20 20:33:25 -05:00
mdipierro
c30bffd2ae Merge pull request #861 from BuhtigithuB/pep8-recfile-py
Improve PEP8 gluon/recfile.py
2015-03-20 20:33:01 -05:00
mdipierro
f27b9d7a23 following Niphlod's advice in app.example.yaml regex syntax 2015-03-20 18:39:19 -05:00
mdipierro
ead8aab21e fixed app.example.yaml, thanks Niphlod 2015-03-20 18:13:03 -05:00
niphlod
4f1606fcf2 fixes #679 2015-03-20 23:16:30 +01:00
mdipierro
849177e09f adding pydal 15.03.20 2015-03-20 14:18:37 -05:00
mdipierro
f1547486c0 fixed attachment on GAE 2015-03-20 13:34:43 -05:00
mdipierro
72d7b571de Merge pull request #860 from BuhtigithuB/pep8-newcron-py
Improve PEP8 gluon/newcron.py
2015-03-20 13:23:09 -05:00
mdipierro
3f6835f300 fixed issue #757, rss2 with weird chars (again) 2015-03-20 11:36:24 -05:00
mdipierro
133db9e3bb fixed issue #757, rss2 with weird chars 2015-03-20 11:18:18 -05:00
mdipierro
daf371466a fixed issue #789, callable next 2015-03-20 11:05:15 -05:00
mdipierro
723c543f73 fixed issue #814, link to releases: 2015-03-20 11:00:53 -05:00
mdipierro
2a865a6f3e Merge pull request #859 from BuhtigithuB/pep8-myregex-py
Improve PEP8 gluon/myregex.py
2015-03-20 10:47:50 -05:00
mdipierro
a56c1f37ed no more DAL and pyDAL 2015-03-20 09:11:24 -05:00
mdipierro
29b58ff70c added DAL serilization test 2015-03-20 01:35:55 -05:00
mdipierro
65b80d115a allow serialization of dal.py/DAL 2015-03-20 01:28:10 -05:00
mdipierro
385d47c5f0 Merge pull request #857 from gi0baro/pickle-issues
Removed representation utils from `_default_validators` method
2015-03-19 22:21:26 -05:00
mdipierro
ce6b60c416 Merge pull request #856 from BuhtigithuB/pep8-main-py
Improve PEP8 gluon/main.py
2015-03-19 22:20:35 -05:00
gi0baro
caa1976510 Removed representation utils from _default_validators method 2015-03-20 01:41:24 +01:00
mdipierro
023ee43245 minor changes to scrips and contrib 2015-03-19 12:22:21 -05:00
mdipierro
a5097cdbc7 Merge pull request #853 from BuhtigithuB/pep8-languages-py
Improve PEP8 gluon/languages.py
2015-03-19 11:56:06 -05:00
mdipierro
109d104f3d removed broken links from menus 2015-03-19 11:54:32 -05:00
mdipierro
8de4fbf38f margin right 2015-03-18 18:32:10 -05:00
mdipierro
dbe3951507 fixed checboxes and radio widgets 2015-03-18 18:28:38 -05:00
mdipierro
f9212bc75e removed api collections json, fixed spilling list:string widget 2015-03-18 18:19:15 -05:00
mdipierro
058d6863a6 Merge pull request #854 from niphlod/fix/bs3
first iteration on bs3 cleanup
2015-03-18 18:13:21 -05:00
mdipierro
6c6cdd79f3 Merge pull request #855 from niphlod/fix/w2p_pack
Thanks Simone!
2015-03-18 18:10:53 -05:00
niphlod
cec0f8a0cf fix app packaging 2015-03-19 00:04:24 +01:00
niphlod
0086f7d28a first iteration on bs3 cleanup 2015-03-18 23:11:55 +01:00
mdipierro
09eb7ce3b7 removed versioning in new welcome app 2015-03-17 16:56:47 -05:00
mdipierro
d7e96ac114 fixed some style/layout issues, thanks Niphlod 2015-03-17 16:52:33 -05:00
mdipierro
2ff0f299da add remove static welcome files 2015-03-17 13:02:11 -05:00
mdipierro
c75c3c2d07 fixed packaging 2015-03-17 12:57:53 -05:00
mdipierro
72a68d7f52 fixed link to profile 2015-03-17 12:53:40 -05:00
mdipierro
dcaa103b8d restored some files that got corrupted in bs3->bs2, thanks Niphlod 2015-03-17 11:57:41 -05:00
mdipierro
61ccfa2b72 welcome3 is standard (but not final) 2015-03-16 21:44:45 -05:00
mdipierro
b9cd4ffc58 moved to latest dal 2015-03-16 21:41:04 -05:00
mdipierro
6ecc147d8c reverted changes to html.py 2015-03-16 18:03:37 -05:00
mdipierro
7bfa85fa10 Merge branch 'master' of github.com:web2py/web2py 2015-03-16 00:56:33 -05:00
mdipierro
1cd78a5c6d Merge pull request #852 from BuhtigithuB/BuhtigithuB-patch-1
unittest for gluon/utils.py  compare()
2015-03-16 00:56:08 -05:00
mdipierro
6386a80588 Merge pull request #851 from BuhtigithuB/pep8-http-py
Pep8 http py
2015-03-16 00:55:27 -05:00
BuhtigithuB
0094a323d7 test_simple_hash() 2015-03-15 21:07:21 -04:00
BuhtigithuB
901236765f forget to importe compare 2015-03-15 20:21:52 -04:00
BuhtigithuB
05daa164ac unittest test compare() 2015-03-15 20:07:24 -04:00
mdipierro
6f72641459 fixed problem with URL('') 2015-03-15 14:41:09 -05:00
mdipierro
198fbf9f59 allow URL('') 2015-03-15 14:32:29 -05:00
Hardirc
4ee872e4ce Merge remote-tracking branch 'upstream/master' 2015-03-15 11:47:29 -04:00
mdipierro
c77683d80e added more js files to welcome3 2015-03-13 13:10:50 -05:00
mdipierro
b0043d7290 added back modernizr and respond 2015-03-13 12:05:08 -05:00
mdipierro
044af68e5c reverted a mistake 2015-03-13 12:00:22 -05:00
mdipierro
6498d5ae7e Merge pull request #849 from gi0baro/master
Reverting 9dba971 reference change on pydal
2015-03-13 10:59:24 -05:00
gi0baro
652f0316f9 Reverting 9dba971 reference change on pydal 2015-03-13 16:46:40 +01:00
mdipierro
eecce3dd8f faster update_groups 2015-03-12 23:09:19 -05:00
mdipierro
9dba971d3d fixed db.Table and db.Field 2015-03-12 19:49:32 -05:00
mdipierro
60b3b19ede another small bs3 fix 2015-03-12 17:25:15 -05:00
mdipierro
ed5ac272a5 some more changes to welcome3 2015-03-12 09:35:28 -05:00
Hardirc
574266a6ae Merge remote-tracking branch 'upstream/master' 2015-03-12 02:33:11 -04:00
mdipierro
4d63e79fb5 Merge pull request #846 from niphlod/enhancement/repr_cache
caches recursive selects for references
2015-03-11 18:31:30 -05:00
mdipierro
6f2e8de998 Merge pull request #841 from kirsn/master
Issue 794: sep = separator or current.response.form_label_separator
2015-03-11 18:28:55 -05:00
mdipierro
a5e4cbeaf7 Merge pull request #840 from BuhtigithuB/pep8-globals-py
Improve PEP8 globals.py
2015-03-11 18:28:40 -05:00
mdipierro
8ac3f204fa inverted messages 2015-03-11 00:53:19 -05:00
mdipierro
9b3a9a32e4 reduced space in forms 2015-03-11 00:42:01 -05:00
mdipierro
71aac68c20 fixed whitespaces in welcome3 2015-03-11 00:35:24 -05:00
mdipierro
ae48f471d0 minor flash styling 2015-03-11 00:23:43 -05:00
mdipierro
d4ebb5462b simpled code in index.html 2015-03-11 00:12:54 -05:00
mdipierro
3e3fdbd06a image header only on index 2015-03-10 23:58:44 -05:00
mdipierro
915c5a71d8 bold buttons, no shadow 2015-03-10 23:56:34 -05:00
mdipierro
62fa6a8a78 example of image 2015-03-10 23:44:46 -05:00
mdipierro
664a59f46c minor simplifications 2015-03-10 23:11:04 -05:00
mdipierro
3948132817 better bootstrap3 2015-03-10 23:07:00 -05:00
mdipierro
a2060eedce improved static/js/web2py-bootstrap3.js 2015-03-10 22:18:42 -05:00
niphlod
d1ec005924 caches recursive selects for references
Why didn't we think before ? References are lazy, but when asked 
for representation why should we fetch the same referenced record
over and over ?

NB: the code caches only represent() fetching records from tables, that
are the only idempotent represent() calls out there. We could cache
every representation only asking for every represent() call to be 
idempotent. As I feel there will be someone returning random values,
I left it out.

I'll make a PR soon for pyDAL to fix the same behaviour.
2015-03-11 00:48:51 +01:00
mdipierro
ac24ce446e minor changes to welcome3 2015-03-10 13:47:53 -05:00
mdipierro
46e0dcebf2 welcome3 2015-03-10 13:42:58 -05:00
mdipierro
3f9f8db62c another README revision 2015-03-09 12:56:29 -05:00
mdipierro
219fb3e9cc another README revision 2015-03-09 12:55:10 -05:00
mdipierro
037d652b0b listed packages under README 2015-03-09 12:28:10 -05:00
mdipierro
4d6c9f62f0 fixed typo in readme 2015-03-09 12:10:47 -05:00
mdipierro
0f300cf845 fixed readme 2015-03-09 11:57:09 -05:00
Kiran Subbaraman
0839cf9dd2 issues/747
closes issue issues#747
2015-03-08 22:44:15 +05:30
mdipierro
0c60f05e62 Merge pull request #839 from BuhtigithuB/pep8fileutils-py
PEP8 fileutils py
2015-03-07 12:34:19 -06:00
Hardirc
f296376f5c Improve PEP8 gluon/storage.py 2015-03-06 22:28:13 -05:00
Hardirc
4296105942 Improve PEP8 gluon/sqlhtml.py 2015-03-06 22:27:21 -05:00
Hardirc
86880ea080 Improve PEP8 gluon/shell.py 2015-03-06 22:25:03 -05:00
Hardirc
01832d729f Improve PEP8 gluon/settings.py 2015-03-06 22:24:02 -05:00
Hardirc
3e19e3d0db Improve PEP8 gluon/scheduler.py 2015-03-06 22:22:00 -05:00
Hardirc
6bbc75df2e Improve PEP8 gluon/rocket.py 2015-03-06 22:20:22 -05:00
Hardirc
af62288832 Improve PEP8 gluon/rewrite.py 2015-03-06 22:19:09 -05:00
Hardirc
d00667e804 Improve PEP8 gluon/recfile.py 2015-03-06 22:15:42 -05:00
Hardirc
8ac3191e33 Improve PEP8 gluon/newcron.py 2015-03-06 22:14:10 -05:00
Hardirc
0546e9b396 Improve PEP8 gluon/myregex.py 2015-03-06 22:12:56 -05:00
Hardirc
29c0eb6bac Improve PEP8 gluon/main.py 2015-03-06 22:11:31 -05:00
Hardirc
f227397ccf Improve PEP8 gluon/languages.py 2015-03-06 22:08:50 -05:00
Hardirc
df6fc812e3 Improve PEP8 http.py 2015-03-06 22:06:37 -05:00
Hardirc
362e6dbad2 Improve PEP8 gluon/html.py 2015-03-06 22:04:46 -05:00
Hardirc
bf7bb17f8d Improve PEP8 globals.py 2015-03-06 21:54:41 -05:00
Hardirc
8f6d2342ac Improve PEP8 gluon/fileutils.py 2015-03-06 21:16:55 -05:00
Hardirc
8608f78e6b Improve PEP8 gluon/fileutils.py 2015-03-06 20:57:01 -05:00
Hardirc
3d0a0dfa78 Fix single double quote for triple double quote docstring 2015-03-06 20:39:30 -05:00
mdipierro
b00a16ffa3 added some more consulting companies 2015-03-06 11:32:49 -06:00
mdipierro
a5145340fb Merge pull request #831 from niphlod/fix/827
fix docs at the top to honor correctly expiration when used in models
2015-03-05 16:26:45 -06:00
mdipierro
bbb47ba075 Merge pull request #830 from BuhtigithuB/master
Fix click popagation to both new and actual tab when CTRL+Click
2015-03-05 16:26:36 -06:00
mdipierro
262c99ce33 Merge pull request #828 from niphlod/fix/656
fixes #656
2015-03-05 16:26:03 -06:00
mdipierro
91873f9ed4 Merge branch 'gi0baro-master' 2015-03-05 16:25:31 -06:00
mdipierro
0f5a59627b Merge branch 'master' of https://github.com/gi0baro/web2py into gi0baro-master 2015-03-05 16:25:19 -06:00
niphlod
c4a703eb84 fix docs at the top to honor correctly expiration when used in models
Thanks @KabluBR  for spotting it
2015-03-03 20:30:40 +01:00
mdipierro
4168002a58 allow imports form gluon/dal.py 2015-03-03 11:05:13 -06:00
BuhtigithuB
1554987e62 Fix click popagation to both new and actual tab when CTRL+Click
This solved the issue #829
2015-03-03 10:16:25 -05:00
niphlod
421c905621 fixes #656 2015-03-02 23:00:45 +01:00
mdipierro
befb5b286a Merge branch 'master' of github.com:web2py/web2py 2015-03-01 11:04:53 -06:00
mdipierro
5bed152a0d email cid on GAE 2015-03-01 11:04:37 -06:00
gi0baro
63ed89ef5d Tracking pyDAL v15.02.27 2015-02-27 12:32:42 +01:00
mdipierro
9ee8fe25fe Merge pull request #821 from leonelcamara/Fix_issue_#819
Fixed issue 819
2015-02-25 11:45:06 -06:00
mdipierro
089e632aab Merge pull request #818 from leonelcamara/fix_sheduler_task_args
Fix - Scheduler - Convert task args back to utf-8
2015-02-25 11:44:46 -06:00
mdipierro
99cc5750bc Merge pull request #817 from niphlod/fix/773
fixes issue #773
2015-02-25 11:44:30 -06:00
mdipierro
7bd1d4b57f Merge pull request #816 from ilvalle/fix-editor
fix issue 799, removed new lines from response header
2015-02-25 11:44:12 -06:00
Leonel Câmara
8f07005965 Fixed issue 819
The problem was that it was only checking for button to use html instead of val, what you need is to only use val if it it's an input and use html for everything else.
2015-02-25 13:26:29 +00:00
Leonel Câmara
a9f834c2e8 Fix - Scheduler - Convert task args back to utf-8
See this thread for more details:
https://groups.google.com/forum/#!topic/web2py-developers/0OPEm9WELoM
2015-02-24 23:13:01 +00:00
niphlod
e62bead5e2 fixes issue #773
Removed redundant tests in test_validators.py since there's test_isurl.py
Added allowed_tlds from http://data.iana.org/TLD/tlds-alpha-by-domain.txt
Added script to easily update the official_top_level_domains for the future
2015-02-24 23:34:27 +01:00
ilvalle
f3e5b0dce1 fix issue 799, removed new lines from response header 2015-02-24 19:45:35 +01:00
mdipierro
942b56fdc8 Merge pull request #812 from niphlod/fix/635
fixes issue #635
2015-02-24 09:26:40 -06:00
mdipierro
dbd5bf0be6 Merge pull request #811 from niphlod/update/ipaddr
updated ipaddr to the latest version
2015-02-24 09:26:21 -06:00
mdipierro
bd180c18d2 Merge pull request #810 from niphlod/fix/742
fixes issue #742
2015-02-24 09:26:03 -06:00
mdipierro
a37c90d957 Merge pull request #809 from niphlod/fix/806
fixes #806
2015-02-24 09:25:43 -06:00
mdipierro
b402d2a03f Merge pull request #808 from ilvalle/codemirror-4.13
codemirror 4.13
2015-02-24 09:25:29 -06:00
mdipierro
a4f181ff8e Merge pull request #807 from sven/master
Make extract_sqlite_models.py work with SQLite 3.8.6
2015-02-24 09:25:09 -06:00
niphlod
fb49327e93 fixes issue #635
since there is no more a proper place to put the new regex, it's on top
of the module for speedup. The patch leaves open a few corner-cases,
but since we have "headers" to alter the headers in SQLTABLE, any
corner case can be fixed passing properly filled "headers" parameter.
This just makes the simple case described on the issue work fine, that
should accomodate the 99% of the usecases for with_alias() needs
at the field level.
2015-02-23 23:00:59 +01:00
niphlod
69e9f9867a updated ipaddr to the latest version
The API changed just a little bit, so a small refactor of validators.py 
was needed
2015-02-23 21:49:00 +01:00
niphlod
17f4e46423 fixes issue #742 2015-02-23 21:34:23 +01:00
niphlod
74cac47d43 fixes #806 2015-02-22 18:04:48 +01:00
ilvalle
08dd716312 codemirror 4.13 2015-02-21 15:42:31 +01:00
Sven Bachmann
d7d00d1f45 fixed SQLite type matching by converting all types to lower case
SQLite 3.8.6 create table dump uses upper case types.
2015-02-20 21:41:02 +01:00
Sven Bachmann
11c90ef885 fixed sqlite create table parse regex
At least SQLite 3.8.6 uses the format:

[item]        type,
[item]        type,
[item]        type,

The previous variant tried to parse lines like:

"item"        type,
"item"        type,
"item"        type,
2015-02-20 21:37:40 +01:00
mdipierro
8d83bb3076 Merge pull request #804 from niphlod/fix/sessions2trash
fixed sessions2trash.py not removing empty dirs
2015-02-20 08:38:27 -06:00
mdipierro
41cfb1829a Merge pull request #802 from Pivert/issue/801
Issue/801 - Fix the :write not saving problem in codemirror vim mode
2015-02-20 08:37:55 -06:00
mdipierro
defe76d947 Merge pull request #797 from mcemeren/master
Fixed issue;sanitizer closing no close tags
2015-02-20 08:37:35 -06:00
niphlod
9f827df914 fixed sessions2trash.py not removing empty dirs 2015-02-19 22:56:27 +01:00
Cem Eren
0760752719 Added test for sanitizer for the issue of closing no-close tags 2015-02-19 11:29:49 +02:00
www-data
74d942f09b Fixed bug #801 2015-02-18 19:23:07 +01:00
www-data
46a52bed8b Added the 2 missing files. This is probably consequences of codemirror
update.
2015-02-18 18:38:33 +01:00
mdipierro
4e019fe6fd added missing codemirror file 2015-02-18 11:02:36 -06:00
mdipierro
c2a46c5d6d web2py.py -e 2015-02-18 10:29:20 -06:00
mdipierro
8a9d95de41 fixed 'Return object from represent method of field' 2015-02-17 12:01:36 -06:00
Cem Eren
9ebc6d5ca7 Fixed issue;sanitizer closing no close tags 2015-02-16 18:35:30 +02:00
mdipierro
d6c565f33f fix HIGHEST PROTOCOL? 2015-02-15 23:35:15 -06:00
mdipierro
e90433c116 no more handlers in binaries 2015-02-15 17:02:47 -06:00
mdipierro
b8ce120a8e Merge pull request #792 from niphlod/fix/735
fixes #735. Review CAREFULLY before merging
2015-02-15 16:44:09 -06:00
mdipierro
1c431909bf Merge pull request #796 from niphlod/fix/docs
adjusted docs to newer structure
2015-02-15 16:43:03 -06:00
mdipierro
65bfd4094e Merge pull request #795 from ilvalle/codemirror-4.12
removed unsed codemirror files
2015-02-15 16:42:57 -06:00
mdipierro
8139b65152 updated list of supporting companies 2015-02-15 16:16:15 -06:00
niphlod
3fed961c20 adjusted docs to newer structure 2015-02-15 23:13:57 +01:00
mdipierro
c59504067b fixed some text 2015-02-15 15:29:40 -06:00
mdipierro
6af4c283cc no more reference to googlecode 2015-02-15 15:24:30 -06:00
ilvalle
85f05109de removed unsed codemirror files 2015-02-14 17:07:58 +01:00
mdipierro
b22aa355d0 better Makefile 2015-02-14 00:10:25 -06:00
mdipierro
613c509d96 better Makefile 2015-02-14 00:07:02 -06:00
mdipierro
e00fcc7979 better Makefile 2015-02-13 23:59:46 -06:00
mdipierro
a3cbfb602c no more epydoc 2015-02-13 23:31:12 -06:00
mdipierro
2ad7ee2544 improved Makefile 2015-02-13 23:30:30 -06:00
mdipierro
c56c96ede1 cp --parents 2015-02-13 23:23:33 -06:00
niphlod
4d9548b1f5 fixes #735. Review CAREFULLY before merging 2015-02-13 22:54:27 +01:00
mdipierro
2aa8eaccb0 Merge pull request #788 from ilvalle/admin-fix-inspect
Fix appadmin code inspection for db hooks
2015-02-09 16:56:30 -06:00
mdipierro
47b3e46510 Merge pull request #781 from Pivert/update/codemirror_4.12
Update/codemirror 4.12
2015-02-09 16:56:09 -06:00
mdipierro
c02d9fe665 Merge pull request #780 from Pivert/issue/2046
Fixed issue/2046:
2015-02-09 16:55:03 -06:00
mdipierro
73cdda20e6 Merge pull request #777 from niphlod/fix/pg8000_import
this somehow got merged wrongly (came from #762)
2015-02-09 16:54:51 -06:00
mdipierro
0d9f61eeab Merge pull request #775 from leonelcamara/fix_enableElement
Fix enable element
2015-02-09 16:52:57 -06:00
ilvalle
e939d084fe Fix appadmin code inspection for db hooks 2015-02-09 19:38:23 +01:00
Francois Delpierre
11722b9c82 Updated codemirror to v4.12.
Did a lot of cleanup to limit the size of the plugin.
I kept the emmet plugin.
2015-02-07 18:41:17 +01:00
Francois Delpierre
fd0cde4263 Fixed issue/2046:
Double scrollback in web editor because does not properly calculate display height
2015-02-07 17:22:48 +01:00
niphlod
d7a0e6c4d7 this somehow got merged wrongly (came from #762) 2015-02-06 21:28:47 +01:00
mdipierro
69c2bfba9a Merge pull request #774 from niphlod/fix/issue_769
fixes #769
2015-02-05 18:09:50 -06:00
mdipierro
7e22309844 Merge pull request #768 from niphlod/enhancement/sqlhtml
pep8ized a taddle bit sqlhtml.py
2015-02-05 18:09:34 -06:00
mdipierro
0da70c9552 Merge pull request #765 from niphlod/enhancement/tests_with_travis_docker
exploiting new travis-ci environment
2015-02-05 18:09:24 -06:00
mdipierro
407fc85dc5 Merge pull request #763 from niphlod/fix/README
fixed issue report link
2015-02-05 18:09:07 -06:00
mdipierro
4984892fe0 merged 2015-02-05 18:08:35 -06:00
mdipierro
d98d0872b3 Merge pull request #761 from gi0baro/master
Updated missing pydal warning message
2015-02-05 17:58:04 -06:00
mdipierro
0c1c36e022 Merge pull request #758 from niphlod/fix/safer_adapters_import
we should always avoid importing "optionals" without a try:except.
2015-02-05 17:57:45 -06:00
Leonel Câmara
5eb2d7b9ee minor (removed extra space) 2015-02-05 09:34:37 +00:00
Leonel Câmara
53a774827e made w2p:enable-with follow the same style as w2p_disable_with
Fixed a bug in enableElement where val was being used for button elements instead of html.
2015-02-05 09:32:11 +00:00
niphlod
1b34216072 fixes #769
- fixed response.include_files() to behave correctly with 
  response.static_version_urls
- added response.static_version_urls to admin
- refactored admin URL() usage passing always and correctly 'static'
  as the controller
2015-02-04 22:18:42 +01:00
ilvalle
7bbeb669b9 updated pg8000 imports 2015-02-01 17:56:30 +01:00
niphlod
46c4b1af27 pep8ized a taddle bit sqlhtml.py 2015-01-28 22:34:04 +01:00
niphlod
f503750b6a exploiting new travis-ci environment 2015-01-27 22:13:13 +01:00
niphlod
440fa16bec fixed issue report link 2015-01-27 21:26:33 +01:00
ilvalle
0f9fe09a15 Merge remote-tracking branch 'upstream/master' into pg8000 2015-01-27 14:02:01 +01:00
mdipierro
5da5d510a0 fixed some problems with new dal and SQLHTML 2015-01-27 00:16:45 -06:00
gi0baro
c2332b4dbd Updated missing pydal warning message 2015-01-27 02:40:18 +01:00
niphlod
7e07ff8b39 we should always avoid importing "optionals" without a try:except.
one clear case of "should never happen"... that happened.
in this case docs were failing builds on readthedocs because of 
pypyodbc not being able to load any odbc library.
2015-01-27 00:13:45 +01:00
mdipierro
89c5668366 Merge branch 'master' of github.com:web2py/web2py 2015-01-26 09:22:47 -06:00
mdipierro
554722318a fixed a problem with SQLFORM and DAL import 2015-01-26 09:22:12 -06:00
pallav_fdsi
c58f29bb9c Merge branch 'master' of https://github.com/web2py/web2py 2015-01-25 15:58:39 -05:00
mdipierro
c18e32134c Merge pull request #600 from kirsn/master
Issue 2037: apply truncate correctly
2015-01-25 13:15:21 -06:00
kirsn
36fdd2e04f Issue 2037: apply truncate correctly 2015-01-26 00:25:52 +05:30
mdipierro
fa7e603a7a changed the text that reports missing mydal 2015-01-25 12:32:31 -06:00
mdipierro
5a0ee72260 Merge pull request #599 from gi0baro/pydal-sm
From DAL to pyDAL as git submodule
2015-01-25 12:13:08 -06:00
gi0baro
07e31b140a Track pyDAL b533d6a7a8da8db13d73fbf706cc41cff3f05f8f, as it contains changes form latest web2py master 2015-01-25 14:15:24 +01:00
gi0baro
8ff22d81a1 Use contrib drivers on pyDAL 2015-01-25 14:03:43 +01:00
gi0baro
98efb1f874 Added a warn message when pydal isn't available 2015-01-25 02:16:08 +01:00
gi0baro
d5520c88b5 Merge branch 'master' of https://github.com/web2py/web2py into pydal-sm
Conflicts:
	gluon/dal/adapters/postgres.py
	gluon/dal/objects.py
2015-01-25 02:07:23 +01:00
gi0baro
428cc7263c Track v0.12.25 2015-01-25 01:47:58 +01:00
mdipierro
4a27ce1f57 Merge pull request #598 from dmatic/master
Script for centos7 now also installs 'unzip' package
2015-01-23 12:10:47 -06:00
mdipierro
d00be02089 Merge pull request #597 from flavour/ST_SimplifyPreserveTopology
Add support for ST_SimplifyPreserveTopology
2015-01-23 12:10:18 -06:00
mdipierro
bd8f2a93ba Merge pull request #596 from kirsn/master
Issue 2035: Fix the caching on Windows
2015-01-23 12:09:48 -06:00
Dragan Matić
a90a701c0d Script for centos7 now also installs 'unzip' package
Some virtual server providers (like DigitalOcean) do not have unzip
installed in their centos7 image so we need to install it in our script.
2015-01-23 11:26:18 +01:00
gi0baro
7d6e473cd0 Merge branch 'master' of https://github.com/web2py/web2py into pydal-pip
Conflicts:
	gluon/dal/_load.py
2015-01-22 14:49:07 +01:00
Fran Boon
739b2e8a7b Update objects.py 2015-01-22 11:52:42 +00:00
Giovanni Barillari
ff43ab7a20 Fix uuid attribute of DAL
It's a bound method: requires instance as first parameter
2015-01-22 12:51:56 +01:00
Fran Boon
d2c25a0021 Add support for ST_SimplifyPreserveTopology 2015-01-22 11:45:46 +00:00
kirsn
84c967de98 Issue 2035: Fix the caching on Windows - issue with filenames greater than 256 chars 2015-01-21 23:35:57 +05:30
mdipierro
a2f5d1cfc5 Merge pull request #595 from kvar/master
DAL imports portalocker from gluon to avoid conflict with another portal...
2015-01-21 09:33:11 -06:00
mdipierro
137f6b9640 Merge pull request #594 from michele-comitini/fix_case_sensitivity_w_recover_password
auth.settings.*_case_sensitivity support for password retrieval
2015-01-21 09:32:34 -06:00
mdipierro
52d46c4bd5 Merge pull request #592 from leonelcamara/fix_appcleanup
Make app_cleanup use recursive_unlink to clean the cache folder. This fi...
2015-01-21 09:32:01 -06:00
Kristofor Varhus
d6b4ae828c DAL imports portalocker from gluon to avoid conflict with another portalocker module 2015-01-21 09:39:09 -05:00
Michele Comitini
acab0ad231 auth.settings.*_case_sensitivity support for password retrieval 2015-01-21 01:47:25 +01:00
Leonel Câmara
580d5f00c9 Make app_cleanup use recursive_unlink to clean the cache folder. This fixes a bug with the admin cleaning of an app seen here:
https://groups.google.com/d/msg/web2py/YMpbAlMLln8/VFuY_xQ7WFYJ
2015-01-19 23:50:39 +00:00
gi0baro
2277f65f66 Fix import in dal.py 2015-01-18 18:14:53 +01:00
gi0baro
5043731577 Updated tools tests for pydal 2015-01-17 13:35:52 +01:00
gi0baro
4b337c3e2c Merge branch 'master' into pydal-pip
Conflicts:
	gluon/__init__.py
	gluon/dal/_load.py
	gluon/dal/adapters/base.py
	gluon/dal/adapters/google.py
	gluon/dal/adapters/postgres.py
	gluon/dal/adapters/teradata.py
	gluon/dal/base.py
	gluon/dal/objects.py
	gluon/tests/__init__.py
	gluon/tests/test_dal_nosql.py
2015-01-17 13:32:06 +01:00
mdipierro
5bc5d0496e R-2.9.12 2015-01-17 00:07:10 -06:00
mdipierro
fe34d78578 Merge pull request #591 from prasadmuley/issue2006_export_customize_query_defined_in_searchable
Fix: Exporting from a SQLFORM.grid with customized search queries
2015-01-16 13:06:26 -06:00
Prasad Muley
35840bc572 Fix: Exporting from a SQLFORM.grid with customized search queries
Massimo manually applied older diff file.
He also merged my newer diff file. So Optimized code
2015-01-16 21:01:33 +05:30
mdipierro
f840cdae5f Merge pull request #590 from prasadmuley/issue2006_export_customize_query_defined_in_searchable
Fix: Exporting from a SQLFORM.grid with customized search queries
2015-01-16 08:51:58 -06:00
mdipierro
b36c38cc88 Merge pull request #586 from ilvalle/test-auth
Initial tests for auth
2015-01-16 08:43:40 -06:00
Prasad Muley
5958704509 Fix: Exporting from a SQLFORM.grid with customized search queries
issues #2006
2015-01-15 22:02:07 +05:30
mdipierro
0aa58c5f93 Merge branch 'master' of github.com:web2py/web2py 2015-01-15 10:18:32 -06:00
mdipierro
c6cc06f6c0 fixed grid export with custom search, thanks Prasad Muley 2015-01-15 09:58:13 -06:00
mdipierro
bda69b0e88 mail timeout 2015-01-15 09:47:57 -06:00
mdipierro
0cfbab6206 Merge pull request #589 from rif/patch-1
fix issuer comparison
2015-01-14 11:07:28 -06:00
mdipierro
385bcf6988 Merge pull request #588 from willimoa/enhancement/td_dal
Initial simple change for adding geospatial support to Teradata adaptor.
2015-01-14 11:06:38 -06:00
Radu Ioan Fericean
aaf1dd614a fix issuer comparison
the issuer looks like gmail.login.persona.org and the expected value was login.persona.org
2015-01-14 14:16:42 +02:00
Andrew Willimott
1c2358671d Initial simple change for adding geospatial support to Teradata adaptor. 2015-01-14 14:28:43 +13:00
mdipierro
181546e49d fixed conflict 2015-01-12 21:16:03 -06:00
mdipierro
57c5fb64f6 fixed issue 1978, thanks mbelletti 2015-01-12 21:00:49 -06:00
mdipierro
15bf3e2ede fixed issue 1991, thanks Mark 2015-01-12 20:53:28 -06:00
mdipierro
b872cced33 fixed issue 2001, thanks Anthony 2015-01-12 20:39:14 -06:00
mdipierro
2af5e02c5f fixed issue #2032, thanks Paolo 2015-01-12 20:06:05 -06:00
ilvalle
1c281cc163 Initial tests for auth 2015-01-12 08:18:00 +01:00
mdipierro
e9de0766bc Merge pull request #585 from ilvalle/issue2023
fix issue 2023: common_filter issue in _enable_record_versioning
2015-01-10 20:40:26 -06:00
mdipierro
9e555ed4b5 Merge pull request #584 from anssih/ndborder
GoogleSQLAdapter: Fix NDB orderby without limitby broken in 2.9.6
2015-01-10 20:36:46 -06:00
mdipierro
a78dce6778 Merge pull request #583 from leonelcamara/Issue_2025_cache_windowserror
fixes issue 2025 - Encode filenames using base32 if you're running on wi...
2015-01-10 20:35:43 -06:00
mdipierro
01a0a4eb67 Merge pull request #582 from enricapbes/master
Catalan translation for messages of Welcome app of web2py
2015-01-10 20:35:24 -06:00
ilvalle
c5c5b5708e fix issue 2023: common_filter issue in _enable_record_versioning 2015-01-10 18:11:00 +01:00
Anssi Hannula
6be1f624b9 GoogleSQLAdapter: Fix NDB orderby without limitby broken in 2.9.6
Commit 8d648f6137 ("restore beahvior in gae that if no limitby,
returns iterator") made select_raw() store the query iterator in a
wrong variable ("rows", which is unused, should be "items"), causing
unsorted results to be returned.

Fix the assignment.
2015-01-10 03:44:51 +02:00
Leonel Câmara
daf382c4fb fixes issue 2025 - Encode filenames using base32 if you're running on windows to avoid invalid characters. 2015-01-07 21:36:15 +00:00
mdipierro
f76a780d50 fixed import of reserved_sql_keywords 2015-01-07 10:39:17 -06:00
mdipierro
15c3ac1cb9 fixed Makefile for new dal 2015-01-06 22:59:05 -06:00
enricapbes
3d4de72b9c Update ca.py 2015-01-06 21:30:25 +01:00
enricapbes
8c1ca50205 Update ca.py 2015-01-06 21:29:57 +01:00
enricapbes
eb8cc3fc76 Update ca.py 2015-01-06 21:22:43 +01:00
mdipierro
83b94b8207 2.9.12-beta 2015-01-06 11:17:38 -06:00
enricapbes
f396094daf Update ca.py 2015-01-06 10:47:11 +01:00
enricapbes
16c0e1a4b8 Update ca.py 2015-01-06 10:39:47 +01:00
enricapbes
1815864a67 Catalan translation
Added translation to catalan language
2015-01-06 10:38:53 +01:00
mdipierro
261490c082 Merge pull request #581 from ShySec/master
added support for POST variable passing to LOAD function
2015-01-05 14:17:24 -06:00
mdipierro
ef5913a519 Merge pull request #580 from ilvalle/fix_boolean_exp
Fix expression evaluation with postgres
2015-01-05 14:15:45 -06:00
mdipierro
997b877766 Merge pull request #579 from ilvalle/issue2003
fix issue 2003: double translation
2015-01-05 14:14:44 -06:00
kelson
132dfbcb19 added support for POST variable passing to LOAD function
A new post_vars parameter allows controllers to pass POST varaibles through LOAD as appropriate. GET variables are currently passed by default (via vars).
2015-01-03 14:59:13 -05:00
ilvalle
3e1a918707 Fix expression evaluation with postgres 2015-01-03 14:11:06 +01:00
ilvalle
e6de16b111 fix issue 2003: double translation 2015-01-03 11:58:08 +01:00
mdipierro
354e63d0fe Merge pull request #577 from ilvalle/language
fix issue 2011: capital letters in it.py
2014-12-29 03:38:24 -06:00
ilvalle
d7bc489e71 fix issue 2011: capital letters in it.py 2014-12-28 17:19:17 +01:00
gi0baro
21cb35d4ca Updated directory structure for pydal integration 2014-12-27 12:16:52 +01:00
ilvalle
c50e12b8b5 updated pg8000 postgresql driver 2014-12-27 09:51:21 +01:00
gi0baro
2a287852ad Tracking pyDAL v0.12.25 2014-12-26 14:05:27 +01:00
mdipierro
1a85953325 Merge pull request #567 from kjkuan/fix-chunked-encoding-with-empty-body
Fix the problem with chunked encoding with an empty body.
2014-12-25 12:21:06 -06:00
mdipierro
3b655c4b71 Merge pull request #576 from niphlod/fix/readme_badges
more consistent badges with shields.io
2014-12-25 12:16:44 -06:00
mdipierro
675b7e356f Merge pull request #575 from reingart/master
Fix incorrect namespace in SOAP webservice response
2014-12-25 12:16:17 -06:00
mdipierro
1db3758980 Merge pull request #574 from ilvalle/fix-serialization
fix issue 2027: bug in query serialization
2014-12-25 12:15:17 -06:00
gi0baro
ea14c5b83b DAL.validators_method become a bound method, requires dal instance as first parameter 2014-12-24 15:19:34 +01:00
gi0baro
8000bda0c9 Removed _default_validators impossible comparison check from DAL tests 2014-12-24 15:03:55 +01:00
gi0baro
c49e32bfd6 Updated DAL tests due to latest pyDAL validators change 2014-12-24 15:00:06 +01:00
gi0baro
76fa952be8 Avoid circular imports on latest sqlhtml_validators changes 2014-12-24 14:56:31 +01:00
gi0baro
e99eb431ba Fixed an import due to last commit 2014-12-24 14:53:37 +01:00
gi0baro
dd73678601 Moved sqlhtml_validators method back into web2py 2014-12-24 14:44:59 +01:00
gi0baro
4bc3422ac6 Updated pydal 2014-12-24 13:27:56 +01:00
niphlod
c0b32eaeec more consistent badges with shields.io 2014-12-23 21:24:27 +01:00
Mariano Reingart
80261f52ed Fix incorrect namespace in SOAP webservice response 2014-12-23 16:58:04 -03:00
ilvalle
29661ad881 fix as_json serialization 2014-12-23 17:49:03 +01:00
mdipierro
81fbc2ea2f Merge pull request #562 from timnyborg/patch-2
Enable map_hyphen to work for application names
2014-12-23 07:13:12 -06:00
mdipierro
3da506eec7 Merge pull request #572 from erikmontes/master
class typo fix
2014-12-23 07:11:35 -06:00
Erik Montes
cbe37bf602 class typo fix 2014-12-22 20:41:49 -08:00
mdipierro
75a32a1cde Merge pull request #571 from niphlod/contrib/appconfig
new module appconfig.py
2014-12-22 22:32:35 -06:00
mdipierro
528c27f852 Merge pull request #570 from ilvalle/fix-stream
fix issue 2029: response.stream bug with spaces in filename
2014-12-22 22:31:57 -06:00
mdipierro
c5f699ebad Merge pull request #569 from ilvalle/grid-search-fix
fix issue 1931: preserve vars in grid search
2014-12-22 22:31:13 -06:00
mdipierro
3c87c84578 Merge pull request #565 from niphlod/scheduler/enhancement
better assignment (tasks go to not running workers only). Thanks @PengfeiYu
2014-12-22 22:28:26 -06:00
mdipierro
e92a581c73 Merge pull request #564 from ilvalle/issue-2024
issue 2024 response.json sets default content-type to application/json
2014-12-22 22:27:43 -06:00
mdipierro
28d07ef471 Merge pull request #563 from ilvalle/fix-cache
fix cache clear with regex and tests
2014-12-22 22:26:35 -06:00
mdipierro
687f9d0fd9 Merge pull request #559 from reingart/master
Fix debugger interaction due new DAL
2014-12-22 22:08:11 -06:00
mdipierro
3051135774 Merge pull request #558 from timnyborg/patch-1
Update sqlhtml.py
2014-12-22 22:06:48 -06:00
niphlod
ce025a6b8e new module appconfig.py 2014-12-21 20:30:18 +01:00
ilvalle
207f53fd6f fix issue 2029: response.stream bug with spaces in filename 2014-12-20 17:47:55 +01:00
Jack Kuan
39af574e7f Avoid sending the terminating chunk in case it's a HEAD request. 2014-12-19 23:44:55 -10:00
ilvalle
9825bbc926 fix issue 1931: preserve vars in grid search 2014-12-19 14:42:17 +01:00
niphlod
9132343820 better assignment (tasks go to not running workers only). Thanks @PengfeiYu
- pep8 adjustments
- tasks were assigned to all ACTIVE workers... if a worker is busy processing a task, 
  there's no point on assigning tasks to it
2014-12-18 23:48:10 +01:00
Jack Kuan
9b490340e5 Fix the problem with chunked encoding with an empty body.
When the response body is empty, rocket won't send the final zero-length
terminating chunk for chunked encoding. I think this causes the browser
to wait for the connection close in order to tell the end of the
response.
2014-12-18 10:15:13 -10:00
ilvalle
952890d9cc set directly 'application/json' to avoid a call to contenttype 2014-12-18 09:34:46 +01:00
ilvalle
8d72074209 issue 2024: response.json sets by default content-type to application/json 2014-12-17 17:28:30 +01:00
ilvalle
d93810697f fix cache clear with regex and tests 2014-12-16 20:32:51 +01:00
Tim Nyborg
23ee6bd2cf Update rewrite.py 2014-12-16 12:00:23 +00:00
Tim Nyborg
c0536d3b74 Allow map_hyphen to work for application names
1. Handle hyphen -> underscore replacement of the app name early in map_app(), so the application can be identified and its routing rules used (if they exist).  Without this, the rewriter fails to find the application with the hyphen in place, and reverts to the default.

2. Disable underscore -> hyphen mapping of app name when creating static URLs, as they will be invalid paths
2014-12-16 11:47:33 +00:00
gi0baro
c213071ae9 Updated to latest pydal 2014-12-15 23:20:53 +01:00
gi0baro
24f197935e Handling new pydal Exceptions in response.download 2014-12-15 23:09:35 +01:00
gi0baro
b04b3ab529 Fixed wrong unittest2 pip install for py26 in travis.yml 2014-12-15 22:58:16 +01:00
gi0baro
846d8f4e4b Get tests working back on py26, disabled web2py_uuid comparison check 2014-12-15 22:51:02 +01:00
gi0baro
ad1fe87386 Updated tests configuration, avoid circular imports with new dal 2014-12-15 22:37:34 +01:00
gi0baro
f60c1dff93 Fixing imports for new pydal 2014-12-15 22:24:04 +01:00
gi0baro
5a605f59b9 Started adding new tests for dal implementation 2014-12-15 21:16:35 +01:00
gi0baro
dcadcf0ffb Added pyDAL from repository, adapted web2py code 2014-12-15 20:13:40 +01:00
Mariano Reingart
0024307e6c Fix debugger interaction due new DAL
Originally, __all__ was used to filter DAL and Field globals, but now the new module doesn't explicity set that attribute, so this filter was removed.
Note that using __dict__ as a replacement is not an option, as the new dal module exports a lot of common names like connection, base, etc.
2014-12-15 15:45:27 -03:00
timnyborg
886f84778c Update sqlhtml.py
Correcting some bootstrap3 icon classes
2014-12-15 11:03:47 +00:00
mdipierro
5ea654ed06 Merge pull request #554 from kjkuan/fix-circular-imports-take-2
Make web2py's custom_import work with circular imports.
2014-12-12 05:21:13 -06:00
mdipierro
de55a729dc Merge pull request #557 from ilvalle/fileutils.py
updated _extractall (python 2.4 support was dropped)
2014-12-12 05:12:25 -06:00
mdipierro
199e719838 Merge pull request #556 from ilvalle/test_pack
test for w2p_pack/w2p_unpack
2014-12-12 05:11:15 -06:00
mdipierro
53e9e3b3e0 Merge pull request #555 from ilvalle/bigint
Fix and initial tests for bigint
2014-12-12 05:10:20 -06:00
ilvalle
0049f9e0c2 updated _extractall (python 2.4 support was dropped) 2014-12-11 14:27:39 +01:00
ilvalle
fd6c36e5f0 fix and initial tests for bigint 2014-12-11 11:27:16 +01:00
ilvalle
3e1037a73a test for w2p_pack/w2p_unpack 2014-12-11 10:23:15 +01:00
mdipierro
a97ec075da Merge branch 'ilvalle-test_pack' 2014-12-09 20:59:40 -06:00
mdipierro
4839df37e8 more tests, thanks Paolo 2014-12-09 20:59:26 -06:00
mdipierro
47165ed3b7 Merge pull request #551 from ilvalle/fix-searchgrid
Fix search widget in SQLFORM.grid for SQLCustomType values
2014-12-09 20:57:21 -06:00
mdipierro
654cb650fb Merge pull request #550 from ilvalle/fix-sqlcustomtype
Fix NULL values with SQLCustomType
2014-12-09 20:56:30 -06:00
mdipierro
aaa17250d9 Merge pull request #549 from lminko/master
added Burmese (Myanmar) localization to admin and welcome apps.
2014-12-09 20:54:58 -06:00
ilvalle
e9a89eff82 tests for lazy tables and substring expr 2014-12-06 00:45:56 +01:00
Jack Kuan
a01dbbab49 Make web2py's custom_import work with circular imports. 2014-12-05 16:18:52 -05:00
ilvalle
5474c68994 More gis tests 2014-12-04 12:18:17 +01:00
ilvalle
bda101d43f fix gis field case according to ignore_field_case 2014-12-04 12:13:28 +01:00
ilvalle
058930d42b test for compileapp 2014-12-03 20:42:54 +01:00
ilvalle
2a8c04c69f better SQLCustomType tests 2014-12-03 19:32:25 +01:00
ilvalle
f64098af14 Initial tests for SQLCustomType 2014-12-03 18:20:07 +01:00
ilvalle
b6993f7cc4 fix search widget in SQLFORM.grid for SQLCustomType values 2014-12-01 17:12:04 +01:00
ilvalle
6228de8e10 Fix NULL values with SQLCustomType 2014-11-30 19:53:33 +01:00
La Min Ko
dff6bfb5b9 added Burmese (Myanmar) localization to admin and welcome apps. 2014-11-30 10:47:33 +06:30
mdipierro
a1524d4da4 Merge pull request #547 from timrichardson/issues/2017
Issues/2017
2014-11-28 11:05:35 -06:00
mdipierro
3b9a5ee3b5 Merge pull request #546 from niphlod/fix/scheduler
timeout = 0 leads to erratic behaviour.
2014-11-28 11:04:52 -06:00
Tim Richardson
556609f5a2 Use 'True' and 'False' for booleans 2014-11-26 13:51:59 +11:00
niphlod
dafe900629 timeout = 0 leads to erratic behaviour. Allowing timeout = 0 is considered unsafe 2014-11-25 21:17:53 +01:00
Tim Richardson
7a6bdf7cbd consistent quotes 2014-11-24 23:40:45 +11:00
Tim Richardson
a82d3f88b6 boolean widgets in the SQLFORM.grid search widget should be "off" if unchecked. 2014-11-24 23:34:00 +11:00
pallav_fdsi
0b0f82b514 Merge branch 'master' of https://github.com/web2py/web2py 2014-11-21 00:29:14 -05:00
mdipierro
64e90a7250 Merge pull request #544 from niphlod/fix/2013
fix issue with rname and oracle. Thanks @fernando. Fixes #2013
2014-11-16 23:17:41 -06:00
mdipierro
e36a1657fc Merge pull request #543 from AJDurant/master
enable dropdown-toggle when user logged in
2014-11-16 23:16:19 -06:00
mdipierro
58284e3674 Merge pull request #541 from ilvalle/show_if_readonly_form
Added support for show_if in readonly sqlform (ex: sqlform.grid view )
2014-11-16 23:15:37 -06:00
mdipierro
5a83c3e6b7 table callbacks panel in admin editor 2014-11-16 23:14:53 -06:00
mdipierro
a22d5a4685 Merge pull request #539 from ilvalle/master
table callbacks panel in admin editor
2014-11-16 23:14:11 -06:00
niphlod
22506a6b03 fix issue with rname and oracle. Thanks @fernando. Fixes #2013 2014-11-16 18:50:53 +01:00
Andy Durant
db9eeee1c3 enable dropdown-toggle when user logged in 2014-11-13 18:15:41 +00:00
ilvalle
5449f04148 added support for show_if in readonly sqlform (ex: sqlform.grid view ) 2014-11-11 10:40:16 +01:00
pallav_fdsi
3ab8a7bfd6 Merge branch 'master' of https://github.com/web2py/web2py 2014-11-11 00:21:27 -05:00
mdipierro
9f405b2ab7 Merge branch 'master' of github.com:web2py/web2py 2014-11-09 09:31:49 -06:00
mdipierro
e315db5cd8 Merge pull request #540 from niphlod/enhancement/js_norm_buttonname
streamline behaviour of component (trapped) forms with multiple submit buttons
2014-11-09 09:31:31 -06:00
niphlod
a6b50dcdcd streamline behaviour of component (trapped) forms with multiple submit buttons
this is because jquery can't know what button was pressed when the 
submit event is triggered. We circumvent it adding an hidden field before
triggering the submission

BTW: don't know why the commit seems huge. I just changed a bit the trap_form
function to handle the corner case and streamlined what disableElement, 
enableElement, disableFormElements, enableFormElements do, 
along with formInputClickSelector
2014-11-08 23:04:58 +01:00
pallav_fdsi
c5a9d2c456 Ignore the contents of the site-packages directory 2014-11-06 10:35:49 -05:00
mdipierro
67ba09af37 fixed data bug in hypermedia 2014-11-05 09:09:36 -06:00
mdipierro
894babaed3 Merge pull request #538 from niphlod/enhancement/scheduler
update dependencies only if COMPLETED, allow to set status on a specific...
2014-11-03 07:08:48 -06:00
niphlod
c071bc964b update dependencies only if COMPLETED, allow to set status on a specific worker 2014-10-30 21:54:36 +01:00
ilvalle
63d8785918 hooks panel in admin editor 2014-10-30 18:07:00 +01:00
Henry Nguyen
4a4f22b654 Fixed missing update for new DAL structure
Other values were updated in 5e5e649c28 but this was missing from that commit.
2014-10-30 18:06:28 +01:00
mdipierro
b906177efc Merge pull request #536 from henrynguyen7/patch-1
Fixed missing update for new DAL structure
2014-10-29 13:06:52 -05:00
mdipierro
7f1f6ae35f fixed heorku order of install, thanks Jay 2014-10-25 11:14:07 -05:00
mdipierro
f299205869 Merge pull request #537 from btreecat/master
Add option of using offical ibm_db_dbi driver instead of ODBC driver for DB2
2014-10-24 17:27:57 -05:00
Stephen Tanner
41deff244c Allow URI for ibm_db_dbi driver to user lower or upper case params. 2014-10-24 15:28:59 -04:00
Henry Nguyen
7aa51fcbb0 Fixed missing update for new DAL structure
Other values were updated in 5e5e649c28 but this was missing from that commit.
2014-10-24 12:18:17 -07:00
Stephen Tanner
b9fe941dcc Modified DAL and DB2 adapter to allow use of the official ibm_db_dbi driver or ODBC. 2014-10-24 14:58:52 -04:00
Stephen Tanner
b7b94ca6b5 Merge pull request #1 from web2py/master
Syncing with upstream.
2014-10-24 14:35:48 -04:00
mdipierro
fc19a4dd39 Merge pull request #535 from niphlod/fix/binaries_switch
fix binaries build. thanks @David Ripplinger
2014-10-22 21:29:52 -05:00
mdipierro
ac53ef12e3 Merge pull request #534 from niphlod/fix/1998
fixes issue 1998
2014-10-22 21:29:15 -05:00
mdipierro
a3a3936d3a Merge pull request #533 from jotbe/master
Cleanup: Removed presumed debug print statement.
2014-10-22 21:28:35 -05:00
mdipierro
8eef404e29 Merge branch 'niphlod-fix/pg8000' 2014-10-22 21:28:01 -05:00
mdipierro
50540b2f97 Merge branch 'fix/pg8000' of https://github.com/niphlod/web2py into niphlod-fix/pg8000 2014-10-22 21:26:59 -05:00
mdipierro
8ec68e393a Merge pull request #531 from leonelcamara/apostrophe_fpdf
Fix for sanitize('&#x27;') returning '&amp;#x27;' instead of '&#x27;'
2014-10-22 21:25:49 -05:00
niphlod
98f245655b some freezers publish also __file__ in globals() 2014-10-22 22:04:52 +02:00
niphlod
fc38f460eb fixes issue 1998 2014-10-21 21:33:43 +02:00
Jan Beilicke
643748db02 Cleanup: Removed presumed debug print statement. 2014-10-21 15:56:21 +02:00
mdipierro
274634a71a Merge branch 'leonelcamara-issue_1996_appadmin_cache_disk' 2014-10-18 15:22:43 -05:00
mdipierro
2b8add6778 merged 2014-10-18 15:21:41 -05:00
mdipierro
ba374dea2c Merge pull request #528 from ilvalle/pg_rename
renamed postgre.py into postgres.py, removed 2 overriding PG
2014-10-18 15:18:40 -05:00
mdipierro
85a0e8f1b0 added space for testing 2014-10-18 15:09:53 -05:00
niphlod
794979abe1 pg8000 doesn't support json at all 2014-10-18 20:20:34 +02:00
mdipierro
36010cb86e Merge pull request #527 from ilvalle/tests
few more tests: gis functions, starts/endswith
2014-10-18 11:41:22 -05:00
Leonel Câmara
f10b1b93a9 fixed remaining methods in HTMLParser that were still using the old htmllib.HTMLParser interface 2014-10-18 13:05:27 +01:00
Leonel Câmara
b2401a5923 Fix for sanitize('&#x27;') returning '&amp;#x27;' instead of '&#x27;' 2014-10-18 12:37:32 +01:00
Leonel Câmara
9d4b2e66c4 Fix for issue 1996
This bug was caused by appadmin creating unnecessary files in the cache folder.
2014-10-17 19:12:00 +01:00
ilvalle
9076971d75 renamed postgre.py into postgres.py, removed starts/ends with overriding in PG adapter 2014-10-17 17:56:54 +02:00
ilvalle
64ae27862a few more tests: gis functions, starts/endswith 2014-10-17 11:16:07 +02:00
mdipierro
bd05dc68ea Merge branch 'niphlod-enhancement/makefile_coverage' 2014-10-16 16:14:39 -05:00
mdipierro
ab14cc626b Merge branch 'enhancement/makefile_coverage' of https://github.com/niphlod/web2py into niphlod-enhancement/makefile_coverage 2014-10-16 16:14:26 -05:00
mdipierro
a2347f54d6 Merge branch 'niphlod-fix/ilike' 2014-10-16 16:13:44 -05:00
mdipierro
601e928438 Merge branch 'fix/ilike' of https://github.com/niphlod/web2py into niphlod-fix/ilike 2014-10-16 16:13:25 -05:00
mdipierro
9091a5af25 Merge pull request #525 from ilvalle/gitignore
updated .gitignore for progress.log and temp directory
2014-10-16 16:12:32 -05:00
mdipierro
8804a9ed77 Merge pull request #524 from niphlod/js/speed
Waiting for a sane "prefixing", a much more efficient way to find errors
2014-10-16 16:12:05 -05:00
mdipierro
99ddeb65fe Merge pull request #523 from niphlod/tests/languages_on_gae
fix for GAE tests often failing for no apparent reason
2014-10-16 16:11:39 -05:00
mdipierro
ca1092efd3 Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:09:38 -05:00
mdipierro
f988f381f2 Merge pull request #522 from ilvalle/issue_1993
fix issue 1993: git push in the admin console throw an error
2014-10-16 16:09:10 -05:00
mdipierro
ed25027499 Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:08:36 -05:00
mdipierro
4892bbe0bd Merge pull request #521 from janknaupato/master
Fix for issue 1932: Aggregrate function won't show up in SQLTABLE
2014-10-16 16:08:33 -05:00
mdipierro
39dec30f52 Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:07:54 -05:00
mdipierro
1f3030c75a Merge pull request #520 from niphlod/js/main_hook
refactor main_hook to a function
2014-10-16 16:07:47 -05:00
mdipierro
4211c38ac5 Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:07:11 -05:00
mdipierro
0955bc0967 Merge pull request #519 from btreecat/master
Fix DB2 Adapter for executesql and placeholders
2014-10-16 16:07:03 -05:00
mdipierro
ad5b9da4f4 Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:05:35 -05:00
mdipierro
1c7153c985 Merge pull request #518 from gi0baro/dal-backward
Added back DAL.Table for backward compatibility
2014-10-16 16:05:32 -05:00
mdipierro
4448f01e47 Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:04:46 -05:00
mdipierro
297961739b Merge pull request #517 from ilvalle/master
Added initial gis tests
2014-10-16 16:04:36 -05:00
mdipierro
7aa703dc5e Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:03:51 -05:00
mdipierro
eeb06ce14f Merge pull request #516 from leonelcamara/reset_password_key
Change reset_password to send the password as GET query var instead of a...
2014-10-16 16:02:36 -05:00
mdipierro
547ec7200e Merge branch 'master' of github.com:web2py/web2py 2014-10-16 16:01:57 -05:00
mdipierro
6cc55abc42 Merge pull request #513 from niphlod/docs/new_structure
with dal new structure, API doc generation was left out of the picture. ...
2014-10-16 15:59:04 -05:00
mdipierro
d33091d76b added ssl option for tornado, thanks dmvieira 2014-10-16 15:58:57 -05:00
mdipierro
e730b11b78 Merge pull request #512 from niphlod/issue/1980
fixes issue 1980
2014-10-16 15:48:55 -05:00
mdipierro
989a635dbb fixed conflict 2014-10-16 15:47:57 -05:00
niphlod
7e0e7eb6c8 ilike was wronlgy defined 2014-10-16 22:27:40 +02:00
niphlod
b43ef65eb1 while we wait for a sane "prefixing", use a much more efficient way to find errors
This comes from an unfortunate choice of naming conventions and the fact that 
manage errors gets called even on the full document on page load.
I had a table full of .error-"classed" elements and it took nearly 30 seconds for that
snippet to hide and fade them in. We should definitevely prefix every css class with
something that won't clash with everything else.
2014-10-16 21:08:55 +02:00
niphlod
b616ee6a32 fix for GAE tests often failing for no apparent reason 2014-10-16 20:56:24 +02:00
ilvalle
f255da79f2 updated .gitignore (progress.log and temp directory) 2014-10-16 16:05:38 +02:00
ilvalle
45a689a812 fix issue 1993: git push in the admin console throw an error 2014-10-16 15:07:52 +02:00
Jan M. Knaup
4df82d3a6e in SQLTABLE, fixed use of REGEX_TABLE_DOT_FIELD leading to ignoring calculated / aggregate columns 2014-10-15 11:03:31 +02:00
niphlod
15fe54bdca refactor main_hook to a function 2014-10-14 23:42:41 +02:00
Stephen Tanner
b2bc1835c3 Removed extra 'i' character inserted accidentally due to mode switching in vim. 2014-10-14 17:21:00 -04:00
Stephen Tanner
617abda1cc Fixed DB2 adapter when using executesql and placeholders. 2014-10-14 17:02:10 -04:00
gi0baro
50662b6acc Added back DAL.Table for backward compatibility 2014-10-12 22:56:33 +02:00
ilvalle
c9494e2757 updated travis.yml to add postgis 2014-10-11 20:16:06 +02:00
ilvalle
4e110c691f added initial gis tests 2014-10-11 20:09:09 +02:00
Leonel Câmara
4cf878c9f7 Change reset_password to send the password as GET query var instead of as an argument.
Added some more Portuguese Translations to the Admin application.
2014-10-07 15:15:08 +01:00
mdipierro
b36ab988cc updated scripts/setup-web2py-centos7.sh 2014-10-06 21:24:44 -05:00
niphlod
97e1d1cd9b added coverage template in makefile 2014-10-01 22:01:37 +02:00
Diogo
16da2edc6d removing returns and added 401 error send to user 2014-10-01 08:17:12 -03:00
niphlod
88113637ae with dal new structure, API doc generation was left out of the picture. GROAN! 2014-09-30 23:37:54 +02:00
niphlod
1e35262e67 fixes issue 1980
pyflaked the module, at least a bit. Sometimes I feel developers are in a contest
where less characters and lines win. Concise implementation wins over verbose one,
but less SLOC DON'T mean somewhat better code. Just reading through
this module makes my brain hurt a bit
2014-09-30 21:37:04 +02:00
mdipierro
05689aa526 another attempt at added ssl option for tornado #511 2014-09-30 09:38:00 -05:00
Diogo
ae5069d9b1 add example for websocket wss 2014-09-30 08:47:31 -03:00
mdipierro
7c8d91d4c5 Merge pull request #486 from gi0baro/DAL-modular
Added modular DAL, updated gluon imports to new structure
2014-09-30 00:24:26 -05:00
mdipierro
47d9d47cff Merge pull request #510 from niphlod/fix/1985
fixes issue 1985
2014-09-29 19:46:01 -05:00
mdipierro
ed4febf9db Merge pull request #509 from niphlod/fix/json_and_decimals
always stringify decimals. Better docstrings and a few PEP8.
2014-09-29 19:45:17 -05:00
mdipierro
78764072fe hooks panel in appadmin for _before_*/_after_* callbacksm thanks Paolo valleri 2014-09-29 19:40:56 -05:00
mdipierro
eaf358765a Merge pull request #507 from ilvalle/master
hooks panel in appadmin for _before_*/_after_* callbacks
2014-09-29 19:39:41 -05:00
mdipierro
7b6f2bf896 Merge pull request #506 from niphlod/tests/html_and_serializers
added tests for gluon/html.py and gluon/serializers.py
2014-09-29 19:38:04 -05:00
Diogo
11082987ea removing bug with return true in post
Error with get replicate in post: http://stackoverflow.com/questions/19563093
2014-09-27 23:03:24 -03:00
niphlod
db68a2a10e fixes issue 1985
plus made a pass to jsbeautifier for improved reading
plus fixed an annoying trailing comma that could cause issues with IE >= 8
2014-09-25 22:49:40 +02:00
niphlod
b2d5775f82 always stringify decimals. Better docstrings and a few PEP8. 2014-09-25 21:28:55 +02:00
Diogo
e40937bd8b added https option for tornado
now tornado can be called by https
2014-09-25 09:51:38 -03:00
gi0baro
db01261c35 Fixed globals 2014-09-25 13:16:54 +02:00
gi0baro
6b38fb769b Fix baseAdapter 2014-09-25 13:02:51 +02:00
ilvalle
8251aebdc5 hooks panel in appadmin for _before_*/_after_* callbacks 2014-09-25 12:59:59 +02:00
gi0baro
6e9eeb50bc MSSQL3 types 2014-09-25 12:57:44 +02:00
gi0baro
502327e531 Fixed merge conflict 2014-09-25 12:51:39 +02:00
gi0baro
5c07c511fa Merge branch 'master' into DAL-modular
* master: (58 commits)
  changed version number
  better types by default, given that we're on 2005 at least
  fix for StorageList and tests added
  improved coverage, fix bug with IS_LIST_OF and items not being strings
  fix cache.increment, added tests
  R-2.9.11
  reverted simplejson
  R-2.9.10
  upgraded memcache and markdown2
  upgraded pypyodbc.py
  upgraded simplejson
  no more split in contains, thanks Niphlod
  fixed wording and bug on contains(), made smart_query use ilike instead of like
  ilike, thanks Niphlod
  CROSS JOIN, thanks jotbe
  added custom represent to GoogleDatastoreAdapter, thanks Alan
  postgresql: identifies what adapter auto-loads json values
  added more tests for json Field
  fixed typo in driver_auto_json
  Improve the graphing to show the name of the application.
  ...

Conflicts:
	gluon/dal.py
	gluon/globals.py
	gluon/tests/test_dal.py
2014-09-25 12:49:16 +02:00
niphlod
0721988b65 added tests for gluon/html.py and gluon/serializers.py
uhm
2014-09-24 22:14:55 +02:00
mdipierro
f17493b52c changed version number 2014-09-24 13:36:06 -05:00
mdipierro
4c45de7efd Merge pull request #505 from niphlod/fix/mssql3_mappings
better types for mssql3://, given that we're on 2005 at least
2014-09-24 13:35:08 -05:00
mdipierro
c3f6fc8db8 Merge pull request #504 from niphlod/fix/storage_and_tests
fix for StorageList and tests added
2014-09-24 13:34:20 -05:00
niphlod
4d42442c31 better types by default, given that we're on 2005 at least 2014-09-23 00:04:42 +02:00
niphlod
34a417cfa0 fix for StorageList and tests added
gluon/storage.py
StorageList had a recursion error (please check the implementation before committing)

gluon/tests*
added the fix_path module to avoid those ugly lines at the beginning of each test file
added tests for gluon.contenttype and test_fileutils
added tests for missing Storage methods
2014-09-21 08:26:38 +02:00
mdipierro
bb199ad533 Merge pull request #503 from niphlod/tests/validators
improved coverage, fix bug with IS_LIST_OF and items not being strings
2014-09-20 12:55:56 -05:00
mdipierro
be07572572 Merge pull request #502 from niphlod/fix/cache_and_tests
fix cache.increment, added tests
2014-09-20 12:55:15 -05:00
gi0baro
947dcbc226 Updated from latest web2py master 2014-09-19 17:37:35 +02:00
niphlod
8bbd22eba8 improved coverage, fix bug with IS_LIST_OF and items not being strings 2014-09-19 00:15:25 +02:00
niphlod
50f16744a7 fix cache.increment, added tests 2014-09-16 23:50:10 +02:00
mdipierro
424746ce7a R-2.9.11 2014-09-15 18:31:20 -05:00
mdipierro
df234fa252 reverted simplejson 2014-09-15 18:30:37 -05:00
mdipierro
2b50cf27e2 R-2.9.10 2014-09-15 08:05:13 -05:00
mdipierro
a38c7c2aa8 upgraded memcache and markdown2 2014-09-15 07:34:14 -05:00
mdipierro
f0461ae84a upgraded pypyodbc.py 2014-09-14 16:41:47 -05:00
mdipierro
0120ad5b95 upgraded simplejson 2014-09-14 16:37:09 -05:00
mdipierro
e38565345c no more split in contains, thanks Niphlod 2014-09-14 16:01:47 -05:00
mdipierro
b1180f483c Merge pull request #501 from niphlod/fix/dal_contains
fixed bug on contains(), smart_query uses ilike instead of like
2014-09-14 16:00:00 -05:00
niphlod
05a92e86f7 fixed wording and bug on contains(), made smart_query use ilike instead of like 2014-09-14 22:45:19 +02:00
mdipierro
75f2b90151 ilike, thanks Niphlod 2014-09-14 15:28:48 -05:00
mdipierro
6a75132d54 CROSS JOIN, thanks jotbe 2014-09-14 14:57:12 -05:00
mdipierro
3d9ebb5720 Merge pull request #497 from jotbe/master
Fixed #1810: DAL.select(left=...) causes "Unknown column 't1.i1' in 'on ...
2014-09-14 14:55:38 -05:00
mdipierro
ec62375f6d Merge pull request #500 from niphlod/fix/postgresql_json
postgresql: identifies what adapter auto-loads json values
2014-09-14 14:53:45 -05:00
mdipierro
f1ac5126a1 Merge pull request #499 from niphlod/tests/json_type
added more tests for json Field
2014-09-14 14:53:16 -05:00
mdipierro
e4e9038ab6 Merge pull request #498 from encompass/master
Improve the graphing to show the name of the application.
2014-09-14 14:52:32 -05:00
mdipierro
ce897b3569 added custom represent to GoogleDatastoreAdapter, thanks Alan 2014-09-14 11:58:16 -05:00
Niphlod
c4a4ee27c4 postgresql: identifies what adapter auto-loads json values 2014-09-14 16:39:54 +02:00
Niphlod
ecc6e5dc5e added more tests for json Field 2014-09-14 16:01:22 +02:00
mdipierro
b991f2926f fixed typo in driver_auto_json 2014-09-13 18:55:03 -05:00
Jason Brower
da195b787d Improve the graphing to show the name of the application. 2014-09-13 20:26:03 +03:00
mdipierro
d81f4606db fixed mongodb json? 2014-09-13 10:35:54 -05:00
mdipierro
d29a108ad7 better native_json naming convention 2014-09-12 20:28:46 -05:00
mdipierro
94a0b1aec5 fixed json field representation 2014-09-12 20:17:49 -05:00
Jan Beilicke
0a571338b6 Fixed #1810: DAL.select(left=...) causes "Unknown column 't1.i1' in 'on clause'"
According to the MySQL 5.5 manual [1], comma-separated table references in joins
should be wrapped in parenthesis or JOIN should be used instead of comma.

Further explanation from the manual: The ON clause takes precedence since
a couple of versions so the operands for the ON clause change:

SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);

The operands for the ON are t2 and t3. t1.i1 is not known at this point.

[1] https://dev.mysql.com/doc/refman/5.5/en/join.html
2014-09-13 01:38:57 +02:00
mdipierro
c2b1547802 Merge pull request #496 from rpedroso/reset_password_infinite_loop
fix infinite loop in request_password
2014-09-12 17:44:40 -05:00
Ricardo Pedroso
cd2920c2cf fix infinite loop in request_password 2014-09-12 22:39:25 +01:00
mdipierro
0863bb3eca case insensitive autocomplete again 2014-09-12 11:36:26 -05:00
mdipierro
04c1064ab8 Merge pull request #494 from niphlod/fix/pickle_refactoring
refactored pickling of sessions
2014-09-11 21:13:47 -05:00
niphlod
5c9796ac72 refactored pickling of sessions 2014-09-11 22:51:23 +02:00
mdipierro
cef7202781 fixed is_crypt in tools, thanks Anthony 2014-09-11 12:09:43 -05:00
mdipierro
c3478f660a fixed pickling of session 2014-09-10 13:57:54 -05:00
mdipierro
09a44d41ae Merge pull request #493 from niphlod/fix/refactoring_pickle
refactored pickle everywhere but Session, removed unused imports
2014-09-10 12:27:34 -05:00
mdipierro
4740dc7cce Merge pull request #492 from niphlod/tests/storage_pickling
added test for storage pickling
2014-09-10 12:26:26 -05:00
mdipierro
463c5deac4 Merge pull request #491 from niphlod/fix/readme
new structure in revised README
2014-09-10 12:26:11 -05:00
niphlod
6403878f95 refactored pickle everywhere but Session, removed unused imports 2014-09-10 19:12:10 +02:00
niphlod
bd87879cde added test for storage pickling 2014-09-10 18:24:52 +02:00
niphlod
61d5a776d4 new structure in revised README 2014-09-10 18:08:09 +02:00
mdipierro
c3cd32cc4f possible fix to rss 2014-09-10 08:26:23 -05:00
mdipierro
b98687239c ASSIGNJS 2014-09-08 19:18:55 -05:00
gi0baro
b20b81b8f5 Updated DatabaseStoredFile to latest web2py master 2014-09-08 15:59:16 +02:00
mdipierro
853beae9c6 R-2.9.9 2014-09-08 08:12:37 -05:00
mdipierro
94aab906d5 fixed serialization of Storage objects 2014-09-08 08:10:58 -05:00
mdipierro
bb3909a944 Merge pull request #490 from ilvalle/grid-fix
fix web2py.js with show_if and grid
2014-09-08 08:02:44 -05:00
mdipierro
99087ab37a R-2.9.8 2014-09-06 23:09:44 -05:00
mdipierro
4bcd905f4f fixed appadmin/check_credentials problem 2014-09-06 22:57:26 -05:00
mdipierro
83bda542ad fixed opening get_session for new session files 2014-09-06 18:10:54 -05:00
mdipierro
1ea27f7f15 linked readthedocs 2014-09-05 16:47:20 -05:00
ilvalle
7fa8f1fa08 fix web2py.js with show_if and grid 2014-09-05 16:17:36 +02:00
mdipierro
95b54857a3 fixed separator in trunk 2014-09-05 08:12:03 -05:00
mdipierro
327b1cbfdd R-2.9.7 2014-09-04 22:37:12 -05:00
mdipierro
3bd44d4d84 R-2.9.7 2014-09-04 22:31:42 -05:00
mdipierro
7e50bd6050 R-2.9.7 2014-09-04 22:30:19 -05:00
mdipierro
c1c3621bf3 using recfile for sessions for speed 2014-09-04 22:28:51 -05:00
mdipierro
2d9f0fafdc better cache-disk, thanks Leonel 2014-09-04 22:27:52 -05:00
mdipierro
9fd827c561 added recfile.py 2014-09-04 22:16:09 -05:00
mdipierro
6ba9f450b2 Merge pull request #489 from jonathannew/master
fix custom view delimiters
2014-09-04 22:06:29 -05:00
mdipierro
d1d85e9614 Merge pull request #488 from niphlod/fix/scheduler
avoid multiple cascade paths
2014-09-04 22:05:14 -05:00
mdipierro
6649721a7d Merge pull request #485 from dokime7/patch-5
Fix LOAD on action @request.restful()
2014-09-04 22:04:35 -05:00
mdipierro
a51007949f Merge pull request #487 from ilvalle/grid-fix
fix grid groupby with more than 2 Fields in the expression
2014-09-04 22:04:05 -05:00
Jonathan New
8c5422d2d6 fix custom view delimiters 2014-09-04 19:16:00 +08:00
mdipierro
b8a29a67aa typo in try_create_web2py_filesystem 2014-09-03 17:14:00 -05:00
mdipierro
3902cb0b27 support for multiple db filesystems, thanks Luca 2014-09-03 16:37:19 -05:00
mdipierro
d744a99e13 fixed partially problem with web2py_filesystem on GAE 2014-09-03 16:29:05 -05:00
niphlod
1456c0da1e references can be long too 2014-09-03 21:23:24 +02:00
niphlod
fa5100cb2a avoid multiple cascade paths 2014-09-03 21:09:09 +02:00
ilvalle
9b9a5034ad fix grid groupby with more than 2 Fields in the expression 2014-09-03 19:30:22 +02:00
mdipierro
d1e4ede9b3 fixed problem with delimiters, thanks Anthony 2014-09-03 10:52:31 -05:00
gi0baro
7fde332392 Fixed gluon.tests.dal_nosql with new imports 2014-09-03 15:26:24 +02:00
gi0baro
625e4849ef Re-implemented copyreg picklers/unpicklers for DAL and Reference classes (due to errors on sessions) 2014-09-03 14:48:26 +02:00
gi0baro
5e5e649c28 Added modular DAL, updated gluon imports to new structure 2014-09-03 12:48:03 +02:00
mdipierro
f1ab50fb91 fixed a problem with reset_password 2014-09-02 12:17:26 -05:00
Jeremie Dokime
52fac63b9e Fix LOAD on action @request.restful()
LOAD didn't work on action decorated with @request.restful() when args and/or vars are passed because the restful method is called with the main "request" object (browser url action) instead of the "other_request" object used by LOAD.
So I have injected the restful method with the good object context.
It's a bit nasty, so if someone knows how to do it better, I'm happy.
2014-09-02 18:16:51 +02:00
mdipierro
d73c668f2d Key.from_path -> self.keyfunc, thanks Quint 2014-09-02 10:10:14 -05:00
mdipierro
5fc7dee4cc R-2.9.6 2014-09-01 20:55:36 -05:00
mdipierro
c3e5725b51 R-2.9.6 2014-09-01 20:38:44 -05:00
mdipierro
d6a2d0c3ee R-2.9.6 2014-09-01 20:37:53 -05:00
mdipierro
5eabe15b9e improvement to dal for GAE but still problem with key IN set 2014-09-01 20:36:39 -05:00
mdipierro
447493c754 new saml2_auth 2014-08-31 13:09:35 -05:00
mdipierro
33fcfe2736 links to new videos 2014-08-30 21:33:27 -05:00
mdipierro
55f9762e30 Merge pull request #481 from niphlod/fix/ldap
too many cert_file arguments
2014-08-28 12:06:55 -05:00
mdipierro
5364193759 revent register and other form from ever sending back a password, thanks Anthony 2014-08-27 14:35:36 -05:00
mdipierro
d04a3e62ae no more epydoc 2014-08-26 14:39:20 -05:00
mdipierro
a3f3496709 fixed security issue again, thanks Niphlod 2014-08-26 14:38:09 -05:00
mdipierro
59630f0a14 Merge pull request #482 from niphlod/docs/sched_and_tools
doc fixes
2014-08-26 14:36:44 -05:00
mdipierro
18ab865e59 2.9.6-beta 2014-08-26 14:30:46 -05:00
mdipierro
3738f7dc7a reverted to bs2 for an early release 2014-08-26 14:29:15 -05:00
mdipierro
6f42bac66d removed epydoc and fixed a typo in pevious commit 2014-08-26 14:24:20 -05:00
mdipierro
2d3ccfaba7 removed epydoc and fixed a typo in pevious commit 2014-08-26 14:24:07 -05:00
mdipierro
80d9722964 more security, thanks Niphlod 2014-08-26 14:21:28 -05:00
mdipierro
bac9039c6e increased security in admin and appadmin 2014-08-25 16:36:10 -05:00
mdipierro
353d83aa4e max_linked_inline broked, removed 2014-08-21 18:22:47 -05:00
mdipierro
fa05c01c7d fixed a problem with extra fields and better validation errors 2014-08-21 17:22:03 -05:00
niphlod
7e73faf619 doc fixes 2014-08-21 22:49:26 +02:00
niphlod
ff73d9c741 too many cert_file arguments 2014-08-21 22:37:18 +02:00
mdipierro
b18dda1f53 fixed the toolbar, thanks Niphlod 2014-08-20 21:45:58 -05:00
mdipierro
5d63dfea2b better bootstrap3 forms, thanks Ricardo Pedroso 2014-08-20 21:26:10 -05:00
mdipierro
031b1ceec7 Merge pull request #480 from rpedroso/bs3
bootstrap3 formstyle improvements
2014-08-20 21:16:56 -05:00
mdipierro
9ad30aa64d experimental saml2 support 2014-08-20 21:05:03 -05:00
mdipierro
c7beeaf5c5 added utils.obj2dict 2014-08-19 18:57:25 -05:00
mdipierro
a0d7470cf3 setup-web2py-ubuntu works on 14.04, thanks Ivan Di Giusto 2014-08-16 23:21:19 -05:00
Ricardo Pedroso
a6bf692b61 bootstrap3 formstyle improvements 2014-08-16 19:28:42 +01:00
mdipierro
f84afaadbb removed files committed by mistake, thanks Niphlod 2014-08-16 12:20:00 -05:00
mdipierro
4811d6c45e {0} -> %s in scripts/cpdb.py 2014-08-14 21:41:09 -05:00
mdipierro
0cc5280f0d Merge remote-tracking branch 'origin/master' 2014-08-14 19:57:44 -05:00
mdipierro
6dfeab284c Merge pull request #479 from leonelcamara/master
reverse_geocode
2014-08-14 19:53:35 -05:00
mdipierro
f4ebc5097e Log In/Sign Up instead of login/register 2014-08-14 19:48:09 -05:00
mdipierro
88e971b9d8 fixed typo default table3cols 2014-08-14 19:40:01 -05:00
mdipierro
b595c40320 fixed welcome and bs3 2014-08-14 19:20:46 -05:00
mdipierro
65ab4b8550 response.form_label_separator 2014-08-14 19:12:47 -05:00
mdipierro
7de0861fb5 response.formstyle, reponse.label_separator 2014-08-14 19:10:51 -05:00
mdipierro
eb9e35f860 very weird GAE hack 2014-08-14 16:27:46 -05:00
mdipierro
715cc484d4 removed legacy files 2014-08-14 16:23:48 -05:00
mdipierro
13026231f1 fixed registration_id on GAe, thanks Luca 2014-08-14 13:39:04 -05:00
Leonel Câmara
824cc10aa0 revert previous change due to the global implications 2014-08-14 18:06:45 +01:00
Leonel Câmara
2a27563f30 Allows you to set SQLFORM.default_formstyle and set the default formstyle for all SQLFORMs 2014-08-14 18:02:00 +01:00
Leonel Câmara
4aaf98bc56 removed unneeded sensor=true/false 2014-08-13 16:39:27 +01:00
Leonel Câmara
1548f915a6 added reverse_geocode to tools __all__ 2014-08-13 16:10:00 +01:00
Leonel Câmara
5c29b20000 Merge branch 'master' of git://github.com/web2py/web2py 2014-08-13 16:07:57 +01:00
Leonel Câmara
cb927fc1d9 minor cosmetic 2014-08-13 15:59:22 +01:00
Leonel Câmara
3e1a57da50 added a reverse_geocode function to tools 2014-08-13 15:58:04 +01:00
mdipierro
3f65b8bfc8 fixed an issue with lack of validators in 'double' type 2014-08-11 00:02:08 -05:00
mdipierro
5e07ed79cc Added support for stdlib's pbkdf2, thanks Ayrx 2014-08-10 12:45:37 -05:00
mdipierro
2a2800bc25 Merge pull request #476 from leonelcamara/master
Small Refactoring of BaseAdapter.delete
2014-08-10 12:39:30 -05:00
mdipierro
7e15c1a1da fixed a ''...'' regex in markmin, thanks Leonel 2014-08-10 12:07:32 -05:00
mdipierro
cbad6c712c upgraded to bs 3.2.0 2014-08-09 02:16:27 -05:00
mdipierro
01f85f2483 experimental 2.10.0 2014-08-09 02:10:50 -05:00
mdipierro
bb13d6b729 fixed some bugs and another bs2->bs3 attempt 2014-08-09 01:52:09 -05:00
mdipierro
6b98e30000 fixing a mess part 2 2014-08-09 01:03:23 -05:00
mdipierro
e9ed69e7a9 fixing a mess 2014-08-09 01:02:58 -05:00
mdipierro
5c9282aca5 fixed issue 1947, raw args in expose, thanks iiijjjiii 2014-08-08 00:50:42 -05:00
mdipierro
669a22c8be fixed issue 1950, allow change password for any old password complexity 2014-08-08 00:38:10 -05:00
mdipierro
5cbbcd3685 fixed postgresql bug introduced in recent commit? 2014-08-08 00:13:31 -05:00
mdipierro
6fc97775dc fixed redirection bug 2014-08-08 00:07:34 -05:00
mdipierro
535a39feaa request.is_shell and request.is_scheduler 2014-08-07 23:55:32 -05:00
mdipierro
ab84c95179 fixed 1961, redirect(..,headers=request.headers), thanks remco.boerma 2014-08-07 23:48:42 -05:00
mdipierro
6db3b0621c Fixed issue 1962, postgres INSERT ... RETURING id, thanks perakojotgenije 2014-08-07 23:43:22 -05:00
mdipierro
a858f811a1 Fixed issue 1954, re-raising exceptions the right way, thanks Marton 2014-08-07 23:33:34 -05:00
mdipierro
309a7c39ca merging latest online fixes after local brach fix 2014-08-06 14:52:10 -05:00
mdipierro
d4e71073d7 Merge remote-tracking branch 'origin/master' 2014-08-06 14:50:53 -05:00
mdipierro
63529e5ad8 not sure what happened but fixing local commit 2014-08-06 14:50:51 -05:00
mdipierro
d1118b606b Merge pull request #478 from alexdba/master
Option to limit inline display of linked tables
2014-08-06 14:45:23 -05:00
mdipierro
8f649f1820 Merge pull request #475 from omartrinidad/master
Changed a condition in order to not show `None` if there is no errors
2014-08-06 14:44:13 -05:00
alexdba
8ef66bb0f4 Option to limit inline display of linked tables
Added a new option to smartgrid: "max_linked_inline".
When set to a value greater than zero, it will limit the inline display of linked tables (in grid, edit and details).
In case there are a number of linked tables greater than the setting, the links will be displayed in a select list menu.
2014-08-05 15:20:01 -03:00
Leonel Câmara
59bbe7cddd minor - removed unnecessary dict calls 2014-08-05 18:32:32 +01:00
Leonel Câmara
c9c054e72b refactored backward compatibility on formstyles to use try except instead of inspecting arguments, should make the new style faster as it never raises the exception 2014-08-05 18:30:20 +01:00
Leonel Câmara
0f55d43a11 Removed unecessary dict call in get_workers 2014-08-05 15:37:10 +01:00
Leonel Câmara
ba82c0d86b Merge branch 'master' of git://github.com/web2py/web2py 2014-08-05 15:35:18 +01:00
Leonel Câmara
5c0693b175 Further refactored SQLiteAdapter calling the super method instead of duplicating the code 2014-08-05 10:53:40 +01:00
mdipierro
24c0c3d129 Merge branch 'master' of github.com:web2py/web2py into HEAD 2014-08-05 01:44:20 -05:00
mdipierro
3dec218ff0 Merge pull request #477 from niphlod/enhancement/scheduler_deps
new feature (task dependencies) and a little bit of refactoring
2014-08-05 01:44:11 -05:00
niphlod
cb6f2ca302 task dependencies, a little bit of refactoring 2014-08-04 21:42:11 +02:00
Leonel Câmara
b788e8b493 minor - Slight optimization use tablename directly instead of table._tablename 2014-08-02 10:57:02 +01:00
Leonel Câmara
444a09b0b2 Refactored BaseAdapter delete method - Special case code for sqlite and spatialite should not be in the BaseAdapter it should be in SQLiteAdapter, this should also provide a negligible performance boost in delete operations for most adapters including SQLiteAdapter. 2014-08-02 10:52:47 +01:00
Leonel Câmara
f0691a64ea typo in a comment 2014-08-02 10:38:48 +01:00
omartrinidad
e29804eeb4 Changed a condition in order to not show None if there is not error 2014-08-01 09:47:46 -05:00
mdipierro
9866e54c00 Merge branch 'master' of github.com:web2py/web2py into HEAD 2014-08-01 01:46:53 -05:00
mdipierro
356b4164c3 syncing 2014-08-01 01:46:46 -05:00
mdipierro
eff9b2d174 Merge pull request #474 from leonelcamara/master
Added an optional render argument to as_trees that if True causes it to ...
2014-08-01 01:43:36 -05:00
mdipierro
91ced9007e Merge pull request #473 from omartrinidad/master
Deleted unnecessary variable
2014-08-01 01:37:35 -05:00
Leonel Câmara
c73cc084ad Merge branch 'master' of git://github.com/web2py/web2py
Conflicts:
	applications/admin/languages/pt.py
	gluon/dal.py
2014-07-29 20:19:26 +01:00
Leonel Câmara
ad1dd3afdd minor 2014-07-29 20:11:50 +01:00
Leonel Câmara
8d8095b1f5 Added fix - you cannot concatenate lists with tuples and sets and it was possible that this would happen 2014-07-29 19:39:14 +01:00
Leonel Câmara
757fb934d5 Fixed a bug where as_list was setting the compact value for the rows permanently instead of only temporarily while processing the rows. 2014-07-29 18:56:45 +01:00
Leonel Câmara
1ee8d3cb97 Added an optional render argument to as_trees that if true causes it to render the rows before building the tree 2014-07-29 18:01:11 +01:00
mdipierro
c6e766d5e1 template converter for alternative delimiters 2014-07-29 11:52:50 -05:00
mdipierro
2be0a95dab template converter for alternative delimiters 2014-07-29 11:45:43 -05:00
mdipierro
d9e0e08a91 reverted latest commit, Leonel is right, better to use closures 2014-07-29 09:57:12 -05:00
mdipierro
bd44a42c89 allow arbistrary params to formstyle=style(placeholder=True, errors='down'), thanks André Kablu 2014-07-28 23:29:26 -05:00
mdipierro
024912bda1 fixed conflict between GAE and 2-factor authentication 2014-07-28 22:01:48 -05:00
Omar Trinidad Gutiérrez Méndez
dec69b8252 Deleted unnecessary variable
before:
        iso_format = iso_format = {'_data-w2p_datetime_format' : '%Y-%m-%d %H:%M:%S'}

now:
        iso_format = {'_data-w2p_datetime_format' : '%Y-%m-%d %H:%M:%S'}
2014-07-28 11:35:56 -05:00
mdipierro
29303488ab support for Oracle REGEXP_LIKE, thanks Alexander Rasin 2014-07-28 00:21:45 -05:00
mdipierro
0201007e2c ldap CA support, thanks Maggs and Shane 2014-07-27 11:15:37 -05:00
mdipierro
c3116b094c Merge pull request #472 from ilvalle/fix_editor
editor:potential fix for requests cancelled due to same origin policy
2014-07-27 10:54:23 -05:00
mdipierro
29ed8494dc Merge pull request #471 from omartrinidad/master
Typo. Your -> You
2014-07-27 10:53:54 -05:00
mdipierro
a0d105a5ec Merge pull request #470 from whoot/master
German translation
2014-07-27 10:53:28 -05:00
ilvalle
967a37adc4 online editor:potential fix for requests cancelled due to same origin policy 2014-07-22 10:22:48 +02:00
Omar Trinidad Gutiérrez Méndez
c4264c986b Typo Spanish 2014-07-20 21:21:16 -05:00
Omar Trinidad Gutiérrez Méndez
ca18097f9c Spanish localization in admin application 2014-07-20 21:06:50 -05:00
Omar Trinidad Gutiérrez Méndez
130540dafc Typo. Your -> You 2014-07-20 19:10:26 -05:00
Jan Rude
9fa165430a Update de.py
Missed some translations
2014-07-17 10:20:57 +02:00
Jan Rude
2b9a9b4d11 Update de.py
Missed some translations
2014-07-17 10:18:53 +02:00
Jan Rude
cac45aa5a5 Added german translation 2014-07-16 20:03:37 +02:00
Jan Rude
b068540c4c Added/Improved some translations 2014-07-16 20:03:06 +02:00
Jan Rude
c24e1d52d9 Added/Improved some translations 2014-07-16 20:02:19 +02:00
Jan Rude
2cd8623e92 Update de.py 2014-07-16 20:00:58 +02:00
root
773933602e Added/improved german translation 2014-07-16 19:58:03 +02:00
mdipierro
7b2b8155f9 Merge pull request #469 from abastardi/issue/unique_validator
Fix default validator when unique=True
2014-07-10 02:07:46 -05:00
mdipierro
ad2ca992aa Merge pull request #467 from ilvalle/fix_show_if
fix show_if with belongs
2014-07-10 02:06:40 -05:00
abastardi
d2563c434b Fix default validator when unique=True
Append the IS_NOT_IN_DB validator so it is applied to the final value after any previous validators may have altered the original value.
2014-07-09 13:51:26 -04:00
ilvalle
609a931f91 always appends IS_NOT_IN_DB 2014-07-09 17:05:36 +02:00
mdipierro
fcadaa981d settings is_gae in autocomplete 2014-07-09 07:07:26 -05:00
ilvalle
e7208c6569 fix unique validator with date/time fields 2014-07-08 23:14:28 +02:00
ilvalle
f2bc3cca36 fix show_if with belongs 2014-07-08 12:22:31 +02:00
mdipierro
195acce3b9 Merge pull request #466 from viniciusban/pt_br_translations
pt-br translations for admin and welcome apps
2014-07-04 01:47:22 -05:00
mdipierro
27eb797e2b Merge pull request #465 from omartrinidad/patch-1
Update sqlhtml.py
2014-07-04 01:46:17 -05:00
viniciusban
ed29758819 pt-br translation for welcome app 2014-07-03 23:15:43 -03:00
viniciusban
d99f4d4e7d pt-br translation for admin app 2014-07-03 23:05:11 -03:00
mdipierro
5d3c915c61 added parent links 2014-07-03 12:22:55 -05:00
mdipierro
1606c938a7 better handling of uploads in hypermedia.py 2014-07-03 11:56:15 -05:00
mdipierro
9a6f0b59ad fixed errors reporting in collection+json 2014-07-02 18:35:25 -05:00
mdipierro
55016cbd4d fixed guessable CSRF token when detect_record_change, thanks Stephen Röttger 2014-07-02 08:27:02 -05:00
mdipierro
eec39aeeec smarter upload of binary data 2014-07-02 07:26:16 -05:00
mdipierro
bc1b4ad03a fixed some problems with collection+json 2014-07-02 03:01:30 -05:00
Omar Trinidad Gutiérrez Méndez
13d4d892b7 Update sqlhtml.py
Improved readability in code
2014-07-01 16:24:40 -05:00
mdipierro
6e8e95eb3e jquery.js 1.11.1 2014-06-30 09:57:29 -05:00
mdipierro
0be4f73102 no more analytics.min.js 2014-06-30 09:55:13 -05:00
mdipierro
b61e8c6132 allow id in email msg 2014-06-25 10:52:36 -05:00
mdipierro
22044768cb Merge pull request #464 from cccaballero/master
Added dict based meta generation
2014-06-25 01:02:07 -05:00
mdipierro
d712d3b83c fixed redirect 2014-06-24 12:46:17 -05:00
cccaballero
1ecf36a027 Added dict based meta generation 2014-06-24 09:49:46 -04:00
mdipierro
bf52e012a7 rules->policies in hypermedia 2014-06-23 01:03:17 -05:00
mdipierro
7bb8735f2f Hypermedia API and Collection+JSON 2014-06-22 14:57:35 -05:00
mdipierro
1ca5e5524e fixed possible bug in dal 2014-06-19 17:17:29 -05:00
mdipierro
21bdf114b4 Merge pull request #462 from niphlod/fix/scheduler_disabled
a DISABLED worker shouldn't resume after completing a task
2014-06-15 22:20:17 -05:00
mdipierro
12c2668da1 Merge pull request #460 from niphlod/fix/scheduler
removed leftover print
2014-06-15 21:02:25 -05:00
niphlod
d2c9f510bc if a worker is DISABLED while processing a task, it shouldn't resume after finishing it 2014-06-15 17:40:08 +02:00
niphlod
84cf736b63 removed leftover print 2014-06-15 15:15:33 +02:00
mdipierro
e172c2cade Merge pull request #459 from flavour/master
Remove duplicate import
2014-06-14 13:15:09 -05:00
Fran Boon
c163e1c776 Remove duplicate imports/unused variable 2014-06-14 23:29:09 +05:30
mdipierro
e33704467b fixed typo in recent commit 2014-06-14 10:07:51 -05:00
mdipierro
255dd9777d fixed typo in recent commit 2014-06-14 10:06:13 -05:00
mdipierro
8b8baf10a3 fixed issue 1942, redirect in federated login security check 2014-06-13 22:24:57 -05:00
mdipierro
e42b835687 Merge branch 'master' of github.com:web2py/web2py 2014-06-13 22:16:43 -05:00
mdipierro
559961897e Merge pull request #458 from niphlod/fix/like_ansi_behaviour
fix like behaviour as ANSI-SQL LIKE
2014-06-13 22:16:21 -05:00
mdipierro
6cee7ce238 Merge branch 'master' of github.com:web2py/web2py 2014-06-13 22:12:01 -05:00
mdipierro
c9421ac526 Merge pull request #457 from niphlod/enhancement/scheduler
scheduler's refactoring
2014-06-13 22:11:40 -05:00
mdipierro
3266c541b6 fixed CAST LONGTEXT issue with mysql 2014-06-13 11:46:50 -05:00
niphlod
b6f9bdef95 fix like behaviour 2014-06-10 22:37:55 +02:00
Khalid
43fee52081 ar.py in plural_rules added
ar.py in plural_rules added
2014-06-10 22:31:51 +03:00
niphlod
da49391134 - refactored internals
- pep8
- worker stats
- kill(), terminate(), resume(), disable() have a new "limit" parameter
- first steps towards autoscaling
- needs an additional column (easiest migration possible)
2014-06-08 22:51:26 +02:00
mdipierro
d442b003ea restored .travis.yml 2014-06-08 00:34:46 -05:00
mdipierro
e5557edccd Merge pull request #456 from niphlod/enhancement/mssql4
mssql4 adapter enhancements
2014-06-08 00:29:15 -05:00
mdipierro
5ec386fb7b Merge pull request #455 from niphlod/fix/test_rewrite
fix rewrite tests under Windows
2014-06-08 00:28:15 -05:00
mdipierro
1a0d11a4f2 prevent_password_reset_attacks, thanks Steve Rawlinson 2014-06-08 00:20:38 -05:00
mdipierro
e068e397e1 prevent open redirects, thanks Steve Rawlinson 2014-06-07 23:52:56 -05:00
Khalid
84b8be34ec Arabic Translation Added
Not perfect yet , but it's the first version.
2014-06-06 23:50:47 +03:00
niphlod
01fb85c693 mssql4 adapter enhancements
Given that mssql4 requires MSSQL2012, we can use newer types for data
without worrying about compatibility with older MSSQL versions
2014-06-03 23:36:08 +02:00
niphlod
75e59b8bf5 fix rewrite tests under Windows 2014-06-03 23:31:54 +02:00
mdipierro
bbc2a71a32 Merge branch 'master' of github.com:web2py/web2py 2014-06-02 21:36:47 -05:00
mdipierro
593592fb5f Merge pull request #453 from niphlod/fix/coverage_ini
we don't want gluon/tests to be covered
2014-06-02 21:36:43 -05:00
mdipierro
f65a3db1ef Merge branch 'master' of github.com:web2py/web2py 2014-06-02 21:36:16 -05:00
mdipierro
439c9978d3 Merge pull request #452 from niphlod/fix/tests_mp
fix multiprocessing tests under windows
2014-06-02 21:36:08 -05:00
mdipierro
d076e399fb Merge branch 'master' of github.com:web2py/web2py 2014-06-02 21:35:22 -05:00
mdipierro
4c73fd15eb Merge pull request #451 from niphlod/fix/tests
added tests and refactored incorrect docstrings
2014-06-02 21:32:38 -05:00
niphlod
2832ac463e we don't want tests to be covered 2014-06-02 22:27:00 +02:00
niphlod
05b4503531 fix multiprocessing tests under windows 2014-06-02 16:31:58 +02:00
niphlod
f1606ee091 added tests and refactored incorrect docstrings 2014-05-29 23:34:32 +02:00
mdipierro
169f7589f2 Merge branch 'master' of github.com:web2py/web2py 2014-05-29 11:05:18 -05:00
mdipierro
91d6834f0e Merge pull request #302 from gi0baro/staticv_url
Static versioning in URL() function
2014-05-29 11:02:41 -05:00
mdipierro
c278d7156a fixed issue 1902:SQLFORM.grid showbuttontext argument links doesn't have class button, thanks Francisco 2014-05-26 23:59:53 -05:00
mdipierro
ceb479e0cd fixed issue 1924:Reset Password form does not show password strength. 2014-05-26 23:56:56 -05:00
mdipierro
f6a9accdc9 Merge branch 'master' of github.com:web2py/web2py 2014-05-26 23:49:58 -05:00
mdipierro
6e54b5458b fixed 1929:cannot acess appadmin cache if you use redis as cache, thanks leonardo 2014-05-26 23:49:11 -05:00
mdipierro
ece00a8f52 fixed 1933:MongoDB adapter passes incorrect query, thanks Alan 2014-05-26 23:43:19 -05:00
mdipierro
268458d07b Merge pull request #450 from BuhtigithuB/patch-8
coding utf8 and improve comment
2014-05-26 22:29:56 -05:00
mdipierro
51fad4d13f Merge pull request #449 from BuhtigithuB/patch-7
python idomatic
2014-05-26 22:29:18 -05:00
mdipierro
f55a5660c2 Merge pull request #448 from ilyaran/patch-1
Update cache.py
2014-05-26 22:28:20 -05:00
mdipierro
7e9c9dbe93 Merge pull request #431 from ortgit/enhancement/two_step_authentication
Added support for two-step authentication.
2014-05-26 22:27:23 -05:00
mdipierro
e66f201191 db(db.person).select().column('name'), thanks Anthony 2014-05-26 22:26:59 -05:00
BuhtigithuB
4db37981e2 coding utf8 and improve comment 2014-05-26 10:57:47 -04:00
BuhtigithuB
7cc7c4ab7a python idomatic 2014-05-26 10:48:47 -04:00
ilyaran
0dbdf8c676 Update cache.py 2014-05-24 10:35:58 +05:00
mdipierro
35c21044bb Merge branch 'master' of github.com:web2py/web2py 2014-05-22 08:12:54 -05:00
mdipierro
37036de5df Merge pull request #447 from reingart/master
fixing pypdf table rendering issues due attribute sanitization
2014-05-22 08:12:41 -05:00
mdipierro
4fc6ec0478 Merge branch 'master' of github.com:web2py/web2py 2014-05-22 08:11:51 -05:00
mdipierro
3ce7dfba7f Merge pull request #446 from jmistx/master
Add support of --folder paramter for cron.
2014-05-22 08:11:42 -05:00
Oleg Blokhin
e3b1c0b7c7 Merge branch 'master' of https://github.com/jmistx/web2py 2014-05-22 16:49:16 +04:00
Oleg Blokhin
53e22fc31c Terminate subprocesses right way on cronstop 2014-05-22 16:46:06 +04:00
Mariano Reingart
bfce57f5da fixed excessive attribute sanitization in generic generation of PDF (pyfpdf) 2014-05-21 15:10:25 -03:00
Oleg Blokhin
87cf9307f0 fix cron hang on Ctrl+C terminating from terminal 2014-05-21 18:18:19 +04:00
jmistx
89e38fb15b Delete git
unneeded file
2014-05-21 17:32:03 +04:00
Oleg Blokhin
92d7ccf331 Add support of --folder paramter for cron.
Before this changes crontab from directories (except native applications) was ignored
2014-05-21 17:28:11 +04:00
mdipierro
292a2ae882 fixed Issue 1927:LoginRadiusAccount does not allow specifying callback url (patch included) 2014-05-16 22:43:20 -05:00
mdipierro
5823aa9a79 Merge pull request #445 from dokime7/patch-4
Fix IS_STRONG used with validate_and_update
2014-05-16 22:26:05 -05:00
mdipierro
d1e5d7a440 Merge pull request #443 from szimszon/master
Easier S/Mime (X.509)
2014-05-16 22:25:21 -05:00
mdipierro
489646f178 Merge pull request #442 from bunnyhugdev/master
Prevent error in restful decorator from swallowing up stacktrace
2014-05-16 22:24:39 -05:00
mdipierro
a19c7e6d9c Merge pull request #441 from dokime7/patch-3
Fix LOAD() in restful context
2014-05-16 22:21:15 -05:00
mdipierro
f5cd44d143 Merge pull request #440 from dokime7/patch-2
Better HTTP code for method not supported
2014-05-16 22:19:49 -05:00
Jeremie Dokime
84f88ed9db Fix IS_STRONG used with validate_and_update
Fix no error return with IS_STRONG validator because it returns a gluon.html.XML instead of str, so when pushed to response.errors that is a Row, it isn't display because Row object filters his output and doesn't support XML objects.
2014-05-16 16:14:14 +02:00
Jeremie Dokime
537dabb9c3 Inject restful method for LOAD()
Better solution than my last commit for the restful method by inject the real restful method.
We can now call LOAD() on a @request.restful() decorated action.
2014-05-14 09:52:44 +02:00
Szabolcs Gyuris
cf12028be6 S/Mime (X.509) keyfile, sign_certfile, sign_chainfile, crypt_certfile can be strings.
mail.send() function can set signing and encryption settings.
2014-05-14 09:11:46 +02:00
Joel Rathgaber
4ff63694c7 Prevent error in restful decorator from swallowing up stacktrace 2014-05-13 12:03:46 -06:00
ortgit
89893c91da Update tools.py
Forgot to import 'random' module.
2014-05-12 17:08:00 -04:00
ortgit
9b4f721c71 Look in auth_group table for group role name, and use Rows correctly. 2014-05-12 16:25:23 -04:00
Jeremie Dokime
f684769638 Fix LOAD() in restful context
When you call LOAD() on a controller who has some actions decorates with @request.restful(), it fail with:
@request.restful()
TypeError: 'NoneType' object is not callable
=> because LOAD use other_request variable who are a Request but without all methods and therefore without restful method.
I've just mock the restful method but I think that the real restful method will be better...
2014-05-12 17:41:19 +02:00
Jeremie Dokime
9892d29bb9 Better HTTP code for method not supported
Change HTTP code to raise from 400 to 405 (Method Not Allowed).
2014-05-12 16:54:18 +02:00
mdipierro
7cfa2a54b7 remove more bloat 2014-05-09 15:43:10 -05:00
mdipierro
27bb2ee6b8 removed some files but not all (for now) 2014-05-09 15:24:18 -05:00
mdipierro
c8a8a4aa91 Merge pull request #438 from szimszon/master
Add support for certificate chaining for s/mime sign in Mail
2014-05-07 17:10:13 -05:00
mdipierro
c2b19524d3 Merge branch 'BuhtigithuB-patch-6' 2014-05-07 17:09:18 -05:00
mdipierro
993cc16a25 syncing 2014-05-07 17:09:03 -05:00
mdipierro
4d4c2b3f37 Merge pull request #436 from BuhtigithuB/patch-5
PEP8 improvements white space here and there
2014-05-07 17:05:37 -05:00
mdipierro
f71d9bb4b0 cgi.parse_qs deprecated -> urlparse.parse_qs, thanks BuhtigithuB 2014-05-07 17:04:34 -05:00
mdipierro
9bb75359a6 Merge pull request #434 from BuhtigithuB/patch-3
PEP8 improvements white space here and there
2014-05-07 17:00:34 -05:00
Szabolcs Gyuris
9ea32bf579 Add support for certificate chaining for s/mime sign in Mail 2014-05-07 09:21:39 +02:00
BuhtigithuB
4ab3631f1c Fix wrong space insert in patch 2014-05-04 12:17:31 -04:00
BuhtigithuB
32ef767ed0 ley -> key 2014-05-04 12:12:18 -04:00
BuhtigithuB
377a69ced9 PEP8 improvements white space here and there
I search with regexp ",[^\s-]" to spot missing space after comma. I also, add double break line in front of function or class. I change a couple of comparator in order to add space in front and after " == " for instance.
2014-05-04 12:02:08 -04:00
BuhtigithuB
df0db657a7 PEP8 improvements white space here and there
I search with regexp ",[^\s-]" to spot missing space after comma. I also, add double break line in front of function or class. I change a couple of comparator in order to add space in front and after " == " for instance.
2014-05-02 15:27:26 -04:00
ortgit
d3bcde04be Modified email subject to generic message. 2014-04-27 02:13:02 -04:00
ortgit
87edbccf5b Added support for two-step authentication. The login function will
now email a 6-digit code to users if the user is part of a group
with role 'web2py TWo-Step Authentication'.
2014-04-27 01:39:51 -04:00
mdipierro
50438075b6 Merge pull request #430 from niphlod/fix/setup_script
fix comments
2014-04-26 16:04:18 -05:00
mdipierro
7d8f4360fa Merge pull request #429 from BuhtigithuB/patch-2
PEP8 improvements white space here and there
2014-04-26 16:03:27 -05:00
niphlod
cbf9723a33 fix comments 2014-04-26 20:52:25 +02:00
BuhtigithuB
bc1e9b5c98 PEP8 improvements white space here and there
I search with regexp ",[^\s-]" to spot missing space after comma. I also, add double break line in front of function or class. I change a couple of comparator in order to add space in front and after " == " for instance.
2014-04-24 12:25:34 -04:00
mdipierro
accc7bdf38 Merge pull request #428 from BuhtigithuB/patch-1
Switch for .grid() advanced_search widget
2014-04-24 00:00:04 -05:00
mdipierro
a7434b3ce8 Merge pull request #427 from michele-comitini/sqltable_quoted_names_support
apply same rules as DAL's to find tables and fields in column names
2014-04-23 23:59:14 -05:00
Michele Comitini
5f636c5ba2 fix headers in SQLTABLE to handle quoted entities 2014-04-24 01:09:23 +02:00
BuhtigithuB
75aa927c4b Switch for .grid() advanced_search widget
Virtual basic search widget only by removing the _onfocus trigger even that prevent the advanced search to unfold. advanced_search is True by default for backward compatibility...
2014-04-23 14:34:27 -04:00
Michele Comitini
dcd92daa24 apply same rules as DAL's to find tables and fields in column names 2014-04-23 09:45:22 +02:00
Massimo
287d8e3e18 added private folder back to design page, thanks szunny 2014-04-15 10:27:31 -05:00
Massimo
7e470d7786 added missing files 2014-04-15 10:22:57 -05:00
Massimo
caafff74b3 reverted rpx_account for backward compatibility and added janrain_account for the new engage.js api 2014-04-15 10:16:02 -05:00
mdipierro
ddc21ee05b Merge pull request #426 from ortgit/issue/1919
Check whether memdb record is None before trying to read its keys
2014-04-15 09:48:32 -05:00
mdipierro
e748ef9bf9 Merge pull request #425 from ortgit/issue/1920
time_expire=0 should clear memcache entry
2014-04-15 09:47:26 -05:00
ortgit
3bb939d3fe Check whether record is None before trying to read its keys otherwise app crashes on GAE (and other memdb's) 2014-04-14 01:55:30 -04:00
ortgit
222b087a8d time_expire=0 should clear memcache entry
If time_expire=0, then the cache should be cleared and reset with the
latest value to stay compatible with documented web2py functionality of
how caching works. Previous change broke this compatibility while adding
efficiency in other cases.
2014-04-14 01:32:54 -04:00
mdipierro
53ecc17b57 Merge pull request #424 from omartrinidad/master
Updated regex to manage white space in titles
2014-04-13 10:39:53 -05:00
Omar Trinidad Gutiérrez Méndez
d301f78396 Typo
Fixed subtle typo
2014-04-11 08:38:01 -05:00
Omar Trinidad Gutiérrez Méndez
98a3c4aa37 Updated regex to manage white space in titles
Addition of `\s*` in some regex in order to have the same behavior as in markmin2html. That is:
    
    # Title
and
    #Title

or:

    ## Title
and
    ##Title
2014-04-10 08:39:55 -05:00
mdipierro
347a0d66cd Merge pull request #423 from omartrinidad/master
Rewritten a regex
2014-04-09 18:10:49 -05:00
Omar Trinidad Gutiérrez Méndez
8b95c85512 Rewritten a regex
Rewritten a regular expression from two lines to one line.
2014-04-09 16:50:30 -05:00
mdipierro
080575720d Merge pull request #420 from omartrinidad/master
Deleted repeated line
2014-04-08 22:49:39 -05:00
mdipierro
8473c96b73 Merge pull request #421 from niphlod/fix/examples
few "fashion" tweaks plus sphinx over epydoc docs
2014-04-08 22:48:40 -05:00
Omar Trinidad Gutiérrez Méndez
ae3bf270cf Fixed typo
Fixed typo
2014-04-08 18:39:06 -05:00
niphlod
0c30bc5d7d few "fashion" tweaks plus sphinx over epydoc docs 2014-04-08 23:03:15 +02:00
Omar Trinidad Gutiérrez Méndez
ad1f1d21d4 Deleted repeated line
Deleted repeated line
2014-04-08 10:47:26 -05:00
mdipierro
39ee2a5991 skip languages write test on GAE 2014-04-07 12:16:19 -05:00
mdipierro
1bf67c0e58 Merge pull request #419 from niphlod/docs/sphinx
sphinx compatible doc-generation
2014-04-07 12:02:54 -05:00
niphlod
baead802a5 sphinx compatible doc-generation 2014-04-06 20:50:02 +02:00
mdipierro
98b0b21c69 Merge pull request #418 from neoecos/patch-1
fixed bug in defition of decimal types
2014-04-05 17:27:05 -05:00
mdipierro
6e3070763e Merge pull request #417 from niphlod/fix/wiki_preview
jQuery 1.9 removed toggle(function(), function()). And nobody noticed.
2014-04-05 17:25:36 -05:00
Sebastian Ortiz
a2e1343020 fixed bug in defition of decimal types
A postgresql column of type numeric(10,4) was mapped as just decimal, so the parse_decimal of dal.py will fail. The correct mapping is decimal(10,4) in the web2py model.
2014-04-02 09:59:33 -05:00
mdipierro
2fb8b05906 fixed some licensing issues 2014-04-02 09:19:52 -05:00
niphlod
a3528339c7 jQuery 1.9 removed toggle(function(), function()). And nobody noticed. 2014-04-02 00:02:05 +02:00
mdipierro
9415466c83 Merge pull request #416 from jmistx/master
routes.py search path fixed to application_parent
2014-03-31 19:44:47 -05:00
unknown
4358313eea Now routes.py will be gotten from applications_parent in case of using main.HttpServer.
Previous behavior: route.py must be located in gluon_parent which is wrong.
2014-03-31 19:17:51 +04:00
mdipierro
fab4d1e782 welcome + gae should use ndb as example 2014-03-31 00:24:52 -05:00
mdipierro
8d648f6137 restore beahvior in gae that if no limitby, returns iterator 2014-03-31 00:19:04 -05:00
mdipierro
52b55889dd fixed the proble with count on GAE 2014-03-31 00:07:31 -05:00
mdipierro
0caae1f8d4 better support for google datastore 2014-03-30 23:36:51 -05:00
mdipierro
74b0bd9c3a web2py.py -G config, will make GAE config easier 2014-03-29 17:43:49 -05:00
mdipierro
29ca1872b0 GAE should use 2.7, not 2.5 2014-03-29 17:28:45 -05:00
mdipierro
49f4e38658 db.define_table(...table_hash=...) to override hash in .table file, thanks dmvieira 2014-03-29 17:19:12 -05:00
mdipierro
338a4256ca Merge pull request #415 from niphlod/docs/dal
sphinx-compatible docstrings (and we're finished!!!!!)
2014-03-29 17:08:53 -05:00
mdipierro
8d11647a8d better fix for patch 414, starting web2py from other folder 2014-03-29 17:07:25 -05:00
mdipierro
76654a6fbe mentioned change in license of login_methods to LGPL 2014-03-29 00:58:59 -05:00
mdipierro
267cd08af6 gae search not fecthed by key to ensure consistency, thanks Luca 2014-03-28 23:51:27 -05:00
niphlod
874abf67ae sphinx-compatible docstrings (and we're finished!!!!!) 2014-03-27 22:50:27 +01:00
mdipierro
13f2aa536e Merge pull request #413 from luizpedone/patch-1
Updated the pt-br welcome application translation.
2014-03-26 00:29:52 -05:00
luizpedone
cfb3be9363 Updated the pt-br welcome application translation. 2014-03-25 20:38:09 -03:00
mdipierro
f3bea1bfb1 Merge pull request #412 from ilvalle/create_view
codemirror 4.0.3 (new upstream major release)
2014-03-25 12:17:45 -05:00
mdipierro
0c1fa92705 Merge pull request #411 from niphlod/docs/te-x
sphinx-compatible docstring (only DAL remains)
2014-03-25 12:16:42 -05:00
mdipierro
47cd10d357 Merge pull request #410 from niphlod/docs/s-te
sphinx-compatible docstrings (7 modules remaining...)
2014-03-25 12:15:45 -05:00
ilvalle
7cd3ffbcbd codemirror 4.0.3 (new upstream major release) 2014-03-25 12:56:39 +01:00
niphlod
b20b7ecb19 sphinx-compatible docstring (only DAL remains) 2014-03-24 22:30:50 +01:00
niphlod
3597833bac sphinx-compatible docstrings (7 modules remaining...) 2014-03-23 21:46:25 +01:00
mdipierro
f9ad11473d changed license of some modules from GPLv2 to LGPLv3 2014-03-22 02:26:04 -05:00
mdipierro
8f99ce734d issue 1903:SQLTABLE - 'even' and 'odd' css classes are opposite to real row type, thanks Paolo 2014-03-21 01:02:38 -05:00
mdipierro
f8831b0bf3 Merge pull request #409 from ctdegroot/uploadfs
Modify Table class so that uploadfs is respected when uploads_in_blob is set to True
2014-03-20 18:00:43 -05:00
mdipierro
06cef8f9d1 experimenting with build script 2014-03-20 17:53:03 -05:00
mdipierro
2b60a1cd49 support for geography types, thanks sunny 2014-03-20 11:14:25 -05:00
Chris DeGroot
9a92318d75 Modify Table class so that uploadfs is respected when uploads_in_blob is set to True 2014-03-19 23:43:58 -04:00
mdipierro
69ad382751 added warning 2014-03-19 16:25:06 -05:00
mdipierro
8259f1c490 added warning 2014-03-19 12:52:03 -05:00
mdipierro
96a1969cb6 merged 2014-03-19 12:34:47 -05:00
mdipierro
716b6e21d5 Merge branch 'master' of github.com:web2py/web2py 2014-03-19 12:31:13 -05:00
mdipierro
fe7a9e130b Merge pull request #406 from luizpedone/master
Update translation to pt-br.
2014-03-19 12:31:00 -05:00
mdipierro
3762a45974 more cleanup logic in web2py build 2014-03-19 12:30:25 -05:00
Alexandre Andrade
d06e4f63d7 added translations to pt-br language file 2014-03-19 11:58:45 -03:00
Alexandre Andrade
4125230cfc added translations to pt-br language file 2014-03-19 11:38:44 -03:00
Alexandre Andrade
a35bc8635b added pt-br language file 2014-03-19 11:35:50 -03:00
luizpedone
af5cd04044 Fix some typos, correct some translations. 2014-03-19 07:56:16 -03:00
mdipierro
4e9554dca1 Merge pull request #405 from niphlod/fix/static_version_by_default
static_version setup enabled by default
2014-03-18 09:28:48 -05:00
mdipierro
86fb431ed3 Merge pull request #404 from viniciusban/dont_write_translation_file_when_is_writable_is_false
Don't write translation file when T.is_writable == False
2014-03-18 09:27:29 -05:00
luizpedone
3fbe1d3e85 Update translation to pt-br. 2014-03-18 11:11:14 -03:00
niphlod
9a8231f675 now that static_version is flagshipped and hopefully implemented in most apps, let's setup it by default 2014-03-17 21:32:42 +01:00
viniciusban
1d7f96c06b Don't write translation file when T.is_writable == False 2014-03-17 04:04:59 -03:00
gi0baro
2bf1f5396f Removed pedant if check in URL() 2013-11-18 01:12:37 +01:00
gi0baro
e83bb7af29 Add response.static_version to URL() 2013-11-15 15:22:20 +01:00
640 changed files with 96123 additions and 57102 deletions

13
.codecov.yml Normal file
View File

@@ -0,0 +1,13 @@
codecov:
branch: master
coverage:
precision: 2
round: down
range: "70...100"
status:
changes: false
comment:
layout: "header, diff, changes"

6
.gitignore vendored
View File

@@ -13,6 +13,7 @@
*.orig
Thumbs.db
.DS_Store
*.DS_Store
index.yaml
routes.py
logging.conf
@@ -48,7 +49,10 @@ applications/*/sessions/*
applications/*/errors/*
applications/*/cache/*
applications/*/uploads/*
applications/*/private/*
applications/*/*.py[oc]
applications/*/static/temp
applications/*/progress.log
applications/examples/static/epydoc
applications/examples/static/sphinx
applications/admin/cron/cron.master
@@ -56,3 +60,5 @@ HOWTO-web2py-devel
*.sublime-project
*.sublime-workspace
.idea/*
site-packages/
logs/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "gluon/packages/dal"]
path = gluon/packages/dal
url = https://github.com/web2py/pydal.git

View File

@@ -1,57 +1,45 @@
language: python
sudo: required
cache: pip
dist: "trusty"
python:
- '2.6'
- '2.7'
- 'pypy'
- '3.5'
- '3.6'
- 'pypy-5.3.1'
- 'pypy3.5-5.7.1-beta'
matrix:
allow_failures:
- python: 'pypy3.5-5.7.1-beta'
install:
- pip install -e .
env:
- DB=sqlite:memory
- DB=mysql://root:@localhost/test_w2p
- DB=postgres://postgres:@localhost/test_w2p
- DB=google:datastore
- DB=mongodb://mongodb:mongodb@localhost/test_w2p
- DB=imap://imap:imap@localhost:993
before_script:
- if [[ $TRAVIS_PYTHON_VERSION != '2.7' ]]; then pip install unittest2; fi
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pip install coverage; fi;
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pip install python-coveralls; fi
- if [[ $DB == postgres* ]]; then pip install psycopg2; fi;
- if [[ $TRAVIS_PYTHON_VERSION == '2.5' ]]; then pip install pysqlite; fi
- if [[ $DB == mysql* ]]; then mysql -e 'create database test_w2p;'; fi
- if [[ $DB == postgres* ]]; then psql -c 'create database test_w2p;' -U postgres; fi
# Install last sdk for app engine (update only whenever a new release is available)
- if [[ $DB == google* ]]; then wget http://googleappengine.googlecode.com/files/google_appengine_1.8.9.zip -nv; fi
- if [[ $DB == google* ]]; then unzip -q google_appengine_1.8.9.zip; fi
- if [[ $DB == google* ]]; then mv -f ./google_appengine/google ./google; fi
- if [[ $DB == mongodb* ]]; then pip install pymongo; fi
- if [[ $DB == mongodb* ]]; then mongo test_w2p --eval 'db.addUser("mongodb", "mongodb");'; fi
#Temporal solution to travis issue #155
- sudo chmod 777 /dev/shm
- sudo rm -rf /dev/shm && sudo ln -s /run/shm /dev/shm
matrix:
exclude:
- python: 'pypy'
env: DB=postgres://postgres:@localhost/test_w2p
- python: 'pypy'
env: DB=mysql://root:@localhost/test_w2p
- python: 'pypy'
env: DB=google:datastore
- python: '2.6'
env: DB=google:datastore
- pip install coverage
- pip install codecov
- mysql -e 'create database pydal;'
- psql -c 'create database pydal;' -U postgres
- psql -c 'create extension postgis;' -U postgres -d pydal;
- psql -c 'SHOW SERVER_VERSION' -U postgres
script: export COVERAGE_PROCESS_START=gluon/tests/coverage.ini; ./web2py.py --run_system_tests --with_coverage
after_success:
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then coverage combine; fi
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then coveralls --config_file=gluon/tests/coverage.ini; fi
- coverage combine;
- codecov
notifications:
email: true
services: mongodb
addons:
postgresql: "9.4"
apt:
packages:
- postgresql-9.4-postgis-2.3

197
CHANGELOG
View File

@@ -1,3 +1,200 @@
## 2.15.0b1
- dropped support for python 2.6
- dropped web shell
- experimental python 3 support
- experimental authapi for service login
- allow ajax file uploads
- more tests
- more pep8 compliance
- d3.js model visulization
- improved scheduler
- is_email support for internationalized Domain Names
- improved used of cookies with CookieJar
- SQLFORM.grid(showblobs=True)
- import JS events (added w2p.componentBegin event)
- added support for CASv3
- allow first_name and last_name placeholders in verify_email message
- added three-quote support in markmin
- updated pg8000 driver (but we still recommend psycopg2)
- compiled views use . separator not _ separator (must recompile code)
- better serbian, french, and catalan translations
- speed improvements (refactor of compileapp and pyc caching)
- removed web shell (never worked as intended)
- allow Expose(..., follow_symlink_out=False).
- Updated fpdf to latest version
- JWT support
- import fabfile for remote deployment
- scheduler new feature: you can now specify intervals with cron
- gluon/* removed from sys.path. Applications relying on statements like e.g.
"from storage import Storage"
will need to be rewritten with
"from gluon.storage import Storage"
- tests can only be run with the usual web2py.py --run_system_tests OR with
python -m unittest -v gluon.tests on the root dir
- jQuery 3.2.1
- PyDAL 17.07 including:
allow jsonb support for postgres
correctly configure adapters that need connection for configuration
better caching
updated IMAP adapter methods to new API
experimental suport for joinable subselects
improved Teradata support
improved mongodb support
overall refactoring
experimental support for Google Cloud SQL v2
new pymysql driver
## 2.14.6
- Increased test coverage (thanks Richard)
- Fixed some newly discovered security issues in admin:
CSRF vulnerability in admin that allows disabling apps
Brute force password attack vulnerability in admin
(thanks Narendra and Leonel)
## 2.14.1-5
- fixed two major security issues that caused the examples app to leak information
- new Auth(…,host_names=[…]) to prevent host header injection
- improved scheduler
- pep8 enhancements
- many bug fixes
- restored GAE support that was broken in 2.13.*
- improved fabfile for deployment
- refactored examples with stupid.css
- new JWT implementation (experimental)
- new gluon.contrib.redis_scheduler
- myconf.get
- LDAP groups (experimental)
- .flash -> .w2p_flash
- Updated feedparser.py 5.2.1
- Updated jQuery 1.12.2
- welcome app now checks for version number
- Redis improvements. New syntax:
BEFORE:
from gluon.contrib.redis_cache import RedisCache
cache.redis = RedisCache('localhost:6379',db=None, debug=True)
NOW:
from gluon.contrib.redis_utils import RConn
from gluon.contrib.redis_cache import RedisCache
rconn = RConn()
# or RConn(host='localhost', port=6379,
# db=0, password=None, socket_timeout=None,
# socket_connect_timeout=None, .....)
# exactly as a redis.StrictRedis instance
cache.redis = RedisCache(redis_conn=rconn, debug=True)
BEFORE:
from gluon.contrib.redis_session import RedisSession
sessiondb = RedisSession('localhost:6379',db=0, session_expiry=False)
session.connect(request, response, db = sessiondb)
NOW:
from gluon.contrib.redis_utils import RConn
from gluon.contrib.redis_session import RedisSession
rconn = RConn()
sessiondb = RedisSession(redis_conn=rconn, session_expiry=False)
session.connect(request, response, db = sessiondb)
Many thanks to Richard and Simone for their work and dedication.
## 2.13.*
- fixed a security issue in request_reset_password
- added fabfile.py
- fixed oauth2 renew token, thanks dokime7
- fixed add_membership, del_membership, add_membership IntegrityError (when auth.enable_record_versioning)
- allow passing unicode to template render
- allow IS_NOT_IN_DB to work with custom primarykey, thanks timmyborg
- allow HttpOnly cookies
- french pluralizaiton rules, thanks Mathieu Clabaut
- fixed bug in redirect to cas service, thanks Fernando González
- allow deploying to pythonanywhere from the web2py admin that you're running locally, thanks Leonel
- better tests
- many more bug fixes
## 2.12.1-3
- security fix: Validate for open redirect everywhere, not just in login()
- allow to pack invidual apps and selected files as packed exe files
- allow bulk user registration with default bulk_register_enabled=False
- allow unsorted multiword query in grid search
- better MongoDB support with newer pyDAL
- enable <app>/appadmin/manage/auth by default for user admin
- allow mail.settings.server='logging:filename' to log emails to a file
- better caching logic
- fixed order of confirm-password field
- TLS support in ldap
- prettydate can do UTC
- jquery 1.11.3
- bootstrap 3.3.5
- moved to codecov and enabled appveyor
- many bug fixes
## 2.11.1
- Many small but significative improvements and bug fixes
## 2.10.1-2.10.2
- welcome app defaults to Bootstrap 3
- DAL -> pyDAL (thanks Giovanni, Niphlod, Paolo)
- new modular dal
- fixed problems with GAE support
- moved to full NDB support
- improved connection pooling logic
- optional cache.ram.max_ram_utilization = 90 (experimental)
- improved cache.disk logic (thanks Niphlod and Leonel)
- lots of pep8 improvements, thanks Richard
- added support for email attchments when auth.settings.server='gae'
- fixed app.yaml.example for GAE
- fixed many small issues
- many many more tests (thanks Giovanni, Niphlod, Paolo)
- upgrading static libraries (bootstrap, codemirror, jquery, etc)
## 2.9.12
- Tornado HTTPS support, thanks Diego
- Modular DAL, thanks Giovanni
- Added coverage support, thanks Niphlod
- More tests, thanks Niphlod and Paolo Valleri
- Added support for show_if in readonly sqlform, thanks Paolo
- Improved scheduler, thanks Niphlod
- Email timeout support
- Made web2py's custom_import work with circular imports, thanks Jack Kuan
- Added Portuguese, Catalan, and Burmese translations
- Allow map_hyphen to work for application names, thanks Tim Nyborg
- New module appconfig.py, thanks Niphlod
- Added geospatial support to Teradata adaptor, thanks Andrew Willimott
- Many bug fixes
## 2.9.6 - 2.9.10
- fixed support of GAE + SQL
- fixed a typo in the license of some login_methods code. It is now LGPL consistently with the rest of the web2py code. This change applied to all previous web2py versions.
- support for SAML2 (with pysaml2)
- Sphinx documentation (thanks Niphlod)
- improved scheduler (thanks Niphlod)
- increased security
- better cache.disk (thanks Leonel)
- sessions are stored in subfolders for speed
- postgres support for "INSERT ... RETURING ..."
- ldap support for Certificate Authority (thanks Maggs and Shane)
- improved support for S/Mime X.509 (thanks Gyuris)
- better welcome app
- support for Collection+JSON Hypermedia API (RESTful self documenting API)
- jQuery 1.11
- codemirror 4.0.3
- markdown2 2.2.3
- memcache 1.53
- support for the new janrain API
- new "web2py.py -G config" to make GAE configuration easier
- many small bug fixes
## 2.9.1 - 2.9.5
- many small but important bug fixes

19
LICENSE
View File

@@ -39,25 +39,6 @@ web2py contains third party software under the gluon/contrib/ folder.
Each file/module in contrib is distributed with web2py under its original license.
Here we list some of them.
#### gluon.contrib.simplejson LICENSE
Copyright (c) 2006 Bob Ippolito - Permission is hereby granted, free of charge,
to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
#### gluon.contrib.rss2.py (originally PyRSS2Gen) LICENSE
This is copyright (c) by Dalke Scientific Software, LLC and released under the

View File

@@ -11,41 +11,41 @@ clean:
find ./ -name '*.rej' -exec rm -f {} \;
find ./ -name '#*' -exec rm -f {} \;
find ./ -name 'Thumbs.db' -exec rm -f {} \;
find ./gluon/ -name '.*' -exec rm -f {} \;
# find ./gluon/ -name '.*' -exec rm -f {} \;
find ./gluon/ -name '*class' -exec rm -f {} \;
find ./applications/admin/ -name '.*' -exec rm -f {} \;
find ./applications/examples/ -name '.*' -exec rm -f {} \;
find ./applications/welcome/ -name '.*' -exec rm -f {} \;
find ./ -name '*.pyc' -exec rm -f {} \;
epydoc:
### build epydoc
rm -f -r applications/examples/static/epydoc/
epydoc --config extras/epydoc/epydoc.conf
cp applications/examples/static/title.png applications/examples/static/epydoc
tests:
python web2py.py --run_system_tests
coverage:
coverage erase --rcfile=gluon/tests/coverage.ini
export COVERAGE_PROCESS_START=gluon/tests/coverage.ini
python web2py.py --run_system_tests --with_coverage
coverage combine --rcfile=gluon/tests/coverage.ini
sleep 1
coverage html --rcfile=gluon/tests/coverage.ini
update:
wget -O gluon/contrib/feedparser.py http://feedparser.googlecode.com/svn/trunk/feedparser/feedparser.py
wget -O gluon/contrib/simplejsonrpc.py http://rad2py.googlecode.com/hg/ide2py/simplejsonrpc.py
echo "remember that pymysql was tweaked"
src:
### Use semantic versioning
echo 'Version 2.9.5-stable+timestamp.'`date +%Y.%m.%d.%H.%M.%S` > VERSION
echo 'Version 2.15.1-stable+timestamp.'`date +%Y.%m.%d.%H.%M.%S` > VERSION
### rm -f all junk files
make clean
### clean up baisc apps
rm -f routes.py
rm -f applications/*/sessions/*
rm -f applications/*/errors/* | echo 'too many files'
rm -f applications/*/cache/*
rm -f applications/admin/databases/*
rm -f applications/welcome/databases/*
rm -f applications/examples/databases/*
rm -f applications/admin/uploads/*
rm -f applications/welcome/uploads/*
rm -f applications/examples/uploads/*
### make epydoc
make epydoc
rm -rf applications/*/sessions/*
rm -rf applications/*/errors/* | echo 'too many files'
rm -rf applications/*/cache/*
rm -rf applications/admin/databases/*
rm -rf applications/welcome/databases/*
rm -rf applications/examples/databases/*
rm -rf applications/admin/uploads/*
rm -rf applications/welcome/uploads/*
rm -rf applications/examples/uploads/*
### make welcome layout and appadmin the default
cp applications/welcome/views/appadmin.html applications/admin/views
cp applications/welcome/views/appadmin.html applications/examples/views
@@ -54,7 +54,7 @@ src:
### build web2py_src.zip
echo '' > NEWINSTALL
mv web2py_src.zip web2py_src_old.zip | echo 'no old'
cd ..; zip -r web2py/web2py_src.zip web2py/web2py.py web2py/anyserver.py web2py/gluon/*.py web2py/gluon/contrib/* web2py/extras/* web2py/handlers/* web2py/examples/* web2py/README.markdown web2py/LICENSE web2py/CHANGELOG web2py/NEWINSTALL web2py/VERSION web2py/MANIFEST.in web2py/scripts/*.sh web2py/scripts/*.py web2py/applications/admin web2py/applications/examples/ web2py/applications/welcome web2py/applications/__init__.py web2py/site-packages/__init__.py web2py/gluon/tests/*.sh web2py/gluon/tests/*.py
cd ..; zip -r web2py/web2py_src.zip web2py/web2py.py web2py/anyserver.py web2py/fabfile.py web2py/gluon/* web2py/extras/* web2py/handlers/* web2py/examples/* web2py/README.markdown web2py/LICENSE web2py/CHANGELOG web2py/NEWINSTALL web2py/VERSION web2py/MANIFEST.in web2py/scripts/*.sh web2py/scripts/*.py web2py/applications/admin web2py/applications/examples/ web2py/applications/welcome web2py/applications/__init__.py web2py/site-packages/__init__.py web2py/gluon/tests/*.sh web2py/gluon/tests/*.py
mdp:
make src
@@ -66,8 +66,8 @@ app:
#cd ../web2py_osx/site-packages/; unzip ../site-packages.zip
#find gluon -path '*.pyc' -exec cp {} ../web2py_osx/site-packages/{} \;
#cd ../web2py_osx/site-packages/; zip -r ../site-packages.zip *
#mv ../web2py_osx/site-packages.zip ../web2py_osx/web2py/web2py.app/Contents/Resources/lib/python2.7
find gluon -path '*.py' -exec cp -R {} ../web2py_osx/web2py/web2py.app/Contents/Resources/{} \;
cp ../web2py_osx/site-packages.zip ../web2py_osx/web2py/web2py.app/Contents/Resources/lib/python2.7
find gluon -path '*.py' -exec cp -r --parents {} ../web2py_osx/web2py/web2py.app/Contents/Resources/ \;
cp README.markdown ../web2py_osx/web2py/web2py.app/Contents/Resources
cp NEWINSTALL ../web2py_osx/web2py/web2py.app/Contents/Resources
cp LICENSE ../web2py_osx/web2py/web2py.app/Contents/Resources
@@ -75,7 +75,6 @@ app:
cp CHANGELOG ../web2py_osx/web2py/web2py.app/Contents/Resources
cp -r extras ../web2py_osx/web2py/web2py.app/Contents/Resources
cp -r examples ../web2py_osx/web2py/web2py.app/Contents/Resources
cp -r handlers ../web2py_osx/web2py/web2py.app/Contents/Resources
cp -r applications/admin ../web2py_osx/web2py/web2py.app/Contents/Resources/applications
cp -r applications/welcome ../web2py_osx/web2py/web2py.app/Contents/Resources/applications
cp -r applications/examples ../web2py_osx/web2py/web2py.app/Contents/Resources/applications
@@ -84,22 +83,19 @@ app:
mv ../web2py_osx/web2py_osx.zip .
win:
python2.7 -c 'import compileall; compileall.compile_dir("gluon/")'
#cd ../web2py_win/library/; unzip ../library.zip
find gluon -path '*.pyc' -exec cp -R {} ../web2py_win/library/{} \;
cd ../web2py_win/library/; zip -r ../library.zip *
mv ../web2py_win/library.zip ../web2py_win/web2py
#cd ../web2py_win/library/; zip -r ../library.zip *
cp ../web2py_win/library.zip ../web2py_win/web2py
find gluon -path '*.py' -exec cp -r --parents {} ../web2py_win/web2py/ \;
cp README.markdown ../web2py_win/web2py/
cp NEWINSTALL ../web2py_win/web2py/
cp LICENSE ../web2py_win/web2py/
cp VERSION ../web2py_win/web2py/
cp CHANGELOG ../web2py_win/web2py/
cp -R extras ../web2py_win/web2py/
cp -R examples ../web2py_win/web2py/
cp -R handlers ../web2py_win/web2py/
cp -R applications/admin ../web2py_win/web2py/applications
cp -R applications/welcome ../web2py_win/web2py/applications
cp -R applications/examples ../web2py_win/web2py/applications
cp -r extras ../web2py_win/web2py/
cp -r examples ../web2py_win/web2py/
cp -r applications/admin ../web2py_win/web2py/applications
cp -r applications/welcome ../web2py_win/web2py/applications
cp -r applications/examples ../web2py_win/web2py/applications
cp applications/__init__.py ../web2py_win/web2py/applications
cd ../web2py_win; zip -r web2py_win.zip web2py
mv ../web2py_win/web2py_win.zip .

View File

@@ -1,17 +1,47 @@
## Readme
web2py is a free open source full-stack framework for rapid development of fast, scalable, secure and portable database-driven web-based applications.
web2py is a free open source full-stack framework for rapid development of fast, scalable, secure and portable database-driven web-based applications.
It is written and programmable in Python. LGPLv3 License
Learn more at http://web2py.com
## Google App Engine deployment
cp examples/app.yaml ./
cp handlers/gaehandler.py ./
Then edit ./app.yaml and replace "yourappname" with yourappname.
## Important reminder about this GIT repo
An important part of web2py is the Database Abstraction Layer (DAL). In early 2015 this was decoupled into a separate code-base (PyDAL). In terms of git, it is a sub-module of the main repository.
The use of a sub-module requires a one-time use of the --recursive flag for git clone if you are cloning web2py from scratch.
git clone --recursive https://github.com/web2py/web2py.git
If you have an existing repository, the commands below need to be executed at least once:
git submodule update --init --recursive
If you have a folder gluon/dal you must remove it:
rm -r gluon/dal
PyDAL uses a separate stable release cycle to the rest of web2py. PyDAL releases will use a date-naming scheme similar to Ubuntu. Issues related to PyDAL should be reported to its separate repository.
## Documentation (readthedocs.org)
[![Docs Status](https://readthedocs.org/projects/web2py/badge/?version=latest&style=flat-square)](http://web2py.rtfd.org/)
## Tests
[![Build Status](https://travis-ci.org/web2py/web2py.png)](https://travis-ci.org/web2py/web2py)
[![Build Status](https://img.shields.io/travis/web2py/web2py/master.svg?style=flat-square&label=Travis-CI)](https://travis-ci.org/web2py/web2py)
[![MS Build Status](https://img.shields.io/appveyor/ci/web2py/web2py/master.svg?style=flat-square&label=Appveyor-CI)](https://ci.appveyor.com/project/web2py/web2py)
[![Coverage Status](https://img.shields.io/codecov/c/github/web2py/web2py.svg?style=flat-square)](https://codecov.io/github/web2py/web2py)
[![Coverage Status](https://coveralls.io/repos/web2py/web2py/badge.png)](https://coveralls.io/r/web2py/web2py)
## Installation Instructions
@@ -29,11 +59,12 @@ That's it!!!
VERSION > this web2py version
web2py.py > the startup script
anyserver.py > to run with third party servers
wsgihandler.py > handler to connect to WSGI
... > other handlers and example files
gluon/ > the core libraries
packages/ > web2py submodules
dal/
contrib/ > third party libraries
tests/ > unittests
tests/ > unittests
applications/ > are the apps
admin/ > web based IDE
...
@@ -57,10 +88,13 @@ That's it!!!
examples/ > example config files, mv .. and customize
extras/ > other files which are required for building web2py
scripts/ > utility and installation scripts
handlers/
wsgihandler.py > handler to connect to WSGI
... > handlers for Fast-CGI, SCGI, Gevent, etc
site-packages/ > additional optional modules
logs/ > log files will go in there
deposit/ > a place where web2py stores apps temporarily
## Issues?
Report issues at http://code.google.com/p/web2py/issues/
Report issues at https://github.com/web2py/web2py/issues

View File

@@ -1 +1 @@
Version 2.9.5-stable+timestamp.2014.03.15.21.24.06
Version 2.15.1-stable+timestamp.2017.07.10.16.17.24

View File

@@ -180,6 +180,11 @@ class Servers:
s = wsgi.WSGIServer(callable=app, bind="%s:%d" % address)
s.start()
@staticmethod
def waitress(app, address, **options):
from waitress import serve
serve(app, host=address[0], port=address[1], _quiet=True)
def mongrel2_handler(application, conn, debug=False):
"""

View File

@@ -39,25 +39,6 @@ web2py contains third party software under the gluon/contrib/ folder.
Each file/module in contrib is distributed with web2py under its original license.
Here we list some of them.
#### gluon.contrib.simplejson LICENSE
Copyright (c) 2006 Bob Ippolito - Permission is hereby granted, free of charge,
to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
#### gluon.contrib.rss2.py (originally PyRSS2Gen) LICENSE
This is copyright (c) by Dalke Scientific Software, LLC and released under the

View File

@@ -10,11 +10,7 @@ import datetime
import copy
import gluon.contenttype
import gluon.fileutils
try:
import pygraphviz as pgv
except ImportError:
pgv = None
from gluon._compat import iteritems
is_gae = request.env.web2py_runtime_gae or False
@@ -32,7 +28,7 @@ try:
except:
hosts = (http_host, )
if request.env.http_x_forwarded_for or request.is_https:
if request.is_https:
session.secure()
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1") and \
(request.function != 'manage'):
@@ -49,7 +45,8 @@ if request.function == 'manage':
auth.table_group(),
auth.table_permission()])
manager_role = manager_action.get('role', None) if manager_action else None
auth.requires_membership(manager_role)(lambda: None)()
if not (gluon.fileutils.check_credentials(request) or auth.has_membership(manager_role)):
raise HTTP(403, "Not authorized")
menu = False
elif (request.application == 'admin' and not session.authorized) or \
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
@@ -80,7 +77,6 @@ if False and request.tickets_db:
def get_databases(request):
dbs = {}
for (key, value) in global_env.items():
cond = False
try:
cond = isinstance(value, GQLDB)
except:
@@ -89,10 +85,8 @@ def get_databases(request):
dbs[key] = value
return dbs
databases = get_databases(None)
def eval_in_global_env(text):
exec ('_ret=%s' % text, {}, global_env)
return global_env['_ret']
@@ -105,7 +99,6 @@ def get_database(request):
session.flash = T('invalid request')
redirect(URL('index'))
def get_table(request):
db = get_database(request)
if len(request.args) > 1 and request.args[1] in db.tables:
@@ -215,7 +208,7 @@ def select():
if is_imap:
step = 3
stop = start + step
table = None
@@ -270,7 +263,7 @@ def select():
else:
rows = db(query, ignore_common_filters=True).select(
*fields, limitby=(start, stop))
except Exception, e:
except Exception as e:
import traceback
tb = traceback.format_exc()
(rows, nrows) = ([], 0)
@@ -289,7 +282,7 @@ def select():
import_csv(db[request.vars.table],
request.vars.csvfile.file)
response.flash = T('data uploaded')
except Exception, e:
except Exception as e:
response.flash = DIV(T('unable to parse csv file'), PRE(str(e)))
# end handle upload csv
@@ -411,7 +404,7 @@ def ccache():
import copy
import time
import math
from gluon import portalocker
from pydal.contrib import portalocker
ram = {
'entries': 0,
@@ -448,57 +441,48 @@ def ccache():
gae_stats['oldest'] = GetInHMS(time.time() - gae_stats['oldest_item_age'])
total.update(gae_stats)
else:
for key, value in cache.ram.storage.iteritems():
if isinstance(value, dict):
ram['hits'] = value['hit_total'] - value['misses']
ram['misses'] = value['misses']
# get ram stats directly from the cache object
ram_stats = cache.ram.stats[request.application]
ram['hits'] = ram_stats['hit_total'] - ram_stats['misses']
ram['misses'] = ram_stats['misses']
try:
ram['ratio'] = ram['hits'] * 100 / ram_stats['hit_total']
except (KeyError, ZeroDivisionError):
ram['ratio'] = 0
for key, value in iteritems(cache.ram.storage):
if hp:
ram['bytes'] += hp.iso(value[1]).size
ram['objects'] += hp.iso(value[1]).count
ram['entries'] += 1
if value[0] < ram['oldest']:
ram['oldest'] = value[0]
ram['keys'].append((key, GetInHMS(time.time() - value[0])))
for key in cache.disk.storage:
value = cache.disk.storage[key]
if key == 'web2py_cache_statistics' and isinstance(value[1], dict):
disk['hits'] = value[1]['hit_total'] - value[1]['misses']
disk['misses'] = value[1]['misses']
try:
ram['ratio'] = ram['hits'] * 100 / value['hit_total']
disk['ratio'] = disk['hits'] * 100 / value[1]['hit_total']
except (KeyError, ZeroDivisionError):
ram['ratio'] = 0
disk['ratio'] = 0
else:
if hp:
ram['bytes'] += hp.iso(value[1]).size
ram['objects'] += hp.iso(value[1]).count
ram['entries'] += 1
if value[0] < ram['oldest']:
ram['oldest'] = value[0]
ram['keys'].append((key, GetInHMS(time.time() - value[0])))
folder = os.path.join(request.folder,'cache')
if not os.path.exists(folder):
os.mkdir(folder)
locker = open(os.path.join(folder, 'cache.lock'), 'a')
portalocker.lock(locker, portalocker.LOCK_EX)
disk_storage = shelve.open(
os.path.join(folder, 'cache.shelve'))
try:
for key, value in disk_storage.items():
if isinstance(value, dict):
disk['hits'] = value['hit_total'] - value['misses']
disk['misses'] = value['misses']
try:
disk['ratio'] = disk['hits'] * 100 / value['hit_total']
except (KeyError, ZeroDivisionError):
disk['ratio'] = 0
else:
if hp:
disk['bytes'] += hp.iso(value[1]).size
disk['objects'] += hp.iso(value[1]).count
disk['entries'] += 1
if value[0] < disk['oldest']:
disk['oldest'] = value[0]
disk['keys'].append((key, GetInHMS(time.time() - value[0])))
finally:
portalocker.unlock(locker)
locker.close()
disk_storage.close()
disk['bytes'] += hp.iso(value[1]).size
disk['objects'] += hp.iso(value[1]).count
disk['entries'] += 1
if value[0] < disk['oldest']:
disk['oldest'] = value[0]
disk['keys'].append((key, GetInHMS(time.time() - value[0])))
ram_keys = list(ram) # ['hits', 'objects', 'ratio', 'entries', 'keys', 'oldest', 'bytes', 'misses']
ram_keys.remove('ratio')
ram_keys.remove('oldest')
for key in ram_keys:
total[key] = ram[key] + disk[key]
total['entries'] = ram['entries'] + disk['entries']
total['bytes'] = ram['bytes'] + disk['bytes']
total['objects'] = ram['objects'] + disk['objects']
total['hits'] = ram['hits'] + disk['hits']
total['misses'] = ram['misses'] + disk['misses']
total['keys'] = ram['keys'] + disk['keys']
try:
total['ratio'] = total['hits'] * 100 / (total['hits'] +
total['misses'])
@@ -576,59 +560,6 @@ def table_template(table):
_cellborder=0, _cellspacing=0)
).xml()
def bg_graph_model():
graph = pgv.AGraph(layout='dot', directed=True, strict=False, rankdir='LR')
subgraphs = dict()
for tablename in db.tables:
if hasattr(db[tablename],'_meta_graphmodel'):
meta_graphmodel = db[tablename]._meta_graphmodel
else:
meta_graphmodel = dict(group='Undefined', color='#ECECEC')
group = meta_graphmodel['group'].replace(' ', '')
if not subgraphs.has_key(group):
subgraphs[group] = dict(meta=meta_graphmodel, tables=[])
subgraphs[group]['tables'].append(tablename)
else:
subgraphs[group]['tables'].append(tablename)
graph.add_node(tablename, name=tablename, shape='plaintext',
label=table_template(tablename))
for n, key in enumerate(subgraphs.iterkeys()):
graph.subgraph(nbunch=subgraphs[key]['tables'],
name='cluster%d' % n,
style='filled',
color=subgraphs[key]['meta']['color'],
label=subgraphs[key]['meta']['group'])
for tablename in db.tables:
for field in db[tablename]:
f_type = field.type
if isinstance(f_type,str) and (
f_type.startswith('reference') or
f_type.startswith('list:reference')):
referenced_table = f_type.split()[1].split('.')[0]
n1 = graph.get_node(tablename)
n2 = graph.get_node(referenced_table)
graph.add_edge(n1, n2, color="#4C4C4C", label='')
graph.layout()
if not request.args:
response.headers['Content-Type'] = 'image/png'
return graph.draw(format='png', prog='dot')
else:
response.headers['Content-Disposition']='attachment;filename=graph.%s'%request.args(0)
if request.args(0) == 'dot':
return graph.string()
else:
return graph.draw(format=request.args(0), prog='dot')
def graph_model():
return dict(databases=databases, pgv=pgv)
def manage():
tables = manager_action['tables']
if isinstance(tables[0], str):
@@ -670,3 +601,95 @@ def manage():
kwargs.update(**smartgrid_args.get(table._tablename, {}))
grid = SQLFORM.smartgrid(table, args=request.args[:2], formname=formname, **kwargs)
return grid
def hooks():
import functools
import inspect
list_op=['_%s_%s' %(h,m) for h in ['before', 'after'] for m in ['insert','update','delete']]
tables=[]
with_build_it=False
for db_str in sorted(databases):
db = databases[db_str]
for t in db.tables:
method_hooks=[]
for op in list_op:
functions = []
for f in getattr(db[t], op):
if hasattr(f, '__call__'):
try:
if isinstance(f, (functools.partial)):
f = f.func
filename = inspect.getsourcefile(f)
details = {'funcname':f.__name__,
'filename':filename[len(request.folder):] if request.folder in filename else None,
'lineno': inspect.getsourcelines(f)[1]}
if details['filename']: # Built in functions as delete_uploaded_files are not editable
details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']})
if details['filename'] or with_build_it:
functions.append(details)
# compiled app and windows build don't support code inspection
except:
pass
if len(functions):
method_hooks.append({'name':op, 'functions':functions})
if len(method_hooks):
tables.append({'name':"%s.%s" % (db_str,t), 'slug': IS_SLUG()("%s.%s" % (db_str,t))[0], 'method_hooks':method_hooks})
# Render
ul_main = UL(_class='nav nav-list')
for t in tables:
ul_main.append(A(t['name'], _onclick="collapse('a_%s')" % t['slug']))
ul_t = UL(_class='nav nav-list', _id="a_%s" % t['slug'], _style='display:none')
for op in t['method_hooks']:
ul_t.append(LI (op['name']))
ul_t.append(UL([LI(A(f['funcname'], _class="editor_filelink", _href=f['url']if 'url' in f else None, **{'_data-lineno':f['lineno']-1})) for f in op['functions']]))
ul_main.append(ul_t)
return ul_main
# ##########################################################
# d3 based model visualizations
# ###########################################################
def d3_graph_model():
""" See https://www.facebook.com/web2py/posts/145613995589010 from Bruno Rocha
and also the app_admin bg_graph_model function
Create a list of table dicts, called "nodes"
"""
data = {}
nodes = []
links = []
subgraphs = dict()
for tablename in db.tables:
fields = []
for field in db[tablename]:
f_type = field.type
if not isinstance(f_type,str):
disp = ' '
elif f_type == 'string':
disp = field.length
elif f_type == 'id':
disp = "PK"
elif f_type.startswith('reference') or \
f_type.startswith('list:reference'):
disp = "FK"
else:
disp = ' '
fields.append(dict(name= field.name, type=field.type, disp = disp))
if isinstance(f_type,str) and (
f_type.startswith('reference') or
f_type.startswith('list:reference')):
referenced_table = f_type.split()[1].split('.')[0]
links.append(dict(source=tablename, target = referenced_table))
nodes.append(dict(name=tablename, type="table", fields = fields))
# d3 v4 allows individual modules to be specified. The complete d3 library is included below.
response.files.append(URL('admin','static','js/d3.min.js'))
response.files.append(URL('admin','static','js/d3_graph.js'))
return dict(databases=databases, nodes=nodes, links=links)

View File

@@ -1,13 +1,12 @@
import os
import sys
import cStringIO
import gluon.contrib.shell
import gluon.dal
import gluon.html
import gluon.validators
import code
import thread
from gluon.debug import communicate, web_debugger, qdb_debugger
from gluon.debug import communicate, web_debugger, dbg_debugger
from gluon._compat import thread
from gluon.fileutils import open_file
import pydoc
@@ -41,7 +40,7 @@ def reset():
return 'done'
# new implementation using qdb
# new implementation using dbg
def interact():
app = request.args(0) or 'admin'
@@ -56,7 +55,7 @@ def interact():
if filename:
# prevent IOError 2 on some circuntances (EAFP instead of os.access)
try:
lines = open(filename).readlines()
lines = open_file(filename, 'r').readlines()
except:
lines = ""
lines = dict([(i + 1, l) for (i, l) in enumerate(
@@ -72,8 +71,7 @@ def interact():
f_globals = {}
for name, value in env['globals'].items():
if name not in gluon.html.__all__ and \
name not in gluon.validators.__all__ and \
name not in gluon.dal.__all__:
name not in gluon.validators.__all__:
f_globals[name] = pydoc.text.repr(value)
else:
f_locals = {}
@@ -123,7 +121,7 @@ def execute():
output = web_debugger.do_exec(command)
if output is None:
output = ""
except Exception, e:
except Exception as e:
output = T("Exception %s") % str(e)
k = len(session['debug_commands:' + app]) - 1
return '[%i] %s%s\n' % (k + 1, command, output)
@@ -152,7 +150,7 @@ def breakpoints():
if form.accepts(request.vars, session):
filename = os.path.join(request.env['applications_parent'],
'applications', form.vars.filename)
err = qdb_debugger.do_set_breakpoint(filename,
err = dbg_debugger.do_set_breakpoint(filename,
form.vars.lineno,
form.vars.temporary,
form.vars.condition)
@@ -161,13 +159,13 @@ def breakpoints():
for item in request.vars:
if item[:7] == 'delete_':
qdb_debugger.do_clear(item[7:])
dbg_debugger.do_clear(item[7:])
breakpoints = [{'number': bp[0], 'filename': os.path.basename(bp[1]),
'path': bp[1], 'lineno': bp[2],
'temporary': bp[3], 'enabled': bp[4], 'hits': bp[5],
'condition': bp[6]}
for bp in qdb_debugger.do_list_breakpoint()]
for bp in dbg_debugger.do_list_breakpoint()]
return dict(breakpoints=breakpoints, form=form)
@@ -196,24 +194,24 @@ def toggle_breakpoint():
else:
lineno = None
if lineno is not None:
for bp in qdb_debugger.do_list_breakpoint():
for bp in dbg_debugger.do_list_breakpoint():
no, bp_filename, bp_lineno, temporary, enabled, hits, cond = bp
# normalize path name: replace slashes, references, etc...
bp_filename = os.path.normpath(os.path.normcase(bp_filename))
if filename == bp_filename and lineno == bp_lineno:
err = qdb_debugger.do_clear_breakpoint(filename, lineno)
err = dbg_debugger.do_clear_breakpoint(filename, lineno)
response.flash = T("Removed Breakpoint on %s at line %s", (
filename, lineno))
ok = False
break
else:
err = qdb_debugger.do_set_breakpoint(filename, lineno)
err = dbg_debugger.do_set_breakpoint(filename, lineno)
response.flash = T("Set Breakpoint on %s at line %s: %s") % (
filename, lineno, err or T('successful'))
ok = True
else:
response.flash = T("Unable to determine the line number!")
except Exception, e:
except Exception as e:
session.flash = str(e)
return response.json({'ok': ok, 'lineno': lineno})
@@ -221,20 +219,19 @@ def list_breakpoints():
"Return a list of linenumbers for current breakpoints"
breakpoints = []
ok = None
ok = False
try:
filename = os.path.join(request.env['applications_parent'],
'applications', request.vars.filename)
# normalize path name: replace slashes, references, etc...
filename = os.path.normpath(os.path.normcase(filename))
for bp in qdb_debugger.do_list_breakpoint():
for bp in dbg_debugger.do_list_breakpoint():
no, bp_filename, bp_lineno, temporary, enabled, hits, cond = bp
# normalize path name: replace slashes, references, etc...
bp_filename = os.path.normpath(os.path.normcase(bp_filename))
if filename == bp_filename:
breakpoints.append(bp_lineno)
ok = True
except Exception, e:
except Exception as e:
session.flash = str(e)
ok = False
return response.json({'ok': ok, 'breakpoints': breakpoints})

View File

@@ -1,4 +1,4 @@
# coding: utf8
# -*- coding: utf-8 -*-
EXPERIMENTAL_STUFF = True
MAXNFILES = 1000
@@ -15,6 +15,8 @@ from gluon.utils import web2py_uuid
from gluon.tools import Config
from gluon.compileapp import find_exposed_functions
from glob import glob
from gluon._compat import iteritems, PY2, pickle, xrange, urlopen, to_bytes, StringIO, to_native
import gluon.rewrite
import shutil
import platform
@@ -23,7 +25,7 @@ try:
if git.__version__ < '0.3.1':
raise ImportError("Your version of git is %s. Upgrade to 0.3.1 or better." % git.__version__)
have_git = True
except ImportError, e:
except ImportError as e:
have_git = False
GIT_MISSING = 'Requires gitpython module, but not installed or incompatible version: %s' % e
@@ -32,15 +34,15 @@ from gluon.languages import (read_possible_languages, read_dict, write_dict,
if DEMO_MODE and request.function in ['change_password', 'pack',
'pack_custom','pack_plugin', 'upgrade_web2py', 'uninstall',
'cleanup', 'compile_app', 'remove_compiled_app', 'delete',
'delete_plugin', 'create_file', 'upload_file', 'update_languages',
'reload_routes', 'git_push', 'git_pull', 'install_plugin']:
'pack_custom', 'pack_plugin', 'upgrade_web2py', 'uninstall',
'cleanup', 'compile_app', 'remove_compiled_app', 'delete',
'delete_plugin', 'create_file', 'upload_file', 'update_languages',
'reload_routes', 'git_push', 'git_pull', 'install_plugin']:
session.flash = T('disabled in demo mode')
redirect(URL('site'))
if is_gae and request.function in ('edit', 'edit_language',
'edit_plurals', 'update_languages', 'create_file', 'install_plugin'):
'edit_plurals', 'update_languages', 'create_file', 'install_plugin'):
session.flash = T('disabled in GAE mode')
redirect(URL('site'))
@@ -74,12 +76,17 @@ def log_progress(app, mode='EDIT', filename=None, progress=0):
def safe_open(a, b):
if (DEMO_MODE or is_gae) and ('w' in b or 'a' in b):
class tmp:
def write(self, data):
pass
def close(self):
pass
return tmp()
return open(a, b)
if PY2 or 'b' in b:
return open(a, b)
else:
return open(a, b, encoding="utf8")
def safe_read(a, b='r'):
@@ -119,6 +126,9 @@ def index():
send = URL('site')
if session.authorized:
redirect(send)
elif failed_login_count() >= allowed_number_of_attempts:
time.sleep(2 ** allowed_number_of_attempts)
raise HTTP(403)
elif request.vars.password:
if verify_password(request.vars.password[:1024]):
session.authorized = True
@@ -208,6 +218,7 @@ def site():
file_or_appurl = 'file' in request.vars or 'appurl' in request.vars
class IS_VALID_APPNAME(object):
def __call__(self, value):
if not re.compile('^\w+$').match(value):
return (value, T('Invalid application name'))
@@ -239,6 +250,7 @@ def site():
db.app.insert(name=appname, owner=auth.user.id)
log_progress(appname)
session.flash = T('new application "%s" created', appname)
gluon.rewrite.load()
redirect(URL('design', args=appname))
else:
session.flash = \
@@ -256,19 +268,20 @@ def site():
new_repo = git.Repo.clone_from(form_update.vars.url, target)
session.flash = T('new application "%s" imported',
form_update.vars.name)
except git.GitCommandError, err:
gluon.rewrite.load()
except git.GitCommandError as err:
session.flash = T('Invalid git repository specified.')
redirect(URL(r=request))
elif form_update.vars.url:
# fetch an application via URL or file upload
try:
f = urllib.urlopen(form_update.vars.url)
f = urlopen(form_update.vars.url)
if f.code == 404:
raise Exception("404 file not found")
except Exception, e:
except Exception as e:
session.flash = \
DIV(T('Unable to download app because:'), PRE(str(e)))
DIV(T('Unable to download app because:'), PRE(repr(e)))
redirect(URL(r=request))
fname = form_update.vars.url
@@ -292,9 +305,7 @@ def site():
log_progress(appname)
session.flash = T(msg, dict(appname=appname,
digest=md5_hash(installed)))
elif f and form_update.vars.overwrite:
msg = 'unable to install application "%(appname)s"'
session.flash = T(msg, dict(appname=form_update.vars.name))
gluon.rewrite.load()
else:
msg = 'unable to install application "%(appname)s"'
session.flash = T(msg, dict(appname=form_update.vars.name))
@@ -303,14 +314,15 @@ def site():
regex = re.compile('^\w+$')
if is_manager():
apps = [f for f in os.listdir(apath(r=request)) if regex.match(f)]
apps = [a for a in os.listdir(apath(r=request)) if regex.match(a) and
a != '__pycache__']
else:
apps = [f.name for f in db(db.app.owner == auth.user_id).select()]
apps = [a.name for a in db(db.app.owner == auth.user_id).select()]
if FILTER_APPS:
apps = [f for f in apps if f in FILTER_APPS]
apps = [a for a in apps if a in FILTER_APPS]
apps = sorted(apps, lambda a, b: cmp(a.upper(), b.upper()))
apps = sorted(apps, key=lambda a: a.upper())
myplatform = platform.python_version()
return dict(app=None, apps=apps, myversion=myversion, myplatform=myplatform,
form_create=form_create, form_update=form_update)
@@ -328,7 +340,7 @@ def report_progress(app):
if not m:
continue
days = -(request.now - datetime.datetime.strptime(m[0],
'%Y-%m-%d %H:%M:%S')).days
'%Y-%m-%d %H:%M:%S')).days
counter += int(m[1])
events.append([days, counter])
return events
@@ -344,7 +356,7 @@ def pack():
else:
fname = 'web2py.app.%s.compiled.w2p' % app
filename = app_pack_compiled(app, request, raise_ex=True)
except Exception, e:
except Exception as e:
filename = None
if filename:
@@ -356,6 +368,7 @@ def pack():
session.flash = T('internal error: %s', e)
redirect(URL('site'))
def pack_plugin():
app = get_app()
if len(request.args) == 2:
@@ -370,31 +383,65 @@ def pack_plugin():
session.flash = T('internal error')
redirect(URL('plugin', args=request.args))
def pack_exe(app, base, filenames=None):
import urllib
import zipfile
# Download latest web2py_win and open it with zipfile
download_url = 'http://www.web2py.com/examples/static/web2py_win.zip'
out = StringIO()
out.write(urlopen(download_url).read())
web2py_win = zipfile.ZipFile(out, mode='a')
# Write routes.py with the application as default
routes = u'# -*- coding: utf-8 -*-\nrouters = dict(BASE=dict(default_application="%s"))' % app
web2py_win.writestr('web2py/routes.py', routes.encode('utf-8'))
# Copy the application into the zipfile
common_root = os.path.dirname(base)
for filename in filenames:
fname = os.path.join(base, filename)
arcname = os.path.join('web2py/applications', app, filename)
web2py_win.write(fname, arcname)
web2py_win.close()
response.headers['Content-Type'] = 'application/zip'
response.headers['Content-Disposition'] = 'attachment; filename=web2py.app.%s.zip' % app
out.seek(0)
return response.stream(out)
def pack_custom():
app = get_app()
base = apath(app, r=request)
if request.post_vars.file:
files = request.post_vars.file
files = [files] if not isinstance(files,list) else files
fname = 'web2py.app.%s.w2p' % app
try:
filename = app_pack(app, request, raise_ex=True, filenames=files)
except Exception, e:
filename = None
if filename:
response.headers['Content-Type'] = 'application/w2p'
disposition = 'attachment; filename=%s' % fname
response.headers['Content-Disposition'] = disposition
return safe_read(filename, 'rb')
else:
session.flash = T('internal error: %s', e)
redirect(URL(args=request.args))
def ignore(fs):
return [f for f in fs if not (
f[:1] in '#' or f.endswith('~') or f.endswith('.bak'))]
files = {}
for (r,d,f) in os.walk(base):
files[r] = {'folders':ignore(d),'files':ignore(f)}
for (r, d, f) in os.walk(base):
files[r] = {'folders': ignore(d), 'files': ignore(f)}
if request.post_vars.file:
valid_set = set(os.path.relpath(os.path.join(r, f), base) for r in files for f in files[r]['files'])
files = request.post_vars.file
files = [files] if not isinstance(files, list) else files
files = [file for file in files if file in valid_set]
if request.post_vars.doexe is None:
fname = 'web2py.app.%s.w2p' % app
try:
filename = app_pack(app, request, raise_ex=True, filenames=files)
except Exception as e:
filename = None
if filename:
response.headers['Content-Type'] = 'application/w2p'
disposition = 'attachment; filename=%s' % fname
response.headers['Content-Disposition'] = disposition
return safe_read(filename, 'rb')
else:
session.flash = T('internal error: %s', e)
redirect(URL(args=request.args))
else:
return pack_exe(app, base, files)
return locals()
@@ -456,9 +503,15 @@ def cleanup():
def compile_app():
app = get_app()
c = app_compile(app, request)
c = app_compile(app, request,
skip_failed_views=(request.args(1) == 'skip_failed_views'))
if not c:
session.flash = T('application compiled')
elif isinstance(c, list):
session.flash = DIV(*[T('application compiled'), BR(), BR(),
T('WARNING: The following views could not be compiled:'), BR()] +
[CAT(BR(), view) for view in c] +
[BR(), BR(), T('DO NOT use the "Pack compiled" feature.')])
else:
session.flash = DIV(T('Cannot compile: there are errors in your app:'),
CODE(c))
@@ -499,8 +552,8 @@ def delete():
redirect(URL(sender, anchor=request.vars.id2))
return dict(dialog=dialog, filename=filename)
def enable():
if not URL.verify(request, hmac_key=session.hmac_key): raise HTTP(401)
app = get_app()
filename = os.path.join(apath(app, r=request), 'DISABLED')
if is_gae:
@@ -512,6 +565,7 @@ def enable():
safe_open(filename, 'wb').write('disabled: True\ntime-disabled: %s' % request.now)
return SPAN(T('Enable'), _style='color:red')
def peek():
""" Visualize object code """
app = get_app(request.vars.app)
@@ -575,7 +629,7 @@ def edit():
# Load json only if it is ajax edited...
app = get_app(request.vars.app)
app_path = apath(app, r=request)
preferences={'theme':'web2py', 'editor': 'default', 'closetag': 'true', 'codefolding': 'false', 'tabwidth':'4', 'indentwithtabs':'false', 'linenumbers':'true', 'highlightline':'true'}
preferences = {'theme': 'web2py', 'editor': 'default', 'closetag': 'true', 'codefolding': 'false', 'tabwidth': '4', 'indentwithtabs': 'false', 'linenumbers': 'true', 'highlightline': 'true'}
config = Config(os.path.join(request.folder, 'settings.cfg'),
section='editor', default_values={})
preferences.update(config.read())
@@ -583,14 +637,14 @@ def edit():
if not(request.ajax) and not(is_mobile):
# return the scaffolding, the rest will be through ajax requests
response.title = T('Editing %s') % app
return response.render ('default/edit.html', dict(app=app, editor_settings=preferences))
return response.render('default/edit.html', dict(app=app, editor_settings=preferences))
# show settings tab and save prefernces
if 'settings' in request.vars:
if request.post_vars: #save new preferences
if request.post_vars: # save new preferences
post_vars = request.post_vars.items()
# Since unchecked checkbox are not serialized, we must set them as false by hand to store the correct preference in the settings
post_vars+= [(opt, 'false') for opt in preferences if opt not in request.post_vars ]
# Since unchecked checkbox are not serialized, we must set them as false by hand to store the correct preference in the settings
post_vars += [(opt, 'false') for opt in preferences if opt not in request.post_vars]
if config.save(post_vars):
response.headers["web2py-component-flash"] = T('Preferences saved correctly')
else:
@@ -598,8 +652,8 @@ def edit():
response.headers["web2py-component-command"] = "update_editor(%s);$('a[href=#editor_settings] button.close').click();" % response.json(config.read())
return
else:
details = {'realfilename':'settings', 'filename':'settings', 'id':'editor_settings', 'force': False}
details['plain_html'] = response.render('default/editor_settings.html', {'editor_settings':preferences})
details = {'realfilename': 'settings', 'filename': 'settings', 'id': 'editor_settings', 'force': False}
details['plain_html'] = response.render('default/editor_settings.html', {'editor_settings': preferences})
return response.json(details)
""" File edit handler """
@@ -686,7 +740,7 @@ def edit():
try:
code = request.vars.data.rstrip().replace('\r\n', '\n') + '\n'
compile(code, path, "exec", _ast.PyCF_ONLY_AST)
except Exception, e:
except Exception as e:
# offset calculation is only used for textarea (start/stop)
start = sum([len(line) + 1 for l, line
in enumerate(request.vars.data.split("\n"))
@@ -706,18 +760,18 @@ def edit():
B(ex_name), ' ' + T('at line %s', e.lineno),
offset and ' ' +
T('at char %s', offset) or '',
PRE(str(e)))
PRE(repr(e)))
if data_or_revert and request.args[1] == 'modules':
# Lets try to reload the modules
try:
mopath = '.'.join(request.args[2:])[:-3]
exec 'import applications.%s.modules.%s' % (
request.args[0], mopath)
exec('import applications.%s.modules.%s' % (
request.args[0], mopath))
reload(sys.modules['applications.%s.modules.%s'
% (request.args[0], mopath)])
except Exception, e:
except Exception as e:
response.flash = DIV(
T('failed to reload module because:'), PRE(str(e)))
T('failed to reload module because:'), PRE(repr(e)))
edit_controller = None
editviewlinks = None
@@ -730,8 +784,8 @@ def edit():
view = request.args[3].replace('.html', '')
view_link = URL(request.args[0], request.args[2], view)
elif filetype == 'python' and request.args[1] == 'controllers':
## it's a controller file.
## Create links to all of the associated view files.
# it's a controller file.
# Create links to all of the associated view files.
app = get_app()
viewname = os.path.splitext(request.args[2])[0]
viewpath = os.path.join(app, 'views', viewname)
@@ -744,7 +798,7 @@ def edit():
viewlist.append(aviewpath + '.html')
if len(viewlist):
editviewlinks = []
for v in viewlist:
for v in sorted(viewlist):
vf = os.path.split(v)[-1]
vargs = "/".join([viewpath.replace(os.sep, "/"), vf])
editviewlinks.append(A(vf.split(".")[0],
@@ -754,6 +808,7 @@ def edit():
if len(request.args) > 2 and request.args[1] == 'controllers':
controller = (request.args[2])[:-3]
functions = find_exposed_functions(data)
functions = functions and sorted(functions) or []
else:
(controller, functions) = (None, None)
@@ -761,38 +816,40 @@ def edit():
return response.json({'file_hash': file_hash, 'saved_on': saved_on, 'functions': functions, 'controller': controller, 'application': request.args[0], 'highlight': highlight})
else:
file_details = dict(app=request.args[0],
lineno=request.vars.lineno or 1,
editor_settings=preferences,
filename=filename,
realfilename=realfilename,
filetype=filetype,
data=data,
edit_controller=edit_controller,
file_hash=file_hash,
saved_on=saved_on,
controller=controller,
functions=functions,
view_link=view_link,
editviewlinks=editviewlinks,
id=IS_SLUG()(filename)[0],
force= True if (request.vars.restore or
request.vars.revert) else False)
lineno=request.vars.lineno or 1,
editor_settings=preferences,
filename=filename,
realfilename=realfilename,
filetype=filetype,
data=data,
edit_controller=edit_controller,
file_hash=file_hash,
saved_on=saved_on,
controller=controller,
functions=functions,
view_link=view_link,
editviewlinks=editviewlinks,
id=IS_SLUG()(filename)[0],
force=True if (request.vars.restore or
request.vars.revert) else False)
plain_html = response.render('default/edit_js.html', file_details)
file_details['plain_html'] = plain_html
if is_mobile:
return response.render('default.mobile/edit.html',
return response.render('default.mobile/edit.html',
file_details, editor_settings=preferences)
else:
return response.json(file_details)
def todolist():
""" Returns all TODO of the requested app
"""
app = request.vars.app or ''
app_path = apath('%(app)s' % {'app':app}, r=request)
dirs=['models', 'controllers', 'modules', 'private' ]
app_path = apath('%(app)s' % {'app': app}, r=request)
dirs = ['models', 'controllers', 'modules', 'private']
def listfiles(app, dir, regexp='.*\.py$'):
files = sorted( listdir(apath('%(app)s/%(dir)s/' % {'app':app, 'dir':dir}, r=request), regexp))
files = sorted(listdir(apath('%(app)s/%(dir)s/' % {'app': app, 'dir': dir}, r=request), regexp))
files = [x.replace(os.path.sep, '/') for x in files if not x.endswith('.bak')]
return files
@@ -803,17 +860,18 @@ def todolist():
for d in dirs:
for f in listfiles(app, d):
matches = []
filename= apath(os.path.join(app, d, f), r=request)
with open(filename, 'r') as f_s:
filename = apath(os.path.join(app, d, f), r=request)
with safe_open(filename, 'r') as f_s:
src = f_s.read()
for m in regex.finditer(src):
start = m.start()
lineno = src.count('\n', 0, start) + 1
matches.append({'text':m.group(0), 'lineno':lineno})
matches.append({'text': m.group(0), 'lineno': lineno})
if len(matches) != 0:
output.append({'filename':f,'matches':matches, 'dir':d})
output.append({'filename': f, 'matches': matches, 'dir': d})
return {'todo': output, 'app': app}
return {'todo':output, 'app': app}
def editor_sessions():
config = Config(os.path.join(request.folder, 'settings.cfg'),
@@ -823,13 +881,14 @@ def editor_sessions():
if request.vars.session_name and request.vars.files:
session_name = request.vars.session_name
files = request.vars.files
preferences.update({session_name:','.join(files)})
preferences.update({session_name: ','.join(files)})
if config.save(preferences.items()):
response.headers["web2py-component-flash"] = T('Session saved correctly')
else:
response.headers["web2py-component-flash"] = T('Session saved on session only')
return response.render('default/editor_sessions.html', {'editor_sessions':preferences})
return response.render('default/editor_sessions.html', {'editor_sessions': preferences})
def resolve():
"""
@@ -866,13 +925,9 @@ def resolve():
def getclass(item):
""" Determine item class """
operators = {' ': 'normal', '+': 'plus', '-': 'minus'}
if item[0] == ' ':
return 'normal'
if item[0] == '+':
return 'plus'
if item[0] == '-':
return 'minus'
return operators[item[0]]
if request.vars:
c = '\n'.join([item[2:].rstrip() for (i, item) in enumerate(d) if item[0]
@@ -890,7 +945,7 @@ def resolve():
diff = TABLE(*[TR(TD(gen_data(i, item)),
TD(item[0]),
TD(leading(item[2:]),
TT(item[2:].rstrip())),
TT(item[2:].rstrip())),
_class=getclass(item))
for (i, item) in enumerate(d) if item[0] != '?'])
@@ -937,11 +992,11 @@ def edit_language():
new_row = DIV(LABEL(prefix, k, _style="font-weight:normal;"),
CAT(elem, '\n', TAG.BUTTON(
T('delete'),
_onclick='return delkey("%s")' % name,
_class='btn')), _id=name, _class='span6 well well-small')
T('delete'),
_onclick='return delkey("%s")' % name,
_class='btn')), _id=name, _class='span6 well well-small')
rows.append(DIV(new_row,_class="row-fluid"))
rows.append(DIV(new_row, _class="row-fluid"))
rows.append(DIV(INPUT(_type='submit', _value=T('update'), _class="btn btn-primary"), _class='controls'))
form = FORM(*rows)
if form.accepts(request.vars, keepvalues=True):
@@ -1037,11 +1092,11 @@ def design():
redirect(URL('design', args=app))
else:
session.flash = \
T('unable to create application "%s"', request.vars.filename)
redirect(URL(r=request))
T('unable to install plugin "%s"', filename)
redirect(URL(r=request, args=app))
elif isinstance(request.vars.pluginfile, str):
session.flash = T('plugin not specified')
redirect(URL(r=request))
redirect(URL(r=request, args=app))
# If we have only pyc files it means that
# we cannot design
@@ -1067,7 +1122,7 @@ def design():
for c in controllers:
data = safe_read(apath('%s/controllers/%s' % (app, c), r=request))
items = find_exposed_functions(data)
functions[c] = items
functions[c] = items and sorted(items) or []
# Get all views
views = sorted(
@@ -1097,18 +1152,18 @@ def design():
# Get all static files
statics = listdir(apath('%s/static/' % app, r=request), '[^\.#].*',
maxnum = MAXNFILES)
maxnum=MAXNFILES)
statics = [x.replace(os.path.sep, '/') for x in statics]
statics.sort()
# Get all languages
langpath = os.path.join(apath(app, r=request),'languages')
langpath = os.path.join(apath(app, r=request), 'languages')
languages = dict([(lang, info) for lang, info
in read_possible_languages(langpath).iteritems()
in iteritems(read_possible_languages(langpath))
if info[2] != 0]) # info[2] is langfile_mtime:
# get only existed files
# get only existed files
#Get crontab
# Get crontab
cronfolder = apath('%s/cron' % app, r=request)
crontab = apath('%s/cron/crontab' % app, r=request)
if not is_gae:
@@ -1205,7 +1260,7 @@ def plugin():
for c in controllers:
data = safe_read(apath('%s/controllers/%s' % (app, c), r=request))
items = find_exposed_functions(data)
functions[c] = items
functions[c] = items and sorted(items) or []
# Get all views
views = sorted(
@@ -1234,17 +1289,17 @@ def plugin():
# Get all static files
statics = listdir(apath('%s/static/' % app, r=request), '[^\.#].*',
maxnum = MAXNFILES)
maxnum=MAXNFILES)
statics = [x.replace(os.path.sep, '/') for x in statics]
statics.sort()
# Get all languages
languages = sorted([lang + '.py' for lang, info in
T.get_possible_languages_info().iteritems()
iteritems(T.get_possible_languages_info())
if info[2] != 0]) # info[2] is langfile_mtime:
# get only existed files
# get only existed files
#Get crontab
# Get crontab
crontab = apath('%s/cron/crontab' % app, r=request)
if not os.path.exists(crontab):
safe_write(crontab, '#crontab')
@@ -1267,6 +1322,7 @@ def plugin():
languages=languages,
crontab=crontab)
def create_file():
""" Create files handler """
if request.vars and not request.vars.token == session.token:
@@ -1278,7 +1334,7 @@ def create_file():
path = abspath(request.vars.location)
else:
if request.vars.dir:
request.vars.location += request.vars.dir + '/'
request.vars.location += request.vars.dir + '/'
app = get_app(name=request.vars.location.split('/')[0])
path = apath(request.vars.location, r=request)
filename = re.sub('[^\w./-]+', '_', request.vars.filename)
@@ -1292,7 +1348,7 @@ def create_file():
langinfo = read_possible_languages(apath(app, r=request))[lang]
text = dedent("""
#!/usr/bin/env python
# -*- coding: utf8 -*-
# -*- coding: utf-8 -*-
# Plural-Forms for %(lang)s (%(langname)s)
nplurals=2 # for example, English language has 2 forms:
@@ -1333,7 +1389,7 @@ def create_file():
if len(filename) == 3:
raise SyntaxError
text = '# coding: utf8\n'
text = '# -*- coding: utf-8 -*-\n'
elif path[-13:] == '/controllers/':
# Handle python controllers
@@ -1343,7 +1399,7 @@ def create_file():
if len(filename) == 3:
raise SyntaxError
text = '# coding: utf8\n# %s\ndef index(): return dict(message="hello from %s")'
text = '# -*- coding: utf-8 -*-\n# %s\ndef index(): return dict(message="hello from %s")'
text = text % (T('try something like'), filename)
elif path[-7:] == '/views/':
@@ -1383,12 +1439,12 @@ def create_file():
text = dedent("""
#!/usr/bin/env python
# coding: utf8
# -*- coding: utf-8 -*-
from gluon import *\n""")[1:]
elif (path[-8:] == '/static/') or (path[-9:] == '/private/'):
if (request.vars.plugin and
not filename.startswith('plugin_%s/' % request.vars.plugin)):
if (request.vars.plugin and
not filename.startswith('plugin_%s/' % request.vars.plugin)):
filename = 'plugin_%s/%s' % (request.vars.plugin, filename)
text = ''
@@ -1408,62 +1464,65 @@ def create_file():
log_progress(app, 'CREATE', filename)
if request.vars.dir:
result = T('file "%(filename)s" created',
dict(filename=full_filename[len(path):]))
dict(filename=full_filename[len(path):]))
else:
session.flash = T('file "%(filename)s" created',
dict(filename=full_filename[len(path):]))
dict(filename=full_filename[len(path):]))
vars = {}
if request.vars.id:
vars['id'] = request.vars.id
if request.vars.app:
vars['app'] = request.vars.app
redirect(URL('edit',
args=[os.path.join(request.vars.location, filename)], vars=vars))
args=[os.path.join(request.vars.location, filename)], vars=vars))
except Exception, e:
except Exception as e:
if not isinstance(e, HTTP):
session.flash = T('cannot create file')
if request.vars.dir:
response.flash = result
response.headers['web2py-component-content'] = 'append'
response.headers['web2py-component-command'] = """
$.web2py.invalidate('#files_menu');
load_file('%s');
$.web2py.enableElement($('#form form').find($.web2py.formInputClickSelector));
""" % URL('edit', args=[app,request.vars.dir,filename])
response.headers['web2py-component-command'] = "%s %s %s" % (
"$.web2py.invalidate('#files_menu');",
"load_file('%s');" % URL('edit', args=[app, request.vars.dir, filename]),
"$.web2py.enableElement($('#form form').find($.web2py.formInputClickSelector));")
return ''
else:
redirect(request.vars.sender + anchor)
redirect(request.vars.sender + anchor)
def listfiles(app, dir, regexp='.*\.py$'):
files = sorted(
listdir(apath('%(app)s/%(dir)s/' % {'app':app, 'dir':dir}, r=request), regexp))
files = [x.replace('\\', '/') for x in files if not x.endswith('.bak')]
return files
def editfile(path,file,vars={}, app = None):
args=(path,file) if 'app' in vars else (app,path,file)
url = URL('edit', args=args, vars=vars)
return A(file, _class='editor_filelink', _href=url, _style='word-wrap: nowrap;')
files = sorted(
listdir(apath('%(app)s/%(dir)s/' % {'app': app, 'dir': dir}, r=request), regexp))
files = [x.replace('\\', '/') for x in files if not x.endswith('.bak')]
return files
def editfile(path, file, vars={}, app=None):
args = (path, file) if 'app' in vars else (app, path, file)
url = URL('edit', args=args, vars=vars)
return A(file, _class='editor_filelink', _href=url, _style='word-wrap: nowrap;')
def files_menu():
app = request.vars.app or 'welcome'
dirs=[{'name':'models', 'reg':'.*\.py$'},
{'name':'controllers', 'reg':'.*\.py$'},
{'name':'views', 'reg':'[\w/\-]+(\.\w+)+$'},
{'name':'modules', 'reg':'.*\.py$'},
{'name':'static', 'reg': '[^\.#].*'}]
result_files = []
for dir in dirs:
result_files.append(TAG[''](LI(dir['name'], _class="nav-header component", _onclick="collapse('" + dir['name'] + "_files');"),
LI(UL(*[LI(editfile(dir['name'], f, dict(id=dir['name'] + f.replace('.','__')), app), _style="overflow:hidden", _id=dir['name']+"__"+f.replace('.','__'))
for f in listfiles(app, dir['name'], regexp=dir['reg'])],
_class="nav nav-list small-font"),
_id=dir['name'] + '_files', _style="display: none;")))
return dict(result_files = result_files)
app = request.vars.app or 'welcome'
dirs = [{'name': 'models', 'reg': '.*\.py$'},
{'name': 'controllers', 'reg': '.*\.py$'},
{'name': 'views', 'reg': '[\w/\-]+(\.\w+)+$'},
{'name': 'modules', 'reg': '.*\.py$'},
{'name': 'static', 'reg': '[^\.#].*'},
{'name': 'private', 'reg': '.*\.py$'}]
result_files = []
for dir in dirs:
result_files.append(TAG[''](LI(dir['name'], _class="nav-header component", _onclick="collapse('" + dir['name'] + "_files');"),
LI(UL(*[LI(editfile(dir['name'], f, dict(id=dir['name'] + f.replace('.', '__')), app), _style="overflow:hidden", _id=dir['name'] + "__" + f.replace('.', '__'))
for f in listfiles(app, dir['name'], regexp=dir['reg'])],
_class="nav nav-list small-font"),
_id=dir['name'] + '_files', _style="display: none;")))
return dict(result_files=result_files)
def upload_file():
""" File uploading handler """
if request.vars and not request.vars.token == session.token:
@@ -1509,7 +1568,7 @@ def upload_file():
if filename:
d = dict(filename=filename[len(path):])
else:
d = dict(filename='unkown')
d = dict(filename='unknown')
session.flash = T('cannot upload file "%(filename)s"', d)
redirect(request.vars.sender)
@@ -1519,13 +1578,12 @@ def errors():
""" Error handler """
import operator
import os
import pickle
import hashlib
app = get_app()
if is_gae:
method = 'dbold' if ('old' in
(request.args(1) or '')) else 'dbnew'
(request.args(1) or '')) else 'dbnew'
else:
method = request.args(1) or 'new'
db_ready = {}
@@ -1549,7 +1607,7 @@ def errors():
if not os.path.isfile(fullpath):
continue
try:
fullpath_file = open(fullpath, 'r')
fullpath_file = safe_open(fullpath, 'rb')
try:
error = pickle.load(fullpath_file)
finally:
@@ -1559,7 +1617,7 @@ def errors():
except EOFError:
continue
hash = hashlib.md5(error['traceback']).hexdigest()
hash = hashlib.md5(to_bytes(error['traceback'])).hexdigest()
if hash in delete_hashes:
os.unlink(fullpath)
@@ -1568,7 +1626,7 @@ def errors():
hash2error[hash]['count'] += 1
except KeyError:
error_lines = error['traceback'].split("\n")
last_line = error_lines[-2] if len(error_lines)>1 else 'unknown'
last_line = error_lines[-2] if len(error_lines) > 1 else 'unknown'
error_causer = os.path.split(error['layer'])[1]
hash2error[hash] = dict(count=1, pickel=error,
causer=error_causer,
@@ -1607,10 +1665,10 @@ def errors():
last_line = error_lines[-2]
error_causer = os.path.split(error['layer'])[1]
hash2error[hash] = dict(count=1,
pickel=error, causer=error_causer,
last_line=last_line, hash=hash,
ticket=fn.ticket_id)
except AttributeError, e:
pickel=error, causer=error_causer,
last_line=last_line, hash=hash,
ticket=fn.ticket_id)
except AttributeError as e:
tk_db(tk_table.id == fn.id).delete()
tk_db.commit()
@@ -1626,11 +1684,11 @@ def errors():
tk_db(tk_table.ticket_id == item[7:]).delete()
tk_db.commit()
tickets_ = tk_db(tk_table.id > 0).select(tk_table.ticket_id,
tk_table.created_datetime,
orderby=~tk_table.created_datetime)
tk_table.created_datetime,
orderby=~tk_table.created_datetime)
tickets = [row.ticket_id for row in tickets_]
times = dict([(row.ticket_id, row.created_datetime) for
row in tickets_])
row in tickets_])
return dict(app=app, tickets=tickets, method=method,
times=times, db_ready=db_ready)
@@ -1654,7 +1712,7 @@ def get_ticket_storage(app):
private_folder = apath('%s/private' % app, r=request)
ticket_file = os.path.join(private_folder, 'ticket_storage.txt')
if os.path.exists(ticket_file):
db_string = open(ticket_file).read()
db_string = safe_open(ticket_file).read()
db_string = db_string.strip().replace('\r', '').replace('\n', '')
elif is_gae:
# use Datastore as fallback if there is no ticket_file
@@ -1688,9 +1746,9 @@ def make_link(path):
for key in editable.keys():
check_extension = folder.endswith("%s/%s" % (app, key))
if ext.lower() == editable[key] and check_extension:
return A('"' + tryFile + '"',
_href=URL(r=request,
f='edit/%s/%s/%s' % (app, key, filename))).xml()
return to_native(A('"' + tryFile + '"',
_href=URL(r=request,
f='edit/%s/%s/%s' % (app, key, filename))).xml())
return ''
@@ -1807,7 +1865,6 @@ def user():
def reload_routes():
""" Reload routes.py """
import gluon.rewrite
gluon.rewrite.load()
redirect(URL('site'))
@@ -1836,7 +1893,7 @@ def bulk_register():
redirect(URL('site'))
return locals()
### Begin experimental stuff need fixes:
# Begin experimental stuff need fixes:
# 1) should run in its own process - cannot os.chdir
# 2) should not prompt user at console
# 3) should give option to force commit and not reuqire manual merge
@@ -1903,26 +1960,31 @@ def git_push():
redirect(URL('site'))
return dict(app=app, form=form)
def plugins():
app = request.args(0)
from serializers import loads_json
from gluon.serializers import loads_json
if not session.plugins:
try:
rawlist = urllib.urlopen("http://www.web2pyslices.com/" +
"public/api.json/action/list/content/Package?package" +
"_type=plugin&search_index=false").read()
rawlist = urlopen("http://www.web2pyslices.com/" +
"public/api.json/action/list/content/Package?package" +
"_type=plugin&search_index=false").read()
session.plugins = loads_json(rawlist)
except:
response.flash = T('Unable to download the list of plugins')
session.plugins = []
return dict(plugins=session.plugins["results"], app=request.args(0))
def install_plugin():
app = request.args(0)
source = request.vars.source
plugin = request.vars.plugin
if not (source and app):
raise HTTP(500, T("Invalid request"))
# make sure no XSS attacks in source
if not source.lower().split('://')[0] in ('http','https'):
raise HTTP(500, T("Invalid request"))
form = SQLFORM.factory()
result = None
if form.process().accepted:
@@ -1932,12 +1994,11 @@ def install_plugin():
source.split("web2py.plugin.")[-1].split(".w2p")[0]
else:
filename = "web2py.plugin.%s.w2p" % cleanpath(plugin)
if plugin_install(app, urllib.urlopen(source),
if plugin_install(app, urlopen(source),
request, filename):
session.flash = T('New plugin installed: %s', filename)
else:
session.flash = \
T('unable to install plugin "%s"', filename)
redirect(URL(f="plugins", args=[app,]))
redirect(URL(f="plugins", args=[app, ]))
return dict(form=form, app=app, plugin=plugin, source=source)

View File

@@ -0,0 +1,100 @@
# -*- coding: utf-8 -*-
import base64
import os
import re
import gzip
import tarfile
from gluon.contrib.simplejsonrpc import ServerProxy
from gluon._compat import StringIO, ProtocolError
def deploy():
response.title = T('Deploy to pythonanywhere')
return {}
def create_account():
""" Create a PythonAnywhere account """
if not request.vars:
raise HTTP(400)
if request.vars.username and request.vars.web2py_admin_password:
# Check if web2py is already there otherwise we get an error 500 too.
client = ServerProxy('https://%(username)s:%(web2py_admin_password)s@%(username)s.pythonanywhere.com/admin/webservices/call/jsonrpc' % request.vars)
try:
if client.login() is True:
return response.json({'status': 'ok'})
except ProtocolError as error:
pass
import urllib, urllib2
url = 'https://www.pythonanywhere.com/api/web2py/create_account'
data = urllib.urlencode(request.vars)
req = urllib2.Request(url, data)
try:
reply = urllib2.urlopen(req)
except urllib2.HTTPError as error:
if error.code == 400:
reply = error
elif error.code == 500:
return response.json({'status':'error', 'errors':{'username': ['An App other than web2py is installed in the domain %(username)s.pythonanywhere.com' % request.vars]}})
else:
raise
response.headers['Content-Type'] = 'application/json'
return reply.read()
def list_apps():
""" Get a list of apps both remote and local """
if not request.vars.username or not request.vars.password:
raise HTTP(400)
client = ServerProxy('https://%(username)s:%(password)s@%(username)s.pythonanywhere.com/admin/webservices/call/jsonrpc' % request.vars)
regex = re.compile('^\w+$')
local = [f for f in os.listdir(apath(r=request)) if regex.match(f)]
try:
pythonanywhere = client.list_apps()
except ProtocolError as error:
raise HTTP(error.errcode)
return response.json({'local': local, 'pythonanywhere': pythonanywhere})
def bulk_install():
""" Install a list of apps """
def b64pack(app):
"""
Given an app's name, return the base64 representation of its packed version.
"""
folder = apath(app, r=request)
tmpfile = StringIO()
tar = tarfile.TarFile(fileobj=tmpfile, mode='w')
try:
filenames = listdir(folder, '^[\w\.\-]+$', add_dirs=True,
exclude_content_from=['cache', 'sessions', 'errors'])
for fname in filenames:
tar.add(os.path.join(folder, fname), fname, False)
finally:
tar.close()
tmpfile.seek(0)
gzfile = StringIO()
w2pfp = gzip.GzipFile(fileobj=gzfile, mode='wb')
w2pfp.write(tmpfile.read())
w2pfp.close()
gzfile.seek(0)
return base64.b64encode(gzfile.read())
request.vars.apps = request.vars['apps[]']
if not request.vars.apps or not request.vars.username or not request.vars.password:
raise HTTP(400)
if not isinstance(request.vars.apps, list):
request.vars.apps = [request.vars.apps] # Only one app selected
client = ServerProxy('https://%(username)s:%(password)s@%(username)s.pythonanywhere.com/admin/webservices/call/jsonrpc' % request.vars)
for app in request.vars.apps:
try:
client.install(app, app+'.w2p', b64pack(app))
except ProtocolError as error:
raise HTTP(error.errcode)
return response.json({'status': 'ok'})

View File

@@ -1,51 +0,0 @@
import sys
import cStringIO
import gluon.contrib.shell
import code
import thread
import cgi
from gluon.shell import env
if DEMO_MODE or MULTI_USER_MODE:
session.flash = T('disabled in demo mode')
redirect(URL('default', 'site'))
FE = 10 ** 9
def index():
app = request.args(0) or 'admin'
reset()
return dict(app=app)
def callback():
app = request.args[0]
command = request.vars.statement
escape = command[:1] != '!'
history = session['history:' + app] = session.get(
'history:' + app, gluon.contrib.shell.History())
if not escape:
command = command[1:]
if command == '%reset':
reset()
return '*** reset ***'
elif command[0] == '%':
try:
command = session['commands:' + app][int(command[1:])]
except ValueError:
return ''
session['commands:' + app].append(command)
environ = env(app, True, extra_request=dict(is_https=request.is_https))
output = gluon.contrib.shell.run(history, command, environ)
k = len(session['commands:' + app]) - 1
#output = PRE(output)
#return TABLE(TR('In[%i]:'%k,PRE(command)),TR('Out[%i]:'%k,output))
return cgi.escape('In [%i] : %s%s\n' % (k + 1, command, output))
def reset():
app = request.args(0) or 'admin'
session['commands:' + app] = []
session['history:' + app] = gluon.contrib.shell.History()
return 'done'

View File

@@ -7,15 +7,11 @@ import platform
import time
import base64
import os
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
from gluon._compat import StringIO
service = Service(globals())
@service.jsonrpc
def login():
"dummy function to test credentials"
@@ -85,44 +81,44 @@ def install(app_name, filename, data, overwrite=True):
@service.jsonrpc
def attach_debugger(host='localhost', port=6000, authkey='secret password'):
import gluon.contrib.qdb as qdb
import gluon.contrib.dbg as dbg
import gluon.debug
from multiprocessing.connection import Listener
if isinstance(authkey, unicode):
authkey = authkey.encode('utf8')
if not hasattr(gluon.debug, 'qdb_listener'):
if not hasattr(gluon.debug, 'dbg_listener'):
# create a remote debugger server and wait for connection
address = (host, port) # family is deduced to be 'AF_INET'
gluon.debug.qdb_listener = Listener(address, authkey=authkey)
gluon.debug.qdb_connection = gluon.debug.qdb_listener.accept()
gluon.debug.dbg_listener = Listener(address, authkey=authkey)
gluon.debug.dbg_connection = gluon.debug.dbg_listener.accept()
# create the backend
gluon.debug.qdb_debugger = qdb.Qdb(gluon.debug.qdb_connection)
gluon.debug.dbg = gluon.debug.qdb_debugger
gluon.debug.dbg_debugger = dbg.Qdb(gluon.debug.dbg_connection)
gluon.debug.dbg = gluon.debug.dbg_debugger
# welcome message (this should be displayed on the frontend)
print 'debugger connected to', gluon.debug.qdb_listener.last_accepted
print('debugger connected to', gluon.debug.dbg_listener.last_accepted)
return True # connection successful!
@service.jsonrpc
def detach_debugger():
import gluon.contrib.qdb as qdb
import gluon.contrib.dbg as dbg
import gluon.debug
# stop current debugger
if gluon.debug.qdb_debugger:
if gluon.debug.dbg_debugger:
try:
gluon.debug.qdb_debugger.do_quit()
gluon.debug.dbg_debugger.do_quit()
except:
pass
if hasattr(gluon.debug, 'qdb_listener'):
if gluon.debug.qdb_connection:
gluon.debug.qdb_connection.close()
del gluon.debug.qdb_connection
if gluon.debug.qdb_listener:
gluon.debug.qdb_listener.close()
del gluon.debug.qdb_listener
gluon.debug.qdb_debugger = None
if hasattr(gluon.debug, 'dbg_listener'):
if gluon.debug.dbg_connection:
gluon.debug.dbg_connection.close()
del gluon.debug.dbg_connection
if gluon.debug.dbg_listener:
gluon.debug.dbg_listener.close()
del gluon.debug.dbg_listener
gluon.debug.dbg_debugger = None
return True

View File

@@ -7,7 +7,7 @@ import pickle
import urllib
import glob
from gluon.admin import app_create, plugin_install
from gluon.fileutils import abspath, read_file, write_file
from gluon.fileutils import abspath, read_file, write_file, open_file
def reset(session):
@@ -67,7 +67,7 @@ def index():
'..', app, 'wizard.metadata'))
if os.path.exists(meta):
try:
metafile = open(meta, 'rb')
metafile = open_file(meta, 'rb')
try:
session.app = pickle.load(metafile)
finally:
@@ -80,7 +80,7 @@ def index():
def step1():
from gluon.contrib.simplejson import loads
from json import loads
import urllib
if not session.themes:
#url = LAYOUTS_APP + '/default/layouts.json'
@@ -402,7 +402,7 @@ db.auth_user.email.requires = (
def fix_db(filename):
params = dict(session.app['params'])
content = read_file(filename, 'rb')
content = read_file(filename, 'r')
if 'auth_user' in session.app['tables']:
auth_user = make_table('auth_user', session.app['table_auth_user'])
content = content.replace('sqlite://storage.sqlite',
@@ -424,7 +424,7 @@ auth.settings.login_form = RPXAccount(request,
domain = settings.login_config.split(':')[0],
url = "http://%s/%s/default/user/login" % (request.env.http_host,request.application))
"""
write_file(filename, content, 'wb')
write_file(filename, content, 'w')
def make_menu(pages):
@@ -493,7 +493,7 @@ def create(options):
### save metadata in newapp/wizard.metadata
try:
meta = os.path.join(request.folder, '..', app, 'wizard.metadata')
file = open(meta, 'wb')
file = open_file(meta, 'wb')
pickle.dump(session.app, file)
file.close()
except IOError:
@@ -516,12 +516,12 @@ def create(options):
plugin_name = 'web2py.plugin.' + plugin + '.w2p'
stream = urllib.urlopen(PLUGINS_APP + '/static/' + plugin_name)
plugin_install(app, stream, request, plugin_name)
except Exception, e:
except Exception as e:
session.flash = T("unable to download plugin: %s" % plugin)
### write configuration file into newapp/models/0.py
model = os.path.join(request.folder, '..', app, 'models', '0.py')
file = open(model, 'wb')
file = open_file(model, 'w')
try:
file.write("from gluon.storage import Storage\n")
file.write("settings = Storage()\n\n")
@@ -534,7 +534,7 @@ def create(options):
### write configuration file into newapp/models/menu.py
if options.generate_menu:
model = os.path.join(request.folder, '..', app, 'models', 'menu.py')
file = open(model, 'wb')
file = open_file(model, 'w')
try:
file.write(make_menu(session.app['pages']))
finally:
@@ -548,7 +548,7 @@ def create(options):
if options.generate_model:
model = os.path.join(
request.folder, '..', app, 'models', 'db_wizard.py')
file = open(model, 'wb')
file = open_file(model, 'w')
try:
file.write('### we prepend t_ to tablenames and f_ to fieldnames for disambiguity\n\n')
tables = sort_tables(session.app['tables'])
@@ -564,7 +564,7 @@ def create(options):
if os.path.exists(model):
os.unlink(model)
if options.populate_database and session.app['tables']:
file = open(model, 'wb')
file = open_file(model, 'w')
try:
file.write(populate(session.app['tables']))
finally:
@@ -574,7 +574,7 @@ def create(options):
if options.generate_controller:
controller = os.path.join(
request.folder, '..', app, 'controllers', 'default.py')
file = open(controller, 'wb')
file = open_file(controller, 'w')
try:
file.write("""# -*- coding: utf-8 -*-
### required - do no delete
@@ -594,7 +594,7 @@ def call(): return service()
for page in session.app['pages']:
view = os.path.join(
request.folder, '..', app, 'views', 'default', page + '.html')
file = open(view, 'wb')
file = open_file(view, 'w')
try:
file.write(
make_view(page, session.app.get('page_' + page, '')))

View File

@@ -1,17 +1,20 @@
EXPIRATION_MINUTES=60
DIGITS=('0','1','2','3','4','5','6','7','8','9')
import os, time, stat, cPickle, logging
path = os.path.join(request.folder,'sessions')
import os, time, stat, logging
from gluon._compat import pickle
EXPIRATION_MINUTES = 60
path = os.path.join(request.folder, 'sessions')
if not os.path.exists(path):
os.mkdir(path)
now = time.time()
for filename in os.listdir(path):
fullpath=os.path.join(path,filename)
if os.path.isfile(fullpath) and filename.startswith(DIGITS):
for path, dirs, files in os.walk(path, topdown=False):
for x in files:
fullpath = os.path.join(path, x)
try:
filetime = os.stat(fullpath)[stat.ST_MTIME] # get it before our io
filetime = os.stat(fullpath)[stat.ST_MTIME] # get it before our io
try:
session_data = cPickle.load(open(fullpath, 'rb+'))
session_data = pickle.load(open(fullpath, 'rb+'))
expiration = session_data['auth']['expiration']
except:
expiration = EXPIRATION_MINUTES * 60
@@ -19,3 +22,7 @@ for filename in os.listdir(path):
os.unlink(fullpath)
except:
logging.exception('failure to check %s' % fullpath)
for d in dirs:
dd = os.path.join(path, d)
if not os.listdir(dd):
os.rmdir(dd)

555
applications/admin/languages/af.py Normal file → Executable file
View File

@@ -1,89 +1,582 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'af',
'!langname!': 'Afrikaanse',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s rows deleted',
'%s %%{row} updated': '%s rows updated',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(vereis internet toegang)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(iets soos "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Soek: **%s** lêre',
'Abort': 'Abort',
'About': 'oor',
'About application': 'Oor program',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'Additionele kode vir u application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin disabled because no admin password',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'Admin is disabled because insecure channel': 'Admin is disabled because insecure channel',
'Admin language': 'Admin taal',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Administrator Password:',
'and rename it:': 'en verander die naam:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin is disabled because insecure channel',
'Application': 'Application',
'application "%s" uninstalled': 'application "%s" uninstalled',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'application compiled',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'application is compiled and cannot be designed',
'Application name:': 'Program naam:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Are you sure you want to delete file "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"?': 'Are you sure you want to uninstall application "%s"?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ATTENTION: you cannot edit the running application!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'back',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errors and sessions cleaned',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Cannot be empty',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'cannot create file',
'cannot upload file "%(filename)s"': 'cannot upload file "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'verander admin wagwoord',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'check all',
'Check for upgrades': 'soek vir upgrades',
'Check to delete': 'Check to delete',
'Checking for upgrades...': 'Checking for upgrades...',
'Clean': 'maak skoon',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'kompileer',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'compiled application removed',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'Beheerders',
'controllers': 'beheerders',
'Count': 'Count',
'Create': 'skep',
'create file with filename:': 'skep lêer met naam:',
'Create/Upload': 'Create/Upload',
'created by': 'geskep deur',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'currently running': 'loop tans',
'currently saved or': 'currently saved or',
'data uploaded': 'data uploaded',
'Database': 'Database',
'Database %s select': 'Database %s select',
'Database administration': 'Database administration',
'database administration': 'database administration',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Date and Time',
'db': 'db',
'Debug': 'Debug',
'defines tables': 'defines tables',
'Delete': 'Delete',
'delete': 'delete',
'delete all checked': 'delete all checked',
'delete plugin': 'delete plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Delete:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'Stuur na Google App Engine toe',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'design',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'done!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'aflaai layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'aflaai plugins',
'Download plugins from repository': 'Download plugins from repository',
'Edit': 'wysig',
'edit all': 'edit all',
'Edit application': 'Wysig program',
'edit controller:': 'edit controller:',
'Edit current record': 'Edit current record',
'edit views:': 'edit views:',
'Editing %s': 'Editing %s',
'Editing Language file': 'Editing Language file',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Error': 'Error',
'Error logs for "%(app)s"': 'Error logs for "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'foute',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'export as csv file',
'Exports:': 'Exports:',
'exposes': 'exposes',
'exposes:': 'exposes:',
'extends': 'extends',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': 'failed to reload module because:',
'File': 'File',
'file "%(filename)s" created': 'file "%(filename)s" created',
'file "%(filename)s" deleted': 'file "%(filename)s" deleted',
'file "%(filename)s" uploaded': 'file "%(filename)s" uploaded',
'file "%s" of %s restored': 'file "%s" of %s restored',
'file changed on disk': 'file changed on disk',
'file does not exist': 'file does not exist',
'file not found': 'file not found',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'file saved on %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Help': 'hulp',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Import/Export',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'includes',
'Indent with tabs': 'Indent with tabs',
'inspect attributes': 'inspect attributes',
'Install': 'installeer',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Geinstalleerde apps',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'internal error',
'internal error: %s': 'internal error: %s',
'Internal State': 'Internal State',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'invalid password',
'invalid password.': 'invalid password.',
'Invalid Query': 'Invalid Query',
'invalid request': 'invalid request',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'invalid ticket',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'language file "%(filename)s" created/updated',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': 'tale',
'Languages': 'Tale',
'Last Revision': 'Last Revision',
'Last saved on:': 'Last saved on:',
'License for': 'Lisensie vir',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'laai...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Login',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Login/Register': 'Login/Register',
'Logout': 'logout',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'merge',
'Models': 'Modelle',
'models': 'modelle',
'Modified On': 'Modified On',
'Modules': 'Modules',
'modules': 'modules',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'new application "%s" created',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'Nuwe app wizard',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'New Record',
'new record inserted': 'new record inserted',
'New simple application': 'Nuwe eenvoudige app',
'next': 'next',
'next %s rows': 'next %s rows',
'NO': 'NO',
'no changes': 'no changes',
'No databases in this application': 'No databases in this application',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'or import from csv file',
'Original/Translation': 'Original/Translation',
'Overview': 'Overview',
'Overwrite installed app': 'skryf oor geinstalleerde program',
'Pack all': 'pack alles',
'Pack compiled': 'Pack compiled',
'Pack custom': 'Pack custom',
'pack plugin': 'pack plugin',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Peeking at file',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Plugin "%s" in application',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Aangedryf deur',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Query:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record does not exist': 'record does not exist',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Reload routes',
'Remove compiled': 'Remove compiled',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'return': 'return',
'Revert': 'Revert',
'revert': 'revert',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Rows selected',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Saved file hash:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'session': 'session',
'session expired': 'session expired',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'some files could not be removed',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'start wizard',
'state': 'state',
'Static': 'Static',
'static': 'static',
'Static files': 'Static files',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'submit': 'submit',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Is jy seker jy will hierde object verwyder?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'toets',
'Testing application': 'Testing application',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'Theme': 'Theme',
'There are no controllers': 'There are no controllers',
'There are no models': 'There are no models',
'There are no modules': 'There are no modules',
'There are no plugins': 'Daar is geen plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'There are no static files',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'There are no views',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'Hierdie lêre is sonder veranderinge geserved, jou images gaan hier',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'to previous version.': 'to previous version.',
'To create a plugin, name a file/folder plugin_[name]': 'Om n plugin te skep, noem n lêer/gids plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Vertaling woorde vir die program',
'try something like': 'try something like',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Unable to check for upgrades',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'unable to delete file "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download app because:': 'Unable to download app because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'unable to parse csv file',
'unable to uninstall "%s"': 'unable to uninstall "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'uncheck all',
'Uninstall': 'verwyder',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'update',
'update all languages': 'update all languages',
'Update:': 'Update:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upload': 'oplaai',
'Upload': 'Upload',
'Upload & install packed application': 'Oplaai & install gepakte program',
'Upload a package:': 'Oplaai n package:',
'Use an url:': 'Gebruik n url:',
'Views': 'Views',
'administrative interface': 'administrative interface',
'and rename it:': 'en verander die naam:',
'collapse/expand all': 'collapse/expand all',
'controllers': 'beheerders',
'create file with filename:': 'skep lêer met naam:',
'created by': 'geskep deur',
'crontab': 'crontab',
'currently running': 'loop tans',
'database administration': 'database administration',
'direction: ltr': 'direction: ltr',
'download layouts': 'aflaai layouts',
'download plugins': 'aflaai plugins',
'exposes': 'exposes',
'extends': 'extends',
'filter': 'filter',
'includes': 'includes',
'languages': 'tale',
'loading...': 'laai...',
'models': 'modelle',
'modules': 'modules',
'plugins': 'plugins',
'shell': 'shell',
'static': 'static',
'test': 'toets',
'update all languages': 'update all languages',
'upload': 'oplaai',
'Upload and install packed application': 'Upload and install packed application',
'upload file:': 'oplaai lêer:',
'upload plugin file:': 'upload plugin lêer:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use an url:': 'Gebruik n url:',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Version',
'Versioning': 'Versioning',
'versioning': 'versioning',
'Views': 'Views',
'views': 'views',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py is up to date',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'web2py Onlangse Tweets',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'YES',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

632
applications/admin/languages/bg.py Normal file → Executable file
View File

@@ -1,205 +1,239 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'bg',
'!langname!': 'Български',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s записите бяха изтрити',
'%s %%{row} updated': '%s записите бяха обновени',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(requires internet access)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(something like "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available': 'A new version of web2py is available',
'A new version of web2py is available: %s': 'A new version of web2py is available: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ATTENTION: you cannot edit the running application!',
'Abort': 'Abort',
'About': 'about',
'About application': 'About application',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'additional code for your application',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin disabled because no admin password',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google apps engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'Admin is disabled because insecure channel': 'Admin is disabled because insecure channel',
'Admin is disabled because unsecure channel': 'Admin is disabled because unsecure channel',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Administrator Password:',
'and rename it (required):': 'and rename it (required):',
'and rename it:': 'and rename it:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin is disabled because insecure channel',
'Application': 'Application',
'application "%s" uninstalled': 'application "%s" uninstalled',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'application compiled',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'application is compiled and cannot be designed',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Are you sure you want to delete file "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"': 'Are you sure you want to uninstall application "%s"',
'Are you sure you want to uninstall application "%s"?': 'Are you sure you want to uninstall application "%s"?',
'Are you sure you want to upgrade web2py now?': 'Are you sure you want to upgrade web2py now?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ATTENTION: you cannot edit the running application!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Available databases and tables',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'back',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errors and sessions cleaned',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Cannot be empty',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Cannot compile: there are errors in your app. Debug it, correct errors and try again.',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'cannot create file',
'cannot upload file "%(filename)s"': 'cannot upload file "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'change admin password',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'check all',
'Check for upgrades': 'check for upgrades',
'Check to delete': 'Check to delete',
'Checking for upgrades...': 'Checking for upgrades...',
'Clean': 'clean',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'щракни тук за онлайн примери',
'click here for the administrative interface': 'щракни тук за административния интерфейс',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'click to check for upgrades',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'compile',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'compiled application removed',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'Controllers',
'controllers': 'controllers',
'Count': 'Count',
'Create': 'create',
'create file with filename:': 'create file with filename:',
'create new application:': 'create new application:',
'Create new simple application': 'Create new simple application',
'Create/Upload': 'Create/Upload',
'created by': 'created by',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'DESIGN': 'DESIGN',
'Date and Time': 'Date and Time',
'Debug': 'Debug',
'Delete': 'Delete',
'Delete:': 'Delete:',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'Deploy on Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Design for': 'Design for',
'Disable': 'Disable',
'EDIT': 'EDIT',
'Edit': 'edit',
'Edit application': 'Edit application',
'Edit current record': 'Edit current record',
'Editing Language file': 'Editing Language file',
'Editing file': 'Editing file',
'Editing file "%s"': 'Editing file "%s"',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error logs for "%(app)s"': 'Error logs for "%(app)s"',
'Errors': 'errors',
'Exception instance attributes': 'Exception instance attributes',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'Get from URL:': 'Get from URL:',
'Hello World': 'Здравей, свят',
'Help': 'help',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'Import/Export': 'Import/Export',
'Install': 'install',
'Installed applications': 'Installed applications',
'Internal State': 'Internal State',
'Invalid Query': 'Невалидна заявка',
'Invalid action': 'Invalid action',
'Language files (static strings) updated': 'Language files (static strings) updated',
'Languages': 'Languages',
'Last saved on:': 'Last saved on:',
'License for': 'License for',
'Login': 'Login',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Logout': 'logout',
'Models': 'Models',
'Modules': 'Modules',
'NO': 'NO',
'New Record': 'New Record',
'New application wizard': 'New application wizard',
'New simple application': 'New simple application',
'No databases in this application': 'No databases in this application',
'Original/Translation': 'Original/Translation',
'Overwrite installed app': 'overwrite installed app',
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
'Pack all': 'pack all',
'Pack compiled': 'pack compiled',
'Peeking at file': 'Peeking at file',
'Plugin "%s" in application': 'Plugin "%s" in application',
'Plugins': 'Plugins',
'Powered by': 'Powered by',
'Query:': 'Query:',
'Reload routes': 'Reload routes',
'Remove compiled': 'remove compiled',
'Resolve Conflict file': 'Resolve Conflict file',
'Rows in table': 'Rows in table',
'Rows selected': 'Rows selected',
'Running on %s': 'Running on %s',
'Saved file hash:': 'Saved file hash:',
'Site': 'site',
'Start wizard': 'start wizard',
'Static files': 'Static files',
'Sure you want to delete this object?': 'Сигурен ли си, че искаш да изтриеш този обект?',
'TM': 'TM',
'Testing application': 'Testing application',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no controllers': 'There are no controllers',
'There are no models': 'There are no models',
'There are no modules': 'There are no modules',
'There are no plugins': 'There are no plugins',
'There are no static files': 'There are no static files',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'There are no views',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'This is the %(filename)s template': 'This is the %(filename)s template',
'Ticket': 'Ticket',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'Translation strings for the application': 'Translation strings for the application',
'Unable to check for upgrades': 'Unable to check for upgrades',
'Unable to download': 'Unable to download',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because': 'Unable to download because',
'Uninstall': 'uninstall',
'Update:': 'Update:',
'Upload & install packed application': 'Upload & install packed application',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'Upload existing application': 'Upload existing application',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use an url:': 'Use an url:',
'Version': 'Version',
'Views': 'Views',
'Web Framework': 'Web Framework',
'Welcome to web2py': 'Добре дошъл в web2py',
'YES': 'YES',
'additional code for your application': 'additional code for your application',
'admin disabled because no admin password': 'admin disabled because no admin password',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google apps engine',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'administrative interface': 'administrative interface',
'and rename it (required):': 'and rename it (required):',
'and rename it:': 'and rename it:',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin is disabled because insecure channel',
'application "%s" uninstalled': 'application "%s" uninstalled',
'application compiled': 'application compiled',
'application is compiled and cannot be designed': 'application is compiled and cannot be designed',
'arguments': 'arguments',
'back': 'back',
'cache': 'cache',
'cache, errors and sessions cleaned': 'cache, errors and sessions cleaned',
'cannot create file': 'cannot create file',
'cannot upload file "%(filename)s"': 'cannot upload file "%(filename)s"',
'check all': 'check all',
'click here for online examples': 'щракни тук за онлайн примери',
'click here for the administrative interface': 'щракни тук за административния интерфейс',
'click to check for upgrades': 'click to check for upgrades',
'code': 'code',
'collapse/expand all': 'collapse/expand all',
'compiled application removed': 'compiled application removed',
'controllers': 'controllers',
'create file with filename:': 'create file with filename:',
'create new application:': 'create new application:',
'created by': 'created by',
'crontab': 'crontab',
'currently running': 'currently running',
'currently saved or': 'currently saved or',
'data uploaded': 'данните бяха качени',
'Database': 'Database',
'database': 'database',
'Database %s select': 'Database %s select',
'database %s select': 'database %s select',
'Database administration': 'Database administration',
'database administration': 'database administration',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Date and Time',
'db': 'дб',
'Debug': 'Debug',
'defines tables': 'defines tables',
'Delete': 'Delete',
'delete': 'delete',
'delete all checked': 'delete all checked',
'delete plugin': 'delete plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Delete:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'Deploy on Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'дизайн',
'DESIGN': 'DESIGN',
'Design for': 'Design for',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'готово!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'EDIT': 'EDIT',
'Edit': 'edit',
'edit all': 'edit all',
'Edit application': 'Edit application',
'edit controller': 'edit controller',
'edit controller:': 'edit controller:',
'Edit current record': 'Edit current record',
'edit views:': 'edit views:',
'Editing %s': 'Editing %s',
'Editing file': 'Editing file',
'Editing file "%s"': 'Editing file "%s"',
'Editing Language file': 'Editing Language file',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Error',
'Error logs for "%(app)s"': 'Error logs for "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'errors',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'export as csv file',
'Exports:': 'Exports:',
'exposes': 'exposes',
'exposes:': 'exposes:',
'extends': 'extends',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'failed to reload module',
'failed to reload module because:': 'failed to reload module because:',
'File': 'File',
'file "%(filename)s" created': 'file "%(filename)s" created',
'file "%(filename)s" deleted': 'file "%(filename)s" deleted',
'file "%(filename)s" uploaded': 'file "%(filename)s" uploaded',
@@ -207,80 +241,400 @@
'file "%s" of %s restored': 'file "%s" of %s restored',
'file changed on disk': 'file changed on disk',
'file does not exist': 'file does not exist',
'file not found': 'file not found',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'file saved on %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Hello World': 'Здравей, свят',
'Help': 'help',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Import/Export',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'includes',
'Indent with tabs': 'Indent with tabs',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'inspect attributes': 'inspect attributes',
'Install': 'install',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Installed applications',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'internal error',
'internal error: %s': 'internal error: %s',
'Internal State': 'Internal State',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'invalid password',
'invalid password.': 'invalid password.',
'Invalid Query': 'Невалидна заявка',
'invalid request': 'невалидна заявка',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'invalid ticket',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'language file "%(filename)s" created/updated',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': 'languages',
'Languages': 'Languages',
'languages updated': 'languages updated',
'Last Revision': 'Last Revision',
'Last saved on:': 'Last saved on:',
'License for': 'License for',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'loading...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Login',
'login': 'login',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Login/Register': 'Login/Register',
'Logout': 'logout',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'merge',
'Models': 'Models',
'models': 'models',
'Modified On': 'Modified On',
'Modules': 'Modules',
'modules': 'modules',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'new application "%s" created',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'New Record',
'new record inserted': 'новият запис беше добавен',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'next 100 rows',
'NO': 'NO',
'no changes': 'no changes',
'No databases in this application': 'No databases in this application',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'or import from csv file',
'or provide app url:': 'or provide app url:',
'or provide application url:': 'or provide application url:',
'Original/Translation': 'Original/Translation',
'Overview': 'Overview',
'Overwrite installed app': 'overwrite installed app',
'Pack all': 'pack all',
'Pack compiled': 'pack compiled',
'Pack custom': 'Pack custom',
'pack plugin': 'pack plugin',
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Peeking at file',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Plugin "%s" in application',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Powered by',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'previous 100 rows',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Query:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'record',
'record does not exist': 'записът не съществува',
'record id': 'record id',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Reload routes',
'Remove compiled': 'remove compiled',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'return': 'return',
'Revert': 'Revert',
'revert': 'revert',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in table': 'Rows in table',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Rows selected',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'save': 'save',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Saved file hash:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'selected',
'session': 'session',
'session expired': 'session expired',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'some files could not be removed',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'start wizard',
'state': 'състояние',
'Static': 'Static',
'static': 'static',
'Static files': 'Static files',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'submit': 'submit',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Сигурен ли си, че искаш да изтриеш този обект?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'table',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'test',
'Testing application': 'Testing application',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'the application logic, each URL path is mapped in one exposed function in the controller',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': 'the data representation, define database tables and sets',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': 'the presentations layer, views are also known as templates',
'Theme': 'Theme',
'There are no controllers': 'There are no controllers',
'There are no models': 'There are no models',
'There are no modules': 'There are no modules',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'There are no static files',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'There are no views',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': 'these files are served without processing, your images go here',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'This is the %(filename)s template',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'TM': 'TM',
'to previous version.': 'to previous version.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': 'translation strings for the application',
'Translation strings for the application': 'Translation strings for the application',
'try': 'try',
'try something like': 'try something like',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Unable to check for upgrades',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'unable to delete file "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Unable to download',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because': 'Unable to download because',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'не е възможна обработката на csv файла',
'unable to uninstall "%s"': 'unable to uninstall "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'uncheck all',
'Uninstall': 'uninstall',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'update',
'update all languages': 'update all languages',
'Update:': 'Update:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'upgrade web2py now',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': 'Upload & install packed application',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload application:': 'upload application:',
'Upload existing application': 'Upload existing application',
'upload file:': 'upload file:',
'upload plugin file:': 'upload plugin file:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use an url:': 'Use an url:',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Version',
'Versioning': 'Versioning',
'versioning': 'versioning',
'view': 'view',
'Views': 'Views',
'views': 'views',
'web2py Recent Tweets': 'web2py Recent Tweets',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py is up to date',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'web2py Recent Tweets',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome to web2py': 'Добре дошъл в web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'YES',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

1196
applications/admin/languages/cs.py Normal file → Executable file

File diff suppressed because it is too large Load Diff

526
applications/admin/languages/de.py Normal file → Executable file
View File

@@ -1,107 +1,167 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'de',
'!langname!': 'Deutsch',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "Feld1 = \'newvalue". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{row} Zeilen gelöscht',
'%s %%{row} updated': '%s %%{row} Zeilen aktualisiert',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d.%m.%Y',
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
'(requires internet access)': '(Internet Zugang wir benötigt)',
'(requires internet access, experimental)': '(benötigt Internet Zugang)',
'(requires internet access)': '(Benötigt Internetzugang)',
'(requires internet access, experimental)': '(Benötigt Internetzugang)',
'(something like "it-it")': '(so etwas wie "it-it")',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(file **gluon/contrib/plural_rules/%s.py** is not found)',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(Datei **gluon/contrib/plural_rules/%s.py** wurde nicht gefunden)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'Ein Fehler ist aufgetreten, bitte [[reload %s]] sie die Seite erneut',
'@markmin\x01Searching: **%s** %%{file}': '@markmin\x01Suche: **%s** Dateien',
'A new version of web2py is available': 'Eine neue Version von web2py ist verfügbar',
'A new version of web2py is available: %s': 'Eine neue Version von web2py ist verfügbar: %s',
'Abort': 'Abbrechen',
'About': 'über',
'About application': 'über die Anwendung',
'Additional code for your application': 'zusätzlicher Code für Ihre Anwendung',
'About': 'Über',
'About application': 'Über die Anwendung',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'Zusätzlicher Code für Ihre Anwendung',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin ist deaktiviert, weil kein Admin-Passwort gesetzt ist',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because not supported on google apps engine': 'admin ist deaktiviert, es existiert dafür keine Unterstützung auf der google apps engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin ist deaktiviert, weil kein Zugriff auf die Passwortdatei besteht',
'Admin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
'Admin is disabled because unsecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
'Admin language': 'Admin-Sprache',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'Administrative Schnittstelle',
'Administrator Password:': 'Administrator Passwort:',
'An error occured, please %s the page': 'Ein Fehler ist aufgetereten, bitte %s die Seite',
'and rename it (required):': 'und benenne sie um (erforderlich):',
'and rename it:': ' und benenne sie um:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
'Application': 'Anwendung',
'application "%s" uninstalled': 'Anwendung "%s" deinstalliert',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'Anwendung kompiliert',
'application is compiled and cannot be designed': 'Die Anwendung ist kompiliert kann deswegen nicht mehr geändert werden',
'Application name:': 'Name der Applikation:',
'are not used': 'wird nicht verwendet',
'are not used yet': 'wird bisher nicht verwendet',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'Die Anwendung ist kompiliert und kann deswegen nicht mehr geändert werden',
'Application name:': 'Name der Anwendung:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'werden nicht verwendet',
'are not used yet': 'werden bisher nicht verwendet',
'Are you sure you want to delete file "%s"?': 'Sind Sie sich sicher, dass Sie diese Datei löschen wollen "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Sind Sie sich sicher, dass Sie dieses Objekt löschen wollen?',
'Are you sure you want to uninstall application "%s"': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"',
'Are you sure you want to uninstall application "%s"?': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"?',
'Are you sure you want to upgrade web2py now?': 'Sind Sie sich sicher, dass Sie web2py jetzt upgraden möchten?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ACHTUNG: Die Einwahl benötigt eine sichere (HTTPS) Verbindung. Es sei denn sie läuft Lokal(localhost).',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ACHTUNG: Testen ist nicht threadsicher. Führen sie also nicht mehrere Tests gleichzeitig aus.',
'at char %s': 'bei Zeichen %s',
'at line %s': 'in Linie %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ACHTUNG: Die Einwahl benötigt eine sichere (HTTPS) Verbindung. Es sei denn sie läuft Lokal (localhost).',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ACHTUNG: Testen ist nicht threadsicher. Führen Sie also nicht mehrere Tests gleichzeitig aus.',
'ATTENTION: This is an experimental feature and it needs more testing.': 'ACHTUNG: Dies ist eine experimentelle Funktion und benötigt noch weitere Tests.',
'ATTENTION: you cannot edit the running application!': 'ACHTUNG: Eine laufende Anwendung kann nicht editiert werden!',
'Authentication': 'Authentifizierung',
'Available databases and tables': 'verfügbare Datenbanken und Tabellen',
'back': 'zurück',
'beautify': 'verschönern',
'cache': 'Pufferspeicher',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Verfügbare Datenbanken und Tabellen',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'Zurück',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'beautify': 'Verschönern',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'Zwischenspeicher',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'Zwischenspeicher (cache), Fehler und Sitzungen (sessions) gelöscht',
'call': 'Aufruf',
'can be a git repo': 'kann ein git Repository sein',
'Cancel': 'Cancel',
'Cancel': 'Abbrechen',
'Cannot be empty': 'Darf nicht leer sein',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nicht Kompilierbar:Es sind Fehler in der Anwendung. Beseitigen Sie die Fehler und versuchen Sie es erneut.',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nicht Kompilierbar: Es sind Fehler in der Anwendung. Beseitigen Sie die Fehler und versuchen Sie es erneut.',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'Kann Datei nicht erstellen',
'cannot upload file "%(filename)s"': 'Kann Datei nicht Hochladen "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Administrator-Passwort ändern',
'change editor settings': 'Editoreinstellungen ändern',
'Change Password': 'Passwort ändern',
'change password': 'Passwort ändern',
'Changelog': 'Changelog',
'check all': 'alles auswählen',
'Check for upgrades': 'check for upgrades',
'Check for upgrades': 'Versionsüberprüfung',
'Check to delete': 'Markiere zum löschen',
'Checking for upgrades...': 'Auf Updates überprüfen...',
'Clean': 'leeren',
'Checking for upgrades...': 'Überprüfe auf Updates...',
'Clean': 'Leeren',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'hier klicken für online Beispiele',
'click here for the administrative interface': 'hier klicken für die Administrationsoberfläche ',
'Click row to expand traceback': 'Klicke auf die Zeile für Fehlerverfolgung',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'hier klicken um nach Upgrades zu suchen',
'Client IP': 'Client IP',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'alles zu- bzw. aufklappen',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'kompilieren',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'kompilierte Anwendung gelöscht',
'Condition': 'Condition',
'continue': 'continue',
'Controller': 'Controller',
'Controllers': 'Controller',
'controllers': 'Controllers',
'Controllers': 'Controllers',
'controllers': 'controllers',
'Copyright': 'Urheberrecht',
'Count': 'Anzahl',
'Create': 'erstellen',
'create file with filename:': 'erzeuge Datei mit Dateinamen:',
'create new application:': 'erzeuge neue Anwendung:',
'Create': 'Erstellen',
'create file with filename:': 'Erzeuge Datei mit Dateinamen:',
'create new application:': 'Erzeuge neue Anwendung:',
'Create new simple application': 'Erzeuge neue Anwendung',
'created by': 'erstellt von',
'Create/Upload': 'Create/Upload',
'created by': 'Erstellt von',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Aktuelle Anfrage (request)',
'Current response': 'Aktuelle Antwort (response)',
'Current session': 'Aktuelle Sitzung (session)',
'currently running': 'aktuell in Betrieb',
'currently saved or': 'des derzeit gespeicherten oder',
'customize me!': 'pass mich an!',
'customize me!': 'Pass mich an!',
'data uploaded': 'Daten hochgeladen',
'Database': 'Datenbank',
'database': 'Datenbank',
'Database %s select': 'Database %s select',
'database %s select': 'Datenbank %s ausgewählt',
'Database administration': 'Database administration',
'database administration': 'Datenbankadministration',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Datum und Uhrzeit',
'db': 'db',
'DB Model': 'DB Modell',
@@ -111,53 +171,90 @@
'delete': 'löschen',
'delete all checked': 'lösche alle markierten',
'delete plugin': 'Plugin löschen',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'löschen:',
'Delete this file (you will be asked to confirm deletion)': 'Diese Datei löschen (mit Bestätigungsdialog)',
'Delete:': 'Löschen:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Installieren',
'Deploy on Google App Engine': 'Auf Google App Engine installieren',
'Deploy to OpenShift': 'Auf OpenShift installieren',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': 'Beschreibung',
'Description:': 'Description:',
'design': 'design',
'DESIGN': 'design',
'DESIGN': 'DESIGN',
'Design for': 'Design für',
'Detailed traceback description': 'Detailed traceback description',
'Detailed traceback description': 'Detaillierte traceback Beschreibung',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Deaktivieren',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'documentation': 'Dokumentation',
'done!': 'fertig!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'Layouts herunterladen',
'download plugins': 'download plugins',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'Plugins herunterladen',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'E-mail',
'EDIT': 'BEARBEITEN',
'Edit': 'bearbeiten',
'Edit': 'Bearbeiten',
'edit all': 'edit all',
'Edit application': 'Bearbeite Anwendung',
'edit controller': 'Bearbeite Controller',
'edit controller:': 'bearbeite Controller:',
'Edit current record': 'Bearbeite aktuellen Datensatz',
'Edit Profile': 'Bearbeite Profil',
'edit profile': 'bearbeite Profil',
'Edit This App': 'Bearbeite diese Anwendung',
'edit views:': 'Views bearbeiten:',
'Editing %s': 'Bearbeite %s',
'Editing file': 'Bearbeite Datei',
'Editing file "%s"': 'Bearbeite Datei "%s"',
'Editing Language file': 'Sprachdatei bearbeiten',
'Enable': 'Enable',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Aktivieren',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Fehler',
'Error logs for "%(app)s"': 'Fehlerprotokoll für "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'Fehler',
'Errors': 'Fehlermeldungen',
'escape': 'escape',
'Exception instance attributes': 'Atribute der Ausnahmeinstanz',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Attribute der Ausnahmeinstanz',
'Exit Fullscreen': 'Vollbild beenden',
'Expand Abbreviation': 'Kürzel erweitern',
'Expand Abbreviation (html files only)': 'Abkürzungen ausschreiben (nur HTML Dateien)',
'export as csv file': 'Exportieren als CSV-Datei',
'Exports:': 'Exports:',
'exposes': 'stellt zur Verfügung',
'exposes:': 'exposes:',
'exposes:': 'stellt folgendes zur Verfügung:',
'extends': 'erweitert',
'failed to compile file because:': 'failed to compile file because:',
'failed to compile file because:': 'Datei konnte nicht kompiliert werden, da:',
'failed to reload module': 'neu laden des Moduls fehlgeschlagen',
'failed to reload module because:': 'failed to reload module because:',
'File': 'Datei',
'file "%(filename)s" created': 'Datei "%(filename)s" erstellt',
'file "%(filename)s" deleted': 'Datei "%(filename)s" gelöscht',
@@ -166,253 +263,452 @@
'file "%s" of %s restored': 'Datei "%s" von %s wiederhergestellt',
'file changed on disk': 'Datei auf Festplatte geändert',
'file does not exist': 'Datei existiert nicht',
'file not found': 'file not found',
'file saved on %(time)s': 'Datei gespeichert am %(time)s',
'file saved on %s': 'Datei gespeichert auf %s',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'Filter',
'Find Next': 'Nächster',
'Find Previous': 'Vorheriger',
'First name': 'Vorname',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Funktionen ohne doctests erzeugen [passed] in Tests',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Go to Matching Pair': 'gehe zum übereinstimmenden Paar',
'Globals##debug': 'Globals##debug',
'Go to Matching Pair': 'Gehe zum übereinstimmenden Paar',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': 'Gruppen ID',
'Hello World': 'Hallo Welt',
'Help': 'Hilfe',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Home': 'Home',
'here': 'here',
'Hide/Show Translated strings': 'Zeige/Verstecke übersetzte Strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Startseite',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Falls der obere Test eine Fehler-Ticketnummer enthält deutet das auf einen Fehler in der Ausführung des Controllers hin, noch bevor der Doctest ausgeführt werden konnte. Gewöhnlich Führen fehlerhafte Einrückungen oder fehlerhafter Code ausserhalb der Funktion zu solchen Fehlern. Ein grüner Titel deutet darauf hin, dass alle Test(wenn sie vorhanden sind) erfolgreich durchlaufen wurden. In diesem Fall werden die Testresultate nicht angezeigt.',
'If you answer "yes", be patient, it may take a while to download': '',
'If you answer yes, be patient, it may take a while to download': 'If you answer yes, be patient, it may take a while to download',
'If you answer "yes", be patient, it may take a while to download': 'Wenn Sie mit "Ja" antworten, seien Sie bitte geduldig. Der Download könnte eine Weile dauern.',
'If you answer yes, be patient, it may take a while to download': 'Wenn Sie mit Ja antworten, seien Sie bitte geduldig. Der Download könnte eine Weile dauern.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Importieren/Exportieren',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'Einfügen',
'Indent with tabs': 'Indent with tabs',
'Index': 'Index',
'index': 'index',
'insert new': 'neu Einfügen',
'insert new %s': 'neu Einfügen %s',
'inspect attributes': 'inspect attributes',
'Install': 'installieren',
'inspect attributes': 'Attribute inspizieren',
'Install': 'Installieren',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Installierte Anwendungen',
'internal error': 'interner Fehler',
'Internal State': 'interner Status',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'Interner Fehler',
'internal error: %s': 'internal error: %s',
'Internal State': 'Interner Status',
'Invalid action': 'Ungültige Aktion',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'Ungültige Email',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'Ungültiges Passwort',
'invalid password.': 'invalid password.',
'Invalid Query': 'Ungültige Abfrage',
'invalid request': 'Ungültige Anfrage',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'Ungültiges Ticket',
'Key': 'Key',
'Key bindings': 'Tastenbelegungen',
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
'Key bindings for ZenConding Plugin': 'Tastenbelegungen für das ZenConding Plugin',
'Keyboard shortcuts': 'Tastenkombination',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'Sprachdatei "%(filename)s" erstellt/aktualisiert',
'Language files (static strings) updated': 'Sprachdatei (statisch Strings) aktualisiert',
'languages': 'Sprachen',
'Languages': 'Sprachen',
'languages updated': 'Sprachen aktualisiert',
'Last name': 'Nachname',
'Last Revision': 'Last Revision',
'Last saved on:': 'Zuletzt gespeichert am:',
'Layout': 'Layout',
'License for': 'Lizenz für',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'nach Ticket aufgelistet',
'Loading...': 'Loading...',
'loading...': 'lade...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'located in the file': 'located in Datei',
'Login': 'Anmelden',
'Locals##debug': 'Locals##debug',
'located in the file': 'befindet sich in der Datei',
'login': 'anmelden',
'Login': 'Anmelden',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'An das Administrations-Interface anmelden',
'Logout': 'abmelden',
'Login/Register': 'Login/Register',
'Logout': 'Abmelden',
'lost password': 'lost password',
'Lost Password': 'Passwort vergessen',
'lost password?': 'Passwort vergessen?',
'Main Menu': 'Menü principal',
'Main Menu': 'Hauptmenü',
'Manage': 'Verwalten',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Match Pair': 'Paare finden',
'Memberships': 'Memberships',
'Menu Model': 'Menü Modell',
'merge': 'verbinden',
'Merge Lines': 'Zeilen zusammenfügen',
'Models': 'Modelle',
'models': 'Modelle',
'Modified On': 'Modified On',
'Modules': 'Module',
'modules': 'Module',
'Multi User Mode': 'Multi User Mode',
'Name': 'Name',
'new application "%s" created': 'neue Anwendung "%s" erzeugt',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'Neue Anwendung per Assistent',
'new plugin installed': 'new plugin installed',
'new plugin installed': 'Neues Plugin wurde installiert',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Neuer Datensatz',
'new record inserted': 'neuer Datensatz eingefügt',
'new record inserted': 'Neuer wurde Datensatz eingefügt',
'New simple application': 'Neue einfache Anwendung',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'nächsten 100 Zeilen',
'Next Edit Point': 'nächster Bearbeitungsschritt',
'NO': 'NEIN',
'no changes': 'no changes',
'No databases in this application': 'Keine Datenbank in dieser Anwendung',
'no package selected': 'no package selected',
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
'online designer': 'online designer',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'oder hole es von folgender URL:',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'Kein Paket ausgewählt',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'No ticket_storage.txt found under /private folder': 'Kein ticket_storage.txt unter /private folder gefunden',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'Online Designer',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'oder Alternativ',
'Or Get from URL:': 'oder von folgender URL herunterladen:',
'or import from csv file': 'oder importieren von cvs Datei',
'or provide app url:': 'oder geben Sie eine Anwendungs-URL an:',
'or provide application url:': 'oder geben Sie eine Anwendungs-URL an:',
'Origin': 'Herkunft',
'Original/Translation': 'Original/übersetzung',
'Overwrite installed app': 'installierte Anwendungen überschreiben',
'Pack all': 'verpacke alles',
'Overview': 'Overview',
'Overwrite installed app': 'Installierte Anwendungen überschreiben',
'Pack all': 'Verpacke alles',
'Pack compiled': 'Verpacke kompiliert',
'Pack custom': 'Verpacke individuell',
'pack plugin': 'Plugin verpacken',
'Password': 'Passwort',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Dateiansicht',
'please wait!': 'bitte warten!',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'please wait!': 'Bitte warten!',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Plugin "%s" in Anwendung',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Unterstützt von',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'vorherige 100 zeilen',
'Previous Edit Point': 'vorheriger Bearbeitungsschritt',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Projekt Fortschritt',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Abfrage:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Schnelle Suche',
'Record': 'Record',
'record': 'Datensatz',
'record does not exist': 'Datensatz existiert nicht',
'record id': 'Datensatz id',
'Record ID': 'Datensatz ID',
'Record id': 'Record id',
'refresh': 'refresh',
'Register': 'Registrieren',
'register': 'Registrierung',
'Register': 'registrieren',
'Registration key': 'Registrierungsschlüssel',
'reload': 'Neu laden',
'Reload routes': 'Routen neu laden',
'Remove compiled': 'Bytecode löschen',
'Replace': 'Replace',
'Replace All': 'Replace All',
'request': 'request',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Ersetzen',
'Replace All': 'Alle Ersetzen',
'Repository (%s)': 'Repository (%s)',
'request': 'Anfrage',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Reset Password key': 'Passwortschlüssel zurücksetzen',
'Resolve Conflict file': 'bereinige Konflikt-Datei',
'response': 'Antwort',
'restart': 'restart',
'restore': 'wiederherstellen',
'return': 'return',
'Revert': 'Revert',
'revert': 'zurückkehren',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Rolle',
'Roles': 'Roles',
'Rows in table': 'Zeilen in Tabelle',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Zeilen ausgewählt',
'rules are not defined': 'rules are not defined',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'rules are not defined': 'Regeln sind nicht definiert',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Tests in dieser Datei ausführen (um alle Dateien auszuführen, kann auch der Button 'test' genutzt werden)",
'Running on %s': 'läuft auf %s',
'Save': 'Save',
'save': 'sichern',
'Save file:': 'Save file:',
'Save via Ajax': 'via Ajax sichern',
'Save': 'Speichern',
'save': 'Speichern',
'Save file:': 'Speichere Datei:',
'Save file: %s': 'Speichere Datei: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'via Ajax speichern',
'Saved file hash:': 'Gespeicherter Datei-Hash:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Dateien zum Paketieren wählen',
'selected': 'ausgewählt(e)',
'session': 'Sitzung',
'session expired': 'Sitzung abgelaufen',
'shell': 'shell',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'Shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Seite',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'einige Dateien konnten nicht gelöscht werden',
'Start searching': 'Start searching',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'Quelle : Dateisystem',
'Start a new app': 'Start a new app',
'Start searching': 'Suche beginnen',
'Start wizard': 'Assistent starten',
'state': 'Status',
'Static': 'Static',
'Static': 'Statisch',
'static': 'statische Dateien',
'Static files': 'statische Dateien',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Stylesheet': 'Stylesheet',
'Submit': 'Submit',
'submit': 'Absenden',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Wollen Sie das Objekt wirklich löschen?',
'switch to : db': 'wechsel zu : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'Tabelle',
'Table': 'Table',
'Table name': 'Tabellen Name',
'Temporary': 'Temporary',
'test': 'Test',
'test_def': 'test_def',
'test_for': 'test_for',
'test_if': 'test_if',
'test_try': 'test_try',
'Testing application': 'Teste die Anwendung',
'Testing controller': 'teste Controller',
'Testing controller': 'Teste Controller',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Die "query" ist eine Bedingung wie "db.table1.field1 == \'Wert\'". Etwas wie "db.table1.field1 db.table2.field2 ==" führt zu einem SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'Die Logik der Anwendung, jeder URL-Pfad wird auf eine Funktion abgebildet die der Controller zur Verfügung stellt',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': 'Die Datenrepräsentation definiert Mengen von Tabellen und Datenbanken ',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The output of the file is a dictionary that was rendered by the view': 'The output of the file is a dictionary that was rendered by the view',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': 'Die präsentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
'The application logic, each URL path is mapped in one exposed function in the controller': 'Die Logik der Anwendung, jeder URL-Pfad wird auf eine Funktion abgebildet die der Controller zur Verfügung stellt',
'the data representation, define database tables and sets': 'Die Datenrepräsentation definiert Mengen von Tabellen und Datenbanken',
'The data representation, define database tables and sets': 'Die Datenrepräsentation definiert Mengen von Tabellen und Datenbanken',
'The output of the file is a dictionary that was rendered by the view': 'Die Ausgabe der Datei ist ein "dictionary" und wurde vom "view" gerendert',
'The presentations layer, views are also known as templates': 'Die Präsentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
'the presentations layer, views are also known as templates': 'Die Präsentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
'Theme': 'Theme',
'There are no controllers': 'Keine Controller vorhanden',
'There are no models': 'Keine Modelle vorhanden',
'There are no modules': 'Keine Module vorhanden',
'There are no plugins': 'Keine Plugins vorhanden',
'There are no private files': 'There are no private files',
'There are no private files': 'Keine privaten Dateien vorhanden',
'There are no static files': 'Keine statischen Dateien vorhanden',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Keine übersetzungen vorhanden, nur die voreingestellte Sprache wird Unterstützt',
'There are no views': 'Keine Views vorhanden',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are not served, they are only available from within your app': 'Diese Dateien werden nicht ausgeliefert, sie sind nur innerhalb Ihrer App verfügbar',
'These files are served without processing, your images go here': 'Diese Dateien werden ohne Verarbeitung ausgeliefert. Beispielsweise Bilder kommen hier hin.',
'these files are served without processing, your images go here': 'Diese Dateien werden ohne Verarbeitung ausgeliefert. Beispielsweise Bilder kommen hier hin.',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is a copy of the scaffolding application': 'Dies ist eine Kopie einer Grundgerüst-Anwendung',
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Dies ist das Template %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Zeitstempel',
'TM': 'TM',
'to previous version.': 'zu einer früheren Version.',
'To create a plugin, name a file/folder plugin_[name]': 'Um ein Plugin zu erstellen benennen Sie eine(n) Datei/Ordner plugin_[Name]',
'toggle breakpoint': 'toggle breakpoint',
'Toggle Fullscreen': 'Toggle Fullscreen',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'Breakpoint aktivieren/deaktivieren',
'Toggle comment': ' Kommentar ein-/ausblenden',
'Toggle Fullscreen': 'Vollbild ein-/ausschalten',
'Traceback': 'Traceback',
'translation strings for the application': 'übersetzungs-Strings für die Anwendung',
'Translation strings for the application': 'übersetzungs-Strings für die Anwendung',
'try': 'versuche',
'try something like': 'versuche so etwas wie',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Unable to check for upgrades': 'überprüfen von Upgrades nicht möglich',
'unable to create application "%s"': 'erzeugen von Anwendung "%s" nicht möglich',
'unable to delete file "%(filename)s"': 'löschen von Datein "%(filename)s" nicht möglich',
'Unable to download': 'herunterladen nicht möglich',
'Unable to download app': 'herunterladen der Anwendung nicht möglich',
'unable to parse csv file': 'analysieren der cvs Datei nicht möglich',
'unable to uninstall "%s"': 'deinstallieren von "%s" nicht möglich',
'uncheck all': 'Selektionen entfernen',
'Uninstall': 'deinstallieren',
'update': 'aktualisieren',
'update all languages': 'aktualisiere alle Sprachen',
'try something like': 'Versuchen Sie so etwas wie',
'Try the mobile interface': 'Testen Sie das Interface für Handys',
'try view': 'Versuche view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Überprüfen von Upgrades nicht möglich',
'unable to create application "%s"': 'Erzeugen von Anwendung "%s" nicht möglich',
'unable to delete file "%(filename)s"': 'Löschen von Dateien "%(filename)s" nicht möglich',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Herunterladen nicht möglich',
'Unable to download app': 'Herunterladen der Anwendung nicht möglich',
'Unable to download app because:': 'Unable to download app because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'Analysieren der cvs Datei nicht möglich',
'unable to uninstall "%s"': 'Deinstallieren von "%s" nicht möglich',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'Auswahl entfernen',
'Uninstall': 'Deinstallieren',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'Aktualisieren',
'update all languages': 'Aktualisiere alle Sprachen',
'Update:': 'Aktualisiere:',
'upgrade web2py now': 'jetzt web2py upgraden',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'web2py jetzt upgraden',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': 'Verpackte Anwendung hochladen und installieren',
'Upload a package:': 'Ein Packet hochladen:',
'Upload and install packed application': 'Verpackte Anwendung hochladen und installieren',
'upload application:': 'lade Anwendung hoch:',
'Upload existing application': 'lade existierende Anwendung hoch',
'upload file:': 'lade Datei hoch:',
'upload application:': 'Lade Anwendung hoch:',
'Upload existing application': 'Lade existierende Anwendung hoch',
'upload file:': 'Lade Datei hoch:',
'upload plugin file:': 'Plugin-Datei hochladen:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Benutze (...)&(...) für AND, (...)|(...) für OR, und ~(...) für NOT, um komplexe Abfragen zu erstellen.',
'Use an url:': 'Verwende URL:',
'user': 'Nutzer',
'User': 'User',
'User ID': 'Benutzer ID',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'Variablen',
'Version': 'Version',
'Version %s.%s.%s (%s) %s': 'Version %s.%s.%s (%s) %s',
'versioning': 'Versionierung',
'Versioning': 'Versionierung',
'Versioning': 'Versionsverwaltung',
'versioning': 'Versionsverwaltung',
'View': 'Ansicht',
'view': 'Ansicht',
'Views': 'Ansichten',
'views': 'Ansichten',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py is up to date': 'web2py ist auf dem neuesten Stand',
'web2py Recent Tweets': 'neuste Tweets von web2py',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py ist aktuell',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'Neuste Tweets von web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome %s': 'Willkommen %s',
'Welcome to web2py': 'Willkommen zu web2py',
'Which called the function': 'welche die Funktion aufrief',
'Working...': 'Working...',
'Wrap with Abbreviation': 'mit Kürzel einhüllen',
'WSGI reference name': 'WSGI reference name',
'xml': 'xml',
'YES': 'JA',
'Yes': 'Yes',
'You are successfully running web2py': 'web2by wird erfolgreich ausgeführt',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You can modify this application and adapt it to your needs': 'Sie können diese Anwendung verändern und Ihren Bedürfnissen anpassen',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'You visited the url': 'Sie besuchten die URL',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

View File

@@ -1,184 +0,0 @@
# coding: utf8
{
'!langcode!': 'en-us',
'!langname!': 'English (US)',
'%Y-%m-%d': '%m-%d-%Y',
'%Y-%m-%d %H:%M:%S': '%m-%d-%Y %H:%M:%S',
'(requires internet access)': '(requires internet access)',
'(something like "it-it")': '(something like "it-it")',
'About': 'About',
'Additional code for your application': 'Additional code for your application',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'Admin language': 'Admin language',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Administrator Password:',
'and rename it:': 'and rename it:',
'Application name:': 'Application name:',
'are not used yet': 'are not used yet',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'back': '<<back',
'Basics': 'Basics',
'Begin': 'Begin',
'can be a git repo': 'can be a git repo',
'Change admin password': 'Change admin password',
'Check for upgrades': 'Check for upgrades',
'Checking for upgrades...': 'Checking for upgrades...',
'Clean': 'Clean',
'code': 'code',
'collapse/expand all': 'collapse/expand all',
'Compile': 'Compile',
'Controllers': 'Controllers',
'controllers': 'controllers',
'Create': 'Create',
'create file with filename:': 'create file with filename:',
'Create rules': 'Create rules',
'created by': 'created by',
'crontab': 'crontab',
'currently running': 'currently running',
'currently saved or': 'currently saved or',
'database administration': 'database administration',
'Debug': 'Debug',
'defines tables': 'defines tables',
'delete': 'delete',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Deploy': 'Deploy',
'Deploy on Google App Engine': 'Deploy on Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Detailed traceback description': 'Detailed traceback description',
'direction: ltr': 'direction: ltr',
'Disable': 'Disable',
'docs': 'docs',
'download layouts': 'download layouts',
'download plugins': 'download plugins',
'Edit': 'Edit',
'edit all': 'edit all',
'Edit application': 'Edit application',
'edit controller': 'edit controller',
'edit views:': 'edit views:',
'Editing file "%s"': 'Editing file "%s"',
'Editing Language file': 'Editing Language file',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'Errors',
'Exception instance attributes': 'Exception instance attributes',
'Expand Abbreviation': 'Expand Abbreviation',
'exposes': 'exposes',
'exposes:': 'exposes:',
'extends': 'extends',
'failed to compile file because:': 'failed to compile file because:',
'file does not exist': 'file does not exist',
'file saved on %s': 'file saved on %s',
'filter': 'filter',
'Frames': 'Frames',
'Generate': 'Generate',
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Go to Matching Pair': 'Go to Matching Pair',
'go!': 'go!',
'Help': 'Help',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'includes': 'includes',
'inspect attributes': 'inspect attributes',
'Install': 'Install',
'Installed applications': 'Installed applications',
'invalid password.': 'invalid password.',
'Key bindings': 'Key bindings',
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': 'languages',
'Languages': 'Languages',
'Last saved on:': 'Last saved on:',
'loading...': 'loading...',
'locals': 'locals',
'Login': 'Login',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Logout': 'Logout',
'Match Pair': 'Match Pair',
'Merge Lines': 'Merge Lines',
'models': 'models',
'Models': 'Models',
'Modules': 'Modules',
'modules': 'modules',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'New simple application': 'New simple application',
'Next Edit Point': 'Next Edit Point',
'online designer': 'online designer',
'Original/Translation': 'Original/Translation',
'Overwrite installed app': 'Overwrite installed app',
'Pack all': 'Pack all',
'Peeking at file': 'Peeking at file',
'Plugins': 'Plugins',
'plugins': 'plugins',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Powered by',
'Previous Edit Point': 'Previous Edit Point',
'Private files': 'Private files',
'private files': 'private files',
'Reload routes': 'Reload routes',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'request': 'request',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'revert': 'revert',
'rules are not defined': 'rules are not defined',
'rules:': 'rules:',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Saved file hash:',
'session': 'session',
'session expired': 'session expired',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Site': 'Site',
'skip to generate': 'skip to generate',
'Start a new app': 'Start a new app',
'Start wizard': 'Start wizard',
'static': 'static',
'Static files': 'Static files',
'Step': 'Step',
'Submit': 'Submit',
'successful': 'successful',
'test': 'test',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no models': 'There are no models',
'There are no plugins': 'There are no plugins',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'to previous version.': 'to previous version.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'toggle breakpoint': 'toggle breakpoint',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Translation strings for the application',
'try view': 'try view',
'Uninstall': 'Uninstall',
'update': 'update',
'update all languages': 'update all languages',
'upload': 'upload',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload file:': 'upload file:',
'upload plugin file:': 'upload plugin file:',
'variables': 'variables',
'Version': 'Version',
'Version %s.%s.%s (%s) %s': 'Version %s.%s.%s (%s) %s',
'Versioning': 'Versioning',
'views': 'views',
'Views': 'Views',
'Web Framework': 'Web Framework',
'web2py is up to date': 'web2py is up to date',
'web2py Recent Tweets': 'web2py Recent Tweets',
'Wrap with Abbreviation': 'Wrap with Abbreviation',
}

View File

@@ -0,0 +1,574 @@
# -*- coding: utf-8 -*-
{
'!langcode!': 'en-us',
'!langname!': 'English (US)',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{row} deleted',
'%s %%{row} updated': '%s %%{row} updated',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(something like "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'Abort': 'Abort',
'About': 'About',
'About application': 'About application',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin disabled because no admin password',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'Admin is disabled because insecure channel': 'Admin is disabled because insecure channel',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Administrator Password:',
'and rename it:': 'and rename it:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin is disabled because insecure channel',
'Application': 'Application',
'application "%s" uninstalled': 'application "%s" uninstalled',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'application compiled',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'application is compiled and cannot be designed',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Are you sure you want to delete file "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"?': 'Are you sure you want to uninstall application "%s"?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ATTENTION: you cannot edit the running application!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'back',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errors and sessions cleaned',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Cannot be empty',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'cannot create file',
'cannot upload file "%(filename)s"': 'cannot upload file "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Change admin password',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'check all',
'Check for upgrades': 'Check for upgrades',
'Check to delete': 'Check to delete',
'Checking for upgrades...': 'Checking for upgrades...',
'Clean': 'Clean',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Compile',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'compiled application removed',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'Controllers',
'controllers': 'controllers',
'Count': 'Count',
'Create': 'Create',
'create file with filename:': 'create file with filename:',
'Create/Upload': 'Create/Upload',
'created by': 'created by',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'currently running': 'currently running',
'currently saved or': 'currently saved or',
'data uploaded': 'data uploaded',
'Database': 'Database',
'Database %s select': 'Database %s select',
'Database administration': 'Database administration',
'database administration': 'database administration',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Date and Time',
'db': 'db',
'Debug': 'Debug',
'defines tables': 'defines tables',
'Delete': 'Delete',
'delete': 'delete',
'delete all checked': 'delete all checked',
'delete plugin': 'delete plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Delete:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Deploy',
'Deploy on Google App Engine': 'Deploy on Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'design',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'done!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'Edit': 'Edit',
'edit all': 'edit all',
'Edit application': 'Edit application',
'edit controller:': 'edit controller:',
'Edit current record': 'Edit current record',
'edit views:': 'edit views:',
'Editing %s': 'Editing %s',
'Editing Language file': 'Editing Language file',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Error': 'Error',
'Error logs for "%(app)s"': 'Error logs for "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'Errors',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'export as csv file',
'Exports:': 'Exports:',
'exposes': 'exposes',
'exposes:': 'exposes:',
'extends': 'extends',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': 'failed to reload module because:',
'File': 'File',
'file "%(filename)s" created': 'file "%(filename)s" created',
'file "%(filename)s" deleted': 'file "%(filename)s" deleted',
'file "%(filename)s" uploaded': 'file "%(filename)s" uploaded',
'file "%s" of %s restored': 'file "%s" of %s restored',
'file changed on disk': 'file changed on disk',
'file does not exist': 'file does not exist',
'file not found': 'file not found',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'file saved on %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'Graph Model': 'Graph Model',
'graph model': 'graph model',
'Help': 'Help',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Import/Export',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'includes',
'Indent with tabs': 'Indent with tabs',
'inspect attributes': 'inspect attributes',
'Install': 'Install',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Installed applications',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'internal error',
'internal error: %s': 'internal error: %s',
'Internal State': 'Internal State',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'invalid password',
'invalid password.': 'invalid password.',
'Invalid Query': 'Invalid Query',
'invalid request': 'invalid request',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'invalid ticket',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'language file "%(filename)s" created/updated',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': 'languages',
'Languages': 'Languages',
'Last Revision': 'Last Revision',
'Last saved on:': 'Last saved on:',
'License for': 'License for',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Login',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Login/Register': 'Login/Register',
'Logout': 'Logout',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'merge',
'Models': 'Models',
'models': 'models',
'Modified On': 'Modified On',
'Modules': 'Modules',
'modules': 'modules',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'new application "%s" created',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'New Record',
'new record inserted': 'new record inserted',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'NO': 'NO',
'no changes': 'no changes',
'No databases in this application': 'No databases in this application',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'or import from csv file',
'Original/Translation': 'Original/Translation',
'Overview': 'Overview',
'Overwrite installed app': 'Overwrite installed app',
'Pack all': 'Pack all',
'Pack compiled': 'Pack compiled',
'Pack custom': 'Pack custom',
'pack plugin': 'pack plugin',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Peeking at file',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Plugin "%s" in application',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Powered by',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Query:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record does not exist': 'record does not exist',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Reload routes',
'Remove compiled': 'Remove compiled',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'return': 'return',
'Revert': 'Revert',
'revert': 'revert',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Rows selected',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Saved file hash:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'session': 'session',
'session expired': 'session expired',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'some files could not be removed',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'Start wizard',
'state': 'state',
'static': 'static',
'Static': 'Static',
'Static files': 'Static files',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Submit': 'Submit',
'submit': 'submit',
'successful': 'successful',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'test',
'Testing application': 'Testing application',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'Theme': 'Theme',
'There are no controllers': 'There are no controllers',
'There are no models': 'There are no models',
'There are no modules': 'There are no modules',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'There are no static files',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'There are no views',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'to previous version.': 'to previous version.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Translation strings for the application',
'try something like': 'try something like',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Unable to check for upgrades',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'unable to delete file "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download app because:': 'Unable to download app because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'unable to parse csv file',
'unable to uninstall "%s"': 'unable to uninstall "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'uncheck all',
'Uninstall': 'Uninstall',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'update',
'update all languages': 'update all languages',
'Update:': 'Update:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upload': 'upload',
'Upload': 'Upload',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload file:': 'upload file:',
'upload plugin file:': 'upload plugin file:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Version',
'Versioning': 'Versioning',
'Views': 'Views',
'views': 'views',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py is up to date',
'web2py online debugger': 'web2py online debugger',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'YES',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

507
applications/admin/languages/es.py Normal file → Executable file
View File

@@ -3,29 +3,40 @@
'!langcode!': 'es',
'!langname!': 'Español',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"actualice" es una expresión opcional como "campo1=\'nuevo_valor\'". No se puede actualizar o eliminar resultados de un JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s filas eliminadas',
'%s %%{row} updated': '%s filas actualizadas',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access, experimental)': '(requiere acceso a internet, experimental)',
'(something like "it-it")': '(algo como "it-it")',
'(version %s)': '(version %s)',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(file **gluon/contrib/plural_rules/%s.py** is not found)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'@markmin\x01Number of entries: **%s**': 'Number of entries: **%s**',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(archivo **gluon/contrib/plural_rules/%s.py** no se ha encontrado)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'Ocurrió un error, por favor [[recargue %s]] la página',
'@markmin\x01Number of entries: **%s**': 'Número de entradas: **%s**',
'@markmin\x01Searching: **%s** %%{file}': 'Buscando: **%s** archivos',
'A new version of web2py is available': 'Hay una nueva versión de web2py disponible',
'A new version of web2py is available: %s': 'Hay una nueva versión de web2py disponible: %s',
'About': 'acerca de',
'Abort': 'Abort',
'About': 'Acerca de',
'About application': 'Acerca de la aplicación',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'código adicional para su aplicación',
'Additional code for your application': 'Código adicional para su aplicación',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin deshabilitado por falta de contraseña',
'admin disabled because not supported on google app engine': 'admin deshabilitado, no es soportado en GAE',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin deshabilitado, imposible acceder al archivo con la contraseña',
'Admin is disabled because insecure channel': 'Admin deshabilitado, el canal no es seguro',
'Admin is disabled because unsecure channel': 'Admin deshabilitado, el canal no es seguro',
'Admin language': 'Lenguaje de administración',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'interfaz administrativa',
'Administrator Password:': 'Contraseña del Administrador:',
'An error occured, please %s the page': 'Ha ocurrido un error, por favor %s la página',
@@ -34,264 +45,387 @@
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'admin deshabilitado, el canal no es seguro',
'Application': 'Application',
'application "%s" uninstalled': 'aplicación "%s" desinstalada',
'application %(appname)s installed with md5sum: %(digest)s': 'application %(appname)s installed with md5sum: %(digest)s',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'aplicación compilada',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'la aplicación está compilada y no puede ser modificada',
'Application name:': 'Nombre de la aplicación:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': '¿Está seguro que desea eliminar el archivo "%s"?',
'Are you sure you want to delete plugin "%s"?': '¿Está seguro que quiere eliminar el plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to delete this object?': '¿Está seguro que quiere eliminar este objeto?',
'Are you sure you want to uninstall application "%s"': '¿Está seguro que desea desinstalar la aplicación "%s"',
'Are you sure you want to uninstall application "%s"?': '¿Está seguro que desea desinstalar la aplicación "%s"?',
'Are you sure you want to upgrade web2py now?': '¿Está seguro que desea actualizar web2py ahora?',
'Are you sure?': 'Are you sure?',
'Are you sure?': '¿Está seguro?',
'arguments': 'argumentos',
'at char %s': 'en el caracter %s',
'at char %s': 'en el carácter %s',
'at line %s': 'en la línea %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENCION: Inicio de sesión requiere una conexión segura (HTTPS) o localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENCION: NO EJECUTE VARIAS PRUEBAS SIMULTANEAMENTE, NO SON THREAD SAFE.',
'ATTENTION: you cannot edit the running application!': 'ATENCION: no puede modificar la aplicación que se ejecuta!',
'Autocomplete': 'Autocomplete',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENCIÓN: Inicio de sesión requiere una conexión segura (HTTPS) o localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENCIÓN: NO EJECUTE VARIAS PRUEBAS SIMULTANEAMENTE, NO SON THREAD SAFE.',
'ATTENTION: you cannot edit the running application!': 'ATENCIÓN: ¡no puede modificar la aplicación que se ejecuta!',
'Autocomplete': 'Autocompletar',
'Autocomplete Python Code': 'Autocompletar código Python',
'Available databases and tables': 'Bases de datos y tablas disponibles',
'Available Databases and Tables': 'Available Databases and Tables',
'Available Databases and Tables': 'Bases de Datos y Tablas Disponibles',
'back': 'atrás',
'Back to the plugins list': 'Back to the plugins list',
'breakpoint': 'breakpoint',
'breakpoints': 'breakpoints',
'browse': 'buscar',
'Cache': 'Cache',
'cache': 'cache',
'cache, errors and sessions cleaned': 'cache, errores y sesiones eliminados',
'Back to the plugins list': 'Regresar a la lista de plugins',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'punto de ruptura',
'Breakpoints': 'Breakpoints',
'breakpoints': 'puntos de ruptura',
'browse': 'navegar',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Caché',
'cache': 'caché',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'caché, errores y sesiones eliminados',
'can be a git repo': 'puede ser un repositorio git',
'Cancel': 'Cancel',
'Cancel': 'Cancelar',
'Cannot be empty': 'No puede estar vacío',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'No se puede compilar: hay errores en su aplicación. Depure, corrija errores y vuelva a intentarlo.',
'Cannot compile: there are errors in your app:': 'No se puede compilar: hay errores en su aplicación:',
'cannot create file': 'no es posible crear archivo',
'cannot upload file "%(filename)s"': 'no es posible subir archivo "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'cambie contraseña admin',
'change editor settings': 'cambiar la configuración del editor',
'Change Password': 'Cambie Contraseña',
'Changelog': 'Changelog',
'check all': 'marcar todos',
'Check for upgrades': 'buscar actualizaciones',
'Check to delete': 'Marque para eliminar',
'Checking for upgrades...': 'Buscando actulizaciones...',
'Clean': 'limpiar',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'haga clic aquí para ver ejemplos en línea',
'click here for the administrative interface': 'haga clic aquí para usar la interfaz administrativa',
'Click row to expand traceback': 'Click row to expand traceback',
'Checking for upgrades...': 'Buscando actualizaciones...',
'Clean': 'Limpiar',
'Clear': 'Clear',
'Clear CACHE?': '¿Limpiar CACHÉ?',
'Clear DISK': 'Limpiar DISCO',
'Clear RAM': 'Limpiar RAM',
'click here for online examples': 'haga click aquí para ver ejemplos en línea',
'click here for the administrative interface': 'haga click aquí para usar la interfaz administrativa',
'Click row to expand traceback': 'Click en la fila para expandir el rastreo',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'haga clic para buscar actualizaciones',
'click to open': 'click para abrir',
'Client IP': 'IP del Cliente',
'code': 'código',
'Code listing': 'Listado de código',
'collapse/expand all': 'contraer/expandir todo',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'commit (mercurial)': 'confirmar (mercurial)',
'Compile': 'compilar',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Compilar',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'aplicación compilada removida',
'Condition': 'Condition',
'continue': 'continuar',
'Controllers': 'Controladores',
'controllers': 'controladores',
'Count': 'Count',
'Count': 'Contar',
'Create': 'Crear',
'create file with filename:': 'cree archivo con nombre:',
'Create new application using the Wizard': 'Crear nueva aplicación utilizando el asistente',
'create new application:': 'nombre de la nueva aplicación:',
'Create new simple application': 'Cree una nueva aplicación',
'Create/Upload': 'Create/Upload',
'Create/Upload': 'Crear/Subir',
'created by': 'creado por',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Solicitud en curso',
'Current response': 'Respuesta en curso',
'Current session': 'Sesión en curso',
'currently running': 'currently running',
'currently running': 'actualmente en ejecución',
'currently saved or': 'actualmente guardado o',
'customize me!': 'Adaptame!',
'customize me!': 'Adáptame!',
'data uploaded': 'datos subidos',
'Database': 'Database',
'database': 'base de datos',
'Database %s select': 'Database %s select',
'database %s select': 'selección en base de datos %s',
'Database administration': 'Database administration',
'database administration': 'administración base de datos',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Database Administration (appadmin)': 'Administración de Base de Datos (appadmin)',
'Date and Time': 'Fecha y Hora',
'db': 'db',
'Debug': 'Debug',
'defines tables': 'define tablas',
'Delete': 'Elimine',
'Debug': 'Depurar',
'defines tables': 'definir tablas',
'Delete': 'Eliminar',
'delete': 'eliminar',
'delete all checked': 'eliminar marcados',
'delete plugin': 'eliminar plugin',
'Delete this file (you will be asked to confirm deletion)': 'Elimine este fichero (se le pedirá confirmación)',
'Delete:': 'Elimine:',
'Delete:': 'Eliminar:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Deploy',
'Deploy on Google App Engine': 'Instale en Google App Engine',
'Deploy to OpenShift': 'Instale en OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': 'Descripción',
'Description:': 'Description:',
'design': 'modificar',
'DESIGN': 'DISEÑO',
'Design for': 'Diseño para',
'Detailed traceback description': 'Detailed traceback description',
'Detailed traceback description': 'Descripción detallada del rastreo',
'details': 'detalles',
'direction: ltr': 'direction: ltr',
'direction: ltr': 'dirección: ltr',
'directory not found': 'directory not found',
'Disable': 'Deshabilitar',
'DISK': 'DISK',
'docs': 'docs',
'Docs': 'Docs',
'Done!': 'Done!',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISCO',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'documentos',
'Docs': 'Documentos',
'Done!': 'Listo!',
'done!': 'listo!',
'Downgrade': 'Downgrade',
'Download': 'Descargar',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download files via http:': 'descargar archivos via http:',
'download layouts': 'descargar layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'descargar plugins',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'Correo electrónico',
'EDIT': 'EDITAR',
'Edit': 'editar',
'edit all': 'edit all',
'Edit application': 'Editar aplicación',
'edit controller': 'editar controlador',
'edit controller:': 'edit controller:',
'edit controller:': 'editar controlador:',
'Edit current record': 'Edite el registro actual',
'Edit Profile': 'Editar Perfil',
'edit views:': 'editar vistas:',
'Editing %s': 'Editing %s',
'Editing %s': 'Editando %s',
'Editing file': 'Editando archivo',
'Editing file "%s"': 'Editando archivo "%s"',
'Editing Language file': 'Editando archivo de lenguaje',
'Editing myclientapi': 'Editing myclientapi',
'Editing myemail': 'Editing myemail',
'Editing rbare': 'Editing rbare',
'Editing ul': 'Editing ul',
'Enable': 'Enable',
'Enterprise Web Framework': 'Armazón Empresarial para Internet',
'Editing myclientapi': 'Editando myclientapi',
'Editing myemail': 'Editando myemail',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editing rbare': 'Editando rbare',
'Editing ul': 'Editando ul',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Habilitar',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Framework Web Empresarial',
'Error': 'Error',
'Error logs for "%(app)s"': 'Bitácora de errores en "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'errores',
'Errors in form, please check it out.': 'Errors in form, please check it out.',
'Errors in form, please check it out.': 'Errores en el formulario, verifique por favor.',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Atributos de la instancia de Excepción',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Expand Abbreviation',
'Exit Fullscreen': 'Salir de pantalla completa',
'Expand Abbreviation': 'Expandir abreviación',
'Expand Abbreviation (html files only)': 'Expandir Abreviación (sólo archivos html)',
'export as csv file': 'exportar como archivo CSV',
'Exports:': 'Exports:',
'exposes': 'expone',
'exposes:': 'expone:',
'extends': 'extiende',
'failed to compile file because:': 'failed to compile file because:',
'failed to compile file because:': 'falló la compilación de archivos debido a:',
'failed to reload module': 'recarga del módulo ha fallado',
'failed to reload module because:': 'no es posible recargar el módulo por:',
'File': 'File',
'File': 'Archivo',
'file "%(filename)s" created': 'archivo "%(filename)s" creado',
'file "%(filename)s" deleted': 'archivo "%(filename)s" eliminado',
'file "%(filename)s" uploaded': 'archivo "%(filename)s" subido',
'file "%(filename)s" was not deleted': 'archivo "%(filename)s" no fué eliminado',
'file "%(filename)s" was not deleted': 'archivo "%(filename)s" no fue eliminado',
'file "%s" of %s restored': 'archivo "%s" de %s restaurado',
'file changed on disk': 'archivo modificado en el disco',
'file does not exist': 'archivo no existe',
'file not found': 'file not found',
'file saved on %(time)s': 'archivo guardado %(time)s',
'file saved on %s': 'archivo guardado %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Buscar próximo',
'Find Previous': 'Bucar anterior',
'First name': 'Nombre',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Funciones sin doctests equivalen a pruebas [aceptadas].',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals',
'graph model': 'graph model',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graficación del modelo',
'Graph Model': 'Graph Model',
'Group ID': 'ID de Grupo',
'Hello World': 'Hola Mundo',
'Help': 'ayuda',
'here': 'here',
'here': 'aquí',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Si el reporte anterior contiene un número de tiquete este indica un falla en la ejecución del controlador, antes de cualquier intento de ejecutat doctests. Esto generalmente se debe a un error en la indentación o un error por fuera del código de la función.\r\nUn titulo verde indica que todas las pruebas pasaron (si existen). En dicho caso los resultados no se muestran.',
'Image': 'Image',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'Image': 'Imagen',
'import': 'import',
'Import/Export': 'Importar/Exportar',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'incluye',
'Indent with tabs': 'Indent with tabs',
'insert new': 'inserte nuevo',
'insert new %s': 'inserte nuevo %s',
'inspect attributes': 'inspect attributes',
'Install': 'instalar',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installation of %(plugin)s for %(app)s app': 'Installation of %(plugin)s for %(app)s app',
'inspect attributes': 'inspeccionar atributos',
'Install': 'Instalar',
'Installation of %(plugin)s for %(app)s': 'Instalación de %(plugin)s para %(app)s',
'Installation of %(plugin)s for %(app)s app': 'Instalación de %(plugin)s para %(app)s app',
'Installed applications': 'Aplicaciones instaladas',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'Interaction at %s line %s': 'Interacción en %s línea %s',
'Interactive console': 'Terminal interactiva',
'internal error': 'error interno',
'internal error: %s': 'internal error: %s',
'Internal State': 'Estado Interno',
'Invalid action': 'Acción inválida',
'Invalid application name': 'Invalid application name',
'Invalid application name': 'Nombre de aplicación no válido',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'Correo inválido',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'contraseña inválida',
'invalid password.': 'invalid password.',
'invalid password.': 'contraseña inválida.',
'Invalid Query': 'Consulta inválida',
'invalid request': 'solicitud inválida',
'Invalid request': 'Invalid request',
'Invalid request': 'Petición inválida',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'tiquete inválido',
'Key': 'Key',
'Key bindings': 'Key bindings',
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
'Key bindings for ZenCoding Plugin': 'Key bindings para el Plugin ZenCoding',
'Keyboard shortcuts': 'Atajos de teclado',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'archivo de lenguaje "%(filename)s" creado/actualizado',
'Language files (static strings) updated': 'Archivos de lenguaje (cadenas estáticas) actualizados',
'languages': 'lenguajes',
'Languages': 'Lenguajes',
'languages updated': 'lenguajes actualizados',
'Last name': 'Apellido',
'Last Revision': 'Last Revision',
'Last saved on:': 'Guardado en:',
'License for': 'Licencia para',
'License:': 'License:',
'lists by ticket': 'lists by ticket',
'License:': 'Licencia:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'listas por ticket',
'Loading...': 'Loading...',
'loading...': 'cargando...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals',
'Login': 'Inicio de sesión',
'login': 'inicio de sesión',
'Login': 'Inicio de sesión',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Inicio de sesión para la Interfaz Administrativa',
'Login/Register': 'Login/Register',
'Logout': 'fin de sesión',
'lost password': 'lost password',
'Lost Password': 'Contraseña perdida',
'Main Menu': 'Main Menu',
'manage': 'gestionar',
'Manage': 'Gestionar',
'Manage Cache': 'Manage Cache',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Administrar Caché',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'combinar',
'Models': 'Modelos',
'models': 'modelos',
'Models': 'Modelos',
'Modified On': 'Modified On',
'Modules': 'Módulos',
'modules': 'módulos',
'Multi User Mode': 'Multi User Mode',
'Name': 'Nombre',
'new application "%s" created': 'nueva aplicación "%s" creada',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'Asistente para nueva aplicación',
'new plugin installed': 'nuevo plugin instalado',
'New plugin installed: %s': 'New plugin installed: %s',
'New plugin installed: web2py.plugin.attachment.w2p': 'New plugin installed: web2py.plugin.attachment.w2p',
'New plugin installed: web2py.plugin.dialog.w2p': 'New plugin installed: web2py.plugin.dialog.w2p',
'New plugin installed: web2py.plugin.math2py.w2p': 'New plugin installed: web2py.plugin.math2py.w2p',
'New plugin installed: web2py.plugin.timezone.w2p': 'New plugin installed: web2py.plugin.timezone.w2p',
'New plugin installed: %s': 'Nuevo plugin instalado: %s',
'New plugin installed: web2py.plugin.attachment.w2p': 'Nuevo plugin instalado: web2py.plugin.attachment.w2p',
'New plugin installed: web2py.plugin.dialog.w2p': 'Nuevo plugin instalado: web2py.plugin.dialog.w2p',
'New plugin installed: web2py.plugin.math2py.w2p': 'Nuevo plugin instalado: web2py.plugin.math2py.w2p',
'New plugin installed: web2py.plugin.timezone.w2p': 'Nuevo plugin instalado: web2py.plugin.timezone.w2p',
'New Record': 'Registro nuevo',
'new record inserted': 'nuevo registro insertado',
'New simple application': 'Nueva aplicación',
'next': 'next',
'next': 'siguiente',
'next %s rows': 'next %s rows',
'next 100 rows': '100 filas siguientes',
'NO': 'NO',
'no changes': 'no changes',
'No databases in this application': 'No hay bases de datos en esta aplicación',
'No Interaction yet': 'No Interaction yet',
'No Interaction yet': 'No hay interacción',
'no match': 'no encontrado',
'no package selected': 'no package selected',
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
'online designer': 'online designer',
'or alternatively': 'or alternatively',
'no package selected': 'ningún paquete seleccionado',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'No ticket_storage.txt found under /private folder': 'No se encontró ticket_storage.txt en la carpeta /private',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'diseñador en línea',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'o alternativamente',
'Or Get from URL:': 'O obtener desde una URL:',
'or import from csv file': 'o importar desde archivo CSV',
'or provide app url:': 'o provea URL de la aplicación:',
'or provide application url:': 'o provea URL de la aplicación:',
'Origin': 'Origen',
'Original/Translation': 'Original/Traducción',
'Overview': 'Overview',
'Overview': 'Revisión general',
'Overwrite installed app': 'sobreescriba la aplicación instalada',
'Pack all': 'empaquetar todo',
'Pack compiled': 'empaquete compiladas',
@@ -300,170 +434,261 @@
'PAM authenticated user, cannot change password here': 'usuario autenticado por PAM, no puede cambiar la contraseña aquí',
'Password': 'Contraseña',
'password changed': 'contraseña cambiada',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Visualizando archivo',
'Please': 'Please',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Por favor',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'Plugin': 'Plugin',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" eliminado',
'Plugin "%s" in application': 'Plugin "%s" en aplicación',
'Plugin page': 'Plugin page',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Página del plugin',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Este sitio usa',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '100 filas anteriores',
'Private files': 'Archivos privados',
'private files': 'archivos privados',
'Project Progress': 'Project Progress',
'Project Progress': 'Progreso del Proyecto',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Consulta:',
'RAM': 'RAM',
'Rapid Search': 'Rapid Search',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Búsqueda rápida',
'Record': 'Record',
'record': 'registro',
'record does not exist': 'el registro no existe',
'record id': 'id de registro',
'Record ID': 'ID de Registro',
'refresh': 'refresh',
'Register': 'Registrese',
'Record id': 'Record id',
'refresh': 'recargar',
'register': 'register',
'Register': 'Regístrese',
'Registration key': 'Contraseña de Registro',
'reload': 'reload',
'Reload routes': 'Reload routes',
'Remove compiled': 'eliminar compiladas',
'reload': 'recargar',
'Reload routes': 'Recargar rutas',
'Remove compiled': 'eliminar compilados',
'Removed Breakpoint on %s at line %s': 'Eliminado punto de ruptura en %s en la línea %s',
'Replace': 'Reemplazar',
'Replace All': 'Reemplazar todos',
'Repository (%s)': 'Repository (%s)',
'Repository: %s': 'Repository: %s',
'request': 'request',
'Repository (%s)': 'Repositorio (%s)',
'Repository: %s': 'Repositorio: %s',
'request': 'petición',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'archivo Resolución de Conflicto',
'response': 'response',
'response': 'respuesta',
'restart': 'restart',
'restore': 'restaurar',
'return': 'return',
'Revert': 'Revert',
'revert': 'revertir',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Rol',
'Roles': 'Roles',
'Rows in table': 'Filas en la tabla',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Filas seleccionadas',
'rules are not defined': 'rules are not defined',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'rules are not defined': 'reglas no están definidas',
'Run tests': 'Run tests',
'Run tests in this file': 'Ejecute tests en este archivo',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Ejecute tests en este archivo (para ejecutarlo en todos los archivos, podrías usar el botón etiquetado como 'test')",
'Running on %s': 'Ejecutando en %s',
'Save': 'Guardar',
'save': 'guardar',
'Save file:': 'Guardar:',
'Save file: %s': 'Guardar: %s',
'Save via Ajax': 'Guardar via Ajax',
'Save file:': 'Guardar archivo:',
'Save file: %s': 'Guardar archivo: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Guardar vía Ajax',
'Saved file hash:': 'Hash del archivo guardado:',
'Screenshot %s': 'Screenshot %s',
'Screenshots': 'Screenshots',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'seleccionado(s)',
'session': 'session',
'session': 'sesn',
'session expired': 'sesión expirada',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Establecer punto de ruptura en %s en la línea %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'sitio',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'algunos archivos no pudieron ser removidos',
'source : filesystem': 'source : filesystem',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'fuente : sistema de archivos',
'Start a new app': 'Start a new app',
'Start searching': 'Iniciar búsqueda',
'Start wizard': 'Iniciar asistente',
'state': 'estado',
'Static': 'Static',
'Static': 'Estáticos',
'static': 'estáticos',
'Static files': 'Archivos estáticos',
'Statistics': 'Statistics',
'step': 'step',
'stop': 'stop',
'Statistics': 'Estadísticas',
'Step': 'Step',
'step': 'paso',
'stop': 'parar',
'submit': 'enviar',
'Submit': 'Submit',
'Success!': 'Success!',
'Submit': 'Enviar',
'Success!': '¡Éxito!',
'successful': 'exitoso',
'Sure you want to delete this object?': '¿Está seguro que desea eliminar este objeto?',
'switch to : db': 'switch to : db',
'switch to : db': 'cambiar a : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabla',
'Table': 'Table',
'Table name': 'Nombre de la tabla',
'Temporary': 'Temporary',
'test': 'probar',
'Testing application': 'Probando aplicación',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "consulta" es una condición como "db.tabla1.campo1==\'valor\'". Algo como "db.tabla1.campo1==db.tabla2.campo2" resulta en un JOIN SQL.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'La lógica de la aplicación, cada ruta URL se mapea en una función expuesta en el controlador',
'the application logic, each URL path is mapped in one exposed function in the controller': 'la lógica de la aplicación, cada ruta URL se mapea en una función expuesta en el controlador',
'the data representation, define database tables and sets': 'la representación de datos, define tablas y conjuntos de base de datos',
'The data representation, define database tables and sets': 'La representación de datos, define tablas y conjuntos de base de datos',
'The presentations layer, views are also known as templates': 'La capa de presentación, las vistas también son llamadas plantillas',
'the presentations layer, views are also known as templates': 'la capa de presentación, las vistas también son llamadas plantillas',
'Theme': 'Theme',
'There are no controllers': 'No hay controladores',
'There are no models': 'No hay modelos',
'There are no modules': 'No hay módulos',
'There are no plugins': 'No hay plugins',
'There are no private files': 'No hay archivos privados',
'There are no static files': 'No hay archivos estáticos',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'No hay traductores, sólo el lenguaje por defecto es soportado',
'There are no views': 'No hay vistas',
'These files are not served, they are only available from within your app': 'Estos archivos no son servidos, ellos solo estan disponibles para su aplicación',
'These files are served without processing, your images go here': 'Estos archivos son servidos sin procesar, sus imágenes van aquí',
'these files are served without processing, your images go here': 'estos archivos son servidos sin procesar, sus imágenes van aquí',
'This is the %(filename)s template': 'Esta es la plantilla %(filename)s',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'Ticket': 'Tiquete',
'These files are not served, they are only available from within your app': 'Estos archivos no se proveen, ellos sólo están disponibles para su aplicación',
'These files are served without processing, your images go here': 'Estos archivos se proveen sin procesar, sus imágenes van aquí',
'these files are served without processing, your images go here': 'estos archivos se proveen sin procesar, sus imágenes van aquí',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Está es la plantilla %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'esta página para ver si un punto de ruptura fue configurado y la depuración es requerida.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Timestamp',
'TM': 'MR',
'to previous version.': 'a la versión previa.',
'To create a plugin, name a file/folder plugin_[name]': 'Para crear un plugin, nombre un archivo/carpeta plugin_[nombre]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'To emulate a breakpoint programatically, write:': 'Para emular un punto de ruptura programáticamente, escriba',
'to use the debugger!': '¡usar el debugger!',
'toggle breakpoint': 'alternar punto de ruptura',
'Toggle comment': 'Toggle comment',
'Toggle comment': 'Alternar comentario',
'Toggle Fullscreen': 'Alternar pantalla completa',
'Traceback': 'Traceback',
'Traceback': 'Rastreo',
'translation strings for the application': 'cadenas de caracteres de traducción para la aplicación',
'Translation strings for the application': 'Cadenas de caracteres de traducción para la aplicación',
'try': 'intente',
'try something like': 'intente algo como',
'Try the mobile interface': 'Pruebe la interfaz móvil',
'try view': 'try view',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'try view': 'Pruebe la vista',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Escriba algún código Python aquí y teclee la tecla Enter para ejecutarlo',
'Unable to check for upgrades': 'No es posible verificar la existencia de actualizaciones',
'unable to create application "%s"': 'no es posible crear la aplicación "%s"',
'unable to delete file "%(filename)s"': 'no es posible eliminar el archivo "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'no es posible eliminar plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'No es posible la descarga',
'Unable to download app': 'No es posible descargar la aplicación',
'Unable to download app because:': 'No es posible descargar la aplicación porque:',
'Unable to download because': 'No es posible descargar porque',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'no es posible analizar el archivo CSV',
'unable to uninstall "%s"': 'no es posible instalar "%s"',
'unable to upgrade because "%s"': 'no es posible actualizar porque "%s"',
'uncheck all': 'desmarcar todos',
'Uninstall': 'desinstalar',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'actualizar',
'update all languages': 'actualizar todos los lenguajes',
'Update:': 'Actualice:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'actualize web2py ahora',
'upload': 'upload',
'Upload': 'Subir',
'Upload & install packed application': 'Suba e instale aplicación empaquetada',
'Upload a package:': 'Subir un paquete:',
'Upload and install packed application': 'Suba e instale una aplicación empaquetada',
'upload application:': 'subir aplicación:',
'Upload existing application': 'Suba esta aplicación',
'upload file:': 'suba archivo:',
'upload plugin file:': 'suba archivo de plugin:',
'upload file:': 'suba un archivo:',
'upload plugin file:': 'suba un archivo de plugin:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, y ~(...) para NOT, para crear consultas más complejas.',
'User': 'User',
'User ID': 'ID de Usuario',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Versión',
'Versioning': 'Versiones',
'versioning': 'versiones',
'Versioning': 'Versioning',
'view': 'vista',
'Views': 'Vistas',
'views': 'vistas',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py está actualizado',
'web2py online debugger': 'web2py online debugger',
'web2py online debugger': 'web2py debugger en línea',
'web2py Recent Tweets': 'Tweets Recientes de web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py actualizado; favor reiniciar',
'Welcome to web2py': 'Bienvenido a web2py',
'YES': 'SI',
'Yes': 'Yes',
'You are going to install': 'You are going to install',
'You need to set up and reach a': 'You need to set up and reach a',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
'Your can inspect variables using the console below': 'Your can inspect variables using the console below',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': '',
'Yes': '',
'You are going to install': 'Vas a instalar',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'Puedes inspeccionar las variables utilizando la terminal de abajo',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'Necesitas configurar y obtener un',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Tu aplicación será bloqueada hasta que des click en un botón de acción (siguiente, paso, continuar, etc.)',
}

668
applications/admin/languages/fr.py Normal file → Executable file
View File

@@ -1,279 +1,649 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'fr',
'!langname!': 'Français',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" est une expression en option tels que "field1 = \'newvalue\'". Vous ne pouvez pas mettre à jour ou supprimer les résultats d\'une jointure "a JOIN"',
'%Y-%m-%d': '%d-%m-%Y',
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': 'lignes %s supprimées',
'%s %%{row} updated': 'lignes %s mises à jour',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d-%m-%Y',
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
'(**%.0d MB**)': '(**%.0d MB**)',
'(file **gluon/contrib/plural_rules/%s.py** is not found)': '(file **gluon/contrib/plural_rules/%s.py** is not found)',
'(requires internet access)': '(nécessite un accès Internet)',
'(requires internet access, experimental)': '(nécessite un accès Internet, expérimentale)',
'(something like "it-it")': '(quelque chose comme "it-it") ',
'(version %s)': '(version %s)',
'**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}',
'**%(items)s** items, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** items, **%(bytes)s** %%{byte(bytes)}',
'**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)',
'?': '?',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'@markmin\x01Searching: **%s** %%{file}': 'Cherche: **%s** fichiers',
'``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)',
'A new version of web2py is available: %s': 'Une nouvelle version de web2py est disponible: %s ',
'A new version of web2py is available: Version 1.68.2 (2009-10-21 09:59:29)\n': 'Une nouvelle version de web2py est disponible: Version 1.68.2 (2009-10-21 09:59:29)\r\n',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: nécessite une connexion sécurisée (HTTPS) ou être en localhost. ',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: les tests ne sont pas thread-safe DONC NE PAS EFFECTUER DES TESTS MULTIPLES SIMULTANÉMENT.',
'ATTENTION: you cannot edit the running application!': "ATTENTION: vous ne pouvez pas modifier l'application qui tourne!",
'About': 'à propos',
'About application': "A propos de l'application",
'Abort': 'Abort',
'About': 'À propos',
'About application': "À propos de l'application",
'Accept Terms': 'Termes acceptés',
'Add breakpoint': 'Ajouter une interruption',
'additional code for your application': 'code supplémentaire pour votre application',
'Additional code for your application': 'Code additionnel pour votre application',
'Admin design page': 'Page de conception admin',
'admin disabled because no admin password': 'admin désactivée car aucun mot de passe admin',
'admin disabled because not supported on google app engine': 'admin désactivée car non prise en charge sur Google Apps engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': "admin désactivée car incapable d'accéder au fichier mot de passe",
'Admin is disabled because insecure channel': 'Admin est désactivé parce que canal non sécurisé',
'Admin language': "Language de l'admin",
'Administrator Password:': 'Mot de passe Administrateur:',
'Admin versioning page': 'Admin versioning page',
'administrative interface': "interface d'administration",
'Administrator Password:': "Mot de passe de l'administrateur:",
'An error occured, please [[reload %s]] the page': 'Une erreur cest produite, sil vous plait [[reload %s]] la page',
'and rename it (required):': 'et renommez-la (obligatoire):',
'and rename it:': 'et renommez-le:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin est désactivé parce que canal non sécurisé',
'Application': 'Application',
'application "%s" uninstalled': 'application "%s" désinstallée',
'application %(appname)s installed with md5sum: %(digest)s': 'application %(appname)s installée avec md5sum: %(digest)s',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'application compilée',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': "l'application est compilée et ne peut être modifiée",
'Application name:': "Nom de l'application:",
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'ne sont pas utilisé',
'are not used yet': 'ne sont pas encore utilisé',
'Are you sure you want to delete file "%s"?': 'Êtes-vous sûr de vouloir supprimer le fichier «%s»?',
'Are you sure you want to delete plugin "%s"?': 'Êtes-vous sûr de vouloir supprimer le plugin "%s"?',
'Are you sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
'Are you sure you want to uninstall application "%s"?': "Êtes-vous sûr de vouloir désinstaller l'application «%s»?",
'Are you sure you want to upgrade web2py now?': 'Êtes-vous sûr de vouloir mettre à jour web2py maintenant?',
'Available databases and tables': 'Bases de données et tables disponible',
'Are you sure?': 'Êtes vous sûr?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: nécessite une connexion sécurisée (HTTPS) ou être en localhost. ',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: les tests ne sont pas thread-safe DONC NE PAS EFFECTUER DES TESTS MULTIPLES SIMULTANÉMENT.',
'ATTENTION: you cannot edit the running application!': "ATTENTION: vous ne pouvez pas modifier l'application qui tourne!",
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Bases de données et tables disponibles',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'retour',
'Back to the plugins list': 'Retour à la liste de plugins',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Début',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, erreurs et sessions nettoyés',
'can be a git repo': 'can be a git repo',
'Cancel': 'Annuler',
'Cannot be empty': 'Ne peut pas être vide',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Ne peut pas compiler: il y a des erreurs dans votre application. corriger les erreurs et essayez à nouveau.',
'Cannot compile: there are errors in your app:': 'Ne peut pas compiler: il y a des erreurs dans votre application:',
'cannot create file': 'ne peut pas créer de fichier',
'cannot upload file "%(filename)s"': 'ne peut pas charger le fichier "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Changer le mot de passe admin',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'tout sélectionner',
'Check for upgrades': 'Vérifier les mises à jour',
'Check to delete': 'Cocher pour supprimer',
'Checking for upgrades...': 'Vérification des mises à jour ... ',
'Clean': 'nettoyer',
'Clear': 'Effacer',
'Clear CACHE?': 'Effacer le CACHE?',
'Clear DISK': 'Effacer le DISQUE',
'Clear RAM': 'Effacer la RAM',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'Cliquez pour vérifier les mises jour',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'tout réduire/agrandir',
'Command': 'Commande',
'Comment:': 'Commentaire:',
'Commit': 'Valider',
'Commit form': 'Valider le formulaire',
'Committed files': 'Fichiers validés',
'Compile': 'compiler',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'application compilée enlevée',
'Condition': 'Condition',
'continue': 'continuer',
'Controllers': 'Contrôleurs',
'controllers': 'contrôleurs',
'Count': 'Compte',
'Create': 'Créer',
'create file with filename:': 'créer un fichier avec nom de fichier:',
'create new application:': 'créer une nouvelle application:',
'Create new simple application': 'Créer une nouvelle application',
'Create/Upload': 'Create/Upload',
'created by': 'créé par',
'Created by:': 'Créé par:',
'Created On': 'Créé le',
'Created on:': 'Créé le:',
'crontab': 'crontab',
'Current request': 'Requête actuelle',
'Current response': 'Réponse actuelle',
'Current session': 'Session en cours',
'Date and Time': 'Date et heure',
'Delete': 'Supprimer',
'Delete this file (you will be asked to confirm deletion)': 'Supprimer ce fichier (on vous demandera de confirmer la suppression)',
'Delete:': 'Supprimer:',
'Deploy': 'Déployer',
'Deploy on Google App Engine': 'Déployer sur Google App Engine',
'EDIT': 'MODIFIER',
'Edit': 'modifier',
'Edit application': "Modifier l'application",
'Edit current record': 'Modifier cette entrée',
'Editing Language file': 'Modifier le fichier de langue',
'Editing file': 'Modifier le fichier',
'Editing file "%s"': 'Modifier le fichier "% s" ',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error logs for "%(app)s"': 'Journal d\'erreurs pour "%(app)s"',
'Errors': 'erreurs',
'Exception instance attributes': "Attributs d'instance Exception",
'Functions with no doctests will result in [passed] tests.': 'Des fonctions sans doctests entraîneront des tests [passed] .',
'Help': 'aide',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': "Si le rapport ci-dessus contient un numéro de ticket, cela indique une défaillance dans l'exécution du contrôleur, avant toute tentative d'exécuter les doctests. Cela est généralement dû à une erreur d'indentation ou une erreur à l'extérieur du code de la fonction.\r\nUn titre vert indique que tous les tests (si définis) sont passés. Dans ce cas, les résultats des essais ne sont pas affichées.",
'Import/Export': 'Importer/Exporter',
'Install': 'Installer',
'Installed applications': 'Applications installées',
'Internal State': 'État Interne',
'Invalid Query': 'Requête non valide',
'Invalid action': 'Action non valide',
'Language files (static strings) updated': 'Fichiers de langue (chaînes statiques) mis à jour ',
'Languages': 'Langues',
'Last saved on:': 'Dernière sauvegarde le:',
'License for': 'Licence pour',
'Login': 'Connexion',
'Login to the Administrative Interface': "Se connecter à l'interface d'administration",
'Logout': 'déconnexion',
'Models': 'Modèles',
'Modules': 'Modules',
'NO': 'NON',
'New Record': 'Nouvelle Entrée',
'New application wizard': 'Assistant nouvelle application',
'New simple application': 'Nouvelle application simple',
'No databases in this application': 'Aucune base de données dans cette application',
'Original/Translation': 'Original / Traduction',
'Overwrite installed app': "Écraser l'application installée",
'PAM authenticated user, cannot change password here': 'Utilisateur authentifié par PAM, vous ne pouvez pas changer le mot de passe ici',
'Pack all': 'tout empaqueter',
'Pack compiled': 'paquet compilé',
'Peeking at file': 'Jeter un oeil au fichier',
'Plugin "%s" in application': 'Plugin "%s" dans l\'application',
'Plugins': 'Plugins',
'Powered by': 'Propulsé par',
'Query:': 'Requête: ',
'Remove compiled': 'retirer compilé',
'Resolve Conflict file': 'Résoudre les conflits de fichiers',
'Rows in table': 'Lignes de la table',
'Rows selected': 'Lignes sélectionnées',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Lancer les tests dans ce fichier (pour lancer tous les fichiers, vous pouvez également utiliser le bouton nommé 'test')",
'Save': 'Enregistrer',
'Saved file hash:': 'Hash du Fichier enregistré:',
'Site': 'Site',
'Start wizard': "Démarrer l'assistant",
'Static files': 'Fichiers statiques',
'Sure you want to delete this object?': 'Vous êtes sûr de vouloir supprimer cet objet? ',
'TM': 'MD',
'Testing application': "Test de l'application",
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "requête" est une condition comme "db.table1.field1==\'value\'". Quelque chose comme "db.table1.field1==db.table2.field2" aboutit à un JOIN SQL.',
'The application logic, each URL path is mapped in one exposed function in the controller': "La logique de l'application, chaque chemin d'URL est mappé avec une fonction exposée dans le contrôleur",
'The data representation, define database tables and sets': 'La représentation des données, définir les tables et ensembles de la base de données',
'The presentations layer, views are also known as templates': "Les couches de présentation, les vues sont également appelées modples",
'There are no controllers': "Il n'y a pas de contrôleurs",
'There are no models': "Il n'y a pas de modèles",
'There are no modules': "Il n'y a pas de modules",
'There are no plugins': "Il n'y a pas de plugins",
'There are no static files': "Il n'y a pas de fichiers statiques",
'There are no translators, only default language is supported': "Il n'y a pas de traducteurs, seule la langue par défaut est prise en charge",
'There are no views': "Il n'y a pas de vues",
'These files are served without processing, your images go here': 'Ces fichiers sont renvoyés sans traitement, vos images viennent ici',
'This is the %(filename)s template': 'Ceci est le modèle %(filename)s ',
'Ticket': 'Ticket',
'To create a plugin, name a file/folder plugin_[name]': 'Pour créer un plugin, créer un fichier /dossier plugin_[nom]',
'Translation strings for the application': "Chaînes de traduction pour l'application",
'Unable to check for upgrades': 'Impossible de vérifier les mises à jour',
'Unable to download': 'Impossible de télécharger',
'Unable to download app': "Impossible de télécharger l'app",
'Unable to download app because:': "Impossible de télécharger l'app car:",
'Unable to download because': 'Impossible de télécharger car',
'Uninstall': 'désinstaller',
'Update:': 'Mise à jour:',
'Upload & install packed application': "Charger & installer l'application empaquetée",
'Upload a package:': 'Charger un paquet:',
'Upload existing application': 'Charger une application existante',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Utilisez (...)&(...) pour AND, (...)|(...) pour OR, et ~(...) pour NOT afin de construire des requêtes plus complexes. ',
'Use an url:': 'Utiliser une url:',
'Version': 'Version',
'Views': 'Vues',
'Web Framework': 'Framework Web',
'YES': 'OUI',
'additional code for your application': 'code supplémentaire pour votre application',
'admin disabled because no admin password': 'admin désactivée car aucun mot de passe admin',
'admin disabled because not supported on google app engine': 'admin désactivée car non prise en charge sur Google Apps engine',
'admin disabled because unable to access password file': "admin désactivée car incapable d'accéder au fichier mot de passe",
'administrative interface': "interface d'administration",
'and rename it (required):': 'et renommez-la (obligatoire):',
'and rename it:': 'et renommez-le:',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin est désactivé parce que canal non sécurisé',
'application "%s" uninstalled': 'application "%s" désinstallée',
'application %(appname)s installed with md5sum: %(digest)s': 'application %(appname)s installée avec md5sum: %(digest)s',
'application compiled': 'application compilée',
'application is compiled and cannot be designed': "l'application est compilée et ne peut être modifiée",
'arguments': 'arguments',
'back': 'retour',
'cache': 'cache',
'cache, errors and sessions cleaned': 'cache, erreurs et sessions nettoyés',
'cannot create file': 'ne peut pas créer de fichier',
'cannot upload file "%(filename)s"': 'ne peut pas charger le fichier "%(filename)s"',
'check all': 'tout vérifier ',
'click to check for upgrades': 'Cliquez pour vérifier les mises jour',
'code': 'code',
'collapse/expand all': 'tout réduire/agrandir',
'compiled application removed': 'application compilée enlevée',
'controllers': 'contrôleurs',
'create file with filename:': 'créer un fichier avec nom de fichier:',
'create new application:': 'créer une nouvelle application:',
'created by': 'créé par',
'crontab': 'crontab',
'currently running': 'tourne actuellement',
'currently saved or': 'actuellement enregistré ou',
'data uploaded': 'données chargées',
'data uploaded': 'données téléversées',
'Database': 'Base de données',
'database': 'base de données',
'database %s select': 'base de données %s sélectionner',
'Database %s select': 'Database %s select',
'database %s select': 'base de données %s sélectionner',
'Database administration': 'Administration base de données',
'database administration': 'administration base de données',
'db': 'bdd',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Date et heure',
'db': 'bd',
'Debug': 'Debug',
'defines tables': 'définit les tables',
'Delete': 'Supprimer',
'delete': 'supprimer',
'delete all checked': 'supprimer tout ce qui est coché',
'delete plugin': ' supprimer le plugin',
'Delete this file (you will be asked to confirm deletion)': 'Supprimer ce fichier (on vous demandera de confirmer la suppression)',
'Delete:': 'Supprimer:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Démo',
'Deploy': 'Déployer',
'Deploy on Google App Engine': 'Déployer sur Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'conception',
'Detailed traceback description': 'Detailed traceback description',
'details': 'détails',
'direction: ltr': 'direction: ltr',
'docs': 'docs',
'directory not found': 'directory not found',
'Disable': 'Désactiver',
'Disabled': 'Désactivé',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISQUE',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disque effacé',
'DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'documents',
'Docs': 'Documents',
'done!': 'fait!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'télécharger layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'télécharger plugins',
'Download plugins from repository': 'Download plugins from repository',
'EDIT': 'MODIFIER',
'Edit': 'Modifier',
'edit all': 'tout modifier',
'Edit application': "Modifier l'application",
'edit controller': 'modifier contrôleur',
'edit views:': 'modifier vues:',
'edit controller:': 'modifier le contrôleur:',
'Edit current record': 'Modifier cet enregistrement',
'edit views:': 'modifier les vues:',
'Editing %s': 'Modifier %s',
'Editing file': 'Modifier le fichier',
'Editing file "%s"': 'Modifier le fichier "% s" ',
'Editing Language file': 'Modifier le fichier de langue',
'Editing Plural Forms File': 'Modifier le fichier du formulaire pluriel',
'Editor': 'Éditeur',
'Email Address': 'Adresse courriel',
'Enable': 'Activer',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Error',
'Error logs for "%(app)s"': 'Journal d\'erreurs pour "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': "Billet d'erreur",
'Errors': 'Erreurs',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': "Attributs d'instance Exception",
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'export au format CSV',
'Exports:': 'Exportions:',
'exposes': 'expose',
'exposes:': 'expose:',
'extends': 'étend',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'impossible de recharger le module',
'failed to reload module because:': 'impossible de recharger le module car:',
'File': 'Fichier',
'file "%(filename)s" created': 'fichier "%(filename)s" créé',
'file "%(filename)s" deleted': 'fichier "%(filename)s" supprimé',
'file "%(filename)s" uploaded': 'fichier "%(filename)s" chargé',
'file "%s" of %s restored': 'fichier "%s" de %s restauré',
'file changed on disk': 'fichier modifié sur le disque',
'file does not exist': "fichier n'existe pas",
'file not found': 'file not found',
'file saved on %(time)s': 'fichier enregistré le %(time)s',
'file saved on %s': 'fichier enregistré le %s',
'filename': 'nom de fichier',
'Filename': 'Nom de fichier',
'Files added': 'Fichiers ajoutés',
'filter': 'filtre',
'Find Next': 'Trouver les suivants',
'Find Previous': 'Trouver les précédents',
'Form has errors': 'Le formulaire comporte des erreurs',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Des fonctions sans doctests entraîneront des tests [passed] .',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'Mot de passe GAE',
'Generate': 'Générer',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'représentation graphique du modèle',
'Graph Model': 'Représentation graphique du modèle',
'Help': 'aide',
'here': 'ici',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})': 'Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})',
'Hits': 'Hits',
'Home': 'Accueil',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'edition html',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': "Si le rapport ci-dessus contient un numéro de ticket, cela indique une défaillance dans l'exécution du contrôleur, avant toute tentative d'exécuter les doctests. Cela est généralement dû à une erreur d'indentation ou une erreur à l'extérieur du code de la fonction.\r\nUn titre vert indique que tous les tests (si définis) sont passés. Dans ce cas, les résultats des essais ne sont pas affichées.",
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'importer',
'Import/Export': 'Importer/Exporter',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'inclus',
'Indent with tabs': 'Indent with tabs',
'index': 'index',
'insert new': 'insérer nouveau',
'insert new %s': 'insérer nouveau %s',
'inspect attributes': 'inspect attributes',
'Install': 'Installer',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Applications installées',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'erreur interne',
'internal error: %s': 'internal error: %s',
'Internal State': 'État Interne',
'Invalid action': 'Action non valide',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'mot de passe invalide',
'invalid password.': 'invalid password.',
'Invalid Query': 'Requête non valide',
'invalid request': 'Demande incorrecte',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'ticket non valide',
'Key': 'Clé',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'fichier de langue "%(filename)s" créé/mis à jour',
'Language files (static strings) updated': 'Fichiers de langue (chaînes statiques) mis à jour ',
'languages': 'langues',
'loading...': 'Chargement ...',
'Languages': 'Langues',
'Last Revision': 'Dernière révision',
'Last saved on:': 'Dernière sauvegarde le:',
'License for': 'Licence pour',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Chargement...',
'loading...': 'chargement ...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Connexion',
'login': 'connexion',
'Login successful': 'Login successful',
'Login to the Administrative Interface': "Se connecter à l'interface d'administration",
'Login/Register': 'Login/Register',
'Logout': 'déconnexion',
'lost password': 'mot de passe perdu',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
"Mercurial Version Control System Interface[[NEWLINE]]for application '%s'": "Mercurial Version Control System Interface[[NEWLINE]]for application '%s'",
'merge': 'fusionner',
'Models': 'Modèles',
'models': 'modèles',
'Modified On': 'Modifié le',
'Modules': 'Modules',
'modules': 'modules',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'nouvelle application "%s" créée',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'Assistant nouvelle application',
'new plugin installed': 'nouveau plugin installé',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Nouvelle Entrée',
'new record inserted': 'nouvelle entrée insérée',
'New simple application': 'Nouvelle application simple',
'next': 'suivant',
'next %s rows': '%s lignes suivantes',
'next 100 rows': '100 lignes suivantes',
'NO': 'NON',
'no changes': 'no changes',
'No databases in this application': 'Aucune base de données dans cette application',
'No Interaction yet': 'No Interaction yet',
'no match': 'aucune correspondance',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Pas autorisé',
'Not supported': 'Pas supporté',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
'Number of entries: **%s**': 'Number of entries: **%s**',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'ou importer depuis un fichier CSV ',
'or provide app url:': "ou fournir l'URL de l'app:",
'or provide application url:': "ou fournir l'URL de l'application:",
'Original/Translation': 'Original / Traduction',
'Overview': 'Overview',
'Overwrite installed app': "Écraser l'application installée",
'Pack all': 'tout empaqueter',
'Pack compiled': 'paquet compilé',
'Pack custom': 'Pack custom',
'pack plugin': 'paquet plugin',
'PAM authenticated user, cannot change password here': 'Utilisateur authentifié par PAM, vous ne pouvez pas changer le mot de passe ici',
'password changed': 'mot de passe modifié',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Jeter un oeil au fichier',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'SVP',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" supprimé',
'plugins': 'plugins',
'Plugin "%s" in application': 'Plugin "%s" dans l\'application',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugiciels',
'Plugins': 'Plugiciels',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Propulsé par',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '100 lignes précédentes',
'record': 'entrée',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Pousser',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Requête: ',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
'Rapid Search': 'Recherche rapide',
'Record': 'Enregistrement',
'record': 'enregistrement',
'record does not exist': "l'entrée n'existe pas",
'record id': 'id entrée',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Reload routes',
'Remove compiled': 'retirer compilé',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Remplacer',
'Replace All': 'Tout remplacer',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Résoudre les conflits de fichiers',
'response': 'response',
'restart': 'redémarrer',
'restore': 'restaurer',
'revert': 'revenir',
'save': 'sauver',
'return': 'retour',
'Revert': "Revenir vers l'arrière",
'revert': "revenir vers l'arrière",
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Révision %s',
'Revision:': 'Révision:',
'Role': 'Rôle',
'Roles': 'Rôles',
'Rows in Table': 'Rows in Table',
'Rows in table': 'Lignes de la table',
'Rows selected': 'Lignes sélectionnées',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Lancer les tests dans ce fichier (pour lancer tous les fichiers, vous pouvez également utiliser le bouton nommé 'test')",
'Running on %s': 'Running on %s',
'Save': 'Sauvegarder',
'save': 'sauvegarder',
'Save file:': 'Sauvegarder le fichier:',
'Save file: %s': 'Sauvegarder le fichier : %s',
'Save model as...': 'Sauvegarder le modèle sous...',
'Save via Ajax': 'Sauvegarder via Ajax',
'Saved file hash:': 'Hash du Fichier enregistré:',
'Screenshot %s': "Capture d'écran %s",
'Search': 'Rechercher',
'Searching: **%s** %%{file}': 'Searching: **%s** %%{file}',
'Select Files to Package': 'Select Files to Package',
'selected': 'sélectionnés',
'session': 'session',
'session expired': 'la session a expiré ',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Site',
'Size of cache:': 'Taille de la mémoire cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'certains fichiers ne peuvent pas être supprimés',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : système de fichier',
'Start a new app': 'Commencer une nouvelle application',
'Start searching': 'Débuté la recherche',
'Start wizard': "Démarrer l'assistant",
'state': 'état',
'static': 'statiques',
'Static': 'Statique',
'static': 'statique',
'Static files': 'Fichiers statiques',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'arrêt',
'submit': 'envoyer',
'Submit': 'Envoyer',
'successful': 'réussi',
'Sure you want to delete this object?': 'Vous êtes sûr de vouloir supprimer cet objet?',
'switch to : db': 'transférer dans : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'table',
'Table': 'Table',
'Temporary': 'Temporaire',
'test': 'tester',
'Testing application': "Test de l'application",
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "requête" est une condition comme "db.table1.field1==\'value\'". Quelque chose comme "db.table1.field1==db.table2.field2" aboutit à un JOIN SQL.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': "la logique de l'application, chaque chemin d'URL est mappé dans une fonction exposée dans le contrôleur",
'The application logic, each URL path is mapped in one exposed function in the controller': "La logique de l'application, chaque chemin d'URL est mappé avec une fonction exposée dans le contrôleur",
'the data representation, define database tables and sets': 'La représentation des données, définir les tables et ensembles de la base de données',
'The data representation, define database tables and sets': 'La représentation des données, définir les tables et ensembles de la base de données',
'The presentations layer, views are also known as templates': 'Les couches de présentation, les vues sont également appelées modples',
'the presentations layer, views are also known as templates': 'la couche de présentation, les vues sont également appelées modèles',
'Theme': 'Thème',
'There are no controllers': "Il n'y a pas de contrôleurs",
'There are no models': "Il n'y a pas de modèles",
'There are no modules': "Il n'y a pas de modules",
'There are no plugins': "Il n'y a pas de plugins",
'There are no private files': "Il n'y a pas de fichiers privés",
'There are no static files': "Il n'y a pas de fichiers statiques",
'There are no translators': "Il n'y a pas de traducteurs",
'There are no translators, only default language is supported': "Il n'y a pas de traducteurs, seule la langue par défaut est prise en charge",
'There are no views': "Il n'y a pas de vues",
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'Ces fichiers sont renvoyés sans traitement, vos images viennent ici',
'these files are served without processing, your images go here': 'ces fichiers sont servis sans transformation, vos images vont ici',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Ceci est le modèle %(filename)s ',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Billet',
'Ticket ID': 'Identifiant du Billet',
'Ticket Missing': 'Billet manquant',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'TM': 'MD',
'to previous version.': 'à la version précédente.',
'To create a plugin, name a file/folder plugin_[name]': 'Pour créer un plugin, créer un fichier /dossier plugin_[nom]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': "chaînes de traduction de l'application",
'Translation strings for the application': "Chaînes de traduction pour l'application",
'try': 'essayer',
'try something like': 'essayez quelque chose comme',
'Try the mobile interface': "Essayer l'interface pour mobile",
'try view': 'essayer la vue',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Impossible de vérifier les mises à jour',
'unable to create application "%s"': 'impossible de créer l\'application "%s"',
'unable to delete file "%(filename)s"': 'impossible de supprimer le fichier "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'impossible de supprimer le plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Impossible de télécharger',
'Unable to download app': "Impossible de télécharger l'app",
'Unable to download app because:': "Impossible de télécharger l'app car:",
'Unable to download because': 'Impossible de télécharger car',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': "impossible d'analyser les fichiers CSV",
'unable to uninstall "%s"': 'impossible de désinstaller "%s"',
'unable to upgrade because "%s"': 'impossible de mettre à jour car "%s"',
'uncheck all': 'tout décocher',
'Uninstall': 'désinstaller',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'mettre à jour',
'update all languages': 'mettre à jour toutes les langues',
'Update:': 'Mise à jour:',
'Upgrade': 'Mese à jour de version',
'upgrade now': 'mettre à jour maintenant',
'upgrade now to %s': 'mettre à jour maintenant à %s',
'upgrade web2py now': 'mettre à jour web2py maintenant',
'upload': 'charger',
'upload application:': "charger l'application:",
'upload file:': 'charger le fichier:',
'upload': 'téléversé',
'Upload': 'Téléversé',
'Upload & install packed application': "Charger & installer l'application empaquetée",
'Upload a package:': 'Téléverser un paquet:',
'Upload and install packed application': 'Téléversement et installation du paquet applicatif',
'upload application:': "téléverser l'application:",
'Upload existing application': 'Téléverser une application existante',
'upload file:': 'téléverser le fichier:',
'upload plugin file:': 'charger fichier plugin:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Utilisez (...)&(...) pour AND, (...)|(...) pour OR, et ~(...) pour NOT afin de construire des requêtes plus complexes. ',
'Use an url:': 'Utiliser une url:',
'user': 'utilisateur',
'User': 'Utilisateur',
'Username': "Nom d'utilisateur",
'Users': 'Utilisateurs',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Version',
'Versioning': 'Versioning',
'versioning': 'versioning',
'view': 'vue',
'Views': 'Vues',
'views': 'vues',
'web2py Recent Tweets': 'Tweets récents sur web2py ',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Cadre Web',
'web2py Admin Password': 'Mot de passe admin web2py',
'web2py apps to deploy': 'applications web2py à deployer',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py est à jour',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'Tweets récents sur web2py ',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py mis à jour; veuillez le redémarrer',
'Working...': 'Travail en cours...',
'WSGI reference name': 'WSGI reference name',
'YES': 'OUI',
'Yes': 'Oui',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

627
applications/admin/languages/he.py Normal file → Executable file
View File

@@ -1,271 +1,622 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'he-il',
'!langname!': 'עברית',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"עדכן" הוא ביטוי אופציונאלי, כגון "field1=newvalue". אינך יוכל להשתמש בjoin, בעת שימוש ב"עדכן" או "מחק".',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s רשומות נמחקו',
'%s %%{row} updated': '%s רשומות עודכנו',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(requires internet access)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(למשל "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available: %s': 'גירסא חדשה של web2py זמינה: %s',
'Abort': 'Abort',
'About': 'אודות',
'About application': 'אודות אפליקציה',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'קוד נוסף עבור האפליקציה שלך',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'ממשק המנהל מנוטרל כי לא הוגדרה סיסמת מנהל',
'admin disabled because not supported on google app engine': 'ממשק המנהל נוטרל, כי אין תמיכה בGoogle app engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'ממשק מנהל נוטרל, כי לא ניתן לגשת לקובץ הסיסמאות',
'Admin is disabled because insecure channel': 'ממשק האדמין נוטרל בשל גישה לא מאובטחת',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': 'סיסמת מנהל',
'and rename it (required):': 'ושנה את שמו (חובה):',
'and rename it:': 'ושנה את שמו:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'מנהל מסד הנתונים',
'appadmin is disabled because insecure channel': 'מנהל מסד הנתונים נוטרל בשל ערוץ לא מאובטח',
'Application': 'Application',
'application "%s" uninstalled': 'אפליקציה "%s" הוסרה',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'אפליקציה קומפלה',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'לא ניתן לערוך אפליקציה מקומפלת',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'האם אתה בטוח שברצונך למחוק את הקובץ "%s"?',
'Are you sure you want to delete plugin "%s"?': 'האם אתה בטוח שברצונך למחוק את התוסף "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"?': 'האם אתה בטוח שברצונך להסיר את האפליקציה "%s"?',
'Are you sure you want to upgrade web2py now?': 'האם אתה בטוח שאתה רוצה לשדרג את web2py עכשיו?',
'Are you sure?': 'Are you sure?',
'arguments': 'פרמטרים',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'לתשומת ליבך: ניתן להתחבר רק בערוץ מאובטח (HTTPS) או מlocalhost',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'לתשומת ליבך: אין לערוך מספר בדיקות במקביל, שכן הן עשויות להפריע זו לזו',
'ATTENTION: you cannot edit the running application!': 'לתשומת ליבך: לא ניתן לערוך אפליקציה בזמן הרצתה',
'About': 'אודות',
'About application': 'אודות אפליקציה',
'Additional code for your application': 'Additional code for your application',
'Admin is disabled because insecure channel': 'ממשק האדמין נוטרל בשל גישה לא מאובטחת',
'Admin language': 'Admin language',
'Administrator Password:': 'סיסמת מנהל',
'Application name:': 'Application name:',
'Are you sure you want to delete file "%s"?': 'האם אתה בטוח שברצונך למחוק את הקובץ "%s"?',
'Are you sure you want to delete plugin "%s"?': 'האם אתה בטוח שברצונך למחוק את התוסף "%s"?',
'Are you sure you want to uninstall application "%s"?': 'האם אתה בטוח שברצונך להסיר את האפליקציה "%s"?',
'Are you sure you want to upgrade web2py now?': 'האם אתה בטוח שאתה רוצה לשדרג את web2py עכשיו?',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'מסדי נתונים וטבלאות זמינים',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'אחורה',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'מטמון',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'מטמון, שגיאות וסשן נוקו',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'אינו יכול להישאר ריק',
'Cannot compile: there are errors in your app:': 'לא ניתן לקמפל: ישנן שגיאות באפליקציה שלך:',
'cannot create file': 'לא מצליח ליצור קובץ',
'cannot upload file "%(filename)s"': 'לא הצלחתי להעלות את הקובץ "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'סיסמת מנהל שונתה',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'סמן הכל',
'Check for upgrades': 'check for upgrades',
'Check to delete': 'סמן כדי למחוק',
'Checking for upgrades...': 'מחפש עדכונים',
'Clean': 'נקה',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'לחץ כדי לחפש עדכונים',
'code': 'קוד',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'קמפל',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'אפליקציה מקומפלת הוסרה',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'בקרים',
'controllers': 'בקרים',
'Count': 'Count',
'Create': 'צור',
'create file with filename:': 'צור קובץ בשם:',
'create new application:': 'צור אפליקציה חדשה:',
'Create new simple application': 'צור אפליקציה חדשה',
'Create/Upload': 'Create/Upload',
'created by': 'נוצר ע"י',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'משימות מתוזמנות',
'Current request': 'בקשה נוכחית',
'Current response': 'מענה נוכחי',
'Current session': 'סשן זה',
'currently running': 'currently running',
'currently saved or': 'נשמר כעת או',
'data uploaded': 'המידע הועלה',
'Database': 'Database',
'database': 'מסד נתונים',
'Database %s select': 'Database %s select',
'database %s select': 'מסד הנתונים %s נבחר',
'Database administration': 'Database administration',
'database administration': 'ניהול מסד נתונים',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'תאריך ושעה',
'db': 'מסד נתונים',
'Debug': 'Debug',
'defines tables': 'הגדר טבלאות',
'Delete': 'מחק',
'delete': 'מחק',
'delete all checked': 'סמן הכל למחיקה',
'delete plugin': 'מחק תוסף',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'מחק:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'העלה ל Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'עיצוב',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: rtl',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'הסתיים!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'EDIT': 'ערוך!',
'Edit': 'ערוך',
'edit all': 'edit all',
'Edit application': 'ערוך אפליקציה',
'edit controller': 'ערוך בקר',
'edit controller:': 'edit controller:',
'Edit current record': 'ערוך רשומה נוכחית',
'Editing Language file': 'עורך את קובץ השפה',
'edit views:': 'ערוך קיבצי תצוגה:',
'Editing %s': 'Editing %s',
'Editing file "%s"': 'עורך את הקובץ "%s"',
'Editing Language file': 'עורך את קובץ השפה',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'סביבת הפיתוח לרשת',
'Error': 'Error',
'Error logs for "%(app)s"': 'דו"ח שגיאות עבור אפליקציה "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'שגיאות',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'נתוני החריגה',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'פונקציות שלא הוגדר להן doctest ירשמו כבדיקות ש[עברו בהצלחה].',
'Help': 'עזרה',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'אם בדו"ח לעיל מופיע מספר דו"ח שגיאה, זה מצביע על שגיאה בבקר, עוד לפני שניתן היה להריץ את הdoctest. לרוב מדובר בשגיאת הזחה, או שגיאה שאינה בקוד של הפונקציה.\r\nכותרת ירוקה מצביע על כך שכל הבדיקות (אם הוגדרו) עברו בהצלחה, במידה ותוצאות הבדיקה אינן מופיעות.',
'Import/Export': 'יבא\יצא',
'Install': 'התקן',
'Installed applications': 'אפליקציות מותקנות',
'Internal State': 'מצב מובנה',
'Invalid Query': 'שאילתה לא תקינה',
'Invalid action': 'הוראה לא קיימת',
'Language files (static strings) updated': 'קובץ השפה (מחרוזות סטאטיות) עודכן',
'Languages': 'שפות',
'Last saved on:': 'לאחרונה נשמר בתאריך:',
'License for': 'רשיון עבור',
'Login': 'התחבר',
'Login to the Administrative Interface': 'התחבר לממשק המנהל',
'Logout': 'התנתק',
'Models': 'מבני נתונים',
'Modules': 'מודולים',
'NO': 'לא',
'New Record': 'רשומה חדשה',
'New application wizard': 'New application wizard',
'New simple application': 'New simple application',
'No databases in this application': 'אין מסדי נתונים לאפליקציה זו',
'Original/Translation': 'מקור\תרגום',
'Overwrite installed app': 'התקן על גבי אפלקציה מותקנת',
'PAM authenticated user, cannot change password here': 'שינוי סיסמא באמצעות PAM אינו יכול להתבצע כאן',
'Pack all': 'ארוז הכל',
'Pack compiled': 'ארוז מקומפל',
'Peeking at file': 'מעיין בקובץ',
'Plugin "%s" in application': 'פלאגין "%s" של אפליקציה',
'Plugins': 'תוספים',
'Powered by': 'מופעל ע"י',
'Query:': 'שאילתה:',
'Remove compiled': 'הסר מקומפל',
'Resolve Conflict file': 'הסר קובץ היוצר קונפליקט',
'Rows in table': 'רשומות בטבלה',
'Rows selected': 'רשומות נבחרו',
'Saved file hash:': 'גיבוב הקובץ השמור:',
'Site': 'אתר',
'Start wizard': 'start wizard',
'Static files': 'קבצים סטאטיים',
'Sure you want to delete this object?': 'האם אתה בטוח שברצונך למחוק אובייקט זה?',
'TM': 'סימן רשום',
'Testing application': 'בודק את האפליקציה',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"שאליתה" היא תנאי כגון "db1.table1.filed1=\'value\'" ביטוי כמו db.table1.field1=db.table2.field1 יחולל join',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no controllers': 'אין בקרים',
'There are no models': 'אין מבני נתונים',
'There are no modules': 'אין מודולים',
'There are no plugins': 'There are no plugins',
'There are no static files': 'אין קבצים סטאטיים',
'There are no translators, only default language is supported': 'אין תרגומים. רק שפת ברירת המחדל נתמכת',
'There are no views': 'אין קבצי תצוגה',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'This is the %(filename)s template': 'זוהי תבנית הקובץ %(filename)s ',
'Ticket': 'דו"ח שגיאה',
'Ticket ID': 'Ticket ID',
'To create a plugin, name a file/folder plugin_[name]': 'כדי ליצור תוסף, קרא לקובץ או סיפריה בשם לפי התבנית plugin_[name]',
'Traceback': 'Traceback',
'Translation strings for the application': 'Translation strings for the application',
'Unable to check for upgrades': 'לא ניתן היה לבדוק אם יש שדרוגים',
'Unable to download app because:': 'לא ניתן היה להוריד את האפליקציה כי:',
'Unable to download because': 'לא הצלחתי להוריד כי',
'Uninstall': 'הסר התקנה',
'Update:': 'עדכן:',
'Upload & install packed application': 'העלה והתקן אפליקציה ארוזה',
'Upload a package:': 'Upload a package:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'השתמש ב (...)&(...) עבור תנאי AND, (...)|(...) עבור תנאי OR ו~(...) עבור תנאי NOT ליצירת שאילתות מורכבות',
'Use an url:': 'Use an url:',
'Version': 'גירסא',
'Views': 'מראה',
'YES': 'כן',
'additional code for your application': 'קוד נוסף עבור האפליקציה שלך',
'admin disabled because no admin password': 'ממשק המנהל מנוטרל כי לא הוגדרה סיסמת מנהל',
'admin disabled because not supported on google app engine': 'ממשק המנהל נוטרל, כי אין תמיכה בGoogle app engine',
'admin disabled because unable to access password file': 'ממשק מנהל נוטרל, כי לא ניתן לגשת לקובץ הסיסמאות',
'administrative interface': 'administrative interface',
'and rename it (required):': 'ושנה את שמו (חובה):',
'and rename it:': 'ושנה את שמו:',
'appadmin': 'מנהל מסד הנתונים',
'appadmin is disabled because insecure channel': 'מנהל מסד הנתונים נוטרל בשל ערוץ לא מאובטח',
'application "%s" uninstalled': 'אפליקציה "%s" הוסרה',
'application compiled': 'אפליקציה קומפלה',
'application is compiled and cannot be designed': 'לא ניתן לערוך אפליקציה מקומפלת',
'arguments': 'פרמטרים',
'back': 'אחורה',
'cache': 'מטמון',
'cache, errors and sessions cleaned': 'מטמון, שגיאות וסשן נוקו',
'cannot create file': 'לא מצליח ליצור קובץ',
'cannot upload file "%(filename)s"': 'לא הצלחתי להעלות את הקובץ "%(filename)s"',
'check all': 'סמן הכל',
'click to check for upgrades': 'לחץ כדי לחפש עדכונים',
'code': 'קוד',
'collapse/expand all': 'collapse/expand all',
'compiled application removed': 'אפליקציה מקומפלת הוסרה',
'controllers': 'בקרים',
'create file with filename:': 'צור קובץ בשם:',
'create new application:': 'צור אפליקציה חדשה:',
'created by': 'נוצר ע"י',
'crontab': 'משימות מתוזמנות',
'currently running': 'currently running',
'currently saved or': 'נשמר כעת או',
'data uploaded': 'המידע הועלה',
'database': 'מסד נתונים',
'database %s select': 'מסד הנתונים %s נבחר',
'database administration': 'ניהול מסד נתונים',
'db': 'מסד נתונים',
'defines tables': 'הגדר טבלאות',
'delete': 'מחק',
'delete all checked': 'סמן הכל למחיקה',
'delete plugin': 'מחק תוסף',
'design': 'עיצוב',
'direction: ltr': 'direction: rtl',
'done!': 'הסתיים!',
'download layouts': 'download layouts',
'download plugins': 'download plugins',
'edit controller': 'ערוך בקר',
'edit views:': 'ערוך קיבצי תצוגה:',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'יצא לקובץ csv',
'Exports:': 'Exports:',
'exposes': 'חושף את',
'exposes:': 'exposes:',
'extends': 'הרחבה של',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': 'נכשל בטעינה חוזרת של מודול בגלל:',
'File': 'File',
'file "%(filename)s" created': 'הקובץ "%(filename)s" נוצר',
'file "%(filename)s" deleted': 'הקובץ "%(filename)s" נמחק',
'file "%(filename)s" uploaded': 'הקובץ "%(filename)s" הועלה',
'file "%s" of %s restored': 'הקובץ "%s" of %s שוחזר',
'file changed on disk': 'קובץ שונה על גבי הדיסק',
'file does not exist': 'קובץ לא נמצא',
'file not found': 'file not found',
'file saved on %(time)s': 'הקובץ נשמר בשעה %(time)s',
'file saved on %s': 'הקובץ נשמר ב%s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'פונקציות שלא הוגדר להן doctest ירשמו כבדיקות ש[עברו בהצלחה].',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Help': 'עזרה',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'עורך ויזואלי',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'אם בדו"ח לעיל מופיע מספר דו"ח שגיאה, זה מצביע על שגיאה בבקר, עוד לפני שניתן היה להריץ את הdoctest. לרוב מדובר בשגיאת הזחה, או שגיאה שאינה בקוד של הפונקציה.\r\nכותרת ירוקה מצביע על כך שכל הבדיקות (אם הוגדרו) עברו בהצלחה, במידה ותוצאות הבדיקה אינן מופיעות.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'יבא\\יצא',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'מכיל',
'Indent with tabs': 'Indent with tabs',
'insert new': 'הכנס נוסף',
'insert new %s': 'הכנס %s נוסף',
'inspect attributes': 'inspect attributes',
'Install': 'התקן',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'אפליקציות מותקנות',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'שגיאה מובנית',
'internal error: %s': 'internal error: %s',
'Internal State': 'מצב מובנה',
'Invalid action': 'הוראה לא קיימת',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'סיסמא שגויה',
'invalid password.': 'invalid password.',
'Invalid Query': 'שאילתה לא תקינה',
'invalid request': 'בקשה לא תקינה',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'דו"ח שגיאה לא קיים',
'language file "%(filename)s" created/updated': 'קובץ השפה "%(filename)s" נוצר\עודכן',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'קובץ השפה "%(filename)s" נוצר\\עודכן',
'Language files (static strings) updated': 'קובץ השפה (מחרוזות סטאטיות) עודכן',
'languages': 'שפות',
'Languages': 'שפות',
'Last Revision': 'Last Revision',
'Last saved on:': 'לאחרונה נשמר בתאריך:',
'License for': 'רשיון עבור',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'טוען...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'התחבר',
'login': 'התחבר',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'התחבר לממשק המנהל',
'Login/Register': 'Login/Register',
'Logout': 'התנתק',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'מזג',
'Models': 'מבני נתונים',
'models': 'מבני נתונים',
'Modified On': 'Modified On',
'Modules': 'מודולים',
'modules': 'מודולים',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'האפליקציה "%s" נוצרה',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'פלאגין חדש הותקן',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'רשומה חדשה',
'new record inserted': 'הרשומה נוספה',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': '100 הרשומות הבאות',
'NO': 'לא',
'no changes': 'no changes',
'No databases in this application': 'אין מסדי נתונים לאפליקציה זו',
'No Interaction yet': 'No Interaction yet',
'no match': 'לא נמצאה התאמה',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'או יבא מקובץ csv',
'or provide app url:': 'או ספק כתובת url של אפליקציה',
'Original/Translation': 'מקור\\תרגום',
'Overview': 'Overview',
'Overwrite installed app': 'התקן על גבי אפלקציה מותקנת',
'Pack all': 'ארוז הכל',
'Pack compiled': 'ארוז מקומפל',
'Pack custom': 'Pack custom',
'pack plugin': 'ארוז תוסף',
'PAM authenticated user, cannot change password here': 'שינוי סיסמא באמצעות PAM אינו יכול להתבצע כאן',
'password changed': 'סיסמא שונתה',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'מעיין בקובץ',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'תוסף "%(plugin)s" נמחק',
'Plugin "%s" in application': 'פלאגין "%s" של אפליקציה',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'תוספים',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'מופעל ע"י',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '100 הרשומות הקודמות',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'שאילתה:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'רשומה',
'record does not exist': 'הרשומה אינה קיימת',
'record id': 'מזהה רשומה',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Reload routes',
'Remove compiled': 'הסר מקומפל',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'הסר קובץ היוצר קונפליקט',
'response': 'response',
'restart': 'restart',
'restore': 'שחזר',
'return': 'return',
'Revert': 'Revert',
'revert': 'חזור לגירסא קודמת',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows in table': 'רשומות בטבלה',
'Rows selected': 'רשומות נבחרו',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'גיבוב הקובץ השמור:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'נבחרו',
'session': 'session',
'session expired': 'תם הסשן',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'שורת פקודה',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'אתר',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'לא ניתן היה להסיר חלק מהקבצים',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'start wizard',
'state': 'מצב',
'Static': 'Static',
'static': 'קבצים סטאטיים',
'Static files': 'קבצים סטאטיים',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'submit': 'שלח',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'האם אתה בטוח שברצונך למחוק אובייקט זה?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'טבלה',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'בדיקות',
'Testing application': 'בודק את האפליקציה',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"שאליתה" היא תנאי כגון "db1.table1.filed1=\'value\'" ביטוי כמו db.table1.field1=db.table2.field1 יחולל join',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'הלוגיקה של האפליקציה, כל url ממופה לפונקציה חשופה בבקר',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': 'ייצוג המידע, בו מוגדרים טבלאות ומבנים',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': 'שכבת התצוגה, המכונה גם template',
'Theme': 'Theme',
'There are no controllers': 'אין בקרים',
'There are no models': 'אין מבני נתונים',
'There are no modules': 'אין מודולים',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'אין קבצים סטאטיים',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'אין תרגומים. רק שפת ברירת המחדל נתמכת',
'There are no views': 'אין קבצי תצוגה',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': 'אלו הם קבצים הנשלחים מהשרת ללא עיבוד. הכנס את התמונות כאן',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'זוהי תבנית הקובץ %(filename)s ',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'דו"ח שגיאה',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'TM': 'סימן רשום',
'to previous version.': 'אין גירסא קודמת',
'To create a plugin, name a file/folder plugin_[name]': 'כדי ליצור תוסף, קרא לקובץ או סיפריה בשם לפי התבנית plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': 'מחרוזות תרגום עבור האפליקציה',
'Translation strings for the application': 'Translation strings for the application',
'try': 'נסה',
'try something like': 'נסה משהו כמו',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'לא ניתן היה לבדוק אם יש שדרוגים',
'unable to create application "%s"': 'נכשל ביצירת האפליקציה "%s"',
'unable to delete file "%(filename)s"': 'נכשל במחיקת הקובץ "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'נכשל במחיקת התוסף "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download app because:': 'לא ניתן היה להוריד את האפליקציה כי:',
'Unable to download because': 'לא הצלחתי להוריד כי',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'לא הצלחתי לנתח את הקלט של קובץ csv',
'unable to uninstall "%s"': 'לא ניתן להסיר את "%s"',
'unable to upgrade because "%s"': 'לא ניתן היה לשדרג כי "%s"',
'uncheck all': 'הסר סימון מהכל',
'Uninstall': 'הסר התקנה',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'עדכן',
'update all languages': 'עדכן את כלל קיבצי השפה',
'Update:': 'עדכן:',
'Upgrade': 'Upgrade',
'upgrade now': 'upgrade now',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'שדרג את web2py עכשיו',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': 'העלה והתקן אפליקציה ארוזה',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload application:': 'העלה אפליקציה:',
'upload file:': 'העלה קובץ:',
'upload plugin file:': 'העלה קובץ תוסף:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'השתמש ב (...)&(...) עבור תנאי AND, (...)|(...) עבור תנאי OR ו~(...) עבור תנאי NOT ליצירת שאילתות מורכבות',
'Use an url:': 'Use an url:',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'משתנים',
'Version': 'גירסא',
'Versioning': 'Versioning',
'versioning': 'מנגנון גירסאות',
'view': 'הצג',
'Views': 'מראה',
'views': 'מראה',
'web2py Recent Tweets': 'ציוצים אחרונים של web2py',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py מותקנת בגירסתה האחרונה',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'ציוצים אחרונים של web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py שודרגה; נא אתחל אותה',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'כן',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

301
applications/admin/languages/it.py Normal file → Executable file
View File

@@ -3,37 +3,54 @@
'!langcode!': 'it',
'!langname!': 'Italiano',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" è un\'espressione opzionale come "campo1=\'nuovo valore\'". Non si può fare "update" o "delete" dei risultati di un JOIN ',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s righe ("record") cancellate',
'%s %%{row} updated': '%s righe ("record") modificate',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d/%m/%Y',
'%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S',
'(requires internet access)': '(requires internet access)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(qualcosa simile a "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(file **gluon/contrib/plural_rules/%s.py** is not found)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available: %s': 'È disponibile una nuova versione di web2py: %s',
'Abort': 'Abort',
'About': 'informazioni',
'About application': "Informazioni sull'applicazione",
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'righe di codice aggiuntive per la tua applicazione',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'amministrazione disabilitata per mancanza di password amministrativa',
'admin disabled because not supported on google app engine': 'amministrazione non supportata da Google Apps Engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'amministrazione disabilitata per impossibilità di leggere il file delle password',
'Admin is disabled because insecure channel': 'amministrazione disabilitata: comunicazione non sicura',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Password Amministratore:',
'An error occured, please %s the page': 'An error occured, please %s the page',
'and rename it (required):': 'e rinominala (obbligatorio):',
'and rename it:': 'e rinominala:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin ',
'appadmin is disabled because insecure channel': 'amministrazione app (appadmin) disabilitata: comunicazione non sicura',
'Application': 'Application',
'application "%s" uninstalled': 'applicazione "%s" disinstallata',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'applicazione compilata',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': "l'applicazione è compilata e non si può modificare",
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Confermi di voler cancellare il file "%s"?',
@@ -41,45 +58,85 @@
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"?': 'Confermi di voler disinstallare l\'applicazione "%s"?',
'Are you sure you want to upgrade web2py now?': 'Confermi di voler aggiornare web2py ora?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': "ATTENZIONE: L'accesso richiede una connessione sicura (HTTPS) o l'esecuzione di web2py in locale (connessione su localhost)",
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTZIONE: NON ESEGUIRE PIÙ TEST IN PARALLELO (I TEST NON SONO "THREAD SAFE")',
'ATTENTION: you cannot edit the running application!': "ATTENZIONE: non puoi modificare l'applicazione correntemente in uso ",
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Database e tabelle disponibili',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'indietro',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'pulitura cache, errori and sessioni ',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Non può essere vuoto',
'Cannot compile: there are errors in your app:': "Compilazione fallita: ci sono errori nell'applicazione.",
'cannot create file': 'impossibile creare il file',
'cannot upload file "%(filename)s"': 'impossibile caricare il file "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'change admin password',
'change editor settings': 'change editor settings',
'change password': 'cambia password',
'Changelog': 'Changelog',
'check all': 'controlla tutto',
'Check for upgrades': 'check for upgrades',
'Check to delete': 'Seleziona per cancellare',
'Checking for upgrades...': 'Controllo aggiornamenti in corso...',
'Clean': 'pulisci',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'clicca per vedere gli esempi',
'click here for the administrative interface': "clicca per l'interfaccia amministrativa",
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'clicca per controllare presenza di aggiornamenti',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'compila',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': "rimosso il codice compilato dell'applicazione",
'Condition': 'Condition',
'continue': 'continue',
'Controller': 'Controller',
'Controllers': 'Controllers',
'controllers': 'controllers',
'Copyright': 'Copyright',
'Count': 'Count',
'Create': 'crea',
'create file with filename:': 'crea un file col nome:',
'create new application:': 'create new application:',
'Create new simple application': 'Crea nuova applicazione',
'Create/Upload': 'Create/Upload',
'created by': 'creato da',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Richiesta (request) corrente',
'Current response': 'Risposta (response) corrente',
@@ -90,8 +147,11 @@
'data uploaded': 'dati caricati',
'Database': 'Database',
'database': 'database',
'Database %s select': 'Database %s select',
'database %s select': 'database %s select',
'Database administration': 'Database administration',
'database administration': 'amministrazione database',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Data and Ora',
'db': 'db',
'DB Model': 'Modello di DB',
@@ -103,19 +163,44 @@
'delete plugin': 'cancella plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Cancella:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'Installa su Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'progetta',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'fatto!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'EDIT': 'MODIFICA',
'Edit': 'modifica',
'edit all': 'edit all',
'Edit application': 'Modifica applicazione',
'edit controller': 'modifica controller',
'edit controller:': 'edit controller:',
@@ -124,96 +209,187 @@
'Edit This App': 'Modifica questa applicazione',
'edit views:': 'modifica viste (view):',
'Editing %s': 'Editing %s',
'Editing Language file': 'Editing Language file',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Error',
'Error logs for "%(app)s"': 'Log degli errori per "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'errori',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Expand Abbreviation',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'esporta come file CSV',
'Exports:': 'Exports:',
'exposes': 'espone',
'exposes:': 'exposes:',
'extends': 'estende',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': 'ricaricamento modulo fallito perché:',
'File': 'File',
'file "%(filename)s" created': 'creato il file "%(filename)s"',
'file "%(filename)s" deleted': 'cancellato il file "%(filename)s"',
'file "%(filename)s" uploaded': 'caricato il file "%(filename)s"',
'file "%s" of %s restored': 'ripristinato "%(filename)s"',
'file changed on disk': 'il file ha subito una modifica su disco',
'file does not exist': 'file inesistente',
'file not found': 'file not found',
'file saved on %(time)s': "file salvato nell'istante %(time)s",
'file saved on %s': 'file salvato: %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'I test delle funzioni senza "doctests" risulteranno sempre [passed].',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Hello World': 'Salve Mondo',
'Help': 'aiuto',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'modifica come html',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Importa/Esporta',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'include',
'Indent with tabs': 'Indent with tabs',
'Index': 'Indice',
'insert new': 'inserisci nuovo',
'insert new %s': 'inserisci nuovo %s',
'inspect attributes': 'inspect attributes',
'Install': 'installa',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Applicazioni installate',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'errore interno',
'internal error: %s': 'internal error: %s',
'Internal State': 'Stato interno',
'Invalid action': 'Azione non valida',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'password non valida',
'invalid password.': 'invalid password.',
'Invalid Query': 'Richiesta (query) non valida',
'invalid request': 'richiesta non valida',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'ticket non valido',
'Key': 'Key',
'Key bindings': 'Key bindings',
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'file linguaggio "%(filename)s" creato/aggiornato',
'Language files (static strings) updated': 'Linguaggi (documenti con stringhe statiche) aggiornati',
'languages': 'linguaggi',
'Languages': 'Linguaggi',
'Last Revision': 'Last Revision',
'Last saved on:': 'Ultimo salvataggio:',
'Layout': 'Layout',
'License for': 'Licenza relativa a',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'caricamento...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Accesso',
'login': 'accesso',
'Login successful': 'Login successful',
'Login to the Administrative Interface': "Accesso all'interfaccia amministrativa",
'Login/Register': 'Login/Register',
'Logout': 'uscita',
'lost password': 'lost password',
'Main Menu': 'Menu principale',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'Menu Model': 'Menu Modelli',
'merge': 'unisci',
'Models': 'Modelli',
'models': 'modelli',
'Modified On': 'Modified On',
'Modules': 'Moduli',
'modules': 'moduli',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'creata la nuova applicazione "%s"',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'installato nuovo plugin',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Nuovo elemento (record)',
'new record inserted': 'nuovo record inserito',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'prossime 100 righe',
'NO': 'NO',
'no changes': 'no changes',
'No databases in this application': 'Nessun database presente in questa applicazione',
'No Interaction yet': 'No Interaction yet',
'no match': 'nessuna corrispondenza',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'online designer',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'oppure importa da file CSV',
'or provide app url:': "oppure fornisci url dell'applicazione:",
'Original/Translation': 'Originale/Traduzione',
'Overview': 'Overview',
'Overwrite installed app': 'sovrascrivi applicazione installata',
'Pack all': 'crea pacchetto',
'Pack compiled': 'crea pacchetto del codice compilato',
@@ -221,87 +397,170 @@
'pack plugin': 'crea pacchetto del plugin',
'PAM authenticated user, cannot change password here': 'utente autenticato tramite PAM, impossibile modificare password qui',
'password changed': 'password modificata',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Uno sguardo al file',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" cancellato',
'Plugin "%s" in application': 'Plugin "%s" nell\'applicazione',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'I Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Powered by',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '100 righe precedenti',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Richiesta (query):',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'record',
'record does not exist': 'il record non esiste',
'record id': 'ID del record',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'registrazione',
'reload': 'reload',
'Reload routes': 'Reload routes',
'Remove compiled': 'rimozione codice compilato',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'File di risoluzione conflitto',
'response': 'response',
'restart': 'restart',
'restore': 'ripristino',
'return': 'return',
'Revert': 'Revert',
'revert': 'versione precedente',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in table': 'Righe nella tabella',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Righe selezionate',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Hash del file salvato:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'selezionato',
'session': 'session',
'session expired': 'sessions scaduta',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'sito',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'non è stato possibile rimuovere alcuni files',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'start wizard',
'state': 'stato',
'static': 'statico',
'Static': 'Static',
'static': 'statico',
'Static files': 'Files statici',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Stylesheet': 'Foglio di stile (stylesheet)',
'Submit': 'Submit',
'submit': 'invia',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Vuoi veramente cancellare questo oggetto?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabella',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'test',
'Testing application': 'Test applicazione in corsg',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La richiesta (query) è una condizione come ad esempio "db.tabella1.campo1==\'valore\'". Una condizione come "db.tabella1.campo1==db.tabella2.campo2" produce un "JOIN" SQL.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'logica dell\'applicazione, ogni percorso "URL" corrisponde ad una funzione esposta da un controller',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': 'rappresentazione dei dati, definizione di tabelle di database e di "set" ',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': 'Presentazione dell\'applicazione, viste (views, chiamate anche "templates")',
'Theme': 'Theme',
'There are no controllers': 'Non ci sono controller',
'There are no models': 'Non ci sono modelli',
'There are no modules': 'Non ci sono moduli',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'Non ci sono file statici',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Non ci sono traduzioni, viene solo supportato il linguaggio di base',
'There are no views': 'Non ci sono viste ("view")',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': 'questi files vengono serviti così come sono, le immagini vanno qui',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Questo è il template %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'TM': 'TM',
'to previous version.': 'torna a versione precedente',
'To create a plugin, name a file/folder plugin_[name]': 'Per creare un plugin, chiamare un file o cartella plugin_[nome]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
@@ -312,21 +571,31 @@
'try something like': 'prova qualcosa come',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Impossibile controllare presenza di aggiornamenti',
'unable to create application "%s"': 'impossibile creare applicazione "%s"',
'unable to delete file "%(filename)s"': 'impossibile rimuovere file "%(plugin)s"',
'unable to delete file plugin "%(plugin)s"': 'impossibile rimuovere file di plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download app because:': 'Impossibile scaricare applicazione perché',
'Unable to download because': 'Impossibile scaricare perché',
'Unable to download because:': 'Unable to download because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'non riesco a decodificare questo file CSV',
'unable to uninstall "%s"': 'impossibile disinstallare "%s"',
'unable to upgrade because "%s"': 'impossibile aggiornare perché "%s"',
'uncheck all': 'smarca tutti',
'Uninstall': 'disinstalla',
'Uninstall': 'Disinstalla',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'aggiorna',
'update all languages': 'aggiorna tutti i linguaggi',
'Update:': 'Aggiorna:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'upgrade web2py now',
'upload': 'upload',
'Upload': 'Upload',
@@ -338,21 +607,43 @@
'upload plugin file:': 'carica file di plugin:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Per costruire richieste (query) più complesse si usano (...)&(...) come "e" (AND), (...)|(...) come "o" (OR), e ~(...) come negazione (NOT).',
'Use an url:': 'Use an url:',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Versione',
'Version %s.%s.%s %s (%s)': 'Version %s.%s.%s %s (%s)',
'Version %s.%s.%s (%s) %s': 'Version %s.%s.%s (%s) %s',
'versioning': 'sistema di versioni',
'Versioning': 'Versioning',
'versioning': 'sistema di versioni',
'View': 'Vista',
'view': 'vista',
'Views': 'viste',
'Views': 'Viste',
'views': 'viste',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py è aggiornato',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'Tweets recenti per web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py aggiornato; prego riavviarlo',
'Welcome %s': 'Benvenuto %s',
'Welcome to web2py': 'Benvenuto su web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'SI',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

601
applications/admin/languages/ja.py Normal file → Executable file
View File

@@ -1,189 +1,586 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'ja-jp',
'!langname!': '日本語',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s rows deleted',
'%s %%{row} updated': '%s rows updated',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(インターネットアクセスが必要)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(例: "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'@markmin\x01Searching: **%s** %%{file}': '検索中: **%s** ファイル',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 安全(HTTPS)な接続でログインするかlocalhostで実行されている必要があります。',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: テストはスレッドセーフではないので複数のテストを同時に実行しないでください。',
'ATTENTION: you cannot edit the running application!': '注意: 実行中のアプリケーションは編集できません!',
'Abort': '中断',
'About': 'About',
'About application': 'アプリケーションについて',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'アプリケーションに必要な追加記述',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin disabled because no admin password',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'Admin is disabled because insecure channel': 'Admin is disabled because insecure channel',
'Admin language': '管理画面の言語',
'Admin versioning page': 'Admin versioning page',
'administrative interface': '管理画面',
'Administrator Password:': '管理者パスワード:',
'and rename it:': 'ファイル名を変更:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'アプリ管理画面',
'appadmin is disabled because insecure channel': 'appadmin is disabled because insecure channel',
'Application': 'Application',
'application "%s" uninstalled': '"%s"アプリケーションが削除されました',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'アプリケーションがコンパイルされました',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'application is compiled and cannot be designed',
'Application name:': 'アプリケーション名:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Are you sure you want to delete file "%s"?',
'Are you sure you want to delete plugin "%s"?': '"%s"プラグインを削除してもよろしいですか?',
'Are you sure you want to delete this object?': 'このオブジェクトを削除してもよろしいですか?',
'Are you sure you want to uninstall application "%s"?': '"%s"アプリケーションを削除してもよろしいですか?',
'Are you sure?': 'Are you sure?',
'arguments': '引数',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 安全(HTTPS)な接続でログインするかlocalhostで実行されている必要があります。',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: テストはスレッドセーフではないので複数のテストを同時に実行しないでください。',
'ATTENTION: you cannot edit the running application!': '注意: 実行中のアプリケーションは編集できません!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': '利用可能なデータベースとテーブル一覧',
'Available Databases and Tables': 'Available Databases and Tables',
'back': '戻る',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': '基本情報',
'Begin': '開始',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errors and sessions cleaned',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Cannot be empty',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'cannot create file',
'cannot upload file "%(filename)s"': '"%(filename)s"ファイルをアップロードできません',
'Change Admin Password': 'Change Admin Password',
'Change admin password': '管理者パスワード変更',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': '全てを選択',
'Check for upgrades': '更新チェック',
'Check to delete': 'Check to delete',
'Checking for upgrades...': '更新を確認中...',
'Clean': '一時データ削除',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Click row to expand traceback': '列をクリックしてトレースバックを展開',
'Click row to view a ticket': 'Click row to view a ticket',
'code': 'コード',
'Code listing': 'Code listing',
'collapse/expand all': '全て開閉する',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'コンパイル',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'コンパイル済みのアプリケーションが削除されました',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'コントローラ',
'controllers': 'コントローラ',
'Count': '回数',
'Create': '作成',
'create file with filename:': 'ファイル名:',
'Create/Upload': 'Create/Upload',
'created by': '作成者',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'currently running': '現在実行中',
'currently saved or': '現在保存されているデータ または',
'data uploaded': 'data uploaded',
'Database': 'Database',
'Database %s select': 'Database %s select',
'Database administration': 'Database administration',
'database administration': 'データベース管理',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Date and Time',
'db': 'db',
'Debug': 'Debug',
'defines tables': 'テーブル定義',
'Delete': '削除',
'delete': 'delete',
'delete all checked': '選択したデータを全て削除',
'delete plugin': 'プラグイン削除',
'Delete this file (you will be asked to confirm deletion)': 'ファイルの削除(確認画面が出ます)',
'Delete:': 'Delete:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'デプロイ',
'Deploy on Google App Engine': 'Google App Engineにデプロイ',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'デザイン',
'Detailed traceback description': '詳細なトレースバック内容',
'details': '詳細',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': '無効',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'ドキュメント',
'Docs': 'Docs',
'done!': 'done!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'レイアウトのダウンロード',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'プラグインのダウンロード',
'Download plugins from repository': 'Download plugins from repository',
'Edit': '編集',
'edit all': '全て編集',
'Edit application': 'アプリケーションを編集',
'edit controller:': 'edit controller:',
'Edit current record': 'Edit current record',
'edit views:': 'ビューの編集:',
'Editing %s': 'Editing %s',
'Editing file "%s"': '"%s"ファイルを編集中',
'Editing Language file': 'Editing Language file',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': '有効',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Error': 'エラー',
'Error logs for "%(app)s"': '"%(app)s"のエラーログ',
'Error snapshot': 'エラー発生箇所',
'Error ticket': 'エラーチケット',
'Errors': 'エラー',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': '例外インスタンス引数',
'File': 'ファイル',
'Frames': 'フレーム',
'Functions with no doctests will result in [passed] tests.': 'doctestsのない関数は自動的にテストをパスします。',
'Generate': 'アプリ生成',
'Get from URL:': 'URLから取得:',
'Help': 'ヘルプ',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'もし上記のレポートにチケット番号が含まれる場合は、doctestを実行する前に、コントローラの実行で問題があったことを示します。これはインデントの問題やその関数の外部で問題があった場合に起きるが一般的です。\n緑色のタイトルは全てのテスト(もし定義されていれば)をパスしたことを示します。その場合、テスト結果は表示されません。',
'Install': 'インストール',
'Installed applications': 'アプリケーション一覧',
'Languages': '言語',
'Last saved on:': '最終保存日時:',
'License for': 'License for',
'Login': 'ログイン',
'Login to the Administrative Interface': '管理画面へログイン',
'Logout': 'ログアウト',
'Models': 'モデル',
'Modules': 'モジュール',
'NO': 'いいえ',
'New Application Wizard': '新規アプリケーション作成ウィザード',
'New application wizard': '新規アプリケーション作成ウィザード',
'New simple application': '新規アプリケーション',
'No databases in this application': 'このアプリケーションにはデータベースが存在しません',
'Overwrite installed app': 'アプリケーションを上書き',
'Pack all': 'パッケージ化',
'Pack compiled': 'コンパイルデータのパッケージ化',
'Peeking at file': 'ファイルを参照',
'Plugin "%s" in application': '"%s"プラグイン',
'Plugins': 'プラグイン',
'Powered by': 'Powered by',
'Reload routes': 'ルーティング再読み込み',
'Remove compiled': 'コンパイルデータの削除',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "このファイルのテストを実行(全てのファイルに対して実行する場合は、'テスト'というボタンを使用できます)",
'Save': '保存',
'Saved file hash:': '保存されたファイルハッシュ:',
'Site': 'サイト',
'Sorry, could not find mercurial installed': 'インストールされているmercurialが見つかりません',
'Start a new app': '新規アプリの作成',
'Start wizard': 'ウィザードの開始',
'Static files': '静的ファイル',
'Step': 'ステップ',
'Testing application': 'アプリケーションをテスト中',
'The application logic, each URL path is mapped in one exposed function in the controller': 'アプリケーションロジック、それぞれのURLパスはコントローラで公開されている各関数にマッピングされています',
'The data representation, define database tables and sets': 'データの表示方法, テーブルとセットの定義',
'The presentations layer, views are also known as templates': 'プレゼンテーション層、ビューはテンプレートとしても知られています',
'There are no controllers': 'コントローラがありません',
'There are no modules': 'モジュールがありません',
'There are no plugins': 'プラグインはありません',
'There are no translators, only default language is supported': '翻訳がないためデフォルト言語のみをサポートします',
'There are no views': 'ビューがありません',
'These files are served without processing, your images go here': 'これらのファイルは直接参照されます, ここに画像が入ります',
'Ticket ID': 'チケットID',
'To create a plugin, name a file/folder plugin_[name]': 'ファイル名/フォルダ名 plugin_[名称]としてプラグインを作成してください',
'Traceback': 'トレースバック',
'Translation strings for the application': 'アプリケーションの翻訳文字列',
'Unable to download because:': '以下の理由でダウンロードできません:',
'Uninstall': 'アプリ削除',
'Upload a package:': 'パッケージをアップロード:',
'Upload and install packed application': 'パッケージのアップロードとインストール',
'Version': 'バージョン',
'Versioning': 'バージョン管理',
'Views': 'ビュー',
'Web Framework': 'Web Framework',
'YES': 'はい',
'administrative interface': '管理画面',
'and rename it:': 'ファイル名を変更:',
'appadmin': 'アプリ管理画面',
'application "%s" uninstalled': '"%s"アプリケーションが削除されました',
'application compiled': 'アプリケーションがコンパイルされました',
'arguments': '引数',
'back': '戻る',
'cache': 'cache',
'cannot upload file "%(filename)s"': '"%(filename)s"ファイルをアップロードできません',
'check all': '全てを選択',
'code': 'コード',
'collapse/expand all': '全て開閉する',
'compiled application removed': 'コンパイル済みのアプリケーションが削除されました',
'controllers': 'コントローラ',
'create file with filename:': 'ファイル名:',
'created by': '作成者',
'crontab': 'crontab',
'currently running': '現在実行中',
'currently saved or': '現在保存されているデータ または',
'database administration': 'データベース管理',
'db': 'db',
'defines tables': 'テーブル定義',
'delete all checked': '選択したデータを全て削除',
'delete plugin': 'プラグイン削除',
'design': 'デザイン',
'details': '詳細',
'direction: ltr': 'direction: ltr',
'docs': 'ドキュメント',
'download layouts': 'レイアウトのダウンロード',
'download plugins': 'プラグインのダウンロード',
'edit all': '全て編集',
'edit views:': 'ビューの編集:',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'export as csv file',
'Exports:': 'Exports:',
'exposes': '公開',
'exposes:': '公開:',
'extends': '継承',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': 'failed to reload module because:',
'File': 'ファイル',
'file "%(filename)s" created': 'file "%(filename)s" created',
'file "%(filename)s" deleted': 'file "%(filename)s" deleted',
'file "%(filename)s" uploaded': 'file "%(filename)s" uploaded',
'file "%s" of %s restored': 'file "%s" of %s restored',
'file changed on disk': 'file changed on disk',
'file does not exist': 'file does not exist',
'file not found': 'file not found',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'file saved on %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'フィルタ',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'フレーム',
'Functions with no doctests will result in [passed] tests.': 'doctestsのない関数は自動的にテストをパスします。',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'アプリ生成',
'Get from URL:': 'URLから取得:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': '実行!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Help': 'ヘルプ',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'もし上記のレポートにチケット番号が含まれる場合は、doctestを実行する前に、コントローラの実行で問題があったことを示します。これはインデントの問題やその関数の外部で問題があった場合に起きるが一般的です。\n緑色のタイトルは全てのテスト(もし定義されていれば)をパスしたことを示します。その場合、テスト結果は表示されません。',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Import/Export',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'インクルード',
'Indent with tabs': 'Indent with tabs',
'index': 'index',
'inspect attributes': '引数の検査',
'Install': 'インストール',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'アプリケーション一覧',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'internal error',
'internal error: %s': 'internal error: %s',
'Internal State': 'Internal State',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'invalid password',
'invalid password.': 'invalid password.',
'Invalid Query': 'Invalid Query',
'invalid request': 'invalid request',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'invalid ticket',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'language file "%(filename)s" created/updated',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': '言語',
'Languages': '言語',
'Last Revision': 'Last Revision',
'Last saved on:': '最終保存日時:',
'License for': 'License for',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'ロードしています...',
'Local Apps': 'Local Apps',
'locals': 'ローカル',
'Locals##debug': 'Locals##debug',
'Login': 'ログイン',
'Login successful': 'Login successful',
'Login to the Administrative Interface': '管理画面へログイン',
'Login/Register': 'Login/Register',
'Logout': 'ログアウト',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'merge',
'Models': 'モデル',
'models': 'モデル',
'Modified On': 'Modified On',
'Modules': 'モジュール',
'modules': 'モジュール',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'new application "%s" created',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': '新規アプリケーション作成ウィザード',
'New application wizard': '新規アプリケーション作成ウィザード',
'new plugin installed': '新しいプラグインがインストールされました',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'New Record',
'new record inserted': 'new record inserted',
'New simple application': '新規アプリケーション',
'next': 'next',
'next %s rows': 'next %s rows',
'NO': 'いいえ',
'no changes': 'no changes',
'No databases in this application': 'このアプリケーションにはデータベースが存在しません',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'オンラインデザイナー',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'or import from csv file',
'Original/Translation': 'Original/Translation',
'Overview': 'Overview',
'Overwrite installed app': 'アプリケーションを上書き',
'Pack all': 'パッケージ化',
'Pack compiled': 'コンパイルデータのパッケージ化',
'Pack custom': 'Pack custom',
'pack plugin': 'プラグインのパッケージ化',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'ファイルを参照',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': '"%(plugin)s"プラグインは削除されました',
'Plugin "%s" in application': '"%s"プラグイン',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'プラグイン',
'Plugins': 'プラグイン',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Powered by',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Query:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record does not exist': 'record does not exist',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'ルーティング再読み込み',
'Remove compiled': 'コンパイルデータの削除',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'リクエスト',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'レスポンス',
'restart': '最初からやり直し',
'restore': '復元',
'return': 'return',
'Revert': 'Revert',
'revert': '一つ前に戻す',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Rows selected',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "このファイルのテストを実行(全てのファイルに対して実行する場合は、'テスト'というボタンを使用できます)",
'Running on %s': 'Running on %s',
'Save': '保存',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': '保存されたファイルハッシュ:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'session': 'セッション',
'session expired': 'セッションの有効期限が切れました',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'サイト',
'Size of cache:': 'Size of cache:',
'skip to generate': 'スキップしてアプリ生成画面へ移動',
'some files could not be removed': 'some files could not be removed',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'インストールされているmercurialが見つかりません',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': '新規アプリの作成',
'Start searching': 'Start searching',
'Start wizard': 'ウィザードの開始',
'state': 'state',
'Static': 'Static',
'static': '静的ファイル',
'Static files': '静的ファイル',
'Statistics': 'Statistics',
'Step': 'ステップ',
'step': 'step',
'stop': 'stop',
'submit': 'submit',
'Submit': 'Submit',
'successful': 'successful',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'テスト',
'Testing application': 'アプリケーションをテスト中',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'アプリケーションロジック、それぞれのURLパスはコントローラで公開されている各関数にマッピングされています',
'The data representation, define database tables and sets': 'データの表示方法, テーブルとセットの定義',
'The presentations layer, views are also known as templates': 'プレゼンテーション層、ビューはテンプレートとしても知られています',
'Theme': 'Theme',
'There are no controllers': 'コントローラがありません',
'There are no models': 'There are no models',
'There are no modules': 'モジュールがありません',
'There are no plugins': 'プラグインはありません',
'There are no private files': 'There are no private files',
'There are no static files': 'There are no static files',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': '翻訳がないためデフォルト言語のみをサポートします',
'There are no views': 'ビューがありません',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'これらのファイルは直接参照されます, ここに画像が入ります',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'チケットID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'to previous version.': '前のバージョンへ戻す。',
'To create a plugin, name a file/folder plugin_[name]': 'ファイル名/フォルダ名 plugin_[名称]としてプラグインを作成してください',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'トレースバック',
'Translation strings for the application': 'アプリケーションの翻訳文字列',
'try something like': 'try something like',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Unable to check for upgrades',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'unable to delete file "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because:': '以下の理由でダウンロードできません:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'unable to parse csv file',
'unable to uninstall "%s"': 'unable to uninstall "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': '全ての選択を解除',
'Uninstall': 'アプリ削除',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'update',
'update all languages': '全ての言語を更新',
'Update:': 'Update:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upload': 'アップロード',
'Upload': 'Upload',
'Upload a package:': 'パッケージをアップロード:',
'Upload and install packed application': 'パッケージのアップロードとインストール',
'upload file:': 'ファイルをアップロード:',
'upload plugin file:': 'プラグインファイルをアップロード:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'user': 'ユーザー',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': '変数',
'Version': 'バージョン',
'Versioning': 'バージョン管理',
'Views': 'ビュー',
'views': 'ビュー',
'web2py Recent Tweets': '最近のweb2pyTweets',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2pyは最新です',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': '最近のweb2pyTweets',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'はい',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

View File

@@ -0,0 +1,660 @@
# -*- coding: utf-8 -*-
{
'!langcode!': 'my-mm',
'!langname!': 'မြန်မာ',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{row} ဖျက်ပြီးပြီ',
'%s %%{row} updated': '%s %%{row} ပြင်ပြီးပြီ',
'%s selected': '%s ခု ရွေးထားသည်',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(something like "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'Abort': 'Abort',
'About': 'အကြောင်း',
'About application': 'About application',
'Accept Terms': 'Accept Terms',
'Access Control': 'အသုံးပြု ခြင်းဆိုင်ရာ ထိန်းချုပ်ရန်',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin disabled because no admin password',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin disabled because unable to access password file',
'Admin is disabled because insecure channel': 'Admin is disabled because insecure channel',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'Administrative Interface': 'စီမံခန့်ခွဲရာ အင်တာဖေ့စ်',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Administrator Password:',
'Ajax Recipes': 'Ajax Recipes',
'and rename it:': 'and rename it:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'စိတ်မချရသော လမ်းကြောင်းမှ ဝင်ရောက်သဖြင့် appadmin ကို အသုံးပြု၍ မရပါ',
'Application': 'Application',
'application "%s" uninstalled': 'application "%s" uninstalled',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'application compiled',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'application is compiled and cannot be designed',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'အသုံးမပြုပါ',
'are not used yet': 'အသုံးမပြုသေးပါ',
'Are you sure you want to delete file "%s"?': 'Are you sure you want to delete file "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'သင် ဒီအရာ ဖျက်ရန် သေချာပါသလား။',
'Are you sure you want to uninstall application "%s"?': 'Are you sure you want to uninstall application "%s"?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ATTENTION: you cannot edit the running application!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available Databases and Tables': 'အသုံးပြုနိုင်သော ဒေတာဘေစ့်များနှင့် ဇယားများ',
'back': 'back',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Buy this book': 'ဒီစာအုပ်ကို ဝယ်ပါ',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errors and sessions cleaned',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'အလွတ် မဖြစ်ရပါ',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'cannot create file',
'cannot upload file "%(filename)s"': 'cannot upload file "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Change admin password',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'check all',
'Check for upgrades': 'Check for upgrades',
'Check to delete': 'ဖျက်ရန် စစ်ဆေးပါ',
'Checking for upgrades...': 'အဆင့်မြှင့်တင်မှုများအတွက် စစ်ဆေးနေသည် ...',
'Clean': 'ရှင်းလင်းရန်',
'Clear': 'Clear',
'Clear CACHE?': 'CACHE ကို ရှင်းလင်းမည်မှာ ဟုတ်ပါသလား။',
'Clear DISK': 'DISK ကို ရှင်းလင်းမည်။',
'Clear RAM': 'RAM ကို ရှင်းလင်းမည်။',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'Client IP': 'Client IP',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Community': 'အသိုင်းအဝိုင်း',
'Compile': 'Compile',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'compiled application removed',
'Components and Plugins': 'Components and Plugins',
'Condition': 'Condition',
'continue': 'continue',
'Controller': 'ကွန်ထရိုလာ',
'Controllers': 'ကွန်ထရိုလာများ',
'controllers': 'controllers',
'Copyright': 'မူပိုင်ခွင့်',
'Count': 'Count',
'Create': 'ဖန်တီးရန်',
'create file with filename:': 'create file with filename:',
'Create/Upload': 'Create/Upload',
'created by': 'ဖန်းတီးသူ',
'Created By': 'ပြုလုပ်ဖန်တီးသူ',
'Created by:': 'Created by:',
'Created On': 'ပြုလုပ်ဖန်တီးသည့်အချိန်',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Current request',
'Current response': 'Current response',
'Current session': 'Current session',
'currently running': 'လက်ရှိတွင် လုပ်ဆောင်နေသည်',
'currently saved or': 'currently saved or',
'data uploaded': 'data uploaded',
'Database': 'ဒေတာဘေစ့်',
'Database %s select': 'Database %s select',
'Database administration': 'Database administration',
'database administration': 'ဒေတာဘေ့(စ်) စီမံခန့်ခွဲခြင်း',
'Database Administration (appadmin)': 'ဒေတာဘေစ့် စီမံခန့်ခွဲခြင်း (appadmin)',
'Date and Time': 'Date and Time',
'db': 'db',
'DB Model': 'DB Model',
'Debug': 'အမှားရှာရန်',
'defines tables': 'defines tables',
'Delete': 'Delete',
'delete': 'delete',
'delete all checked': 'delete all checked',
'delete plugin': 'delete plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Delete:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'အစမ်း၊ သရုပ်ပြမှုများ',
'Deploy': 'Deploy',
'Deploy on Google App Engine': 'Deploy on Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Deployment Recipes': 'Deployment Recipes',
'Description': 'ဖော်ပြချက်',
'Description:': 'Description:',
'design': 'design',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'ပိတ်ရန်',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk ရှင်းလင်းပြီးပြီ',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'Documentation': 'စာရွက်စာတမ်း အထောက်အကူများ',
"Don't know what to do?": 'ဘာလုပ်ရမည်မသိ ဖြစ်နေပါသလား။',
'done!': 'လုပ်ငန်း ဆောင်ရွက်ပြီးပြီ!',
'Downgrade': 'Downgrade',
'Download': 'Download',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'အီးမေးလ်',
'Edit': 'ပြင်ဆင်ရန်',
'edit all': 'edit all',
'Edit application': 'Application ကို ပြင်ရန်',
'edit controller:': 'edit controller:',
'Edit current record': 'လက်ရှိ မှတ်တမ်းကို ပြင်ရန်',
'edit views:': 'edit views:',
'Editing %s': 'Editing %s',
'Editing Language file': 'Editing Language file',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Email and SMS': 'အီးမေးလ်နှင့် SMS',
'Enable': 'ဖွင့်ရန်',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'enter an integer between %(min)g and %(max)g': 'enter an integer between %(min)g and %(max)g',
'Error': 'Error',
'Error logs for "%(app)s"': 'Error logs for "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'အမှားများ',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': ' csv file အနေနဲ့ ထုတ်ပေးရန်',
'Exports:': 'Exports:',
'exposes': 'exposes',
'exposes:': 'exposes:',
'extends': 'extends',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': 'failed to reload module because:',
'FAQ': 'ဖြစ်လေ့ရှိသော ပြဿနာများ',
'File': 'File',
'file "%(filename)s" created': 'file "%(filename)s" created',
'file "%(filename)s" deleted': 'file "%(filename)s" deleted',
'file "%(filename)s" uploaded': 'file "%(filename)s" uploaded',
'file "%s" of %s restored': 'file "%s" of %s restored',
'file changed on disk': 'file changed on disk',
'file does not exist': 'file does not exist',
'file not found': 'file not found',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'file saved on %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'First name': 'အမည်၏ ပထမဆုံး စာလုံး',
'Form has errors': 'Form has errors',
'Forms and Validators': 'Forms and Validators',
'Frames': 'Frames',
'Free Applications': 'အခမဲ့ Applications',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': 'Group ID',
'Groups': 'အဖွဲ့များ',
'Hello World': 'မင်္ဂလာပါ ကမ္ဘာကြီး။',
'Help': 'အကူအညီ',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'မူလသို့',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'How did you get here?': 'သင် ဘယ်လို ရောက်လာခဲ့သလဲ။',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'သွင်းယူရန်',
'Import/Export': 'သွင်းယူရန်/ထုတ်ယူရန်',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'includes',
'Indent with tabs': 'Indent with tabs',
'inspect attributes': 'inspect attributes',
'Install': 'Install',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'ထည့်သွင်းပြီး application များ',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'internal error',
'internal error: %s': 'internal error: %s',
'Internal State': 'Internal State',
'Introduction': 'မိတ်ဆက်',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'အီးမေးလ် ဖြည့်သွင်းမှုမှားနေသည်',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'invalid password',
'invalid password.': 'invalid password.',
'Invalid Query': 'Invalid Query',
'invalid request': 'invalid request',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'invalid ticket',
'Is Active': 'Is Active',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'Language': 'ဘာသာစကား',
'language file "%(filename)s" created/updated': 'language file "%(filename)s" created/updated',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': 'ဘာသာစကားများ',
'Languages': 'ဘာသာစကားများ',
'Last name': 'မျိုးနွယ်အမည်',
'Last Revision': 'Last Revision',
'Last saved on:': 'Last saved on:',
'Layout': 'အပြင်အဆင်',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'အပြင်အဆင်များ',
'License for': 'License for',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Live Chat': 'တိုက်ရိုက် ဆက်သွယ် ပြောကြားရန်',
'Loading...': 'Loading...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'ဝင်ရောက်အသုံးပြုရန်',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Login/Register': 'Login/Register',
'Logout': 'ထွက်ရန်',
'Lost Password': 'စကားဝှက် မသိတော့ပါ',
'lost password': 'lost password',
'Lost password?': 'စကားဝှက် မသိတော့ဘူးလား။',
'Main Menu': 'Main Menu',
'Manage': 'စီမံခန့်ခွဲရန်',
'Manage %(action)s': '%(action)s ကို စီမံရန်',
'Manage Access Control': 'အသုံးပြုခြင်းဆိုင်ရာ ထိန်းချုပ်မှု စီမံခန့်ခွဲရန်',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'အသင်းဝင်များ',
'Menu Model': 'Menu Model',
'merge': 'merge',
'Models': 'Models',
'models': 'models',
'Modified By': 'ပြင်ဆင်မွမ်းမံသူ',
'Modified On': 'ပြင်ဆင်မွမ်းမံသည့် အချိန်',
'Modules': 'Modules',
'modules': 'modules',
'Multi User Mode': 'Multi User Mode',
'My Sites': 'ကျွန်ုပ်၏ Site များ',
'Name': 'အမည်',
'new application "%s" created': 'new application "%s" created',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'မှတ်တမ်း အသစ်',
'new record inserted': 'မှတ်တမ်း အသစ် ဖြည့်သွင်းပြီးပြီ',
'New simple application': 'ရိုးရိုး application အသစ်',
'next': 'next',
'next %s rows': 'နောက်အတန်း %s တန်း',
'NO': 'NO',
'no changes': 'no changes',
'No databases in this application': 'ဒီ application တွင် မည်သည့် ဒေတာဘေစ့်မှ မရှိပါ',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
'Object or table name': 'Object or table name',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Online examples': 'အွန်လိုင်း နမူနာများ',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'or import from csv file',
'Origin': 'မူလ အစ',
'Original/Translation': 'Original/Translation',
'Other Plugins': 'အခြား Plugins',
'Other Recipes': 'အခြား Recipes',
'Overview': 'အပေါ်ယံရှုမြင်ခြင်း',
'Overwrite installed app': 'Overwrite installed app',
'Pack all': 'အားလုံးကို ထုပ်ပိုးရန်',
'Pack compiled': 'Pack compiled',
'Pack custom': 'ရွေးချယ်ထုပ်ပိုးရန်',
'pack plugin': 'pack plugin',
'Password': 'စကားဝှက်',
'password changed': 'password changed',
"Password fields don't match": 'စကားဝှက်များ ကိုက်ညီမှု မရှိပါ',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Peeking at file',
'Permission': 'ခွင့်ပြုချက်',
'Permissions': 'ခွင့်ပြုချက်များ',
'Please': 'Please',
'please input your password again': 'ကျေးဇူးပြု၍ စကားဝှက်ကို ထပ်မံ ဖြည့်သွင်းပေးပါ',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Plugin "%s" in application',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'အားဖြည့်စွမ်းအားပေးသူ',
'Preface': 'နိဒါန်း',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library ကို မတွေ့ပါ',
'Python': 'Python',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Query:',
'Quick Examples': 'အမြန် အသုံးပြုနိုင်သော နမူနာများ',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram ရှင်းလင်းပြီးပြီ',
'Rapid Search': 'Rapid Search',
'Recipes': 'Recipes',
'Record': 'မှတ်တမ်း',
'record does not exist': 'မှတ်တမ်း မရှိပါ',
'Record ID': 'Record ID',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Register': 'မှတ်ပုံတင်ရန်',
'Registration identifier': 'Registration identifier',
'Registration key': 'Registration key',
'Reload routes': 'Reload routes',
'Remember me (for 30 days)': 'Remember me (for 30 days)',
'Remove compiled': 'Remove compiled',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'Request reset password': 'စကားဝှက် အသစ် တောင်းဆိုရန်',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Reset Password key': 'Reset Password key',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'return': 'return',
'Revert': 'Revert',
'revert': 'revert',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows selected': 'ရွေးထားသော အတန်းများ',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Saved file hash:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'Semantic': 'Semantic',
'Services': 'Services',
'session': 'session',
'session expired': 'session expired',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'some files could not be removed',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'Start wizard',
'state': 'state',
'Static': 'Static',
'static': 'static',
'Static files': 'Static files',
'Statistics': 'ကိန်းဂဏန်း အချက်အလက်များ',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Stylesheet': 'Stylesheet',
'submit': 'ပြုလုပ်ပါ',
'Submit': 'Submit',
'successful': 'successful',
'Support': 'အထောက်အပံ့',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'Table': 'ဇယား',
'Temporary': 'Temporary',
'test': 'test',
'Testing application': 'Testing application',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The Core': 'The Core',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'The Views': 'The Views',
'Theme': 'Theme',
'There are no controllers': 'There are no controllers',
'There are no models': 'There are no models',
'There are no modules': 'There are no modules',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'There are no static files',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'There are no views',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'This App': 'ဒီ App',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This email already has an account': 'ဒီအီးမေးလ်တွင် အကောင့် ရှိပြီး ဖြစ်ပါသည်',
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Timestamp',
'to previous version.': 'to previous version.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Translation strings for the application',
'try something like': 'try something like',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Twitter': 'Twitter',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Unable to check for upgrades',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'unable to delete file "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download app because:': 'Unable to download app because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'unable to parse csv file',
'unable to uninstall "%s"': 'unable to uninstall "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'uncheck all',
'Uninstall': 'Uninstall',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'update',
'update all languages': 'update all languages',
'Update:': 'Update:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upload': 'upload',
'Upload': 'Upload',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload file:': 'upload file:',
'upload plugin file:': 'upload plugin file:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'User': 'အသုံးပြုသူ',
'User ID': 'User ID',
'Username': 'Username',
'Users': 'အသုံးပြုသူများ',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Verify Password': 'စကားဝှက်ကို အတည်ပြုပါ',
'Version': 'Version',
'Versioning': 'Versioning',
'Videos': 'ဗွီဒီယိုများ',
'View': 'ဗျူး',
'Views': 'ဗျူးများ',
'views': 'views',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py is up to date',
'web2py online debugger': 'web2py online debugger',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome': 'ကြိုဆိုပါ၏',
'Welcome to web2py!': 'web2py မှ ကြိုဆိုပါသည်။',
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
'Working...': 'ဆောင်ရွက်နေပါသည် ။ ။ ။',
'WSGI reference name': 'WSGI reference name',
'YES': 'YES',
'Yes': 'Yes',
'You are successfully running web2py': 'သင်သည် web2py ကို အောင်မြင်စွာ လည်ပတ်မောင်းနှင်စေပါသည်။',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You can modify this application and adapt it to your needs': 'သင် ဒီ application ကို ပြုပြင်မွမ်းမံနိုင်ပါသည်။ ထို့အပြင် သင့်လိုအပ်ချက်များနှင့် ကိုက်ညီစေရန် ပြုလုပ်နိုင်ပါသည်။',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'You visited the url %s': 'သင် လည်ပတ်ခဲ့သော URL %s',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
'စကားဝှက် အသစ် တောင်းဆိုရန်': 'စကားဝှက် အသစ် တောင်းဆိုရန်',
'မှတ်ပုံတင်ရန်': 'မှတ်ပုံတင်ရန်',
'ဝင်ရောက်အသုံးပြုရန်': 'ဝင်ရောက်အသုံးပြုရန်',
}

View File

@@ -1,4 +1,4 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'nl',
'!langname!': 'Nederlands',
@@ -9,42 +9,54 @@
'%s %%{row} deleted': '%s %%{row} verwijderd',
'%s %%{row} updated': '%s %%{row} geupdate',
'%s Recent Tweets': '%s Recente Tweets',
'%s selected': '%s selected',
'%s students registered': '%s studenten geregistreerd',
'%Y-%m-%d': '%Y/%m/%d',
'%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S',
'(requires internet access)': '(vereist internettoegang)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(zoiets als "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': '@markmin: zoeken: **%s** %%{file}',
'Abort': 'Afbreken',
'About': 'Over',
'about': 'over',
'About application': 'Over applicatie',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Voeg breakpoint toe',
'Additional code for your application': 'Additionele code voor je applicatie',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'admin uitgezet omdat er geen admin wachtwoord is',
'admin disabled because not supported on google app engine': 'admin uitgezet omdat dit niet ondersteund wordt op google app engine',
'admin disabled because too many invalid login attempts': 'admin is uitgezet omdat er te veel ongeldige login attempts zijn geweest',
'admin disabled because unable to access password file': 'admin is uitgezet omdat er geen toegang was tot het wachtwoordbestand',
'Admin is disabled because insecure channel': 'Admin is uitgezet vanwege onveilig kanaal',
'Admin language': 'Admintaal',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administratieve interface',
'Administrator Password:': 'Administrator Wachtwoord:',
'and rename it:': 'en hernoem het:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'App does not exist or your are not authorized': 'App bestaat niet of je bent niet geautoriseerd',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'appadmin is uitgezet vanwege een onveilig kanaal',
'Application': 'Application',
'application "%s" uninstalled': 'applicatie "%s" gedeïnstalleerd',
'application %(appname)s installed with md5sum: %(digest)s': 'applicatie %(appname)s geïnstalleerd met md5sum: %(digest)s',
'Application cannot be generated in demo mode': 'Applicatie kan niet gegenereerd worden in demo-mode',
'application compiled': 'applicatie gecompileerd',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'applicatie is gecompileerd en kan niet worden ontworpen',
'Application name:': 'Applicatienaam:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'worden niet gebruikt',
'are not used yet': 'worden nog niet gebruikt',
'Are you sure you want to delete file "%s"?': 'Weet je zeker dat je bestand "%s" wilt verwijderen?',
'Are you sure you want to delete plugin "%s"?': 'Weet je zeker dat je plugin "%s"? wilt verwijderen?',
'Are you sure you want to delete this object?': 'Weet je zeker dat je dit object wilt verwijderen?',
'Are you sure you want to uninstall application "%s"?': 'Weet je zeker dat je applicatie "%s" wilt deïnstalleren?',
'Are you sure?': 'Are you sure?',
'arguments': 'argumenten',
'at char %s': 'bij karakter %s',
'at line %s': 'op regel %s',
@@ -52,8 +64,12 @@
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'LET OP: Login heeft beveiligde (HTTPS) verbinding nodig of moet draaien op localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'LET OP: TESTEN IS NIET THREAD SAFE EN PROBEER NIET MEERDERE TESTEN TEGELIJK TE DOEN.',
'ATTENTION: you cannot edit the running application!': 'LET OP: je kan de draaiende applicatie niet bewerken!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Beschikbare databases en tabellen',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'terug',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'bad_resource': 'slechte_resource',
'Basics': 'Basics',
'Begin': 'Begin',
@@ -62,7 +78,9 @@
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Registreer',
'Bulk Student Registration': 'Bulk Studentenregistratie',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errors en sessies geleegd',
'can be a git repo': 'can een git repo zijn',
@@ -71,12 +89,16 @@
'Cannot compile: there are errors in your app:': 'Kan niet compileren: er bevinden zich fouten in je app:',
'cannot create file': 'kan bestand niet maken',
'cannot upload file "%(filename)s"': 'kan bestand "%(filename)s" niet uploaden',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Verander admin wachtwoord',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'vink alles aan',
'Check for upgrades': 'Controleer voor upgrades',
'Check to delete': 'Vink aan om te verwijderen',
'Checking for upgrades...': 'Controleren voor upgrades...',
'Clean': 'Clean',
'Clear': 'Clear',
'Clear CACHE?': 'Leeg CACHE?',
'Clear DISK': 'Leeg DISK',
'Clear RAM': 'Leeg RAM',
@@ -86,8 +108,13 @@
'Code listing': 'Code listing',
'collapse/expand all': 'klap in/klap alles uit',
'Command': 'Commando',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Compileer',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'Gecompileerde applicatie verwijderd',
'Condition': 'Conditie',
'contact_admin': 'contact_admin',
@@ -100,8 +127,11 @@
'create file with filename:': 'maak bestand met naam:',
'create plural-form': 'maak meervoudsvorm',
'Create rules': 'Maak regels',
'Create/Upload': 'Create/Upload',
'created by': 'gemaakt door:',
'Created by:': 'Created by:',
'Created On': 'Gemaakt Op',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Huidige request',
'Current response': 'Huidige response',
@@ -109,9 +139,13 @@
'currently running': 'draait op het moment',
'currently saved or': 'op het moment opgeslagen of',
'data uploaded': 'data geupload',
'Database': 'Database',
'database': 'database',
'Database %s select': 'Database %s select',
'database %s select': 'database %s select',
'Database administration': 'Database administration',
'database administration': 'database administratie',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Datum en Tijd',
'db': 'db',
'Debug': 'Debug',
@@ -123,10 +157,15 @@
'Delete this file (you will be asked to confirm deletion)': 'Verwijder dit bestand (je zal worden gevraagd om de verwijdering te bevestigen)',
'Delete:': 'Verwijder:',
'deleted after first hit': 'verwijder na eerste hit',
'Demo': 'Demo',
'Deploy': 'Deploy',
'Deploy on Google App Engine': 'Deploy op Google App Engine (GAE)',
'Deploy to OpenShift': 'Deploy op OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deploymentformulier',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'design',
'Detailed traceback description': 'Gedetailleerde traceback beschrijving',
'details': 'details',
@@ -135,24 +174,39 @@
'Disable': 'Zet uit',
'Disabled': 'Uitgezet',
'disabled in demo mode': 'uitgezet in demo-modus',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'uitgezet in multi-usermodus',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'gereed!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'Edit': 'Bewerk',
'edit all': 'bewerk alles',
'Edit application': 'Bewerk applicatie',
'edit controller': 'bewerk controller',
'edit controller:': 'edit controller:',
'Edit current record': 'Bewerk huidige record',
'edit views:': 'bewerk views:',
'Editing %s': 'Editing %s',
'Editing file "%s"': 'Bewerk bestand "%s"',
'Editing Language file': 'Taalbestand aan het bewerken',
'Editing Plural Forms File': 'Meervoudsvormenbestand aan het bewerken',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Zet aan',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'enter a value': 'geef een waarde',
'Error': 'Error',
'Error logs for "%(app)s"': 'Error logs voor "%(app)s"',
@@ -162,8 +216,11 @@
'Exception %(extype)s: %(exvalue)s': 'Exceptie %(extype)s: %(exvalue)s',
'Exception %s': 'Exceptie %s',
'Exception instance attributes': 'Exceptie instantie attributen',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Klap Afkorting uit',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'exporteer als csv-bestand',
'Exports:': 'Exports:',
'exposes': 'stelt bloot',
'exposes:': 'stelt bloot:',
'extends': 'extends',
@@ -180,8 +237,13 @@
'file not found': 'bestand niet gevonden',
'file saved on %(time)s': 'bestand opgeslagen op %(time)s',
'file saved on %s': 'bestand bewaard op %s',
'filename': 'filename',
'Filename': 'Bestandsnaam',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Functies zonder doctests zullen resulteren in [passed] tests.',
'GAE Email': 'GAE Email',
@@ -197,22 +259,31 @@
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Ga naar',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Help': 'Help',
'here': 'here',
'Hide/Show Translated strings': 'Verberg/Toon Vertaalde strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'wordt alleen gerespecteerd als expressie waar is',
'If start the downgrade, be patient, it may take a while to rollback': 'Wees geduldig na het starten van de downgrade, het kan een tijd duren om de rollback uit te voeren',
'If start the upgrade, be patient, it may take a while to download': 'Wees geduldig na het starten van de upgrade, het kan een tijd duren om de download te voltooien',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Als de bovenstaande report een ticketnummer bevat indiceert dit een fout in het uitvoeren van de controller, nog voor een poging wordt gedaan om de doctests uit te voeren. Dit wordt meestal veroorzaak door een inspringfout of een fout buiten de functie-code. Een groene titel indiceert dat alle tests (wanneer gedefinieerd) geslaagd zijn. In dit geval worden testresultaten niet getoond.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Import/Export',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'Binnen ontwikkeling, gebruik de default Rocket webserver die op het moment ondersteund wordt door deze debugger.',
'includes': 'includes',
'Indent with tabs': 'Indent with tabs',
'index': 'index',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
'inspect attributes': 'inspecteer attributen',
'Install': 'Install',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Geïnstalleerde applicaties',
'Interaction at %s line %s': 'Interactie op %s regel %s',
'Interactive console': 'Interactieve console',
@@ -220,38 +291,57 @@
'internal error: %s': 'interne error: %s',
'Internal State': 'Interne State',
'Invalid action': 'Ongeldige actie',
'Invalid application name': 'Invalid application name',
'invalid circual reference': 'ongeldige cirkelreferentie',
'invalid circular reference': 'Ongeldige circulaire referentie',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'ongeldig wachtwoord',
'invalid password.': 'ongeldig wachtwoord.',
'Invalid Query': 'Ongeldige Query',
'invalid request': 'ongeldige request',
'Invalid request': 'Invalid request',
'invalid request ': 'ongeldige request',
'invalid table names (auth_* tables already defined)': 'ongeldige tabelnamen (auth_* tabellen zijn al gedefinieerd)',
'invalid ticket': 'ongeldige ticket',
'Key': 'Key',
'Key bindings': 'Key bindings',
'Key bindings for ZenCoding Plugin': 'Key bindings voor ZenCoding Plugin',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill proces',
'language file "%(filename)s" created/updated': 'taalbestand "%(filename)s" gemaakt/geupdate',
'Language files (static strings) updated': 'Taalbestanden (statische strings) geupdate',
'languages': 'talen',
'Languages': 'Talen',
'Last Revision': 'Last Revision',
'Last saved on:': 'Laatst opgeslagen op:',
'License for': 'Licentie voor',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Regelnummer',
'LineNo': 'RegelNr',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'laden...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Login',
'login': 'Login',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Login op de Administratieve Interface',
'Login/Register': 'Login/Register',
'Logout': 'Logout',
'lost password': 'lost password',
'Main Menu': 'Hoofdmenu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Beheer Admin Gebruikers/Studenten',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Beheer Studenten',
'Match Pair': 'Match Pair',
'Memberships': 'Memberships',
'merge': 'samenvoegen',
'Merge Lines': 'Voeg Regels Samen',
'Minimum length is %s': 'Minimale lengte is %s',
@@ -260,72 +350,108 @@
'Modified On': 'Verandert Op',
'Modules': 'Modules',
'modules': 'modules',
'Multi User Mode': 'Multi User Mode',
'Must include at least %s %s': 'Moet ten minste bevatten %s %s',
'Must include at least %s lower case': 'Moet ten minste bevatten %s lower case',
'Must include at least %s lowercase': 'Moet ten minste bevatten %s kleine letter',
'Must include at least %s of the following : %s': 'Moet ten minste bevatten %s van het volgende : %s',
'Must include at least %s upper case': 'Moet ten minste bevatten %s upper case',
'Must include at least %s uppercase': 'Moet ten minste bevatten %s hoofdletter',
'new application "%s" created': 'nieuwe applicatie "%s" gemaakt',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'Nieuwe Applicatie Wizard',
'New application wizard': 'Nieuwe applicatie wizard',
'new plugin installed': 'nieuwe plugin geïnstalleerd',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Nieuw Record',
'new record inserted': 'nieuw record ingevoegd',
'New simple application': 'Nieuwe eenvoudige applicatie',
'next': 'volgende',
'next %s rows': 'next %s rows',
'next 100 rows': 'volgende 100 rijen',
'Next Edit Point': 'Volgende Bewerkpunt',
'NO': 'NEE',
'no changes': 'no changes',
'No databases in this application': 'Geen databases in deze applicatie',
'No Interaction yet': 'Nog geen interactie',
'no match': 'geen match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'geen permissie om "%s" te deïnstalleren',
'No ticket_storage.txt found under /private folder': 'Geen ticket_storage.txt gevonden onder /private directory',
'Node:': 'Node:',
'Not Authorized': 'Geen Rechten',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Notitie: Bij een Github error status code 128, zorg ervoor dat het systeem en het account dat je aan het deployen bent een correspondeerde ssh key geconfigureerd heeft in het openshift account. ',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": 'Om op productie deze debugger te gebruiken, moet je webserver configureren om een proces en meerdere threads te gebruiken.',
'online designer': 'online designer',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'of importeer van csv-bestand',
'Original/Translation': 'Oorspronkelijk/Vertaling',
'Overview': 'Overview',
'Overwrite installed app': 'Overschrijf geïnstalleerde app',
'Pack all': 'Pack all',
'Pack compiled': 'Pack compiled',
'Pack custom': 'Pack custom',
'pack plugin': 'pack plugin',
'PAM authenticated user, cannot change password here': 'PAM geauthenticeerde gebruiker, kan wachtwoord hier niet wijzigen',
'password changed': 'wachtwoord gewijzigd',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Pad naar appcfg.py',
'Path to local openshift repo root.': 'Pad naar lokale openshift repo root.',
'peek': 'gluur',
'Peeking at file': 'Gluren naar bestand',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Alstublieft',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin': 'plugin',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" gedetecteerd',
'Plugin "%s" in application': 'Plugin "%s" in applicatie',
'plugin not specified': 'plugin niet gespecialiseerd',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Meervoudsvorm #%s',
'Plural-Forms:': 'Meervoudsvormen',
'Powered by': 'Powered by',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'vorige 100 rijen',
'Previous Edit Point': 'Vorige Bewerkpunt',
'Private files': 'Privébestanden',
'private files': 'privébestanden',
'Project Progress': 'Projectvoortgang',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Query:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'record',
'record does not exist': 'record bestaat niet',
'record id': 'record id',
'Record id': 'Record id',
'refresh': 'ververs',
'register': 'register',
'Reload routes': 'Herlaadt routes',
'Remove compiled': 'Verwijder gecompileerde',
'Removed Breakpoint on %s at line %s': 'Verwijder Breakpoint op %s op regel %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'vereist python-git, maar niet geïnstalleerd',
'resolve': 'oplossen',
'Resolve Conflict file': 'Los Conflictbestand op',
@@ -333,7 +459,14 @@
'restart': 'herstart',
'restore': 'herstel',
'return': 'keer terug',
'Revert': 'Revert',
'revert': 'herstel',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows in table': 'Rijen in tabel',
'Rows selected': 'Rijen geselecteerd',
'rules are not defined': 'regels zijn niet gedefinieerd',
@@ -345,34 +478,54 @@
'Running on %s': 'Draait op %s',
'runonce': 'runonce',
'Save': 'Bewaar',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Bewaar via Ajax',
'Saved file hash:': 'Opgeslagen bestandhash:',
'Screenshot %s': 'Screenshot %s',
'search': 'zoek',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'Geselecteerd',
'session': 'sessie',
'session expired': 'sessie verlopen',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Zet Breakpoint op %s op regel %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'signup': 'signup',
'signup_requested': 'signup_requested',
'Singular Form': 'Enkelvoudsvorm',
'site': 'site',
'Site': 'Site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'sla over om te genereren',
'some files could not be removed': 'sommige bestanden konden niet worden verwijderd',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, mercurial is niet geïnstalleerd',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start een nieuwe app',
'Start searching': 'Start searching',
'Start wizard': 'Start wizard',
'state': 'state',
'Static': 'Static',
'static': 'statisch',
'Static files': 'Statische bestanden',
'Statistics': 'Statistics',
'Step': 'Stap',
'step': 'stap',
'stop': 'stop',
'submit': 'submit',
'Submit': 'Submit',
'successful': 'succesvol',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabel',
'Table': 'Table',
'tags': 'tags',
'Temporary': 'tijdelijk',
'test': 'test',
@@ -383,10 +536,12 @@
'The application logic, each URL path is mapped in one exposed function in the controller': 'De applicatie logica, elk URL pad is gemapped in een blootgestelde functie in de controller',
'The data representation, define database tables and sets': 'De data representatie, definieer database tabellen en sets',
'The presentations layer, views are also known as templates': 'De presentatielaag, views ook bekend als templates',
'Theme': 'Theme',
'There are no controllers': 'Er zijn geen controllers',
'There are no models': 'Er zijn geen modellen',
'There are no modules': 'Er zijn geen modules',
'There are no plugins': 'Er zijn geen plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'Er zijn geen statische bestanden',
'There are no translators': 'Er zijn geen vertalingen',
'There are no translators, only default language is supported': 'Er zijn geen vertalingen, alleen de standaardtaal wordt ondersteund.',
@@ -405,6 +560,7 @@
'ticket': 'ticket',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'tickets': 'tickets',
'Time in Cache (h:m:s)': 'Tijd in Cache (u:m:s)',
'to previous version.': 'naar vorige versie.',
@@ -412,12 +568,16 @@
'To emulate a breakpoint programatically, write:': 'Om een breakpoint programmatische te emuleren, schrijf:',
'to use the debugger!': 'om de debugger te gebruiken!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Vertaalstrings van de applicatie',
'try something like': 'probeer zoiets als',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger commando hier en druk op Return (Enter) om het uit te voeren.',
'Type python statement in here and hit Return (Enter) to execute it.': 'Type python statement hier en druk op Return (Enter) om het uit te voeren.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Onmogelijk om voor upgrades te checken',
'unable to create application "%s"': 'onmogelijk om applicatie "%s" te maken',
'unable to create application "%s" (it may exist already)': 'onmogelijk om applicatie "%s" te maken (mogelijk bestaat deze al)',
@@ -428,7 +588,9 @@
'Unable to download because:': 'Onmogelijk om te downloaden omdat:',
'unable to download layout': 'onmogelijk om layout te downloaden',
'unable to download plugin: %s': 'onmogelijk om plugin te downloaden: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install application "%(appname)s"': 'onmogelijk om applicatie "%(appname)s" te installeren',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'onmogelijk om csv-bestand te parsen',
'unable to uninstall "%s"': 'onmogelijk om te deïnstalleren "%s"',
'unable to upgrade because "%s"': 'onmogelijk om te upgraden omdat "%s"',
@@ -442,14 +604,19 @@
'Update:': 'Update:',
'Upgrade': 'Upgrade',
'upgrade now': 'upgrade now',
'upgrade now to %s': 'upgrade now to %s',
'upgrade_web2py': 'upgrade_web2py',
'upload': 'upload',
'Upload': 'Upload',
'Upload a package:': 'Upload een package:',
'Upload and install packed application': 'Upload en installeer packed applicatie',
'upload file:': 'upload bestand:',
'upload plugin file:': 'upload pluginbestand:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Gebruik (...)&(...) voor AND, (...)|(...) voor OR, en ~(...) voor NOT om meer complexe queries te maken.',
'user': 'gebruiker',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Het gebruik van de shell kan database locken voor andere gebruikers van deze app.',
'value not allowed': 'waarde is niet toegestaan',
'variables': 'variabelen',
@@ -459,8 +626,11 @@
'view': 'view',
'Views': 'Views',
'views': 'views',
'Warning!': 'Warning!',
'WARNING:': 'WAARSCHUWING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps om te deployen',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
@@ -469,13 +639,17 @@
'web2py Recent Tweets': 'web2py Recente Tweets',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py geupgrade; herstart alstublieft',
'Working...': 'Working...',
'Wrap with Abbreviation': 'Wrap met Afkorting',
'WSGI reference name': 'WSGI reference name',
'YES': 'JA',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Je kan ook een breakpoint zetten of verwijderen in het bewerkscherm met de Toggle Breakpoint-knop',
'You can inspect variables using the console bellow': 'Je kan je variabelen inspecteren in de console hieronder',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'Je hebt nog een poging om in te loggen voor je buitengesloten wordt.',
'you must specify a name for the uploaded application': 'je moet een naam specificeren voor de geuploade applicatie',
'You need to set up and reach a': 'Je moet het volgende opzetten en bereiken:',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Je applicatie zal geblokkeerd zijn tot je een actie button aanklikt (volgende, step, ga door, etc.)',
'Your can inspect variables using the console bellow': 'Je kan je variabelen inspecteren in de console hieronder',
}

627
applications/admin/languages/pl.py Normal file → Executable file
View File

@@ -1,196 +1,239 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'pl',
'!langname!': 'Polska',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Uaktualnij" jest dodatkowym wyrażeniem postaci "pole1=\'nowawartość\'". Nie możesz uaktualnić lub usunąć wyników z JOIN:',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': 'Wierszy usuniętych: %s',
'%s %%{row} updated': 'Wierszy uaktualnionych: %s',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(requires internet access)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(coś podobnego do "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available': 'Nowa wersja web2py jest dostępna',
'A new version of web2py is available: %s': 'Nowa wersja web2py jest dostępna: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'UWAGA: Wymagane jest bezpieczne (HTTPS) połączenie lub połączenie z lokalnego adresu.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'UWAGA: TESTOWANIE NIE JEST BEZPIECZNE W ŚRODOWISKU WIELOWĄTKOWYM, TAK WIĘC NIE URUCHAMIAJ WIELU TESTÓW JEDNOCZEŚNIE.',
'ATTENTION: you cannot edit the running application!': 'UWAGA: nie można edytować uruchomionych aplikacji!',
'Abort': 'Abort',
'About': 'informacje',
'About application': 'Informacje o aplikacji',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'dodatkowy kod Twojej aplikacji',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'panel administracyjny wyłączony z powodu braku hasła administracyjnego',
'admin disabled because not supported on google app engine': 'panel administracyjny wyłączony z powodu braku wsparcia na google apps engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'panel administracyjny wyłączony z powodu braku dostępu do pliku z hasłem',
'Admin is disabled because insecure channel': 'Panel administracyjny wyłączony z powodu braku bezpiecznego połączenia',
'Admin is disabled because unsecure channel': 'Panel administracyjny wyłączony z powodu braku bezpiecznego połączenia',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': 'Hasło administratora:',
'and rename it (required):': 'i nadaj jej nową nazwę (wymagane):',
'and rename it:': 'i nadaj mu nową nazwę:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'administracja aplikacji',
'appadmin is disabled because insecure channel': 'administracja aplikacji wyłączona z powodu braku bezpiecznego połączenia',
'Application': 'Application',
'application "%s" uninstalled': 'aplikacja "%s" została odinstalowana',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'aplikacja została skompilowana',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'aplikacja jest skompilowana i nie może być projektowana',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Czy na pewno chcesz usunąć plik "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Czy na pewno chcesz usunąć wtyczkę "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"': 'Czy na pewno chcesz usunąć aplikację "%s"',
'Are you sure you want to uninstall application "%s"?': 'Czy na pewno chcesz usunąć aplikację "%s"?',
'Are you sure you want to upgrade web2py now?': 'Are you sure you want to upgrade web2py now?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'UWAGA: Wymagane jest bezpieczne (HTTPS) połączenie lub połączenie z lokalnego adresu.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'UWAGA: TESTOWANIE NIE JEST BEZPIECZNE W ŚRODOWISKU WIELOWĄTKOWYM, TAK WIĘC NIE URUCHAMIAJ WIELU TESTÓW JEDNOCZEŚNIE.',
'ATTENTION: you cannot edit the running application!': 'UWAGA: nie można edytować uruchomionych aplikacji!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Dostępne bazy danych i tabele',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'wstecz',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'pamięć podręczna, bilety błędów oraz pliki sesji zostały wyczyszczone',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Nie może być puste',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nie można skompilować: w Twojej aplikacji są błędy . Znajdź je, popraw a następnie spróbój ponownie.',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'nie można utworzyć pliku',
'cannot upload file "%(filename)s"': 'nie można wysłać pliku "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'change admin password',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'zaznacz wszystko',
'Check for upgrades': 'check for upgrades',
'Check to delete': 'Zaznacz aby usunąć',
'Checking for upgrades...': 'Sprawdzanie aktualizacji...',
'Clean': 'oczyść',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'kliknij aby przejść do interaktywnych przykładów',
'click here for the administrative interface': 'kliknij aby przejść do panelu administracyjnego',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'kliknij aby sprawdzić aktualizacje',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'skompiluj',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'skompilowana aplikacja została usunięta',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'Kontrolery',
'controllers': 'kontrolery',
'Count': 'Count',
'Create': 'create',
'create file with filename:': 'utwórz plik o nazwie:',
'create new application:': 'utwórz nową aplikację:',
'Create new simple application': 'Utwórz nową aplikację',
'Create/Upload': 'Create/Upload',
'created by': 'utworzone przez',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Aktualne żądanie',
'Current response': 'Aktualna odpowiedź',
'Current session': 'Aktualna sesja',
'DESIGN': 'PROJEKTUJ',
'Date and Time': 'Data i godzina',
'Delete': 'Usuń',
'Delete:': 'Usuń:',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'Umieść na Google App Engine',
'Design for': 'Projekt dla',
'EDIT': 'EDYTUJ',
'Edit': 'edytuj',
'Edit application': 'Edycja aplikacji',
'Edit current record': 'Edytuj aktualny rekord',
'Editing Language file': 'Edytuj plik tłumaczeń',
'Editing file': 'Edycja pliku',
'Editing file "%s"': 'Edycja pliku "%s"',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error logs for "%(app)s"': 'Wpisy błędów dla "%(app)s"',
'Errors': 'błędy',
'Exception instance attributes': 'Exception instance attributes',
'Functions with no doctests will result in [passed] tests.': 'Funkcje bez doctestów będą dołączone do [zaliczonych] testów.',
'Hello World': 'Witaj Świecie',
'Help': 'pomoc',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Jeżeli powyższy raport zawiera numer biletu błędu, oznacza to błąd podczas wykonywania kontrolera przez próbą uruchomienia doctestów. Zazwyczaj jest to spowodowane nieprawidłowymi wcięciami linii kodu lub błędami w module poza ciałem funkcji.\nTytuł w kolorze zielonym oznacza, ze wszystkie (zdefiniowane) testy zakończyły się sukcesem. W tej sytuacji ich wyniki nie są pokazane.',
'Import/Export': 'Importuj/eksportuj',
'Install': 'install',
'Installed applications': 'Zainstalowane aplikacje',
'Internal State': 'Stan wewnętrzny',
'Invalid Query': 'Błędne zapytanie',
'Invalid action': 'Błędna akcja',
'Language files (static strings) updated': 'Pliki tłumaczeń (ciągi statyczne) zostały uaktualnione',
'Languages': 'Tłumaczenia',
'Last saved on:': 'Ostatnio zapisany:',
'License for': 'Licencja dla',
'Login': 'Zaloguj',
'Login to the Administrative Interface': 'Logowanie do panelu administracyjnego',
'Logout': 'wyloguj',
'Models': 'Modele',
'Modules': 'Moduły',
'NO': 'NIE',
'New Record': 'Nowy rekord',
'New application wizard': 'New application wizard',
'New simple application': 'New simple application',
'No databases in this application': 'Brak baz danych w tej aplikacji',
'Original/Translation': 'Oryginał/tłumaczenie',
'Overwrite installed app': 'overwrite installed app',
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
'Pack all': 'spakuj wszystko',
'Pack compiled': 'spakuj skompilowane',
'Peeking at file': 'Podgląd pliku',
'Plugin "%s" in application': 'Wtyczka "%s" w aplikacji',
'Plugins': 'Wtyczki',
'Powered by': 'Zasilane przez',
'Query:': 'Zapytanie:',
'Remove compiled': 'usuń skompilowane',
'Resolve Conflict file': 'Rozwiąż konflikt plików',
'Rows in table': 'Wiersze w tabeli',
'Rows selected': 'Wierszy wybranych',
'Saved file hash:': 'Suma kontrolna zapisanego pliku:',
'Site': 'strona główna',
'Start wizard': 'start wizard',
'Static files': 'Pliki statyczne',
'Sure you want to delete this object?': 'Czy na pewno chcesz usunąć ten obiekt?',
'TM': 'TM',
'Testing application': 'Testowanie aplikacji',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Zapytanie" jest warunkiem postaci "db.tabela1.pole1==\'wartość\'". Takie coś jak "db.tabela1.pole1==db.tabela2.pole2" oznacza SQL JOIN.',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no controllers': 'Brak kontrolerów',
'There are no models': 'Brak modeli',
'There are no modules': 'Brak modułów',
'There are no plugins': 'There are no plugins',
'There are no static files': 'Brak plików statycznych',
'There are no translators, only default language is supported': 'Brak plików tłumaczeń, wspierany jest tylko domyślny język',
'There are no views': 'Brak widoków',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'This is the %(filename)s template': 'To jest szablon %(filename)s',
'Ticket': 'Bilet',
'To create a plugin, name a file/folder plugin_[name]': 'Aby utworzyć wtyczkę, nazwij plik/katalog plugin_[nazwa]',
'Translation strings for the application': 'Translation strings for the application',
'Unable to check for upgrades': 'Nie można sprawdzić aktualizacji',
'Unable to download': 'Nie można ściągnąć',
'Unable to download app': 'Nie można ściągnąć aplikacji',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because': 'Unable to download because',
'Uninstall': 'odinstaluj',
'Update:': 'Uaktualnij:',
'Upload & install packed application': 'Upload & install packed application',
'Upload a package:': 'Upload a package:',
'Upload existing application': 'Wyślij istniejącą aplikację',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Użyj (...)&(...) jako AND, (...)|(...) jako OR oraz ~(...) jako NOT do tworzenia bardziej skomplikowanych zapytań.',
'Use an url:': 'Use an url:',
'Version': 'Wersja',
'Views': 'Widoki',
'Welcome to web2py': 'Witaj w web2py',
'YES': 'TAK',
'additional code for your application': 'dodatkowy kod Twojej aplikacji',
'admin disabled because no admin password': 'panel administracyjny wyłączony z powodu braku hasła administracyjnego',
'admin disabled because not supported on google app engine': 'panel administracyjny wyłączony z powodu braku wsparcia na google apps engine',
'admin disabled because unable to access password file': 'panel administracyjny wyłączony z powodu braku dostępu do pliku z hasłem',
'administrative interface': 'administrative interface',
'and rename it (required):': 'i nadaj jej nową nazwę (wymagane):',
'and rename it:': 'i nadaj mu nową nazwę:',
'appadmin': 'administracja aplikacji',
'appadmin is disabled because insecure channel': 'administracja aplikacji wyłączona z powodu braku bezpiecznego połączenia',
'application "%s" uninstalled': 'aplikacja "%s" została odinstalowana',
'application compiled': 'aplikacja została skompilowana',
'application is compiled and cannot be designed': 'aplikacja jest skompilowana i nie może być projektowana',
'arguments': 'arguments',
'back': 'wstecz',
'cache': 'cache',
'cache, errors and sessions cleaned': 'pamięć podręczna, bilety błędów oraz pliki sesji zostały wyczyszczone',
'cannot create file': 'nie można utworzyć pliku',
'cannot upload file "%(filename)s"': 'nie można wysłać pliku "%(filename)s"',
'check all': 'zaznacz wszystko',
'click here for online examples': 'kliknij aby przejść do interaktywnych przykładów',
'click here for the administrative interface': 'kliknij aby przejść do panelu administracyjnego',
'click to check for upgrades': 'kliknij aby sprawdzić aktualizacje',
'code': 'code',
'collapse/expand all': 'collapse/expand all',
'compiled application removed': 'skompilowana aplikacja została usunięta',
'controllers': 'kontrolery',
'create file with filename:': 'utwórz plik o nazwie:',
'create new application:': 'utwórz nową aplikację:',
'created by': 'utworzone przez',
'crontab': 'crontab',
'currently running': 'currently running',
'currently saved or': 'aktualnie zapisany lub',
'data uploaded': 'dane wysłane',
'Database': 'Database',
'database': 'baza danych',
'Database %s select': 'Database %s select',
'database %s select': 'wybór z bazy danych %s',
'Database administration': 'Database administration',
'database administration': 'administracja bazy danych',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Data i godzina',
'db': 'baza danych',
'Debug': 'Debug',
'defines tables': 'zdefiniuj tabele',
'Delete': 'Usuń',
'delete': 'usuń',
'delete all checked': 'usuń wszystkie zaznaczone',
'delete plugin': 'usuń wtyczkę',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Usuń:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'deploy',
'Deploy on Google App Engine': 'Umieść na Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'projektuj',
'DESIGN': 'PROJEKTUJ',
'Design for': 'Projekt dla',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'zrobione!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'EDIT': 'EDYTUJ',
'Edit': 'edytuj',
'edit all': 'edit all',
'Edit application': 'Edycja aplikacji',
'edit controller': 'edytuj kontroler',
'edit controller:': 'edit controller:',
'Edit current record': 'Edytuj aktualny rekord',
'edit views:': 'edit views:',
'Editing %s': 'Editing %s',
'Editing file': 'Edycja pliku',
'Editing file "%s"': 'Edycja pliku "%s"',
'Editing Language file': 'Edytuj plik tłumaczeń',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Error',
'Error logs for "%(app)s"': 'Wpisy błędów dla "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'błędy',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'eksportuj jako plik csv',
'Exports:': 'Exports:',
'exposes': 'eksponuje',
'exposes:': 'exposes:',
'extends': 'rozszerza',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'nie udało się przeładować modułu',
'failed to reload module because:': 'failed to reload module because:',
'File': 'File',
'file "%(filename)s" created': 'plik "%(filename)s" został utworzony',
'file "%(filename)s" deleted': 'plik "%(filename)s" został usunięty',
'file "%(filename)s" uploaded': 'plik "%(filename)s" został wysłany',
@@ -198,80 +241,400 @@
'file "%s" of %s restored': 'plik "%s" z %s został odtworzony',
'file changed on disk': 'plik na dysku został zmieniony',
'file does not exist': 'plik nie istnieje',
'file not found': 'file not found',
'file saved on %(time)s': 'plik zapisany o %(time)s',
'file saved on %s': 'plik zapisany o %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Funkcje bez doctestów będą dołączone do [zaliczonych] testów.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Hello World': 'Witaj Świecie',
'Help': 'pomoc',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'edytuj HTML',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Jeżeli powyższy raport zawiera numer biletu błędu, oznacza to błąd podczas wykonywania kontrolera przez próbą uruchomienia doctestów. Zazwyczaj jest to spowodowane nieprawidłowymi wcięciami linii kodu lub błędami w module poza ciałem funkcji.\nTytuł w kolorze zielonym oznacza, ze wszystkie (zdefiniowane) testy zakończyły się sukcesem. W tej sytuacji ich wyniki nie są pokazane.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Importuj/eksportuj',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'zawiera',
'Indent with tabs': 'Indent with tabs',
'insert new': 'wstaw nowy rekord tabeli',
'insert new %s': 'wstaw nowy rekord do tabeli %s',
'inspect attributes': 'inspect attributes',
'Install': 'install',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Zainstalowane aplikacje',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'wewnętrzny błąd',
'internal error: %s': 'internal error: %s',
'Internal State': 'Stan wewnętrzny',
'Invalid action': 'Błędna akcja',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'błędne hasło',
'invalid password.': 'invalid password.',
'Invalid Query': 'Błędne zapytanie',
'invalid request': 'błędne zapytanie',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'błędny bilet',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'plik tłumaczeń "%(filename)s" został utworzony/uaktualniony',
'Language files (static strings) updated': 'Pliki tłumaczeń (ciągi statyczne) zostały uaktualnione',
'languages': 'pliki tłumaczeń',
'Languages': 'Tłumaczenia',
'languages updated': 'pliki tłumaczeń zostały uaktualnione',
'Last Revision': 'Last Revision',
'Last saved on:': 'Ostatnio zapisany:',
'License for': 'Licencja dla',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'wczytywanie...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Zaloguj',
'login': 'zaloguj',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Logowanie do panelu administracyjnego',
'Login/Register': 'Login/Register',
'Logout': 'wyloguj',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'zespól',
'Models': 'Modele',
'models': 'modele',
'Modified On': 'Modified On',
'Modules': 'Moduły',
'modules': 'moduły',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'nowa aplikacja "%s" została utworzona',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'nowa wtyczka została zainstalowana',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Nowy rekord',
'new record inserted': 'nowy rekord został wstawiony',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'następne 100 wierszy',
'NO': 'NIE',
'no changes': 'no changes',
'No databases in this application': 'Brak baz danych w tej aplikacji',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'lub zaimportuj z pliku csv',
'or provide app url:': 'or provide app url:',
'or provide application url:': 'lub podaj url aplikacji:',
'Original/Translation': 'Oryginał/tłumaczenie',
'Overview': 'Overview',
'Overwrite installed app': 'overwrite installed app',
'Pack all': 'spakuj wszystko',
'Pack compiled': 'spakuj skompilowane',
'Pack custom': 'Pack custom',
'pack plugin': 'spakuj wtyczkę',
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Podgląd pliku',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'wtyczka "%(plugin)s" została usunięta',
'Plugin "%s" in application': 'Wtyczka "%s" w aplikacji',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Wtyczki',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Zasilane przez',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'poprzednie 100 wierszy',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Zapytanie:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'rekord',
'record does not exist': 'rekord nie istnieje',
'record id': 'ID rekordu',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Reload routes',
'Remove compiled': 'usuń skompilowane',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Rozwiąż konflikt plików',
'response': 'response',
'restart': 'restart',
'restore': 'odtwórz',
'return': 'return',
'Revert': 'Revert',
'revert': 'przywróć',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in table': 'Wiersze w tabeli',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Wierszy wybranych',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'save': 'zapisz',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Suma kontrolna zapisanego pliku:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'zaznaczone',
'session': 'session',
'session expired': 'sesja wygasła',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'powłoka',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'strona główna',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'niektóre pliki nie mogły zostać usunięte',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'start wizard',
'state': 'stan',
'Static': 'Static',
'static': 'pliki statyczne',
'Static files': 'Pliki statyczne',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'submit': 'wyślij',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Czy na pewno chcesz usunąć ten obiekt?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabela',
'Table': 'Table',
'Temporary': 'Temporary',
'test': 'testuj',
'Testing application': 'Testowanie aplikacji',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Zapytanie" jest warunkiem postaci "db.tabela1.pole1==\'wartość\'". Takie coś jak "db.tabela1.pole1==db.tabela2.pole2" oznacza SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'logika aplikacji, każda ścieżka URL jest mapowana na jedną z funkcji eksponowanych w kontrolerze',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': 'reprezentacja danych, definicje zbiorów i tabel bazy danych',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': 'warstwa prezentacji, widoki zwane są również szablonami',
'Theme': 'Theme',
'There are no controllers': 'Brak kontrolerów',
'There are no models': 'Brak modeli',
'There are no modules': 'Brak modułów',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'Brak plików statycznych',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Brak plików tłumaczeń, wspierany jest tylko domyślny język',
'There are no views': 'Brak widoków',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': 'pliki obsługiwane bez interpretacji, to jest miejsce na Twoje obrazy',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'To jest szablon %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Bilet',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'TM': 'TM',
'to previous version.': 'do poprzedniej wersji.',
'To create a plugin, name a file/folder plugin_[name]': 'Aby utworzyć wtyczkę, nazwij plik/katalog plugin_[nazwa]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': 'ciągi tłumaczeń dla aplikacji',
'Translation strings for the application': 'Translation strings for the application',
'try': 'spróbój',
'try something like': 'spróbój czegos takiego jak',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Nie można sprawdzić aktualizacji',
'unable to create application "%s"': 'nie można utworzyć aplikacji "%s"',
'unable to delete file "%(filename)s"': 'nie można usunąć pliku "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'nie można usunąc pliku wtyczki "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Nie można ściągnąć',
'Unable to download app': 'Nie można ściągnąć aplikacji',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because': 'Unable to download because',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'nie można sparsować pliku csv',
'unable to uninstall "%s"': 'nie można odinstalować "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'odznacz wszystko',
'Uninstall': 'odinstaluj',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'uaktualnij',
'update all languages': 'uaktualnij wszystkie pliki tłumaczeń',
'Update:': 'Uaktualnij:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'upgrade web2py now',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': 'Upload & install packed application',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload application:': 'wyślij plik aplikacji:',
'Upload existing application': 'Wyślij istniejącą aplikację',
'upload file:': 'wyślij plik:',
'upload plugin file:': 'wyślij plik wtyczki:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Użyj (...)&(...) jako AND, (...)|(...) jako OR oraz ~(...) jako NOT do tworzenia bardziej skomplikowanych zapytań.',
'Use an url:': 'Use an url:',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Wersja',
'Versioning': 'Versioning',
'versioning': 'versioning',
'view': 'widok',
'Views': 'Widoki',
'views': 'widoki',
'web2py Recent Tweets': 'najnowsze tweety web2py',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py jest aktualne',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'najnowsze tweety web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome to web2py': 'Witaj w web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'TAK',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

1
applications/admin/languages/plural-en.py Normal file → Executable file
View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
{
# "singular form (0)": ["first plural form (1)", "second plural form (2)", ...],
'file': ['files'],

1
applications/admin/languages/plural-ru.py Normal file → Executable file
View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
{
# "singular form (0)": ["first plural form (1)", "second plural form (2)", ...],
'файл': ['файла','файлов'],

1
applications/admin/languages/plural-uk.py Normal file → Executable file
View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
{
# "singular form (0)": ["first plural form (1)", "second plural form (2)", ...],
'останній': ['останні','останніх'],

View File

@@ -0,0 +1,664 @@
# -*- coding: utf-8 -*-
{
'!langcode!': 'pt-br',
'!langname!': 'Português Brasileiro',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" é uma expressão opcional como "campo1=\'novo_valor\'". Não é permitido atualizar ou apagar resultados de um JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s registros apagados',
'%s %%{row} updated': '%s registros atualizados',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d/%m/%Y',
'%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S',
'(requires internet access, experimental)': '(requer acesso à internet, experimental)',
'(something like "it-it")': '(algo como "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'@markmin\x01Searching: **%s** %%{file}': 'Buscando: **%s** arquivos',
'A new version of web2py is available': 'Está disponível uma nova versão do web2py',
'A new version of web2py is available: %s': 'Está disponível uma nova versão do web2py: %s',
'Abort': 'Abort',
'About': 'sobre',
'About application': 'Sobre a aplicação',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'código adicional para sua aplicação',
'Additional code for your application': 'Código adicional para sua aplicação',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': ' admin desabilitado por falta de senha definida',
'admin disabled because not supported on google app engine': 'admin desabilitado porque não é suportado no GAE',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin desabilitado porque não foi possível ler o arquivo de senha',
'Admin is disabled because insecure channel': 'Admin desabilitado pois o canal não é seguro',
'Admin is disabled because unsecure channel': 'Admin desabilitado pois o canal não é seguro',
'Admin language': 'Idioma do Admin',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'interface administrativa',
'Administrator Password:': 'Senha de administrador:',
'and rename it (required):': 'e renomeie (requerido):',
'and rename it:': ' e renomeie:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'admin desabilitado porque o canal não é seguro',
'Application': 'Application',
'application "%s" uninstalled': 'aplicação "%s" desinstalada',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'aplicação compilada',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'A aplicação está compilada e não pode ser modificada',
'Application name:': 'Nome da aplicação:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Tem certeza que deseja apagar o arquivo "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Tem certeza que deseja apagar o plugin "%s"?',
'Are you sure you want to delete this object?': 'Tem certeza que deseja apagar esse objeto?',
'Are you sure you want to uninstall application "%s"': 'Tem certeza que deseja desinstalar a aplicação "%s"?',
'Are you sure you want to uninstall application "%s"?': 'Tem certeza que deseja desinstalar a aplicação "%s"?',
'Are you sure you want to upgrade web2py now?': 'Tem certeza que deseja atualizar o web2py agora?',
'Are you sure?': 'Are you sure?',
'arguments': 'argumentos',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENÇÃO: o login requer uma conexão segura (HTTPS) ou executar de localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENÇÃO OS TESTES NÃO SÃO THREAD SAFE, NÃO EFETUE MÚLTIPLOS TESTES AO MESMO TEMPO.',
'ATTENTION: you cannot edit the running application!': 'ATENÇÃO: Não pode modificar a aplicação em execução!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Bancos de dados e tabelas disponíveis',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'voltar',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Informações básicas',
'Begin': 'Iniciar',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'browse': 'navegar',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, erros e sessões eliminadas',
'can be a git repo': 'pode ser um repositório git',
'Cancel': 'Cancel',
'Cannot be empty': 'Não pode ser vazio',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Não é possível compilar: Existem erros em sua aplicação. Depure, corrija os errros e tente novamente',
'Cannot compile: there are errors in your app:': 'Não é possível compilar: Existem erros em sua aplicação',
'cannot create file': 'Não é possível criar o arquivo',
'cannot upload file "%(filename)s"': 'não é possível fazer upload do arquivo "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'mudar senha de administrador',
'change editor settings': 'change editor settings',
'Change Password': 'Mudar Senha',
'Changelog': 'Changelog',
'check all': 'marcar todos',
'Check for upgrades': 'Verificar se existem atualizações',
'Check to delete': 'Marque para apagar',
'Checking for upgrades...': 'Buscando atualizações...',
'Clean': 'Limpo',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'clique para ver exemplos online',
'click here for the administrative interface': 'Clique aqui para acessar a interface administrativa',
'Click row to expand traceback': 'Clique na linha para expandir o traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'clique aqui para verificar se existem atualizações',
'click to open': 'clique para abrir',
'Client IP': 'IP do cliente',
'code': 'código',
'Code listing': 'Code listing',
'collapse/expand all': 'fechar/abrir todos',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'commit (mercurial)': 'commit (mercurial)',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Compilar',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'a aplicação compilada foi removida',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'Controladores',
'controllers': 'controladores',
'Count': 'Contagem',
'Create': 'Criar',
'create file with filename:': 'criar um arquivo com o nome:',
'Create new application using the Wizard': 'Criar nova aplicação utilizando o Assistente',
'create new application:': 'nome da nova aplicação:',
'Create new simple application': 'Crie uma nova aplicação',
'Create/Upload': 'Create/Upload',
'created by': 'criado por',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Requisição atual',
'Current response': 'Resposta atual',
'Current session': 'Sessão atual',
'currently running': 'Executando',
'currently saved or': 'Atualmente salvo ou',
'customize me!': 'Modifique-me!',
'data uploaded': 'Dados enviados',
'Database': 'Database',
'database': 'banco de dados',
'Database %s select': 'Database %s select',
'database %s select': 'Select no banco de dados %s',
'Database administration': 'Database administration',
'database administration': 'administração do banco de dados',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Data e Hora',
'db': 'db',
'Debug': 'Debug',
'defines tables': 'define as tabelas',
'Delete': 'Apague',
'delete': 'apagar',
'delete all checked': 'apagar marcados',
'delete plugin': 'apagar plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Apague:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Publicar',
'Deploy on Google App Engine': 'Publicar no Google App Engine',
'Deploy to OpenShift': 'Publicar no OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': 'Descrição',
'Description:': 'Description:',
'design': 'projeto',
'DESIGN': 'Projeto',
'Design for': 'Projeto de',
'Detailed traceback description': 'Descrição detalhada do traceback',
'details': 'details',
'direction: ltr': 'direção: ltr',
'directory not found': 'directory not found',
'Disable': 'Desabilitar',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'feito!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download de layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download de plugins',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'E-mail',
'EDIT': 'EDITAR',
'Edit': 'Editar',
'edit all': 'editar todos',
'Edit application': 'Editar aplicação',
'edit controller': 'editar controlador',
'edit controller:': 'edit controller:',
'Edit current record': 'Editar o registro atual',
'Edit Profile': 'Editar Perfil',
'edit views:': 'editar visões:',
'Editing %s': 'Editing %s',
'Editing file': 'Editando arquivo',
'Editing file "%s"': 'Editando arquivo "%s"',
'Editing Language file': 'Editando arquivo de idioma',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Framework Web Corporativo',
'Error': 'Erro',
'Error logs for "%(app)s"': 'Logs de erro para "%(app)s"',
'Error snapshot': 'Momento do Erro',
'Error ticket': 'Tiquete de Erro',
'Errors': 'Erros',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Atributos de instância da Exception',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'exportar como arquivo CSV',
'Exports:': 'Exports:',
'exposes': 'expõe',
'exposes:': 'exposes:',
'extends': 'estende',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'Falha ao recarregar o módulo',
'failed to reload module because:': 'falha ao recarregar o módulo porque:',
'File': 'Arquivo',
'file "%(filename)s" created': 'arquivo "%(filename)s" criado',
'file "%(filename)s" deleted': 'arquivo "%(filename)s" apagado',
'file "%(filename)s" uploaded': 'arquivo "%(filename)s" enviado',
'file "%(filename)s" was not deleted': 'arquivo "%(filename)s" não foi apagado',
'file "%s" of %s restored': 'arquivo "%s" de %s restaurado',
'file changed on disk': 'arquivo modificado no disco',
'file does not exist': 'arquivo não existe',
'file not found': 'file not found',
'file saved on %(time)s': 'arquivo salvo em %(time)s',
'file saved on %s': 'arquivo salvo em %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filtro',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'First name': 'Nome',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Funções sem doctests resultarão em testes [aceitos].',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Gerar',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'vai!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': 'ID do Grupo',
'Hello World': 'Olá Mundo',
'Help': 'Ajuda',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Se o relatório acima contém um número de ticket, isso indica uma falha no controlador em execução, antes de tentar executar os doctests. Isto acontece geralmente por erro de identação ou um erro fora do código da função.\nO título em verde indica que os testes (se definidos) passaram. Neste caso o resultado dos testes não são mostrados.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Importar/Exportar',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'inclui',
'Indent with tabs': 'Indent with tabs',
'insert new': 'inserir novo',
'insert new %s': 'inserir novo %s',
'inspect attributes': 'inspeciona atributos',
'Install': 'instalar',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Aplicações instaladas',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'erro interno',
'internal error: %s': 'internal error: %s',
'Internal State': 'Estado Interno',
'Invalid action': 'Ação inválida',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'E-mail inválido',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'senha inválida',
'invalid password.': 'invalid password.',
'Invalid Query': 'Consulta inválida',
'invalid request': 'solicitação inválida',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'ticket inválido',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'arquivo de idioma "%(filename)s" criado/atualizado',
'Language files (static strings) updated': 'Arquivos de idioma (textos estáticos) atualizados',
'languages': 'idiomas',
'Languages': 'Idiomas',
'languages updated': 'idiomas atualizados',
'Last name': 'Sobrenome',
'Last Revision': 'Last Revision',
'Last saved on:': 'Salvo pela última vez em:',
'License for': 'Licença para',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'carregando...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'login': 'início de sessão',
'Login': 'Entrar',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Entrar na interface adminitrativa',
'Login/Register': 'Login/Register',
'Logout': 'finalizar sessão',
'Lost Password': 'Perdi a senha',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Gerenciar',
'manage': 'gerenciar',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'juntar',
'models': 'modelos',
'Models': 'Modelos',
'Modified On': 'Modified On',
'Modules': 'Módulos',
'modules': 'módulos',
'Multi User Mode': 'Multi User Mode',
'Name': 'Nome',
'new application "%s" created': 'nova aplicação "%s" criada',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'Assistente para novas aplicações ',
'New application wizard': 'Assistente para novas aplicações',
'new plugin installed': 'novo plugin instalado',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Novo registro',
'new record inserted': 'novo registro inserido',
'New simple application': 'Nova aplicação básica',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'próximos 100 registros',
'NO': 'NÃO',
'no changes': 'no changes',
'No databases in this application': 'Não existem bancos de dados nesta aplicação',
'No Interaction yet': 'No Interaction yet',
'no match': 'não encontrado',
'no package selected': 'nenhum pacote selecionado',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Ou baixa da URL:',
'or import from csv file': 'ou importar de um arquivo CSV',
'or provide app url:': 'ou forneça a url de uma aplicação:',
'or provide application url:': 'ou forneça a url de uma aplicação:',
'Origin': 'Origem',
'Original/Translation': 'Original/Tradução',
'Overview': 'Overview',
'Overwrite installed app': 'Sobrescrever aplicação instalada',
'Pack all': 'Criar pacote',
'Pack compiled': 'Criar pacote compilado',
'Pack custom': 'Customizar pacote',
'pack plugin': 'empacotar plugin',
'PAM authenticated user, cannot change password here': 'usuário autenticado por PAM não pode alterar a senha aqui',
'Password': 'Senha',
'password changed': 'senha alterada',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Visualizando arquivo',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" apagado',
'Plugin "%s" in application': 'Plugin "%s" na aplicação',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Este site utiliza',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '100 registros anteriores',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Consulta:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'registro',
'record does not exist': 'o registro não existe',
'record id': 'id do registro',
'Record ID': 'ID do Registro',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Register': 'Registrar-se',
'Registration key': 'Chave de registro',
'Reload routes': 'Recarregar routes',
'Remove compiled': 'Eliminar compilados',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Arquivo de resolução de conflito',
'response': 'response',
'restart': 'reiniciar',
'restore': 'restaurar',
'return': 'return',
'Revert': 'Revert',
'revert': 'reverter',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Papel',
'Roles': 'Roles',
'Rows in table': 'Registros na tabela',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Registros selecionados',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Rodando em %s',
'Save': 'Save',
'save': 'salvar',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': 'Hash do arquivo salvo:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Selecione arquivos para empacotar',
'selected': 'selecionado(s)',
'session': 'session',
'session expired': 'sessão expirada',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'Terminal',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'pular para a gerar a aplicação',
'some files could not be removed': 'alguns arquivos não puderam ser removidos',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Inicie uma nova aplicação',
'Start searching': 'Start searching',
'Start wizard': 'Iniciar assistente',
'state': 'estado',
'Static': 'Static',
'static': 'estáticos',
'Static files': 'Arquivos estáticos',
'Statistics': 'Statistics',
'Step': 'Passo',
'step': 'step',
'stop': 'stop',
'submit': 'enviar',
'Submit': 'Enviar',
'successful': 'successful',
'Sure you want to delete this object?': 'Tem certeza que deseja apagar este objeto?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabela',
'Table': 'Table',
'Table name': 'Nome da tabela',
'Temporary': 'Temporary',
'test': 'testar',
'Testing application': 'Testando a aplicação',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'A "consulta" é uma condição como "db.tabela.campo1==\'valor\'". Algo como "db.tabela1.campo1==db.tabela2.campo2" resulta em um JOIN SQL.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'A lógica da aplicação, cada URL é mapeada para uma função exposta pelo controlador',
'The application logic, each URL path is mapped in one exposed function in the controller': 'A lógica da aplicação, cada URL é mapeada para uma função exposta pelo controlador',
'the data representation, define database tables and sets': 'A representação dos dados, define tabelas do banco de dados e conjuntos',
'The data representation, define database tables and sets': 'A representação dos dados, define tabelas do banco de dados e conjuntos',
'The presentations layer, views are also known as templates': 'A camada de apresentação, as visões também são chamadas de templates',
'the presentations layer, views are also known as templates': 'A camada de apresentação, as visões também são chamadas de templates',
'Theme': 'Theme',
'There are no controllers': 'Não existem controladores',
'There are no models': 'Não existem modelos',
'There are no modules': 'Não existem módulos',
'There are no plugins': 'Não existem plugins',
'There are no private files': 'There are no private files',
'There are no static files': 'Não existem arquicos estáticos',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Não há tradutores, somente a linguagem padrão é suportada',
'There are no views': 'Não existem visões',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'Estes arquivos são servidos sem processamento, suas imagens ficam aqui',
'these files are served without processing, your images go here': 'Estes arquivos são servidos sem processamento, suas imagens ficam aqui',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Este é o template %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Número do Ticket',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Momento de geração',
'TM': 'MR',
'to previous version.': 'para a versão anterior.',
'To create a plugin, name a file/folder plugin_[name]': 'Para criar um plugin, nomeie um arquivo/pasta como plugin_[nome]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': 'textos traduzidos para a aplicação',
'Translation strings for the application': 'textos traduzidos para a aplicação',
'try': 'tente',
'try something like': 'tente algo como',
'Try the mobile interface': 'Experimente a interface para smartphones e tablets',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Não é possível checar as atualizações',
'unable to create application "%s"': 'não é possível criar a aplicação "%s"',
'unable to delete file "%(filename)s"': 'não é possível criar o arquivo "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'não é possível criar o plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Não é possível efetuar o download',
'Unable to download app': 'Não é possível baixar a aplicação',
'Unable to download app because:': 'Não é possível baixar a aplicação porque:',
'Unable to download because': 'Não é possível baixar porque',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'não é possível analisar o arquivo CSV',
'unable to uninstall "%s"': 'não é possível desinstalar "%s"',
'unable to upgrade because "%s"': 'não é possível atualizar porque "%s"',
'uncheck all': 'desmarcar todos',
'Uninstall': 'Desinstalar',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'alterar',
'update all languages': 'alterar todos os idiomas',
'Update:': 'Alterar:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'Atualize agora para %s',
'upgrade web2py now': 'atualize o web2py agora',
'upload': 'upload',
'Upload': 'Upload',
'Upload a package:': 'Faça upload de um pacote:',
'Upload and install packed application': 'Faça upload e instale uma aplicação empacotada',
'upload application:': 'Fazer upload de uma aplicação:',
'Upload existing application': 'Faça upload de uma aplicação existente',
'upload file:': 'Enviar arquivo:',
'upload plugin file:': 'Enviar arquivo de plugin:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, e ~(...) para NOT, para criar consultas mais complexas.',
'Use an url:': 'Use uma url:',
'User': 'User',
'User ID': 'ID do Usuário',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variáveis',
'Version': 'Versão',
'Versioning': 'Versionamento',
'versioning': 'versionamento',
'view': 'visão',
'Views': 'Visões',
'views': 'visões',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py está atualizado',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'Tweets Recentes de @web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py atualizado; favor reiniciar',
'Welcome to web2py': 'Bem-vindo ao web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'SIM',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

677
applications/admin/languages/pt.py Normal file → Executable file
View File

@@ -1,232 +1,251 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'pt',
'!langname!': 'Português',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" é uma expressão opcional como "campo1=\'novo_valor\'". Não é permitido atualizar ou apagar resultados de um JOIN',
'%Y-%m-%d': '%d/%m/%Y',
'%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s registros apagados',
'%s %%{row} updated': '%s registros atualizados',
'(requires internet access)': '(requer acesso a internet)',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d/%m/%Y',
'%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S',
'(requires internet access)': '(requer acesso à internet)',
'(requires internet access, experimental)': '(requer acesso à internet, experimental)',
'(something like "it-it")': '(algo como "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(file **gluon/contrib/plural_rules/%s.py** is not found)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available': 'Está disponível uma nova versão do web2py',
'A new version of web2py is available: %s': 'Está disponível uma nova versão do web2py: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENÇÃO o login requer uma conexão segura (HTTPS) ou executar de localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENÇÃO OS TESTES NÃO THREAD SAFE, NÃO EFETUE MÚLTIPLOS TESTES AO MESMO TEMPO.',
'ATTENTION: you cannot edit the running application!': 'ATENÇÃO: Não pode modificar a aplicação em execução!',
'Abort': 'Abort',
'About': 'sobre',
'About application': 'Sobre a aplicação',
'Additional code for your application': 'Additional code for your application',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'código adicional para sua aplicação',
'Additional code for your application': 'Código adicional para a sua aplicação',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': ' admin desabilitado por falta de senha definida',
'admin disabled because not supported on google app engine': 'admin dehabilitado, não é soportado no GAE',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'admin desabilitado, não foi possível ler o arquivo de senha',
'Admin is disabled because insecure channel': 'Admin desabilitado pois o canal não é seguro',
'Admin is disabled because unsecure channel': 'Admin desabilitado pois o canal não é seguro',
'Admin language': 'Linguagem do Admin',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'interface administrativa',
'Administrator Password:': 'Senha de administrador:',
'and rename it (required):': 'e renomeie (requerido):',
'and rename it:': ' e renomeie:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'admin desabilitado, canal inseguro',
'Application': 'Application',
'application "%s" uninstalled': 'aplicação "%s" desinstalada',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'aplicação compilada',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'A aplicação está compilada e não pode ser modificada',
'Application name:': 'Nome da aplicação:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'não usadas',
'are not used yet': 'ainda não usadas',
'Are you sure you want to delete file "%s"?': 'Tem certeza que deseja apagar o arquivo "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Tem certeza que deseja apagar o plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"': 'Tem certeza que deseja apagar a aplicação "%s"?',
'Are you sure you want to uninstall application "%s"?': 'Tem certeza que deseja apagar a aplicação "%s"?',
'Are you sure you want to upgrade web2py now?': 'Tem certeza que deseja atualizar o web2py agora?',
'Are you sure?': 'Are you sure?',
'arguments': 'argumentos',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENÇÃO o login requer uma conexão segura (HTTPS) ou executar de localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENÇÃO OS TESTES NÃO THREAD SAFE, NÃO EFETUE MÚLTIPLOS TESTES AO MESMO TEMPO.',
'ATTENTION: you cannot edit the running application!': 'ATENÇÃO: Não pode modificar a aplicação em execução!',
'Autocomplete Python Code': 'Autocompletar Código Python',
'Available databases and tables': 'Bancos de dados e tabelas disponíveis',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'voltar',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'browse': 'buscar',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, erros e sessões eliminadas',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Não pode ser vazio',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Não é possível compilar: Existem erros em sua aplicação. Depure, corrija os errros e tente novamente',
'Cannot compile: there are errors in your app:': 'Não é possível compilar: Existem erros em sua aplicação',
'Change Password': 'Trocar Senha',
'cannot create file': 'Não é possível criar o arquivo',
'cannot upload file "%(filename)s"': 'não é possível fazer upload do arquivo "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'mudar senha de administrador',
'change editor settings': 'mudar definições do editor',
'Change Password': 'Trocar Senha',
'Changelog': 'Changelog',
'check all': 'marcar todos',
'Check for upgrades': 'checar por atualizações',
'Check to delete': 'Marque para apagar',
'Checking for upgrades...': 'Buscando atualizações...',
'Clean': 'limpar',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'clique para ver exemplos online',
'click here for the administrative interface': 'Clique aqui para acessar a interface administrativa',
'Click row to expand traceback': 'Clique em uma coluna para expandir o log do erro',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'clique aqui para checar por atualizações',
'click to open': 'clique para abrir',
'Client IP': 'IP do cliente',
'code': 'código',
'Code listing': 'Code listing',
'collapse/expand all': 'colapsar/expandir tudo',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'commit (mercurial)': 'commit (mercurial)',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'compilar',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'aplicação compilada removida',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': 'Controladores',
'controllers': 'controladores',
'Count': 'Contagem',
'Create': 'criar',
'create file with filename:': 'criar um arquivo com o nome:',
'Create new application using the Wizard': 'Criar nova aplicação utilizando o assistente',
'create new application:': 'nome da nova aplicação:',
'Create new simple application': 'Crie uma nova aplicação',
'Create/Upload': 'Create/Upload',
'created by': 'criado por',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Requisição atual',
'Current response': 'Resposta atual',
'Current session': 'Sessão atual',
'DESIGN': 'Projeto',
'currently running': 'Executando',
'currently saved or': 'Atualmente salvo ou',
'customize me!': 'Modifique-me',
'data uploaded': 'Dados enviados',
'Database': 'Database',
'database': 'banco de dados',
'Database %s select': 'Database %s select',
'database %s select': 'Seleção no banco de dados %s',
'Database administration': 'Database administration',
'database administration': 'administração de banco de dados',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Data e Hora',
'db': 'db',
'Debug': 'Debug',
'defines tables': 'define as tabelas',
'Delete': 'Apague',
'delete': 'apagar',
'delete all checked': 'apagar marcados',
'delete plugin': 'apagar plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Apague:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'publicar',
'Deploy on Google App Engine': 'Publicar no Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': 'Descrição',
'Description:': 'Description:',
'design': 'modificar',
'DESIGN': 'Projeto',
'Design for': 'Projeto de',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direção: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': 'feito!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'E-mail',
'EDIT': 'EDITAR',
'Edit': 'editar',
'Edit Profile': 'Editar Perfil',
'edit all': 'edit all',
'Edit application': 'Editar aplicação',
'edit controller': 'editar controlador',
'edit controller:': 'edit controller:',
'Edit current record': 'Editar o registro atual',
'Editing Language file': 'Editando arquivo de linguagem',
'Edit Profile': 'Editar Perfil',
'edit views:': 'editar visões:',
'Editing %s': 'A Editar %s',
'Editing file': 'Editando arquivo',
'Editing file "%s"': 'Editando arquivo "%s"',
'Editing Language file': 'Editando arquivo de linguagem',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Framework web empresarial',
'Error': 'Erro',
'Error logs for "%(app)s"': 'Logs de erro para "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'erros',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Atributos da instancia de excessão',
'File': 'Arquivo',
'First name': 'Nome',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Funções sem doctests resultarão em testes [aceitos].',
'Group ID': 'ID do Grupo',
'Hello World': 'Olá Mundo',
'Help': 'ajuda',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Se o relatório acima contém um número de ticket, isso indica uma falha no controlador em execução, antes de tantar executar os doctests. Isto acontece geralmente por erro de endentação ou erro fora do código da função.\nO titulo em verde indica que os testes (se definidos) passaram. Neste caso os testes não são mostrados.',
'Import/Export': 'Importar/Exportar',
'Install': 'instalar',
'Installed applications': 'Aplicações instaladas',
'Internal State': 'Estado Interno',
'Invalid Query': 'Consulta inválida',
'Invalid action': 'Ação inválida',
'Invalid email': 'E-mail inválido',
'Language files (static strings) updated': 'Arquivos de linguagem (textos estáticos) atualizados',
'Languages': 'Linguagens',
'Last name': 'Sobrenome',
'Last saved on:': 'Salvo em:',
'License for': 'Licença para',
'Login': 'Entrar',
'Login to the Administrative Interface': 'Entrar na interface adminitrativa',
'Logout': 'finalizar sessão',
'Lost Password': 'Senha perdida',
'Models': 'Modelos',
'Modules': 'Módulos',
'NO': 'NÃO',
'Name': 'Nome',
'New Record': 'Novo registro',
'New application wizard': 'Assistente para novas aplicações ',
'New simple application': 'Nova aplicação básica',
'No databases in this application': 'Não existem bancos de dados nesta aplicação',
'Origin': 'Origem',
'Original/Translation': 'Original/Tradução',
'Overwrite installed app': 'sobrescrever aplicação instalada',
'PAM authenticated user, cannot change password here': 'usuario autenticado por PAM, não pode alterar a senha por aqui',
'Pack all': 'criar pacote',
'Pack compiled': 'criar pacote compilado',
'Password': 'Senha',
'Peeking at file': 'Visualizando arquivo',
'Plugin "%s" in application': 'Plugin "%s" na aplicação',
'Plugins': 'Plugins',
'Powered by': 'Este site utiliza',
'Query:': 'Consulta:',
'Record ID': 'ID do Registro',
'Register': 'Registrar-se',
'Registration key': 'Chave de registro',
'Remove compiled': 'eliminar compilados',
'Resolve Conflict file': 'Arquivo de resolução de conflito',
'Role': 'Papel',
'Rows in table': 'Registros na tabela',
'Rows selected': 'Registros selecionados',
'Saved file hash:': 'Hash do arquivo salvo:',
'Site': 'site',
'Start wizard': 'iniciar assistente',
'Static files': 'Arquivos estáticos',
'Sure you want to delete this object?': 'Tem certeza que deseja apaagr este objeto?',
'TM': 'MR',
'Table name': 'Nome da tabela',
'Testing application': 'Testando a aplicação',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'A "consulta" é uma condição como "db.tabela.campo1==\'valor\'". Algo como "db.tabela1.campo1==db.tabela2.campo2" resulta em um JOIN SQL.',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no controllers': 'Não existem controllers',
'There are no models': 'Não existem modelos',
'There are no modules': 'Não existem módulos',
'There are no plugins': 'There are no plugins',
'There are no static files': 'Não existem arquicos estáticos',
'There are no translators, only default language is supported': 'Não há traduções, somente a linguagem padrão é suportada',
'There are no views': 'Não existem visões',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'This is the %(filename)s template': 'Este é o template %(filename)s',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Timestamp': 'Data Atual',
'To create a plugin, name a file/folder plugin_[name]': 'Para criar um plugin, nomeio um arquivo/pasta como plugin_[nome]',
'Traceback': 'Traceback',
'Translation strings for the application': 'Translation strings for the application',
'Unable to check for upgrades': 'Não é possível checar as atualizações',
'Unable to download': 'Não é possível efetuar o download',
'Unable to download app': 'Não é possível baixar a aplicação',
'Unable to download app because:': 'Não é possível baixar a aplicação porque:',
'Unable to download because': 'Não é possível baixar porque',
'Uninstall': 'desinstalar',
'Update:': 'Atualizar:',
'Upload & install packed application': 'Faça upload e instale uma aplicação empacotada',
'Upload a package:': 'Faça upload de um pacote:',
'Upload existing application': 'Faça upload de uma aplicação existente',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, y ~(...) para NOT, para criar consultas mais complexas.',
'Use an url:': 'Use uma url:',
'User ID': 'ID do Usuario',
'Version': 'Versão',
'Views': 'Visões',
'Welcome to web2py': 'Bem-vindo ao web2py',
'YES': 'SIM',
'additional code for your application': 'código adicional para sua aplicação',
'admin disabled because no admin password': ' admin desabilitado por falta de senha definida',
'admin disabled because not supported on google app engine': 'admin dehabilitado, não é soportado no GAE',
'admin disabled because unable to access password file': 'admin desabilitado, não foi possível ler o arquivo de senha',
'administrative interface': 'interface administrativa',
'and rename it (required):': 'e renomeie (requerido):',
'and rename it:': ' e renomeie:',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'admin desabilitado, canal inseguro',
'application "%s" uninstalled': 'aplicação "%s" desinstalada',
'application compiled': 'aplicação compilada',
'application is compiled and cannot be designed': 'A aplicação está compilada e não pode ser modificada',
'arguments': 'argumentos',
'back': 'voltar',
'browse': 'buscar',
'cache': 'cache',
'cache, errors and sessions cleaned': 'cache, erros e sessões eliminadas',
'cannot create file': 'Não é possível criar o arquivo',
'cannot upload file "%(filename)s"': 'não é possível fazer upload do arquivo "%(filename)s"',
'check all': 'marcar todos',
'click here for online examples': 'clique para ver exemplos online',
'click here for the administrative interface': 'Clique aqui para acessar a interface administrativa',
'click to check for upgrades': 'clique aqui para checar por atualizações',
'click to open': 'clique para abrir',
'code': 'código',
'collapse/expand all': 'collapse/expand all',
'commit (mercurial)': 'commit (mercurial)',
'compiled application removed': 'aplicação compilada removida',
'controllers': 'controladores',
'create file with filename:': 'criar um arquivo com o nome:',
'create new application:': 'nome da nova aplicação:',
'created by': 'criado por',
'crontab': 'crontab',
'currently running': 'Executando',
'currently saved or': 'Atualmente salvo ou',
'customize me!': 'Modifique-me',
'data uploaded': 'Dados enviados',
'database': 'banco de dados',
'database %s select': 'Seleção no banco de dados %s',
'database administration': 'administração de banco de dados',
'db': 'db',
'defines tables': 'define as tabelas',
'delete': 'apagar',
'delete all checked': 'apagar marcados',
'delete plugin': 'apagar plugin',
'design': 'modificar',
'direction: ltr': 'direção: ltr',
'done!': 'feito!',
'download layouts': 'download layouts',
'download plugins': 'download plugins',
'edit controller': 'editar controlador',
'edit views:': 'editar visões:',
'Exit Fullscreen': 'Sair de Ecrã Inteiro',
'Expand Abbreviation (html files only)': 'Expandir Abreviação (só para ficheiros html)',
'export as csv file': 'exportar como arquivo CSV',
'Exports:': 'Exports:',
'exposes': 'expõe',
'exposes:': 'exposes:',
'extends': 'estende',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'Falha ao recarregar o módulo',
'failed to reload module because:': 'falha ao recarregar o módulo por:',
'File': 'Arquivo',
'file "%(filename)s" created': 'arquivo "%(filename)s" criado',
'file "%(filename)s" deleted': 'arquivo "%(filename)s" apagado',
'file "%(filename)s" uploaded': 'arquivo "%(filename)s" enviado',
@@ -234,86 +253,418 @@
'file "%s" of %s restored': 'arquivo "%s" de %s restaurado',
'file changed on disk': 'arquivo modificado no disco',
'file does not exist': 'arquivo não existe',
'file not found': 'file not found',
'file saved on %(time)s': 'arquivo salvo em %(time)s',
'file saved on %s': 'arquivo salvo em %s',
'filter': 'filter',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filtro',
'Find Next': 'Localizar Seguinte',
'Find Previous': 'Localizar Anterior',
'First name': 'Nome',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Funções sem doctests resultarão em testes [aceitos].',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': 'ID do Grupo',
'Hello World': 'Olá Mundo',
'Help': 'ajuda',
'here': 'here',
'Hide/Show Translated strings': '',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Se o relatório acima contém um número de ticket, isso indica uma falha no controlador em execução, antes de tantar executar os doctests. Isto acontece geralmente por erro de endentação ou erro fora do código da função.\r\nO titulo em verde indica que os testes (se definidos) passaram. Neste caso os testes não são mostrados.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Importar/Exportar',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'inclui',
'Indent with tabs': 'Indent with tabs',
'insert new': 'inserir novo',
'insert new %s': 'inserir novo %s',
'inspect attributes': 'inspect attributes',
'inspect attributes': 'inspecionar atributos',
'Install': 'instalar',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Aplicações instaladas',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'erro interno',
'internal error: %s': 'internal error: %s',
'Internal State': 'Estado Interno',
'Invalid action': 'Ação inválida',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'E-mail inválido',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'senha inválida',
'invalid password.': 'invalid password.',
'Invalid Query': 'Consulta inválida',
'invalid request': 'solicitação inválida',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'ticket inválido',
'Key': 'Key',
'Keyboard shortcuts': 'Atalhos de teclado',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'arquivo de linguagem "%(filename)s" criado/atualizado',
'Language files (static strings) updated': 'Arquivos de linguagem (textos estáticos) atualizados',
'languages': 'linguagens',
'Languages': 'Linguagens',
'languages updated': 'linguagens atualizadas',
'Last name': 'Sobrenome',
'Last Revision': 'Last Revision',
'Last saved on:': 'Salvo em:',
'License for': 'Licença para',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'carregando...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'login': 'inicio de sessão',
'Login': 'Entrar',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Entrar na interface adminitrativa',
'Login/Register': 'Login/Register',
'Logout': 'finalizar sessão',
'Lost Password': 'Senha perdida',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'manage': 'gerenciar',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'juntar',
'models': 'modelos',
'Models': 'Modelos',
'Modified On': 'Modified On',
'Modules': 'Módulos',
'modules': 'módulos',
'Multi User Mode': 'Multi User Mode',
'Name': 'Nome',
'new application "%s" created': 'nova aplicação "%s" criada',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'Assistente para novas aplicações ',
'new plugin installed': 'novo plugin instalado',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Novo registro',
'new record inserted': 'novo registro inserido',
'New simple application': 'Nova aplicação básica',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'próximos 100 registros',
'NO': 'NÃO',
'no changes': 'no changes',
'No databases in this application': 'Não existem bancos de dados nesta aplicação',
'No Interaction yet': 'No Interaction yet',
'no match': 'não encontrado',
'no package selected': 'nenhum pacote selecionado',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'online designer',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Ou Obtenha do URL:',
'or import from csv file': 'ou importar de um arquivo CSV',
'or provide app url:': 'ou forneça a url de uma aplicação:',
'or provide application url:': 'ou forneça a url de uma aplicação:',
'Origin': 'Origem',
'Original/Translation': 'Original/Tradução',
'Overview': 'Overview',
'Overwrite installed app': 'sobrescrever aplicação instalada',
'Pack all': 'criar pacote',
'Pack compiled': 'criar pacote compilado',
'Pack custom': 'Pack custom',
'pack plugin': 'empacotar plugin',
'PAM authenticated user, cannot change password here': 'usuario autenticado por PAM, não pode alterar a senha por aqui',
'Password': 'Senha',
'password changed': 'senha alterada',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Visualizando arquivo',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" eliminado',
'Plugin "%s" in application': 'Plugin "%s" na aplicação',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Este site utiliza',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '100 registros anteriores',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Consulta:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Read': 'Read',
'Record': 'Record',
'record': 'registro',
'record does not exist': 'o registro não existe',
'record id': 'id do registro',
'Record ID': 'ID do Registro',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Register': 'Registrar-se',
'Registration key': 'Chave de registro',
'Reload routes': 'Reload routes',
'Remove compiled': 'eliminar compilados',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Substituir',
'Replace All': 'Substituir Tudo',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Arquivo de resolução de conflito',
'response': 'response',
'restart': 'restart',
'restore': 'restaurar',
'return': 'return',
'Revert': 'Revert',
'revert': 'reverter',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Papel',
'Roles': 'Roles',
'Rows in table': 'Registros na tabela',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Registros selecionados',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'A correr em %s',
'Save': 'Save',
'save': 'salvar',
'Save file:': 'Gravar ficheiro:',
'Save file: %s': 'Gravar ficheiro: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Gravar via Ajax',
'Saved file hash:': 'Hash do arquivo salvo:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'selecionado(s)',
'session': 'session',
'session expired': 'sessão expirada',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'Terminal',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'alguns arquicos não puderam ser removidos',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'iniciar assistente',
'state': 'estado',
'Static': 'Static',
'static': 'estáticos',
'Static files': 'Arquivos estáticos',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'submit': 'enviar',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Tem certeza que deseja apaagr este objeto?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabela',
'Table': 'Table',
'Table name': 'Nome da tabela',
'Temporary': 'Temporary',
'test': 'testar',
'Testing application': 'Testando a aplicação',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'A "consulta" é uma condição como "db.tabela.campo1==\'valor\'". Algo como "db.tabela1.campo1==db.tabela2.campo2" resulta em um JOIN SQL.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'A lógica da aplicação, cada URL é mapeada para uma função exposta pelo controlador',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': 'A representação dos dadps, define tabelas e estruturas de dados',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': 'A camada de apresentação, As visões também são chamadas de templates',
'Theme': 'Theme',
'There are no controllers': 'Não existem controllers',
'There are no models': 'Não existem modelos',
'There are no modules': 'Não existem módulos',
'There are no plugins': 'There are no plugins',
'There are no private files': '',
'There are no static files': 'Não existem arquicos estáticos',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Não há traduções, somente a linguagem padrão é suportada',
'There are no views': 'Não existem visões',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': 'Estes arquivos são servidos sem processamento, suas imagens ficam aqui',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Este é o template %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Ticket',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Data Atual',
'TM': 'MR',
'to previous version.': 'para a versão anterior.',
'To create a plugin, name a file/folder plugin_[name]': 'Para criar um plugin, nomeio um arquivo/pasta como plugin_[nome]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': 'textos traduzidos para a aplicação',
'Translation strings for the application': 'Translation strings for the application',
'try': 'tente',
'try something like': 'tente algo como',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Não é possível checar as atualizações',
'unable to create application "%s"': 'não é possível criar a aplicação "%s"',
'unable to delete file "%(filename)s"': 'não é possível criar o arquico "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'não é possível criar o plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Não é possível efetuar o download',
'Unable to download app': 'Não é possível baixar a aplicação',
'Unable to download app because:': 'Não é possível baixar a aplicação porque:',
'Unable to download because': 'Não é possível baixar porque',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'não é possível analisar o arquivo CSV',
'unable to uninstall "%s"': 'não é possível instalar "%s"',
'unable to upgrade because "%s"': 'não é possível atualizar porque "%s"',
'uncheck all': 'desmarcar todos',
'Uninstall': 'desinstalar',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'atualizar',
'update all languages': 'atualizar todas as linguagens',
'Update:': 'Atualizar:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'atualize o web2py agora',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': 'Faça upload e instale uma aplicação empacotada',
'Upload a package:': 'Faça upload de um pacote:',
'Upload and install packed application': 'Upload and install packed application',
'upload application:': 'Fazer upload de uma aplicação:',
'Upload existing application': 'Faça upload de uma aplicação existente',
'upload file:': 'Enviar arquivo:',
'upload plugin file:': 'Enviar arquivo de plugin:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, y ~(...) para NOT, para criar consultas mais complexas.',
'Use an url:': 'Use uma url:',
'User': 'User',
'User ID': 'ID do Usuario',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variáveis',
'Version': 'Versão',
'Versioning': 'Versioning',
'versioning': 'versionamento',
'view': 'visão',
'Views': 'Visões',
'views': 'visões',
'web2py Recent Tweets': 'Tweets Recentes de @web2py',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py está atualizado',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'Tweets Recentes de @web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py atualizado; favor reiniciar',
'Welcome to web2py': 'Bem-vindo ao web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': 'SIM',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

863
applications/admin/languages/ro.py Normal file → Executable file

File diff suppressed because it is too large Load Diff

344
applications/admin/languages/ru.py Normal file → Executable file
View File

@@ -1,86 +1,150 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'ru',
'!langname!': 'Русский',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "Feld1 = \'newvalue". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{строкa} %%{удаленa}',
'%s %%{row} updated': '%s %%{строкa} %%{обновленa}',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(требует подключения к интернету)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(наподобие "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Найдено: **%s** %%{файл}',
'A new version of web2py is available': 'Доступна новая версия web2py',
'A new version of web2py is available: %s': 'Доступна новая версия web2py: %s',
'Abort': 'Отмена',
'About': 'О',
'About application': 'О приложении',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'добавочный код для вашего приложения',
'Additional code for your application': 'Допольнительный код для вашего приложения',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'админка отключена, потому что отсутствует пароль администратора',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because not supported on google apps engine': 'админка отключена, т.к. не поддерживается на google app engine',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'админка отключена, т.к. невозможно получить доступ к файлу с паролями ',
'Admin is disabled because insecure channel': 'Админпанель выключена из-за небезопасного соединения',
'Admin is disabled because unsecure channel': 'Админпанель выключен из-за небезопасного соединения',
'Admin language': 'Язык админпанели',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'интерфейс администратора',
'Administrator Password:': 'Пароль администратора:',
'and rename it (required):': 'и переименуйте его (необходимо):',
'and rename it:': ' и переименуйте его:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'Appadmin отключен, т.к. соединение не безопасно',
'Application': 'Application',
'application "%s" uninstalled': 'Приложение "%s" удалено',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'Приложение скомпилировано',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'Приложение скомпилировано и дизайн не может быть изменен',
'Application name:': 'Название приложения:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Вы действительно хотите удалить файл "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"': 'Вы действительно хотите удалить приложение "%s"',
'Are you sure you want to uninstall application "%s"?': 'Вы действительно хотите удалить приложение "%s"?',
'Are you sure you want to upgrade web2py now?': 'Вы действительно хотите обновить web2py сейчас?',
'Are you sure?': 'Are you sure?',
'arguments': 'аргументы',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ВНИМАНИЕ: Для входа требуется бесопасное (HTTPS) соединение либо запуск на localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ВНИМАНИЕ: Тестирование не потокобезопасно, поэтому не запускайте несколько тестов параллельно.',
'ATTENTION: This is an experimental feature and it needs more testing.': 'ВНИМАНИЕ: Это экспериментальная возможность и требует тестирования.',
'ATTENTION: you cannot edit the running application!': 'ВНИМАНИЕ: Вы не можете редактировать работающее приложение!',
'Authentication': 'Аутентификация',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Доступные базы данных и таблицы',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'назад',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'beautify': 'Раскрасить',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'кэш',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'Кэш, ошибки и сессии очищены',
'call': 'вызов',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Не может быть пустым',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Невозможно компилировать: в приложении присутствуют ошибки. Отладьте его, исправьте ошибки и попробуйте заново.',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'Невозможно создать файл',
'cannot upload file "%(filename)s"': 'Невозможно загрузить файл "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Изменить пароль администратора',
'change editor settings': 'change editor settings',
'Change Password': 'Изменить пароль',
'change password': 'изменить пароль',
'Changelog': 'Changelog',
'check all': 'проверить все',
'Check for upgrades': 'проверить обновления',
'Check to delete': 'Поставьте для удаления',
'Checking for upgrades...': 'Проверка обновлений...',
'Clean': 'Очистить',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'нажмите здесь для онлайн примеров',
'click here for the administrative interface': 'нажмите здесь для интерфейса администратора',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'нажмите для проверки обновления',
'Client IP': 'IP клиента',
'code': 'код',
'Code listing': 'Code listing',
'collapse/expand all': 'свернуть/развернуть все',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Компилировать',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'скомпилированное приложение удалено',
'Condition': 'Condition',
'continue': 'continue',
'Controller': 'Контроллер',
'Controllers': 'Контроллеры',
'controllers': 'контроллеры',
'Copyright': 'Copyright',
'Count': 'Count',
'Create': 'Создать',
'create file with filename:': 'Создать файл с названием:',
'create new application:': 'создать новое приложение:',
'Create new simple application': 'Создать новое простое приложение',
'Create/Upload': 'Create/Upload',
'created by': 'создано',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Текущий запрос',
'Current response': 'Текущий ответ',
@@ -91,8 +155,11 @@
'data uploaded': 'дата загрузки',
'Database': 'База данных',
'database': 'база данных',
'Database %s select': 'Database %s select',
'database %s select': 'Выбор базы данных %s ',
'Database administration': 'Database administration',
'database administration': 'администрирование базы данных',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Дата и время',
'db': 'бд',
'DB Model': 'Модель БД',
@@ -104,47 +171,89 @@
'delete plugin': 'удалить плагин',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': 'Удалить:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Развернуть',
'Deploy on Google App Engine': 'Развернуть на Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': 'Описание',
'Description:': 'Description:',
'design': 'дизайн',
'DESIGN': 'ДИЗАЙН',
'Design for': 'Дизайн для',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'направление: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'documentation': 'документация',
'done!': 'выполнено!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'загрузить шаблоны',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'загрузить плагины',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'E-mail',
'EDIT': 'ПРАВКА',
'Edit': 'Правка',
'edit all': 'edit all',
'Edit application': 'Правка приложения',
'edit controller': 'правка контроллера',
'edit controller:': 'edit controller:',
'Edit current record': 'Правка текущей записи',
'Edit Profile': 'Правка профиля',
'edit profile': 'правка профиля',
'Edit This App': 'Правка данного приложения',
'edit views:': 'правка видов:',
'Editing %s': 'Editing %s',
'Editing file': 'Правка файла',
'Editing file "%s"': 'Правка файла "%s"',
'Editing Language file': 'Правка языкового файла',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Error',
'Error logs for "%(app)s"': 'Журнал ошибок для "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'Ошибка',
'escape': 'escape',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Атрибуты объекта исключения',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Раскрыть аббревиатуру',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'Экспорт в CSV',
'Exports:': 'Exports:',
'exposes': 'открывает',
'exposes:': 'exposes:',
'extends': 'расширяет',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'невозможно загрузить модуль',
'failed to reload module because:': 'failed to reload module because:',
'File': 'File',
'file "%(filename)s" created': 'файл "%(filename)s" создан',
'file "%(filename)s" deleted': 'файл "%(filename)s" удален',
'file "%(filename)s" uploaded': 'файл "%(filename)s" загружен',
@@ -152,140 +261,308 @@
'file "%s" of %s restored': 'файл "%s" из %s восстановлен',
'file changed on disk': 'файл изменился на диске',
'file does not exist': 'файл не существует',
'file not found': 'file not found',
'file saved on %(time)s': 'файл сохранен %(time)s',
'file saved on %s': 'файл сохранен %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'фильтр',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'First name': 'Имя',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Функции без doctest будут давать [прошел] в тестах.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'Go to Matching Pair': 'К подходящей паре',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': 'ID группы',
'Hello World': 'Привет, Мир',
'Help': 'Помощь',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Если отчет выше содержит номер ошибки, это указывает на ошибку при работе контроллера, до попытки выполнить doctest. Причиной чаще является неверные отступы или ошибки в коде вне функции. \nЗеленый заголовок указывает на успешное выполнение всех тестов. В этом случае результаты тестов не показываются.',
'If you answer "yes", be patient, it may take a while to download': 'Если вы ответили "Да", потерпите, загрузка может потребовать времени',
'If you answer yes, be patient, it may take a while to download': 'Если вы ответили "Да", потерпите, загрузка может потребовать времени',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Импорт/Экспорт',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'включает',
'Indent with tabs': 'Indent with tabs',
'Index': 'Индекс',
'index': 'index',
'insert new': 'вставить новый',
'insert new %s': 'вставить новый %s',
'inspect attributes': 'inspect attributes',
'Install': 'Установить',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Установленные приложения',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'внутренняя ошибка',
'internal error: %s': 'internal error: %s',
'Internal State': 'Внутренний статус',
'Invalid action': 'Неверное действие',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'Неверный email',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'неверный пароль',
'invalid password.': 'invalid password.',
'Invalid Query': 'Неверный запрос',
'invalid request': 'неверный запрос',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'неверный тикет',
'Key': 'Key',
'Key bindings': 'Комбинации клавиш',
'Key bindings for ZenConding Plugin': 'Комбинации клавиш для плагина ZenConding',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'Языковой файл "%(filename)s" создан/обновлен',
'Language files (static strings) updated': 'Языковые файлы (статичные строки) обновлены',
'languages': 'языки',
'Languages': 'Языки',
'languages updated': 'языки обновлены',
'Last name': 'Фамилия',
'Last Revision': 'Last Revision',
'Last saved on:': 'Последнее сохранение:',
'Layout': 'Верстка',
'License for': 'Лицензия для',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'загрузка...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'located in the file': 'расположенный в файле',
'Login': 'Логин',
'login': 'логин',
'Login': 'Логин',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Вход в интерфейс администратора',
'Login/Register': 'Login/Register',
'Logout': 'выход',
'Lost Password': 'Забыли пароль',
'lost password': 'lost password',
'lost password?': 'Пароль утерян?',
'Main Menu': 'Главное меню',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Match Pair': 'Найти пару',
'Memberships': 'Memberships',
'Menu Model': 'Модель меню',
'merge': 'объединить',
'Merge Lines': 'Объединить линии',
'Models': 'Модели',
'models': 'модели',
'Modified On': 'Modified On',
'Modules': 'Модули',
'modules': 'модули',
'Multi User Mode': 'Multi User Mode',
'Name': 'Название',
'new application "%s" created': 'новое приложение "%s" создано',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'Мастер нового приложения',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Новая запись',
'new record inserted': 'новая запись вставлена',
'New simple application': 'Новое простое приложение',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'следующие 100 строк',
'Next Edit Point': 'Следующее место правки',
'NO': 'НЕТ',
'no changes': 'no changes',
'No databases in this application': 'В приложении нет базы данных',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'или испорт из cvs файла',
'or provide app url:': 'или URL приложения:',
'or provide application url:': 'или URL приложения:',
'Origin': 'Оригинал',
'Original/Translation': 'Оригинал/Перевод',
'Overview': 'Overview',
'Overwrite installed app': 'Переписать на установленное приложение',
'Pack all': 'упаковать все',
'Pack compiled': 'Архив скомпилирован',
'Pack custom': 'Pack custom',
'pack plugin': 'Упаковать плагин',
'Password': 'Пароль',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Просмотр',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'please wait!': 'подождите, пожалуйста!',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Плагин "%s" в приложении',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'плагины',
'Plugins': 'Плагины',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Обеспечен',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'предыдущие 100 строк',
'Previous Edit Point': 'Предыдущее место правки',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Запрос:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'запись',
'record does not exist': 'запись не существует',
'record id': 'id записи',
'Record ID': 'ID записи',
'register': 'зарегистрироваться',
'Record id': 'Record id',
'refresh': 'refresh',
'Register': 'Зарегистрироваться',
'register': 'зарегистрироваться',
'Registration key': 'Ключ регистрации',
'Reload routes': 'Reload routes',
'Remove compiled': 'Удалить скомпилированное',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Reset Password key': 'Сброс пароля',
'Resolve Conflict file': 'Решить конфликт в файле',
'response': 'response',
'restart': 'restart',
'restore': 'восстановить',
'return': 'return',
'Revert': 'Revert',
'revert': 'откатиться',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Роль',
'Roles': 'Roles',
'Rows in table': 'Строк в таблице',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Выбрано строк',
'rules are not defined': 'rules are not defined',
'rules:': 'rules:',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'save': 'сохранить',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Сохранить через Ajax',
'Saved file hash:': 'Хэш сохраненного файла:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'выбрано',
'session': 'session',
'session expired': 'сессия истекла',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'сайт',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'некоторые файлы нельзя удалить',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'запустить мастер',
'state': 'статус',
'Static': 'Static',
'static': 'статичные файлы',
'Static files': 'Статические файлы',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Stylesheet': 'Таблицы стилей',
'submit': 'Отправить',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Действительно хотите удалить данный объект?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'таблица',
'Table': 'Table',
'Table name': 'Название таблицы',
'Temporary': 'Temporary',
'test': 'тест',
'test_def': 'test_def',
'test_for': 'test_for',
@@ -294,6 +571,8 @@
'Testing application': 'Тест приложения',
'Testing controller': 'Тест контроллера',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"query" является условием вида "db.table1.field1 == \'значение\'". Что-либо типа "db.table1.field1 db.table2.field2 ==" ведет к SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'Логика приложения, каждый URL отображается в открытую функцию в контроллере',
'The application logic, each URL path is mapped in one exposed function in the controller': 'Логика приложения, каждый URL отображается к одной функции в контроллере',
'the data representation, define database tables and sets': 'представление данных, определить таблицы и наборы',
@@ -301,43 +580,77 @@
'The output of the file is a dictionary that was rendered by the view': 'Выводом файла является словарь, который создан в виде',
'The presentations layer, views are also known as templates': 'Слой презентации, виды так же известны, как шаблоны',
'the presentations layer, views are also known as templates': 'слой представления, виды известные так же как шаблоны',
'Theme': 'Theme',
'There are no controllers': 'Отсутствуют контроллеры',
'There are no models': 'Отсутствуют модели',
'There are no modules': 'Отсутствуют модули',
'There are no plugins': 'Отсутствуют плагины',
'There are no private files': 'There are no private files',
'There are no static files': 'Отсутствуют статичные файлы',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Отсутствуют переводчики, поддерживается только стандартный язык',
'There are no views': 'Отсутствуют виды',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'Эти файлы обслуживаются без обработки, ваши изображения попадут сюда',
'these files are served without processing, your images go here': 'Эти файлы обслуживаются без обработки, ваши изображения попадут сюда',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is a copy of the scaffolding application': 'Это копия сгенерированного приложения',
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Это шаблон %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Тикет',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Время',
'TM': 'TM',
'to previous version.': 'на предыдущую версию.',
'To create a plugin, name a file/folder plugin_[name]': 'Для создания плагина назовите файл/папку plugin_[название]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': 'строки перевода для приложения',
'Translation strings for the application': 'Строки перевода для приложения',
'try': 'try',
'try something like': 'попробовать что-либо вида',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Невозможно проверить обновления',
'unable to create application "%s"': 'невозможно создать приложение "%s" nicht möglich',
'unable to delete file "%(filename)s"': 'невозможно удалить файл "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Невозможно загрузить',
'Unable to download app': 'Невозможно загрузить',
'Unable to download app because:': 'Unable to download app because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'невозможно разобрать файл csv',
'unable to uninstall "%s"': 'невозможно удалить "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'снять выбор всего',
'Uninstall': 'Удалить',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'обновить',
'update all languages': 'обновить все языки',
'Update:': 'Обновить:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'обновить web2py сейчас',
'upload': 'загрузить',
'Upload': 'Upload',
'Upload & install packed application': 'Загрузить и установить приложение в архиве',
'Upload a package:': 'Загрузить пакет:',
'Upload and install packed application': 'Upload and install packed application',
@@ -348,25 +661,48 @@
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Используйте (...)&(...) для AND, (...)|(...) для OR, и ~(...) для NOT при создании сложных запросов.',
'Use an url:': 'Используйте url:',
'user': 'пользователь',
'User': 'User',
'User ID': 'ID пользователя',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'переменные',
'Version': 'Версия',
'versioning': 'версии',
'Versioning': 'Versioning',
'versioning': 'версии',
'View': 'Вид',
'view': 'вид',
'Views': 'Виды',
'views': 'виды',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py обновлен',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'последние твиты по web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome %s': 'Добро пожаловать, %s',
'Welcome to web2py': 'Добро пожаловать в web2py',
'Which called the function': 'Который вызвал функцию',
'Working...': 'Working...',
'Wrap with Abbreviation': 'Заключить в аббревиатуру',
'WSGI reference name': 'WSGI reference name',
'xml': 'xml',
'YES': 'ДА',
'Yes': 'Yes',
'You are successfully running web2py': 'Вы успешно запустили web2by',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You can modify this application and adapt it to your needs': 'Вы можете изменить это приложение и подогнать под свои нужды',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'You visited the url': 'Вы посетили URL',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

View File

@@ -1,278 +1,259 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'sl',
'!langname!': 'Slovenski',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Popravi" je izbirni izraz kot npr.: "stolpec1 = \'novavrednost\'". Rezultatov JOIN operacije ne morete popravljati ali brisati',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s vrstic izbrisanih',
'%s %%{row} updated': '%s vrstic popravljeno',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(zahteva internetni dostop)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(nekaj kot "sl-SI" ali samo "sl")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Iskanje: **%s** datoteke',
'A new version of web2py is available': 'Nova različica web2py je na voljo',
'A new version of web2py is available: %s': 'Nova različica web2py je na voljo: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'POZOR: Prijava zahteva varno povezavo (HTTPS) ali lokalni (localhost) dostop.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'POZOR: Testiranje ni večopravilno, zato ne poganjajte več testov hkrati.',
'ATTENTION: This is an experimental feature and it needs more testing.': 'POZOR: To je preizkusni fazi in potrebuje več testiranja.',
'ATTENTION: you cannot edit the running application!': 'POZOR: Ne morete urejati aplikacije, ki že teče!',
'Abort': 'Preklic',
'About': 'Vizitka',
'About application': 'O aplikaciji',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': 'dodatna koda za vašo aplikacijo',
'Additional code for your application': 'Dodatna koda za vašo aplikacijo',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'skrbnik izključen, ker ni skrbniškega gesla',
'admin disabled because not supported on google app engine': 'admin disabled because not supported on google app engine',
'admin disabled because not supported on google apps engine': 'skrbnik izključen, ker ni podprt na Google App sistemu',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'skrbnik izključen, ker ne morem dostopati do datoteke z gesli',
'Admin is disabled because insecure channel': 'Skrbnik je izključen zaradi nezavarovane povezave',
'Admin is disabled because unsecure channel': 'Skrbnik je izključen zaradi nezavarovane povezave',
'Admin language': 'Skrbniški jezik',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'skrbniški vmesnik',
'Administrator Password:': 'Skrbniško geslo:',
'and rename it (required):': 'in jo preimenujte (obvezno):',
'and rename it:': ' in jo preimenujte:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'Appadmin izključen, ker zahteva varno (HTTPS) povezavo',
'Application': 'Application',
'application "%s" uninstalled': 'Aplikacija "%s" odstranjena',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'aplikacija prevedena',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'aplikacija je prevedena in je ne morete popravljati',
'Application name:': 'Ime aplikacije:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': 'Ali res želite pobrisati datoteko "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Ali res želite izbrisati ta predmet?',
'Are you sure you want to uninstall application "%s"': 'Ali res želite odstraniti program "%s"',
'Are you sure you want to uninstall application "%s"?': 'Ali res želite odstraniti program "%s"?',
'Are you sure you want to upgrade web2py now?': 'Ali želite sedaj nadgraditi web2py?',
'Are you sure?': 'Are you sure?',
'arguments': 'argumenti',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'POZOR: Prijava zahteva varno povezavo (HTTPS) ali lokalni (localhost) dostop.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'POZOR: Testiranje ni večopravilno, zato ne poganjajte več testov hkrati.',
'ATTENTION: This is an experimental feature and it needs more testing.': 'POZOR: To je preizkusni fazi in potrebuje več testiranja.',
'ATTENTION: you cannot edit the running application!': 'POZOR: Ne morete urejati aplikacije, ki že teče!',
'Authentication': 'Avtentikacija',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': 'Podatkovne baze in tabele',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'nazaj',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'beautify': 'olepšaj',
'Begin': 'Začni',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'predpomnilnik',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'Predpomnilnik, napake in seja so očiščeni',
'call': 'kliči',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': 'Ne sme biti prazno',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nemogoče prevajanje: napake v programu. Odpravite napake in poskusite ponovno.',
'Change Password': 'Spremeni geslo',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'cannot create file': 'ne morem ustvariti datoteke',
'cannot upload file "%(filename)s"': 'ne morem naložiti datoteke "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Spremenite skrbniško geslo',
'change editor settings': 'change editor settings',
'Change Password': 'Spremeni geslo',
'change password': 'spremeni geslo',
'Changelog': 'Changelog',
'check all': 'označi vse',
'Check for upgrades': 'Preveri za posodobitve',
'Check to delete': 'Odkljukajte, če želite izbrisati',
'Checking for upgrades...': 'Preverjam posodobitve...',
'Clean': 'Počisti',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': 'kliknite za spletne primere',
'click here for the administrative interface': 'kliknite za skrbniški vmesnik',
'Click row to expand traceback': 'Kliknite vrstico da razširite sledenje',
'Click row to view a ticket': 'Kliknite vrstico za ogled listka',
'click to check for upgrades': 'kliknite za preverjanje nadgradenj',
'Client IP': 'IP klienta',
'code': 'koda',
'Code listing': 'Code listing',
'collapse/expand all': 'zapri/odpri vse',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Prevedi',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'prevedena aplikacija je odstranjena',
'Condition': 'Condition',
'continue': 'continue',
'Controller': 'Krmilnik',
'Controllers': 'Krmilniki',
'controllers': 'krmilniki',
'Copyright': 'Copyright',
'Count': 'Število',
'Create': 'Ustvari',
'create file with filename:': 'Ustvari datoteko z imenom:',
'create new application:': 'Ustvari novo aplikacijo:',
'Create new simple application': 'Ustvari novo enostavno aplikacijo',
'Create/Upload': 'Create/Upload',
'created by': 'ustvaril',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Trenutna zahteva',
'Current response': 'Trenutni odgovor',
'Current session': 'Trenutna seja',
'DB Model': 'Podatkovni model',
'DESIGN': 'Izgled',
'currently running': 'trenutno teče',
'currently saved or': 'trenutno shranjeno ali',
'customize me!': 'Spremeni me!',
'data uploaded': 'podatki naloženi',
'Database': 'Podatkovna baza',
'database': 'podatkovna baza',
'Database %s select': 'Database %s select',
'database %s select': 'izberi podatkovno bazo %s ',
'Database administration': 'Database administration',
'database administration': 'upravljanje s podatkovno bazo',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Datum in čas',
'db': 'db',
'DB Model': 'Podatkovni model',
'Debug': 'Debug',
'defines tables': 'definiraj tabele',
'Delete': 'Izbriši',
'delete': 'izbriši',
'delete all checked': 'izbriši vse označene',
'delete plugin': 'izbriši vtičnik',
'Delete this file (you will be asked to confirm deletion)': 'Izbriši to datoteko (izbris boste morali potrditi)',
'Delete:': 'Izbriši:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Namesti',
'Deploy on Google App Engine': 'Prenesi na Google App sistem',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': 'Opis',
'Description:': 'Description:',
'design': 'oblikuj',
'DESIGN': 'Izgled',
'Design for': 'Oblikuj za',
'Detailed traceback description': 'Natačen opis sledenja',
'details': 'podrobnosti',
'direction: ltr': 'smer: ltr',
'directory not found': 'directory not found',
'Disable': 'Izključi',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'documentation': 'dokumentacija',
'done!': 'Narejeno!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'prenesi postavitev',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'prenesi vtičnik',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': 'E-mail',
'EDIT': 'UREDI',
'Edit': 'Uredi',
'Edit Profile': 'Uredi profil',
'Edit This App': 'Uredi ta program',
'edit all': 'edit all',
'Edit application': 'Uredi program',
'edit controller': 'uredi krmilnik',
'edit controller:': 'edit controller:',
'Edit current record': 'Uredi trenutni zapis',
'Editing Language file': 'Uredi jezikovno datoteko',
'Edit Profile': 'Uredi profil',
'edit profile': 'uredi profil',
'Edit This App': 'Uredi ta program',
'edit views:': 'urejaj poglede:',
'Editing %s': 'Editing %s',
'Editing file': 'Urejanje datoteke',
'Editing file "%s"': 'Urejanje datoteke "%s"',
'Editing Language file': 'Uredi jezikovno datoteko',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error': 'Napaka',
'Error logs for "%(app)s"': 'Dnevnik napak za "%(app)s"',
'Error snapshot': 'Posnetek napake',
'Error ticket': 'Listek napake',
'Errors': 'Napake',
'Exception instance attributes': 'Lastnosti instance izjeme',
'Expand Abbreviation': 'Razširi okrajšave',
'File': 'Datoteka',
'First name': 'Ime',
'Frames': 'Okvirji',
'Functions with no doctests will result in [passed] tests.': 'Funkcije brez doctest bodo opravile teste brez preverjanja.',
'Get from URL:': 'Naloži iz URL:',
'Go to Matching Pair': 'Pojdi k ujemalnemu paru',
'Group ID': 'ID skupine',
'Hello World': 'Pozdravljen, Svet!',
'Help': 'Pomoč',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Če poročilo zgoraj vsebuje številko listka to pomeni napako pri izvajanju krmilnika, še preden so se izvedli doctesti. To ponavadi pomeni napako pri zamiku programske vrstice ali izven funkcije.\nZelen naslov označuje, da so vsi testi opravljeni. V tem primeru testi niso prikazani.',
'If you answer "yes", be patient, it may take a while to download': 'Če odgovorite z "DA", potrpite. Prenos traja nekaj časa',
'If you answer yes, be patient, it may take a while to download': 'Če odgovorite z "DA", potrpite. Prenos traja nekaj časa',
'Import/Export': 'Uvoz/Izvoz',
'Index': 'Indeks',
'Install': 'Namesti',
'Installed applications': 'Nameščene aplikacije',
'Internal State': 'Notranje stanje',
'Invalid Query': 'Napačno povpraševanje',
'Invalid action': 'Napačno dejanje',
'Invalid email': 'Napačen e-naslov',
'Key bindings': 'Povezave tipk',
'Key bindings for ZenConding Plugin': 'Povezave tipk za ZenConding vtičnik',
'Language files (static strings) updated': 'Jezikovna datoteka (statično besedilo) posodobljeno',
'Languages': 'Jeziki',
'Last name': 'Priimek',
'Last saved on:': 'Zadnjič shranjeno:',
'Layout': 'Postavitev',
'License for': 'Licenca za',
'Login': 'Prijava',
'Login to the Administrative Interface': 'Prijava v skrbniški vmesnik',
'Logout': 'Odjava',
'Lost Password': 'Izgubljeno geslo',
'Main Menu': 'Glavni meni',
'Match Pair': 'Ujemalni par',
'Menu Model': 'Model menija',
'Merge Lines': 'Združi vrstice',
'Models': 'Modeli',
'Modules': 'Moduli',
'NO': 'NE',
'Name': 'Ime',
'New Application Wizard': 'Čarovnik za novo aplikacijo',
'New Record': 'Nov zapis',
'New application wizard': 'Čarovnik za novo aplikacijo',
'New simple application': 'Nova enostavna aplikacija',
'Next Edit Point': 'Naslednja točka urejanja',
'No databases in this application': 'V tem programu ni podatkovnih baz',
'Origin': 'Izvor',
'Original/Translation': 'Izvor/Prevod',
'Overwrite installed app': 'Prepiši obstoječi program',
'Pack all': 'Zapakiraj vse',
'Pack compiled': 'Paket preveden',
'Password': 'Geslo',
'Peeking at file': 'Vpogled v datoteko',
'Plugin "%s" in application': 'Vtičnik "%s" v aplikaciji',
'Plugins': 'Vtičniki',
'Powered by': 'Narejeno z',
'Previous Edit Point': 'Prejšnja točka urejanja',
'Query:': 'Vprašanje:',
'Record ID': 'ID zapisa',
'Register': 'Registracija',
'Registration key': 'Registracijski ključ',
'Reload routes': 'Ponovno naloži preusmeritve',
'Remove compiled': 'Odstrani prevedeno',
'Reset Password key': 'Ponastavi ključ gesla',
'Resolve Conflict file': 'Datoteka za razrešitev problemov',
'Role': 'Vloga',
'Rows in table': 'Vrstic v tabeli',
'Rows selected': 'Izbranih vrstic',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Poženi teste v tej datoteki (za vse teste uporabite gumb 'test')",
'Save via Ajax': 'Shrani preko AJAX',
'Saved file hash:': 'Koda shranjene datoteke:',
'Site': 'Spletišče',
'Sorry, could not find mercurial installed': 'Oprostite. Mercurial ni nameščen.',
'Start a new app': 'Začnite z novo aplikacijo',
'Start wizard': 'Zaženi čarovnika',
'Static files': 'Statične datoteke',
'Stylesheet': 'CSS datoteka',
'Sure you want to delete this object?': 'Ali res želite izbrisati ta predmet?',
'TM': 'TM',
'Table name': 'Ime tabele',
'Testing application': 'Testiranje programa',
'Testing controller': 'Testiranje krmilnika',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"vprašanje" je pogoj kot npr. "db.table1.field1 == \'vrednost\'". Nekaj kot "db.table1.field1 == db.table2.field2" izvede SQL operacijo JOIN.',
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika delovanja aplikacije. Vsak URL je povezan z eno objavljeno funkcijo v krmilniku',
'The data representation, define database tables and sets': 'Predstavitev podatkov. Definirajte podatkovne tabele in množice',
'The output of the file is a dictionary that was rendered by the view': 'Rezultat datoteke je slovar, ki ga predela pogled',
'The presentations layer, views are also known as templates': 'Predstavitveni nivo. Pogledi so znani tudi kot predloge',
'There are no controllers': 'Ni krmilnikov',
'There are no models': 'Ni modelov',
'There are no modules': 'Ni modulov',
'There are no plugins': 'Ni vtičnikov',
'There are no static files': 'Ni statičnih datotek',
'There are no translators, only default language is supported': 'Ni prevodov. Podprt je samo privzeti jezik',
'There are no views': 'Ni pogledov',
'These files are served without processing, your images go here': 'Te datoteke so poslane brez obdelave. Vaše slike shranite tu.',
'This is a copy of the scaffolding application': 'To je kopija okvirne aplikacije',
'This is the %(filename)s template': 'To je predloga %(filename)s',
'Ticket': 'Listek',
'Ticket ID': 'ID listka',
'Timestamp': 'Časovni žig',
'To create a plugin, name a file/folder plugin_[name]': 'Če želite ustvariti vtičnik, poimenujte datoteko/mapo plugin_[ime]',
'Traceback': 'Sledljivost',
'Translation strings for the application': 'Prevajalna besedila za aplikacijo',
'Unable to check for upgrades': 'Ne morem preveriti posodobitev',
'Unable to download': 'Ne morem prenesti datoteke',
'Unable to download app': 'Ne morem prenesti programa',
'Uninstall': 'Odstrani',
'Update:': 'Posodobitev:',
'Upload & install packed application': 'Naloži in namesti pakirano aplikacijo',
'Upload a package:': 'Naloži paket:',
'Upload and install packed application': 'Naloži in namesti pakirano aplikacijo',
'Upload existing application': 'Naloži obstoječo aplikacijo',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Uporabie (...)&(...) za AND, (...)|(...) za OR, in ~(...) za NOT pri gradnji kompleksnih povpraševanj.',
'Use an url:': 'Uporabite URL:',
'User ID': 'ID uporabnika',
'Version': 'Različica',
'Versioning': 'Versioning',
'View': 'Pogled',
'Views': 'Pogledi',
'Web Framework': 'Web Framework',
'Welcome %s': 'Dobrodošli, %s',
'Welcome to web2py': 'Dobrodošli v web2py',
'Which called the function': 'Ki je klical funkcijo',
'Wrap with Abbreviation': 'Ovij z okrajšavo',
'YES': 'DA',
'You are successfully running web2py': 'Uspešno ste pognali web2py',
'You can modify this application and adapt it to your needs': 'Lahko spremenite to aplikacijo in jo prilagodite vašim potrebam',
'You visited the url': 'Obiskali ste URL',
'additional code for your application': 'dodatna koda za vašo aplikacijo',
'admin disabled because no admin password': 'skrbnik izključen, ker ni skrbniškega gesla',
'admin disabled because not supported on google apps engine': 'skrbnik izključen, ker ni podprt na Google App sistemu',
'admin disabled because unable to access password file': 'skrbnik izključen, ker ne morem dostopati do datoteke z gesli',
'administrative interface': 'skrbniški vmesnik',
'and rename it (required):': 'in jo preimenujte (obvezno):',
'and rename it:': ' in jo preimenujte:',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'Appadmin izključen, ker zahteva varno (HTTPS) povezavo',
'application "%s" uninstalled': 'Aplikacija "%s" odstranjena',
'application compiled': 'aplikacija prevedena',
'application is compiled and cannot be designed': 'aplikacija je prevedena in je ne morete popravljati',
'arguments': 'argumenti',
'back': 'nazaj',
'beautify': 'olepšaj',
'cache': 'predpomnilnik',
'cache, errors and sessions cleaned': 'Predpomnilnik, napake in seja so očiščeni',
'call': 'kliči',
'cannot create file': 'ne morem ustvariti datoteke',
'cannot upload file "%(filename)s"': 'ne morem naložiti datoteke "%(filename)s"',
'change password': 'spremeni geslo',
'check all': 'označi vse',
'click here for online examples': 'kliknite za spletne primere',
'click here for the administrative interface': 'kliknite za skrbniški vmesnik',
'click to check for upgrades': 'kliknite za preverjanje nadgradenj',
'code': 'koda',
'collapse/expand all': 'zapri/odpri vse',
'compiled application removed': 'prevedena aplikacija je odstranjena',
'controllers': 'krmilniki',
'create file with filename:': 'Ustvari datoteko z imenom:',
'create new application:': 'Ustvari novo aplikacijo:',
'created by': 'ustvaril',
'crontab': 'crontab',
'currently running': 'trenutno teče',
'currently saved or': 'trenutno shranjeno ali',
'customize me!': 'Spremeni me!',
'data uploaded': 'podatki naloženi',
'database': 'podatkovna baza',
'database %s select': 'izberi podatkovno bazo %s ',
'database administration': 'upravljanje s podatkovno bazo',
'db': 'db',
'defines tables': 'definiraj tabele',
'delete': 'izbriši',
'delete all checked': 'izbriši vse označene',
'delete plugin': 'izbriši vtičnik',
'design': 'oblikuj',
'details': 'podrobnosti',
'direction: ltr': 'smer: ltr',
'documentation': 'dokumentacija',
'done!': 'Narejeno!',
'download layouts': 'prenesi postavitev',
'download plugins': 'prenesi vtičnik',
'edit controller': 'uredi krmilnik',
'edit profile': 'uredi profil',
'edit views:': 'urejaj poglede:',
'escape': 'escape',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Lastnosti instance izjeme',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Razširi okrajšave',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'izvozi kot CSV',
'Exports:': 'Exports:',
'exposes': 'objavlja',
'exposes:': 'exposes:',
'extends': 'razširja',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'nisem uspel ponovno naložiti modula',
'failed to reload module because:': 'failed to reload module because:',
'File': 'Datoteka',
'file "%(filename)s" created': 'datoteka "%(filename)s" ustvarjena',
'file "%(filename)s" deleted': 'datoteka "%(filename)s" izbrisana',
'file "%(filename)s" uploaded': 'datoteka "%(filename)s" prenešena',
@@ -280,89 +261,447 @@
'file "%s" of %s restored': 'datoteka "%s" od %s obnovljena',
'file changed on disk': 'datoteka je bila spremenjena',
'file does not exist': 'datoteka ne obstaja',
'file not found': 'file not found',
'file saved on %(time)s': 'datoteka shranjena %(time)s',
'file saved on %s': 'datoteka shranjena %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'fiter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'First name': 'Ime',
'Form has errors': 'Form has errors',
'Frames': 'Okvirji',
'Functions with no doctests will result in [passed] tests.': 'Funkcije brez doctest bodo opravile teste brez preverjanja.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Naloži iz URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'Go to Matching Pair': 'Pojdi k ujemalnemu paru',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': 'ID skupine',
'Hello World': 'Pozdravljen, Svet!',
'Help': 'Pomoč',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'htmledit',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Če poročilo zgoraj vsebuje številko listka to pomeni napako pri izvajanju krmilnika, še preden so se izvedli doctesti. To ponavadi pomeni napako pri zamiku programske vrstice ali izven funkcije.\nZelen naslov označuje, da so vsi testi opravljeni. V tem primeru testi niso prikazani.',
'If you answer "yes", be patient, it may take a while to download': 'Če odgovorite z "DA", potrpite. Prenos traja nekaj časa',
'If you answer yes, be patient, it may take a while to download': 'Če odgovorite z "DA", potrpite. Prenos traja nekaj časa',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Uvoz/Izvoz',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'vključuje',
'Indent with tabs': 'Indent with tabs',
'Index': 'Indeks',
'index': 'indeks',
'insert new': 'vstavi nov',
'insert new %s': 'vstavi nov %s',
'inspect attributes': 'pregled lastnosti',
'Install': 'Namesti',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Nameščene aplikacije',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'notranja napaka',
'internal error: %s': 'internal error: %s',
'Internal State': 'Notranje stanje',
'Invalid action': 'Napačno dejanje',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': 'Napačen e-naslov',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'napačno geslo',
'invalid password.': 'invalid password.',
'Invalid Query': 'Napačno povpraševanje',
'invalid request': 'napačna zahteva',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'napačen kartonček',
'Key': 'Key',
'Key bindings': 'Povezave tipk',
'Key bindings for ZenConding Plugin': 'Povezave tipk za ZenConding vtičnik',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'jezikovna datoteka "%(filename)s" ustvarjena/posodobljena',
'Language files (static strings) updated': 'Jezikovna datoteka (statično besedilo) posodobljeno',
'languages': 'jeziki',
'Languages': 'Jeziki',
'languages updated': 'jeziki posodobljeni',
'Last name': 'Priimek',
'Last Revision': 'Last Revision',
'Last saved on:': 'Zadnjič shranjeno:',
'Layout': 'Postavitev',
'License for': 'Licenca za',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': 'nalaganje...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'located in the file': 'se nahaja v datoteki',
'login': 'prijava',
'Login': 'Prijava',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Prijava v skrbniški vmesnik',
'Login/Register': 'Login/Register',
'Logout': 'Odjava',
'Lost Password': 'Izgubljeno geslo',
'lost password': 'lost password',
'lost password?': 'Izgubljeno geslo?',
'Main Menu': 'Glavni meni',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Match Pair': 'Ujemalni par',
'Memberships': 'Memberships',
'Menu Model': 'Model menija',
'merge': 'združi',
'Merge Lines': 'Združi vrstice',
'Models': 'Modeli',
'models': 'modeli',
'Modified On': 'Modified On',
'Modules': 'Moduli',
'modules': 'moduli',
'Multi User Mode': 'Multi User Mode',
'Name': 'Ime',
'new application "%s" created': 'ustvarjen nov program "%s"',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'Čarovnik za novo aplikacijo',
'New application wizard': 'Čarovnik za novo aplikacijo',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Nov zapis',
'new record inserted': 'vstavljen nov zapis',
'New simple application': 'Nova enostavna aplikacija',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'naslednjih 100 zapisov',
'Next Edit Point': 'Naslednja točka urejanja',
'NO': 'NE',
'no changes': 'no changes',
'No databases in this application': 'V tem programu ni podatkovnih baz',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'ali uvozi iz CSV datoteke',
'or provide app url:': 'ali vpišite URL programa:',
'or provide application url:': 'ali vpišite URL programa:',
'Origin': 'Izvor',
'Original/Translation': 'Izvor/Prevod',
'Overview': 'Overview',
'Overwrite installed app': 'Prepiši obstoječi program',
'Pack all': 'Zapakiraj vse',
'Pack compiled': 'Paket preveden',
'Pack custom': 'Pack custom',
'pack plugin': 'zapakiraj vtičnik',
'Password': 'Geslo',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Vpogled v datoteko',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'please wait!': 'Prosim počakajte!',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Vtičnik "%s" v aplikaciji',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'vtičniki',
'Plugins': 'Vtičniki',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Narejeno z',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'prejšnjih 100 zapisov',
'Previous Edit Point': 'Prejšnja točka urejanja',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Vprašanje:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'zapis',
'record does not exist': 'zapis ne obstaja',
'record id': 'id zapisa',
'Record ID': 'ID zapisa',
'Record id': 'Record id',
'refresh': 'refresh',
'Register': 'Registracija',
'register': 'registracija',
'Registration key': 'Registracijski ključ',
'Reload routes': 'Ponovno naloži preusmeritve',
'Remove compiled': 'Odstrani prevedeno',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'zahteva',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Reset Password key': 'Ponastavi ključ gesla',
'Resolve Conflict file': 'Datoteka za razrešitev problemov',
'response': 'odgovor',
'restart': 'restart',
'restore': 'obnovi',
'return': 'return',
'Revert': 'Revert',
'revert': 'povrni',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Vloga',
'Roles': 'Roles',
'Rows in table': 'Vrstic v tabeli',
'Rows in Table': 'Rows in Table',
'Rows selected': 'Izbranih vrstic',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Poženi teste v tej datoteki (za vse teste uporabite gumb 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'save': 'shrani',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Shrani preko AJAX',
'Saved file hash:': 'Koda shranjene datoteke:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'izbrano',
'session': 'seja',
'session expired': 'seja pretekla',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'lupina',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Spletišče',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': 'nekaterih datotek se ni dalo izbrisati',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Oprostite. Mercurial ni nameščen.',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Začnite z novo aplikacijo',
'Start searching': 'Start searching',
'Start wizard': 'Zaženi čarovnika',
'state': 'stanje',
'Static': 'Static',
'static': 'statično',
'Static files': 'Statične datoteke',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Stylesheet': 'CSS datoteka',
'submit': 'pošlji',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': 'Ali res želite izbrisati ta predmet?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tabela',
'Table': 'Table',
'Table name': 'Ime tabele',
'Temporary': 'Temporary',
'test': 'test',
'test_def': 'test_def',
'test_for': 'test_for',
'test_if': 'test_if',
'test_try': 'test_try',
'Testing application': 'Testiranje programa',
'Testing controller': 'Testiranje krmilnika',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"vprašanje" je pogoj kot npr. "db.table1.field1 == \'vrednost\'". Nekaj kot "db.table1.field1 == db.table2.field2" izvede SQL operacijo JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'krmilna logika, vsaka URL pot je preslikana v eno funkcijo v krmilniku',
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika delovanja aplikacije. Vsak URL je povezan z eno objavljeno funkcijo v krmilniku',
'the data representation, define database tables and sets': 'podatkovna predstavitev, definirajte tabele in množice',
'The data representation, define database tables and sets': 'Predstavitev podatkov. Definirajte podatkovne tabele in množice',
'The output of the file is a dictionary that was rendered by the view': 'Rezultat datoteke je slovar, ki ga predela pogled',
'The presentations layer, views are also known as templates': 'Predstavitveni nivo. Pogledi so znani tudi kot predloge',
'the presentations layer, views are also known as templates': 'predstavitveni nivo, pogledi so tudi znani kot predloge',
'Theme': 'Theme',
'There are no controllers': 'Ni krmilnikov',
'There are no models': 'Ni modelov',
'There are no modules': 'Ni modulov',
'There are no plugins': 'Ni vtičnikov',
'There are no private files': 'There are no private files',
'There are no static files': 'Ni statičnih datotek',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Ni prevodov. Podprt je samo privzeti jezik',
'There are no views': 'Ni pogledov',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'Te datoteke so poslane brez obdelave. Vaše slike shranite tu.',
'these files are served without processing, your images go here': 'te datoteke so poslane brez posredovanja in obdelave, svoje slike shranite tu',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is a copy of the scaffolding application': 'To je kopija okvirne aplikacije',
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'To je predloga %(filename)s',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Listek',
'Ticket ID': 'ID listka',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Časovni žig',
'TM': 'TM',
'to previous version.': 'na prejšnjo različico.',
'To create a plugin, name a file/folder plugin_[name]': 'Če želite ustvariti vtičnik, poimenujte datoteko/mapo plugin_[ime]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Sledljivost',
'translation strings for the application': 'prevodna besedila za program',
'Translation strings for the application': 'Prevajalna besedila za aplikacijo',
'try': 'poskusi',
'try something like': 'poskusite na primer',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Ne morem preveriti posodobitev',
'unable to create application "%s"': 'ne morem ustvariti programa "%s" ',
'unable to delete file "%(filename)s"': 'ne morem izbrisati datoteke "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'Ne morem prenesti datoteke',
'Unable to download app': 'Ne morem prenesti programa',
'Unable to download app because:': 'Unable to download app because:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'ne morem obdelati csv datoteke',
'unable to uninstall "%s"': 'ne morem odstraniti "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'odznači vse',
'Uninstall': 'Odstrani',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'posodobi',
'update all languages': 'posodobi vse jezike',
'Update:': 'Posodobitev:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'posodobi web2py',
'upload': 'naloži',
'Upload': 'Upload',
'Upload & install packed application': 'Naloži in namesti pakirano aplikacijo',
'Upload a package:': 'Naloži paket:',
'Upload and install packed application': 'Naloži in namesti pakirano aplikacijo',
'upload application:': 'naloži program:',
'Upload existing application': 'Naloži obstoječo aplikacijo',
'upload file:': 'naloži datoteko:',
'upload plugin file:': 'naloži vtičnik:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Uporabie (...)&(...) za AND, (...)|(...) za OR, in ~(...) za NOT pri gradnji kompleksnih povpraševanj.',
'Use an url:': 'Uporabite URL:',
'user': 'uporabnik',
'User': 'User',
'User ID': 'ID uporabnika',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'spremenljivke',
'Version': 'Različica',
'Versioning': 'Versioning',
'versioning': 'različice',
'View': 'Pogled',
'view': 'pogled',
'Views': 'Pogledi',
'views': 'pogledi',
'web2py Recent Tweets': 'zadnji tviti na web2py',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py je ažuren',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'zadnji tviti na web2py',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome %s': 'Dobrodošli, %s',
'Welcome to web2py': 'Dobrodošli v web2py',
'Which called the function': 'Ki je klical funkcijo',
'Working...': 'Working...',
'Wrap with Abbreviation': 'Ovij z okrajšavo',
'WSGI reference name': 'WSGI reference name',
'xml': 'xml',
'YES': 'DA',
'Yes': 'Yes',
'You are successfully running web2py': 'Uspešno ste pognali web2py',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You can modify this application and adapt it to your needs': 'Lahko spremenite to aplikacijo in jo prilagodite vašim potrebam',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'You visited the url': 'Obiskali ste URL',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

467
applications/admin/languages/sr-cr.py Normal file → Executable file
View File

@@ -1,212 +1,595 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'sr-cr',
'!langname!': 'Српски (Ћирилица)',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{row} је избрисан',
'%s %%{row} updated': '%s %%{row} је ажуриран',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d-%m-%Y',
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
'(requires internet access)': '(захтијева приступ интернету)',
'(something like "it-it")': '(нешто као "it-it")',
'(requires internet access, experimental)': '(захтијева приступ интернету, експериментално)',
'(something like "it-it")': '(на примјер "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(датотека **gluon/contrib/plural_rules/%s.py** није пронађена)',
'Abort': 'Одустани',
'About': 'Информације',
'About application': 'О апликацији',
'Accept Terms': 'Прихватање услова коришћења',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'Додатни код за апликацију',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'администрација онемогућена јер нема лозинке',
'admin disabled because not supported on google app engine': 'администрација онемогућена на google app engine',
'admin disabled because too many invalid login attempts': 'администрација онемогућена због већег броја неуспјелих покушаја',
'admin disabled because unable to access password file': 'администрација онемогућена јер не могу приступити датотеци са лозинком',
'Admin is disabled because insecure channel': 'Администрација онемогућена због несигурне везе',
'Admin language': 'Језик администратора',
'administrative interface': 'административни интерфејс',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'административно окружење',
'Administrator Password:': 'Лозинка администратора:',
'and rename it:': 'и преименуј у:',
'App does not exist or you are not authorized': 'Апликација не постоји или немате права приступа',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'администрација онемогућена због несигурне везе',
'Application': 'Апликација',
'application "%s" uninstalled': 'апликација "%s" је деинсталирана',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'апликација је компајлирана',
'Application exists already': 'Апликација већ постоји',
'application is compiled and cannot be designed': 'апликација је компајлирана и не може се даље уређивати',
'Application name:': 'Назив апликације:',
'Application updated via git pull': 'Апликација ажурирана преко git pull',
'are not used': 'није кориштено',
'are not used yet': 'није још кориштено',
'Are you sure you want to delete file "%s"?': 'Да ли сте сигурни да желите избрисати датотеку "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Да ли сте сигурни да желите избрисати помоћни модул "%s"?',
'Are you sure you want to delete this object?': 'Да ли сте сигурни да желите обрисати?',
'Are you sure you want to uninstall application "%s"?': 'Да ли сте сигурни да желите деинсталирати апликацију "%s"?',
'Are you sure?': 'Да ли сте сигурни?',
'arguments': 'arguments',
'at char %s': 'код слова %s',
'at line %s': 'на линији %s',
'ATTENTION:': 'ПАЖЊА:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ПАЖЊА: не можете уређивати покренуту апликацију!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available Databases and Tables': 'Доступне базе података и табеле',
'back': 'назад',
'Back to the plugins list': 'Назад на листу помоћних модула',
'Back to wizard': 'Back to wizard',
'Basics': 'Основе',
'Begin': 'Почетак',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Кеш',
'cache': 'кеш',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'кеш, грешке и сесије су обрисани',
'can be a git repo': 'може бити git repo',
'can be a git repo': 'може бити git репозиторијум',
'Cancel': 'Откажи',
'Cannot be empty': 'Не може бити празно',
'Cannot compile: there are errors in your app:': 'Не могу компајлирати: грешка у апликацији:',
'cannot create file': 'не могу креирати датотеку',
'cannot upload file "%(filename)s"': 'не мофу отпремити датотеку "%(filename)s"',
'Change admin password': 'Промијени лзинку администратора',
'Change Admin Password': 'Промијени лозинку администратора',
'Change admin password': 'Промијени лозинку администратора',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'check all',
'Check for upgrades': 'Провјери могућност надоградње',
'Check to delete': 'Check to delete',
'Checking for upgrades...': 'Провјеравам могућност надоградње...',
'Clean': 'Прочисти',
'Clear': 'Обриши',
'Clear CACHE?': 'Обриши CACHE?',
'Clear DISK': 'Обриши DISK',
'Clear RAM': 'Обриши RAM',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'code': 'код',
'Code listing': 'Приказ кода',
'collapse/expand all': 'сакрити/приказати све',
'Command': 'Наредба',
'Comment:': 'Коментар:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Компајлирај',
'Compile (all or nothing)': 'Компајлирај (све или ништа)',
'Compile (skip failed views)': 'Компајлирај (игнориши грешке)',
'compiled application removed': 'компајлирана апликација је уклоњена',
'Condition': 'Стање',
'continue': 'настави',
'Controllers': 'Контролери',
'controllers': 'контролери',
'Count': 'Count',
'Count': 'Редни број',
'Create': 'Креирај',
'create file with filename:': 'Креирај датотеку под називом:',
'Create rules': 'Креирај правила',
'Create/Upload': 'Креирај/Преузми',
'created by': 'израдио',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Тренутни захтјев',
'Current response': 'Тренутни одговор',
'Current session': 'Тренутна сесија',
'currently running': 'тренутно покренут',
'currently saved or': 'тренутно сачувано или',
'data uploaded': 'data uploaded',
'Database': 'База података',
'Database %s select': 'Database %s select',
'Database administration': 'Администрација базе података',
'database administration': 'администрација базе података',
'Debug': 'Debug',
'Database Administration (appadmin)': 'Администрација базе података (appadmin)',
'Date and Time': 'Датум и вријеме',
'db': 'db',
'Debug': 'Отклони грешку',
'defines tables': 'дефинише табеле',
'delete': 'обриши',
'Delete': 'Обриши',
'delete all checked': 'delete all checked',
'Delete this file (you will be asked to confirm deletion)': 'Обриши ову даатотеку (бићете упитани за потврду брисања)',
'delete': 'обриши',
'delete all checked': 'избриши све означено',
'delete plugin': 'избриши помоћни модул',
'Delete this file (you will be asked to confirm deletion)': 'Обриши ову датотеку (бићете упитани за потврду брисања)',
'Delete:': 'Избриши:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Постави',
'Deploy on Google App Engine': 'Постави на Google App Engine',
'Deploy to OpenShift': 'Постави на OpenShift',
'Deploy to pythonanywhere': 'Постави на pythonanywhere',
'Deploy to PythonAnywhere': 'Постави на PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'design',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Искључи',
'Disabled': 'Искључено',
'disabled in demo mode': 'онемогућено у демо моду',
'disabled in GAE mode': 'онемогућено у GAE моду',
'disabled in multi user mode': 'онемогућено у вишекорисничком моду',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'документација',
'Docs': 'Docs',
'done!': 'done!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Преузми као .w2p',
'Download as .exe': 'Преузми као .exe',
'download layouts': 'преузми layouts',
'download plugins': 'преузми plugins',
'Edit': 'Уређивање',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'преузми помоћне модуле',
'Download plugins from repository': 'Преузми помоћне модуле из репозиторијум',
'Edit': 'Уреди',
'edit all': 'уреди све',
'Edit application': 'Уреди апликацију',
'edit controller': 'уреди контролер',
'edit views:': 'уреди views:',
'edit controller:': 'edit controller:',
'Edit current record': 'Edit current record',
'edit views:': 'уреди приказ:',
'Editing %s': 'Уређивање %s',
'Editing file "%s"': 'Уређивање датотеке "%s"',
'Editing Language file': 'Уређивање језичке датотеке',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Error': 'Грешка',
'Error logs for "%(app)s"': 'Преглед грешака за "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'Грешке',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Expand Abbreviation',
'exposes': 'exposes',
'exposes:': 'exposes:',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'извези као csv датотеку',
'Exports:': 'Извози:',
'exposes': 'приказује',
'exposes:': 'приказује:',
'extends': 'проширује',
'failed to compile file because:': 'нисам могао да компајлирам због:',
'failed to reload module because:': 'failed to reload module because:',
'File': 'Датотека',
'file "%(filename)s" created': 'датотека "%(filename)s" је креирана',
'file "%(filename)s" deleted': 'датотека "%(filename)s" је избрисана',
'file "%(filename)s" uploaded': 'датотека "%(filename)s" је отпремљена',
'file "%s" of %s restored': 'датотека "%s" од %s е враћено у претходно стање',
'file changed on disk': 'file changed on disk',
'file does not exist': 'датотека не постоји',
'file not found': 'датотека није пронађена',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'датотека сачувана на %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'филтер',
'Find Next': 'Пронађи сљедећи',
'Find Previous': 'Пронађи претходни',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Преузми са странице:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'Go to Matching Pair': 'Go to Matching Pair',
'go!': 'крени!',
'Google App Engine Deployment Interface': 'Google App Engine Dинсталационо окружење',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Help': 'Помоћ',
'here': 'here',
'Hide/Show Translated strings': 'Сакрити/Приказати преведене ријечи',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'инсталационо окружење',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'укључује',
'Indent with tabs': 'Indent with tabs',
'inspect attributes': 'inspect attributes',
'Install': 'Инсталирај',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Инсталиране апликације',
'invalid password.': 'погрешна лозинка.',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'унутрашња грешка',
'internal error: %s': 'унутрашња грешка: %s',
'Internal State': 'Internal State',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'Неважећа лозинка',
'invalid password.': 'неважећа лозинка.',
'Invalid Query': 'Погрешан упит',
'invalid request': 'invalid request',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'погрешан тикет',
'Key': 'Key',
'Key bindings': 'Пречице',
'Key bindings for ZenCoding Plugin': 'Пречице за ZenCoding Plugin',
'Keyboard shortcuts': 'Пречице на тастатури',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'језичка датотека "%(filename)s" је креирана/ажурирана',
'Language files (static strings) updated': 'Језичке датотеке су ажуриране',
'languages': 'језици',
'Languages': 'Језици',
'Last Revision': 'Last Revision',
'Last saved on:': 'Посљедња измјена:',
'License for': 'Лиценца за',
'License:': 'Лиценца:',
'Line Nr': 'Line Nr',
'Line number': 'Линија број',
'lists by exception': 'прикажи грешке',
'lists by ticket': 'прикажи тикете',
'Loading...': 'Преузимам...',
'loading...': 'преузимам...',
'Local Apps': 'Локалне апликације',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Пријава',
'Login to the Administrative Interface': 'Пријава за административни интерфејс',
'Logout': 'Излаз',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Пријава за административно окружење',
'Login/Register': 'Пријава/Регистрација',
'Logout': 'Одјава',
'lost password': 'изгубљена лозинка',
'Main Menu': 'Главни мени',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Match Pair': 'Match Pair',
'Memberships': 'Memberships',
'merge': 'споји',
'Merge Lines': 'Споји линије',
'models': 'models',
'Models': 'Models',
'Modules': 'Modules',
'modules': 'modules',
'Models': 'Модели',
'models': 'Модели',
'Modified On': 'Modified On',
'Modules': 'Модули',
'modules': 'модули',
'Multi User Mode': 'Вишекориснички режим рада',
'new application "%s" created': 'нова апликација "%s" је креирана',
'new application "%s" imported': 'нова апликација "%s" је увежена',
'New Application Wizard': 'Чаробњак за нове апликације',
'New application wizard': 'Чаробњак за нове апликације',
'new plugin installed': 'нови помоћни модул је инсталиран',
'New plugin installed: %s': 'Инсталиран нови помоћни модул: %s',
'New Record': 'Нови запис',
'new record inserted': 'унешен нови запис',
'New simple application': 'Нова једноставна апликација',
'next': 'следећи',
'next %s rows': 'next %s rows',
'Next Edit Point': 'Next Edit Point',
'NO': 'НЕ',
'no changes': 'нема промјена',
'No databases in this application': 'Нема базе података у апликацији',
'No Interaction yet': 'Нема још интеракције',
'no match': 'нема подударања',
'no package selected': 'пакет није одабран',
'no permission to uninstall "%s"': 'немате овлаштење да деинсталирате "%s"',
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
'Node:': 'Node:',
'Not Authorized': 'Немате овлашћење',
'Not supported': 'Није подржано',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'онлајн дизајнер',
'Open new app in new window': 'Отвори нову апликацију у новом прозору',
'OpenShift Deployment Interface': 'OpenShift инсталационо окружење',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'или алтернативно',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'или увези помоћу csv датотеке',
'Original/Translation': 'Оргинал/Превод',
'Overwrite installed app': 'Пребриши постојећу апликацију',
'Overview': 'Преглед',
'Overwrite installed app': 'Замјени већ постојећу апликацију',
'Pack all': 'Запакуј све',
'Peeking at file': 'Peeking at file',
'Plugins': 'Plugins',
'plugins': 'plugins',
'Pack compiled': 'Запакуј компајлирано',
'Pack custom': 'Прилагођено паковање',
'pack plugin': 'запакуј помоћни модул',
'password changed': 'лозинка је промијењена',
'Past revisions': 'Претходне корекције',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Преглед датотеке',
'Permission': 'Дозвола',
'Permissions': 'Дозволе',
'Please': 'Молим',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'помоћни модул "%(plugin)s" је избрисан',
'Plugin "%s" in application': 'Помоћни модул "%s" у апликацији',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Страница помоћних модула',
'plugins': 'помоћни модули',
'Plugins': 'Помоћни модули',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Омогућио',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'Previous Edit Point': 'Previous Edit Point',
'Private files': 'Private files',
'private files': 'private files',
'Private files': 'Приватне датотеке',
'private files': 'приватне датотеке',
'Project Progress': 'Напредак пројекта',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Упит:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record does not exist': 'record does not exist',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Обнови преусмјерења',
'Remove compiled': 'Уклони компајлирано',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Замијени',
'Replace All': 'Замијени све',
'Repository (%s)': 'Репозиторијум (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'return': 'return',
'Revert': 'Revert',
'revert': 'revert',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Улога',
'Roles': 'Улоге',
'Rows in Table': 'Записи у табели',
'Rows selected': 'Rows selected',
'rules are not defined': 'правила нису дефинисана',
'rules:': 'правила:',
'Run tests': 'Покрени тестове',
'Run tests in this file': 'Покрени тестове у датотеци',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Покренути на %s',
'Save': 'Сачувај',
'Save via Ajax': 'сачувај via Ajax',
'Save file:': 'Сачувај датотеку:',
'Save file: %s': 'Сачувај датотеку: %s',
'Save model as...': 'Сачувај модел као...',
'Save via Ajax': 'Сачувај преко Ajax',
'Saved file hash:': 'Сачувано као хаш:',
'Screenshot %s': 'Снимак екрана %s',
'Search': 'Претрага',
'Select Files to Package': 'Одабери датотеке за паковање',
'session': 'сесија',
'session expired': 'сесија истекла',
'session expired': 'сесија је истекла',
'Session saved correctly': 'Сесија је уредно сачувана',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Сајт',
'skip to generate': 'skip to generate',
'Size of cache:': 'Size of cache:',
'skip to generate': 'прескочи генерисање',
'some files could not be removed': 'неке датотеке не могу бити уклоњене',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Жалим, mercurial није инсталиран',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Покрени нову апликацију',
'Start searching': 'Покрени претрагу',
'Start wizard': 'Покрени чаробњака',
'state': 'state',
'Static': 'Static',
'static': 'static',
'Static files': 'Static files',
'Statistics': 'Statistics',
'Step': 'Корак',
'step': 'kорак',
'stop': 'stop',
'submit': 'прихвати',
'Submit': 'Прихвати',
'successful': 'успјешан',
'switch to : db': 'пређи на : db',
'switch to : filesystem': 'пређи на : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'Table': 'Табела',
'Temporary': 'Temporary',
'test': 'тест',
'Testing application': 'Тестирање апликације',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no models': 'There are no models',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'Theme': 'Табела',
'There are no controllers': 'Нема контолера',
'There are no models': 'Нема модела',
'There are no modules': 'Нема модула',
'There are no plugins': 'Нема помоћних модула',
'There are no private files': 'Нема приватних датотека',
'There are no static files': 'Нема статичних датотека',
'There are no translators': 'Нема преводиоца',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'Нема преводиоца',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket nedostaje',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Тикет',
'Ticket ID': 'Тикет ID',
'Ticket Missing': 'Недостаје тикет',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'to previous version.': 'на претходну верзију.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Ријечи у апликацији које треба превести',
'Try the mobile interface': 'Пробај мобилни интерфејс',
'try view': 'try view',
'try something like': 'на примјер',
'Try the mobile interface': 'Пробај мобилнo окружење',
'try view': 'пробај приказ',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Не могу да провјерим могућност надоградње',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'не могу избрисати датотеку "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'не могу избрисати помоћни модул "%(plugin)s"',
'Unable to determine the line number!': 'Не могу да утврдим број реда!',
'Unable to download app because:': 'Не могу да преузмем апликацију због:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Не могу да преузмем списак помоћних модула',
'unable to install plugin "%s"': 'не могу да инсталирам помоћни модул "%s"',
'unable to parse csv file': 'не могу да расчланим csv датотеку',
'unable to uninstall "%s"': 'не могу да деинсталирам "%s"',
'unable to upgrade because "%s"': 'не могу да ажуримам због "%s"',
'uncheck all': 'uncheck all',
'Uninstall': 'Деинсталирај',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'ажурирај',
'update all languages': 'ажурирај све језике',
'Update:': 'Ажурирај:',
'Upgrade': 'Надоградња',
'upgrade now to %s': 'ажуриран на %s',
'upload': 'Отпреми',
'Upload': 'Преузми',
'Upload a package:': 'Преузми пакет:',
'Upload and install packed application': 'Преузми и инсталирај запаковану апликацију',
'upload file:': 'преузми датотеку:',
'upload plugin file:': 'преузми плагин датотеку:',
'upload plugin file:': 'преузми датотеку помоћног модула:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'User': 'Корисник',
'Username': 'Корисничко име',
'Users': 'Корисници',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': 'Верзија',
'Version %s.%s.%s (%s) %s': 'Верзија %s.%s.%s (%s) %s',
'Versioning': 'Versioning',
'views': 'views',
'Views': 'Views',
'Versioning': 'Креирање верзија',
'Views': 'Прикази',
'views': 'прикази',
'Warning!': 'Упозорење!',
'WARNING:': 'УПОЗОРЕЊЕ:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py администраторска лозинка',
'web2py apps to deploy': 'web2py апликација за инсталацију',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py је ажуран',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'web2py Recent Tweets',
'web2py upgrade': 'web2py надоградња',
'web2py upgraded; please restart it': 'web2py је ажуриран; молим да рестартујете',
'Working...': 'Извршавам...',
'Wrap with Abbreviation': 'Wrap with Abbreviation',
'WSGI reference name': 'WSGI reference name',
'YES': 'ДА',
'Yes': 'Да',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

480
applications/admin/languages/sr-lt.py Normal file → Executable file
View File

@@ -1,212 +1,596 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'sr-lt',
'!langname!': 'Srpski (Latinica)',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{row} je izbrisan',
'%s %%{row} updated': '%s %%{row} je ažuriran',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d-%m-%Y',
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
'(requires internet access)': '(zahtijeva pristup internetu)',
'(something like "it-it")': '(nešto kao "it-it")',
'(requires internet access, experimental)': '(zahtijeva pristup internetu, eksperimentalno)',
'(something like "it-it")': '(na primjer "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(datoteka **gluon/contrib/plural_rules/%s.py** nije pronađena)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'An error occured, please [[reload %s]] the page',
'Abort': 'Odustani',
'About': 'Informacije',
'About application': 'O aplikaciji',
'Accept Terms': 'Prihvatanje uslova korišćenja',
'Add breakpoint': 'Add breakpoint',
'Additional code for your application': 'Dodatni kod za aplikaciju',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'administracija onemogućena jer nema lozinke',
'admin disabled because not supported on google app engine': 'administracija onemogućena na google app engine',
'admin disabled because too many invalid login attempts': 'administracija onemogućena jer zbog većeg broja neuspjelih pokušaja',
'admin disabled because unable to access password file': 'administracija onemogućena jer ne mogu pristupiti datoteci sa lozinkom',
'Admin is disabled because insecure channel': 'Administracija onemogućena zbog nesigurne veze',
'Admin language': 'Jezik administratora',
'administrative interface': 'administrativni interfejs',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrativno okruženje',
'Administrator Password:': 'Lozinka administratora:',
'and rename it:': 'i preimenuj u:',
'App does not exist or you are not authorized': 'Aplikacija ne postoji ili nemate prava pristupa',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'administracija onemogućena zbog nesigurne veze',
'Application': 'Aplikacija',
'application "%s" uninstalled': 'aplikacija "%s" je deinstalirana',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'aplikacija je kompajlirana',
'Application exists already': 'Aplikacija već postoji',
'application is compiled and cannot be designed': 'aplikacija je kompajlirana i ne može se dalje uređivati',
'Application name:': 'Naziv aplikacije:',
'Application updated via git pull': 'Aplikacija ažurirana preko git pull',
'are not used': 'nije korišteno',
'are not used yet': 'nije još korišteno',
'Are you sure you want to delete file "%s"?': 'Da li ste sigurni da želite izbrisati datoteku "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Da li ste sigurni da želite izbrisati pomoćni modul "%s"?',
'Are you sure you want to delete this object?': 'Da li ste sigurni da želite obrisati?',
'Are you sure you want to uninstall application "%s"?': 'Da li ste sigurni da želite deinstalirati aplikaciju "%s"?',
'Are you sure?': 'Da li ste sigurni?',
'arguments': 'arguments',
'at char %s': 'kod slova %s',
'at line %s': 'na liniji %s',
'ATTENTION:': 'PAŽNJA:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
'ATTENTION: you cannot edit the running application!': 'ATTENTION: ne možete uređivati pokrenutu aplikaciju!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available Databases and Tables': 'Dostupne baze podataka i tabele',
'back': 'nazad',
'Back to the plugins list': 'Nazad na listu pomoćnih modula',
'Back to wizard': 'Back to wizard',
'Basics': 'Osnove',
'Begin': 'Početak',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Keš',
'cache': 'keš',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'keš, greške i sesije su obrisani',
'can be a git repo': 'može biti git repo',
'can be a git repo': 'može biti git repozitorijum',
'Cancel': 'Otkaži',
'Cannot be empty': 'Ne može biti prazno',
'Cannot compile: there are errors in your app:': 'Ne mogu kompajlirati: greška u aplikaciji:',
'cannot create file': 'ne mogu kreirati datoteku',
'cannot upload file "%(filename)s"': 'ne mogu otpremiti datoteku "%(filename)s"',
'Change admin password': 'Promijeni lozinku administratora',
'Change Admin Password': 'Promijeni lozinku administratora',
'change editor settings': 'change editor settings',
'Changelog': 'Changelog',
'check all': 'check all',
'Check for upgrades': 'Provjeri mogućnost nadogradnje',
'Check to delete': 'Check to delete',
'Checking for upgrades...': 'Provjeravam mogućnost nadogradnje...',
'Clean': 'Pročisti',
'Clear': 'Obriši',
'Clear CACHE?': 'Obriši CACHE?',
'Clear DISK': 'Obriši DISK',
'Clear RAM': 'Obriši RAM',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'code': 'kod',
'Code listing': 'Prikaz koda',
'collapse/expand all': 'sakriti/prikazati sve',
'Command': 'Naredba',
'Comment:': 'Komentar:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Kompajliraj',
'Compile (all or nothing)': 'Kompajliraj (sve ili ništa)',
'Compile (skip failed views)': 'Kompajliraj (ignoriši greške)',
'compiled application removed': 'kompajlirana aplikacija je uklonjena',
'Condition': 'Stanje',
'continue': 'nastavi',
'Controllers': 'Kontroleri',
'controllers': 'kontroleri',
'Count': 'Count',
'Count': 'Redni broj',
'Create': 'Kreiraj',
'create file with filename:': 'Kreiraj datoteku pod nazivom:',
'Create rules': 'Kreiraj pravila',
'Create/Upload': 'Kreiraj/Preuzmi',
'created by': 'izradio',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'crontab',
'Current request': 'Trenutni zahtjev',
'Current response': 'Trenutni odgovor',
'Current session': 'Trenutna sesija',
'currently running': 'trenutno pokrenut',
'currently saved or': 'trenutno sačuvano ili',
'data uploaded': 'data uploaded',
'Database': 'Baza podataka',
'Database %s select': 'Database %s select',
'database administration': 'administracija baze podataka',
'Debug': 'Debug',
'Database administration': 'Administracija baze podataka',
'Database Administration (appadmin)': 'Administracija baze podataka (appadmin)',
'Date and Time': 'Datum i vrijeme',
'db': 'db',
'Debug': 'Otkloni grešku',
'defines tables': 'definiše tabele',
'delete': 'obriši',
'Delete': 'Obriši',
'delete all checked': 'delete all checked',
'Delete this file (you will be asked to confirm deletion)': 'Obriši ovu datoteku (bićete upitani za potvrdu brisanja)',
'delete': 'Izbriši',
'Delete': 'Izbriši',
'delete all checked': 'izbriši sve označeno',
'delete plugin': 'izbriši pomoćni modul',
'Delete this file (you will be asked to confirm deletion)': 'Izbriši ovu datoteku (bićete upitani za potvrdu brisanja)',
'Delete:': 'Izbriši:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Postavi',
'Deploy on Google App Engine': 'Postavi na Google App Engine',
'Deploy to OpenShift': 'Postavi na OpenShift',
'Deploy to pythonanywhere': 'Postavi na pythonanywhere',
'Deploy to PythonAnywhere': 'Postavi na PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'design',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Isključi',
'Disabled': 'Isključeno',
'disabled in demo mode': 'onemogućeno u demo modu',
'disabled in GAE mode': 'onemogućeno u GAE modu',
'disabled in multi user mode': 'onemogućeno u višekorisničkom modu',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'Docs': 'Docs',
'docs': 'dokumentacija',
'done!': 'done!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Preuzmi kao .w2p',
'Download as .exe': 'Preuzmi kao .exe',
'download layouts': 'preuzmi layouts',
'download plugins': 'preuzmi plugins',
'Edit': 'Uređivanje',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'preuzmi pomoćne module',
'Download plugins from repository': 'Preuzmi pomoćne module iz repozitorijum',
'Edit': 'Uredi',
'edit all': 'uredi sve',
'Edit application': 'Uredi aplikaciju',
'edit controller': 'uredi controller',
'edit views:': 'uredi views:',
'edit controller:': 'edit controller:',
'Edit current record': 'Edit current record',
'edit views:': 'uredi prikaz:',
'Editing %s': 'Uređivanje %s',
'Editing file "%s"': 'Uređivanje datoteke "%s"',
'Editing Language file': 'Uređivanje jezičke datoteke',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Error': 'Greška',
'Error logs for "%(app)s"': 'Pregled grešaka za "%(app)s"',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': 'Greške',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation': 'Expand Abbreviation',
'exposes': 'exposes',
'exposes:': 'exposes:',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'izvezi kao csv datoteku',
'Exports:': 'Izvozi:',
'exposes': 'prikazuje',
'exposes:': 'prikazuje:',
'extends': 'proširuje',
'failed to compile file because:': 'nisam mogao da kompajliram zbog:',
'failed to reload module because:': 'failed to reload module because:',
'File': 'Datoteka',
'file "%(filename)s" created': 'datoteka "%(filename)s" je kreirana',
'file "%(filename)s" deleted': 'datoteka "%(filename)s" je izbrisana',
'file "%(filename)s" uploaded': 'datoteka "%(filename)s" je otpremljena',
'file "%s" of %s restored': 'datoteka "%s" od %s je vraćeno u prethodno stanje',
'file changed on disk': 'file changed on disk',
'file does not exist': 'datoteka ne postoji',
'file not found': 'datoteka nije pronađena',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'datoteka sačuvana na %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Pronađi sljedeći',
'Find Previous': 'Pronađi prethodni',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Preuzmi sa stranice:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'Go to Matching Pair': 'Go to Matching Pair',
'go!': 'kreni!',
'Google App Engine Deployment Interface': 'Google App Engine instalaciono okruženje',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'Graph Model': 'Graph Model',
'graph model': 'graph model',
'Help': 'Pomoć',
'here': 'here',
'Hide/Show Translated strings': 'Sakriti/Prikazati prevedene riječi',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Uvoz/Izvoz',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'uključuje',
'Indent with tabs': 'Indent with tabs',
'inspect attributes': 'inspect attributes',
'Install': 'Instaliraj',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Instalirane aplikacije',
'invalid password.': 'pogrešna lozinka.',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'unutrašnja greška',
'internal error: %s': 'unutrašnja greška: %s',
'Internal State': 'Internal State',
'Invalid action': 'Invalid action',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'Nevažeća lozinka',
'invalid password.': 'nevažeća lozinka.',
'Invalid Query': 'Pogrešan upit',
'invalid request': 'invalid request',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'pogrešan tiket',
'Key': 'Key',
'Key bindings': 'Prečice',
'Key bindings for ZenCoding Plugin': 'Prečice za for ZenCoding Plugin',
'Key bindings for ZenCoding Plugin': 'Prečice za ZenCoding Plugin',
'Keyboard shortcuts': 'Prečice na tastaturi',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': 'jezička datoteka "%(filename)s" je kreirana/ažurirana',
'Language files (static strings) updated': 'Jezičke datoteke su ažurirane',
'languages': 'jezici',
'Languages': 'Jezici',
'languages': 'jezici',
'Last Revision': 'Last Revision',
'Last saved on:': 'Posljednja izmjena:',
'License for': 'Licenca za',
'License:': 'Licenca:',
'Line Nr': 'Linija broj',
'Line number': 'Linija broj',
'lists by exception': 'prikaži greške',
'lists by ticket': 'prikaži tikete',
'Loading...': 'Preuzimam...',
'loading...': 'preuzimam...',
'Local Apps': 'Lokalne aplikacije',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'Login': 'Prijava',
'Login to the Administrative Interface': 'Prijava za administrativni interfejs',
'Logout': 'Izlaz',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Prijava za administrativno okruženje',
'Login/Register': 'Prijava/Registracija',
'Logout': 'Odjava',
'lost password': 'izgubljena lozinka',
'Main Menu': 'Glavni meni',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Match Pair': 'Match Pair',
'Memberships': 'Memberships',
'merge': 'spoji',
'Merge Lines': 'Spoji linije',
'models': 'models',
'Models': 'Models',
'Modules': 'Modules',
'modules': 'modules',
'New Application Wizard': 'Čarobnjak za nove aplikacije',
'Models': 'Modeli',
'models': 'modeli',
'Modified On': 'Modified On',
'modules': 'moduli',
'Modules': 'Moduli',
'Multi User Mode': 'Višekorisnički režim rada',
'new application "%s" created': 'nova aplikacija "%s" je kreirana',
'new application "%s" imported': 'nova aplikacija "%s" je uvežena',
'New application wizard': 'Čarobnjak za nove aplikacije',
'New Application Wizard': 'Čarobnjak za nove aplikacije',
'new plugin installed': 'novi pomoćni modul je instaliran',
'New plugin installed: %s': 'Instaliran novi pomoćni modul: %s',
'New Record': 'Novi zapis',
'new record inserted': 'unešen novi zapis',
'New simple application': 'Nova jednostavna aplikacija',
'next': 'sledeći',
'next %s rows': 'next %s rows',
'Next Edit Point': 'Next Edit Point',
'NO': 'NE',
'no changes': 'nema promjena',
'No databases in this application': 'Nema baze podataka u aplikaciji',
'No Interaction yet': 'Nema još interakcije',
'no match': 'nema podudaranja',
'no package selected': 'paket nije odabran',
'no permission to uninstall "%s"': 'nemate ovlaštenje da deinstalirate "%s"',
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
'Node:': 'Node:',
'Not Authorized': 'Nemate ovlašćenje',
'Not supported': 'Nije podržano',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'onlajn dizajner',
'Open new app in new window': 'Otvori novu aplikaciju u novom prozoru',
'OpenShift Deployment Interface': 'OpenShift instalaciono okruženje',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'ili alternativno',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': 'ili uvezi pomoću csv datoteke',
'Original/Translation': 'Original/Prevod',
'Overwrite installed app': 'Prebriši postojeću aplikaciju',
'Overview': 'Pregled',
'Overwrite installed app': 'Zamjeni već postojeću aplikaciju',
'Pack all': 'Zapakuj sve',
'Peeking at file': 'Peeking at file',
'Plugins': 'Plugins',
'plugins': 'plugins',
'Pack compiled': 'Zapakuj kompajlirano',
'Pack custom': 'Prilagođeno pakovanje',
'pack plugin': 'zapakuj pomoćni modul',
'password changed': 'lozinka je promijenjena',
'Past revisions': 'Prethodne korekcije',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': 'Pregled datoteke',
'Permission': 'Dozvola',
'Permissions': 'Dozvole',
'Please': 'Molim',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'Pomoćni modul "%(plugin)s" je izbrisan',
'Plugin "%s" in application': 'Pomoćni modul "%s" u aplikaciji',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Stranica pomoćnih modula',
'Plugins': 'Pomoćni moduli',
'plugins': 'pomoćni moduli',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Omogućio',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'Previous Edit Point': 'Previous Edit Point',
'Private files': 'Private files',
'private files': 'private files',
'private files': 'privatne datoteke',
'Private files': 'Privatne datoteke',
'Project Progress': 'Napredak projekta',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz biblioteka nije pronađena',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Upit:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record does not exist': 'record does not exist',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Reload routes': 'Obnovi preusmjerenja',
'Remove compiled': 'Remove compiled',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Zamijeni',
'Replace All': 'Zamijeni sve',
'Repository (%s)': 'Repozitorijum (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': 'Resolve Conflict file',
'response': 'response',
'restart': 'restart',
'restore': 'restore',
'return': 'return',
'Revert': 'Revert',
'revert': 'revert',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Uloga',
'Roles': 'Uloge',
'Rows in Table': 'Zapisi u tabeli',
'Rows selected': 'Rows selected',
'rules are not defined': 'pravila nisu definisana',
'rules:': 'pravila:',
'Run tests': 'Pokreni testove',
'Run tests in this file': 'Pokreni testove u datoteci',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Pokrenuto na %s',
'Save': 'Sačuvaj',
'Save via Ajax': 'Sačuvaj via Ajax',
'Save file:': 'Sačuvaj datoteku:',
'Save file: %s': 'Sačuvaj datoteku: %s',
'Save model as...': 'Sačuvaj model kao...',
'Save via Ajax': 'Sačuvaj preko Ajax',
'Saved file hash:': 'Sačuvano kao haš:',
'Screenshot %s': 'Snimak ekrana %s',
'Search': 'Pretraga',
'Select Files to Package': 'Odaberi datoteke za pakovanje',
'session': 'sesija',
'session expired': 'sesija istekla',
'session expired': 'sesija je istekla',
'Session saved correctly': 'Sesija je uredno sačuvana',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': 'shell',
'Site': 'Sajt',
'skip to generate': 'skip to generate',
'Showing %s to %s of %s %s found': 'Prikazujem %s do %s od %s %s pronađenih',
'Singular Form': 'Singular Form',
'Site': 'Početna',
'Size of cache:': 'Size of cache:',
'skip to generate': 'preskoči generisanje',
'some files could not be removed': 'neke datoteke ne mogu biti uklonjene',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Žalim, mercurial nije instaliran',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Pokreni novu aplikaciju',
'Start searching': 'Pokreni pretragu',
'Start wizard': 'Pokreni čarobnjaka',
'state': 'state',
'static': 'static',
'Static': 'Static',
'Static files': 'Static files',
'Statistics': 'Statistics',
'Step': 'Korak',
'step': 'korak',
'stop': 'stop',
'Submit': 'Prihvati',
'submit': 'prihvati',
'successful': 'uspješan',
'switch to : db': 'pređi na : db',
'switch to : filesystem': 'pređi na : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'Table': 'Tabela',
'Temporary': 'Temporary',
'test': 'test',
'Testing application': 'Testing application',
'Testing application': 'Testiranje aplikacije',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no models': 'There are no models',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'Theme': 'Teme',
'There are no controllers': 'Nema kontolera',
'There are no models': 'Nema modela',
'There are no modules': 'Nema modula',
'There are no plugins': 'Nema pomoćnih modula',
'There are no private files': 'Nema privatnih datoteka',
'There are no static files': 'Nema statičnih datoteka',
'There are no translators': 'Nema prevodioca',
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
'There are no views': 'Nema stranica prikaza',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket nedostaje',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Tiket',
'Ticket ID': 'Tiket ID',
'Ticket Missing': 'Nedostaje tiket',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'to previous version.': 'na prethodnu verziju.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'Translation strings for the application': 'Riječi u aplikaciji koje treba prevesti',
'Try the mobile interface': 'Probaj mobilni interfejs',
'try view': 'try view',
'try something like': 'na primjer',
'Try the mobile interface': 'Probaj mobilno okruženje',
'try view': 'probaj prikaz',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Ne mogu da provjerim mogućnost nadogradnje',
'unable to create application "%s"': 'unable to create application "%s"',
'unable to delete file "%(filename)s"': 'ne mogu izbrisati datoteku "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'ne mogu izbrisati pomoćni modul "%(plugin)s"',
'Unable to determine the line number!': 'Ne mogu da utvrdim broj reda!',
'Unable to download app because:': 'Ne mogu da preuzmem aplikaciju zbog:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Ne mogu da preuzmem spisak pomoćnih modula',
'unable to install plugin "%s"': 'ne mogu da instaliram pomoćni modul "%s"',
'unable to parse csv file': 'ne mogu da rasčlanim csv datoteku',
'unable to uninstall "%s"': 'ne mogu da deinstaliram "%s"',
'unable to upgrade because "%s"': 'ne mogu da ažurimam zbog "%s"',
'uncheck all': 'uncheck all',
'Uninstall': 'Deinstaliraj',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'ažuriraj',
'update all languages': 'ažuriraj sve jezike',
'Update:': 'Ažuriraj:',
'Upgrade': 'Nadogradnja',
'upgrade now to %s': 'ažuriran na %s',
'upload': 'Otpremi',
'Upload': 'Preuzmi',
'Upload a package:': 'Preuzmi paket:',
'Upload and install packed application': 'Preuzmi i instaliraj zapakovanu aplikaciju',
'upload file:': 'preuzmi datoteku:',
'upload plugin file:': 'preuzmi plugin datoteku:',
'variables': 'variables',
'upload plugin file:': 'preuzmi datoteku pomoćnog modula:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'User': 'Korisnik',
'Username': 'Korisničko ime',
'Users': 'Korisnici',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'promenljive',
'Version': 'Verzija',
'Version %s.%s.%s (%s) %s': 'Verzija %s.%s.%s (%s) %s',
'Versioning': 'Versioning',
'views': 'views',
'Views': 'Views',
'Versioning': 'Kreiranje verzija',
'views': 'prikazi',
'Views': 'Prikazi',
'Warning!': 'Upozorenje!',
'WARNING:': 'UPOZORENJE:',
'WARNING: The following views could not be compiled:': 'WARNING: Sledeći prikazi ne mogu biti kompajlirani:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py administratorska lozinka',
'web2py apps to deploy': 'web2py aplikacija za instalaciju',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py je ažuran',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'web2py Recent Tweets',
'web2py upgrade': 'web2py nadogradnja',
'web2py upgraded; please restart it': 'web2py je ažuriran; molim da restartujete',
'Working...': 'Izvršavam...',
'Wrap with Abbreviation': 'Wrap with Abbreviation',
'WSGI reference name': 'WSGI referentni naziv',
'YES': 'DA',
'Yes': 'Da',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

232
applications/admin/languages/tr.py Normal file → Executable file
View File

@@ -1,29 +1,38 @@
# coding: utf-8
# -*- coding: utf-8 -*-
{
'!langcode!': 'tr',
'!langname!': 'Türkçe',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"güncelleme" ("update") "field1 = \'yenideğer\'" gibi seçeneğe bağlı bir ifadedir. JOIN sonuçlarını silemez veya silemezsiniz.',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s %%{row} silindi',
'%s %%{row} updated': '%s %%{row} güncellendi',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%d-%m-%Y',
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
'(requires internet access)': '(Internet erişimi gerekir)',
'(requires internet access, experimental)': '(internet erişimi gerekir, deneysel)',
'(something like "it-it")': '("it-it" şeklinde birşeyler) ',
'(version %s)': '(version %s)',
'1: Setting Parameters': '1: Parametrelerin Yapılandırılması',
'?': '?',
'@markmin\x01An error occured, please [[reload %s]] the page': '@markmin\x01Bir hata oluştu, lütfen sayfayı [[reload %s]]',
"@markmin\x01Mercurial Version Control System Interface[[NEWLINE]]for application '%s'": "'%s' uygulaması için[[NEWLINE]]Mercurial Sürüm Kontrol Sistemi Arayüzü",
'@markmin\x01Searching: **%s** %%{file}': '@markmin\x01Aranıyor: **%s** %%{file}',
'A new version of web2py is available: %s': "web2py'nin yeni sürümü mevcut: %s ",
'A new version of web2py is available: Version 1.68.2 (2009-10-21 09:59:29)\n': "web2py'nin yeni sürümü mevcut: Sürüm 1.68.2 (2009-10-21 09:59:29)\r\n",
'Abort': 'Abort',
'About': 'Hakkında',
'About application': 'Uygulama hakkında',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Kesme noktası ekle',
'additional code for your application': 'uygulamanız için fazladan kod',
'Additional code for your application': 'Uygulamanız için fazladan kod',
'Admin design page': 'Yönetici tasarım sayfası',
'admin disabled because no admin password': 'yönetici parolası olmadığından admin etkinsiz',
'admin disabled because not supported on google app engine': 'Google App Motoru tafaından desteklenmediğinden admin etkinsizleştirildi',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': 'parola dosyasına erişielemdiğinden admin etkinsizleştirildi',
'Admin is disabled because insecure channel': 'güvenzis kanal olduğundan admin etkinsizleştirildi',
'Admin language': 'Admin dilleri',
@@ -32,14 +41,18 @@
'Administrator Password:': 'Yönetici Parolası:',
'and rename it (required):': 've yeniden adlandır (gerekli):',
'and rename it:': 'yeniden adlandır:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': 'appadmin',
'appadmin is disabled because insecure channel': 'güvenzis kanal olduğundan admin etkinsizleştirildi',
'Application': 'Uygulama',
'application "%s" uninstalled': '"%s" uygulaması kaldırıldı',
'application %(appname)s installed with md5sum: %(digest)s': '%(appname)s uygulaması md5sum %(digest)s ile kuruldu',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': 'uygulama derlendi',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': 'uygulama derlenmiş ve tasarlanamaz',
'Application name:': 'Uygulama adı:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'kullanılamıyor',
'are not used yet': 'şimdilik kullanılamıyor',
'Are you sure you want to delete file "%s"?': '«%s» dosyasını silmek istediğinize emin misiniz?',
@@ -47,20 +60,31 @@
'Are you sure you want to delete this object?': 'Bu nesneyi silmek istediğinizden emin misiniz?',
'Are you sure you want to uninstall application "%s"?': '«%s» uygulamasını kaldırmak istediğinizden emin misiniz?',
'Are you sure you want to upgrade web2py now?': "web2py'yi güncellemek istediğinizden emin misiniz?",
'Are you sure?': 'Are you sure?',
'arguments': 'argümanlar',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'UYARI: Giriş günceli bağlantı (HTTPS) gerektirmekte veya yerel makinada çalışılmalıdır.',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'UYARI: ÇOKLU TEST GÜVENLİ DEĞİL. BİRDEN ÇOK TESTİ AYNI ANDA YAPMAYIN.',
'ATTENTION: you cannot edit the running application!': 'UYARI: çalışan uygulamayı düzenleyemezsiniz!',
'Autocomplete Python Code': 'Python Kodlarını Otomatik Tamamla',
'Available databases and tables': 'Kullanılabilir veritabanları ve tablolar',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'geri',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Sihirbaza geri dön',
'Basics': 'Temeller',
'Begin': 'Başla',
'breakpoint': 'kesme noktası',
'Breakpoints': 'Kesme Noktaları',
'breakpoints': 'kesme noktaları',
'Breakpoints': 'Kesme Noktaları',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'zula',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'zula, hatalar ve oturumlar temizlendi',
'can be a git repo': 'git deposu olabilir',
'Cancel': 'Vazgeç',
@@ -69,23 +93,36 @@
'Cannot compile: there are errors in your app:': 'Derlenemiyor: uygulamanızda hata(lar) var:',
'cannot create file': 'dosya oluşturulamıyor',
'cannot upload file "%(filename)s"': '"%(filename)s" dosyalarını yükleyemiyor',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'admin parolasını değiştir',
'change editor settings': 'düzenleyici ayarlarını değiştir',
'Changelog': 'Changelog',
'check all': 'tümünü kontrol et',
'Check for upgrades': 'Güncellemeleri kontrol et',
'Check to delete': 'Silmek için kontrok et',
'Checking for upgrades...': 'Güncellemeler denetleniyor ... ',
'Clean': 'Temizle',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Click row to expand traceback': 'Takibi genişletmek için satır üzerine tıkla',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': 'güncellemeleri denetlemek için tıklayın',
'code': 'kod',
'Code listing': 'Code listing',
'collapse/expand all': 'sıkıştır/tümünü aç',
'Command': 'Command',
'Comment:': 'Yorum:',
'Commit': 'Öneri',
'Commit form': 'Tarafından öneri',
'Committed files': 'Committed files',
'Compile': 'Derle',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'derlenmiş uygulama kaldırıldı',
'Condition': 'Durum',
'continue': 'continue',
'Controllers': 'Denetçiler',
'controllers': 'denetçiler',
'Count': 'Sayı',
@@ -95,6 +132,9 @@
'Create new simple application': 'Yeni basit uygulama oluştur',
'Create/Upload': 'Oluştur/Yükle',
'created by': 'yazan:',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': 'krontab',
'Current request': 'Şimdiki istek',
'Current response': 'Şimdiki yanıt',
@@ -102,10 +142,13 @@
'currently running': 'şimdiki çalışan',
'currently saved or': 'şimdiki kaydedilen veya',
'data uploaded': 'veri yüklendi',
'Database': 'Database',
'database': 'veritabı',
'Database %s select': 'Database %s select',
'database %s select': '%s veritabanı seçildi',
'Database administration': 'Veritabanı yönetimi',
'database administration': 'veritabı yönetimi',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Tarih ve Zaman',
'db': 'db',
'Debug': 'Hata Ayıkla',
@@ -117,19 +160,40 @@
'Delete this file (you will be asked to confirm deletion)': 'Bu dosyayı sil (silmek için onay istenecek)',
'Delete:': 'Sil:',
'deleted after first hit': 'ilk vuruşta silinir',
'Demo': 'Demo',
'Deploy': 'Yayımla',
'Deploy on Google App Engine': 'Google App Motorunda Yayınla',
'Deploy to OpenShift': "OpenShift'e Yayınla ",
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Yayınlama formu',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'tadarla',
'Detailed traceback description': 'Ayrıntılı nedenin bulma tanımı',
'details': 'details',
'direction: ltr': 'yön: ltr',
'directory not found': 'directory not found',
'Disable': 'Devre Dışı',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'dokümanlar',
'Docs': 'Docs',
'done!': 'bitti!',
'Downgrade': 'Downgrade',
'Download .w2p': '.w2p İndir',
'Download as .exe': 'Download as .exe',
'download layouts': 'düzenleri indir',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'eklentileri indir',
'Download plugins from repository': 'Download plugins from repository',
'EDIT': 'DÜZENLE',
'Edit': 'Düzenle',
'edit all': 'tümünü düzenle',
@@ -142,7 +206,12 @@
'Editing file': 'Dosya düzenleniyor',
'Editing file "%s"': '"%s" dosyası düzenleniyor ',
'Editing Language file': 'Dil dosyası düzenleniyor',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Etkinleştir',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'enter a valid email address': 'geçerli e-posta adresi girin',
'enter a value': 'bir değer girin',
'enter only letters, numbers, and underscore': 'sadece harf, sayı ve alt çizgi giriniz',
@@ -152,13 +221,18 @@
'Error snapshot': 'Hata resmi',
'Error ticket': 'Hata bileti',
'Errors': 'Hatalar',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Hata durumu özellikleri',
'Exit Fullscreen': 'Tam Ekrandan Çık',
'Expand Abbreviation': 'Kısıtlamayı',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'CSV olarak dışa ver',
'Exports:': 'Exports:',
'exposes': 'sergileniyor',
'exposes:': 'sergile:',
'extends': 'genişlet',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': 'modül yüklenemedi',
'failed to reload module because:': 'modü yüklenemedi çünkü:',
'File': 'Dosya',
@@ -171,13 +245,17 @@
'file not found': 'dosya bulanamadı',
'file saved on %(time)s': 'dosyası %(time)s zamanında kaydedildi',
'file saved on %s': 'dosyası kaydedildi: %s',
'filename': 'filename',
'Filename': 'Dosya adı',
'Files added': 'Files added',
'filter': 'filtre',
'Find Next': 'Sonrakini Bul',
'Find Previous': 'Öncekini Bul',
'Form has errors': 'Form has errors',
'Frames': 'Çerçeveler',
'Functions with no doctests will result in [passed] tests.': '[passed] testlerdeki işlevlerde doctest yok',
'GAE Email': 'GAE E-postası',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Parolası',
'Generate': 'Oluştur',
'Git Pull': 'Git Çek',
@@ -188,79 +266,129 @@
'Google Application Id': 'Google Uygulama Id',
'Goto': 'Git',
'graph model': 'grafik modeli',
'Graph Model': 'Graph Model',
'Help': 'Yardım',
'here': 'here',
'Hide/Show Translated strings': 'Çevrilmiş cümleleri Gizle/Görüntüle',
'Highlight current line': 'Highlight current line',
'Hits': 'Vuruşlar',
'Home': 'Anasayfa',
'honored only if the expression evaluates to true': 'sadece deyim doğru sonucunu verirse',
'htmledit': 'html dğzenleyici',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Doküman testi yapılmadan önce, eğer yukarıdaki rapor bir bilet numarası içeriyorsa bu denetleyici çalıştırılırken bir hata oluşturğunu gösterir. Bu genellikle girinti/çıkıntı (indentation) hatası veya işlev dışındaki bir hatadan kaynaklanır.\nYeşil başlık geçilen tüm testleri (eğer tanımlanmışsa) gösterir. Bu durumda test sonuçları görüntülenmez.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'İçe/Dışa Aktarıcı',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': 'içerir',
'Indent with tabs': 'Indent with tabs',
'index': 'indeks',
'insert new': 'yeni ekle',
'insert new %s': '%s yeni ekle',
'inspect attributes': 'özellikleri denetleyin',
'Install': 'Kurucu',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Kurulu uygulamalar',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': 'dahili hata',
'internal error: %s': 'internal error: %s',
'Internal State': 'Dahili Durum',
'Invalid action': 'Geçersiz eylem',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'invalid expression': 'geçersiz ifade',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'Parola geçersiz',
'invalid password.': 'geçersiz parola.',
'Invalid Query': 'Geçersiz Sorgu',
'invalid request': 'geçersiz istek',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': 'geçersiz bilet',
'Key': 'Key',
'Key bindings': 'Anahtarlar',
'Key bindings for ZenCoding Plugin': 'ZenCoding Eklentisi için anahtarlar',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': '"%(filename)s" dil dosyası/dosyaları güncellendi',
'Language files (static strings) updated': 'Dil dosyası (statik cümleler) güncellendi',
'languages': 'diller',
'Languages': 'Diller',
'Last Revision': 'Last Revision',
'Last saved on:': 'Son kaydedilme:',
'License for': 'için lisanslanmış',
'License:': 'License:',
'Line Nr': 'Satır Nr',
'Line number': 'Satır numarası',
'lists by exception': 'istisnaya göre sırala',
'lists by ticket': 'bilete göre sırala',
'Loading...': 'Loading...',
'loading...': 'yükleniyor ...',
'Local Apps': 'Local Apps',
'locals': 'yereller',
'Locals##debug': 'Yereller',
'Login': 'Giriş',
'login': 'giriş',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Yönetsel Arayüze Giriş\t',
'Login/Register': 'Login/Register',
'Logout': 'Çıkış',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Yönet',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': 'birleştir',
'Models': 'Modeller',
'models': 'modeller',
'Modified On': 'Modified On',
'Modules': 'Modüller',
'modules': 'modüller',
'Multi User Mode': 'Multi User Mode',
'new application "%s" created': 'yeni uygulama "%s" oluşturuldu',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'Yeni Uygulama Sihirbazı',
'New application wizard': 'Yeni uygulama sihirbazı',
'new plugin installed': 'yeni eklenti kuruldu',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Yeni Kayıt',
'new record inserted': 'yeni kayıt eklendi',
'New simple application': 'Yeni basit uygulama',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': 'sonraki 100 satır',
'NO': 'HAYIR',
'no changes': 'no changes',
'No databases in this application': 'Bu uygulamada veritabanı yok',
'No Interaction yet': 'Henüz etkileşim yok',
'no match': 'eşlenen yok',
'no package selected': 'hiç paket seçilmemiş',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'No ticket_storage.txt found under /private folder': '/private dizininde ticket_storage.txt dosyası bulunamadı',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Not: Eğer github hata kodu 128 durumunu bildiren bir ileti alırsanız, OpenShift hesabınızı ait ssh anahtarının doğru yapılandırıldığından emin olun.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'online designer': 'çevirimiçi tasarlayıcı',
'Open new app in new window': 'Yeni pencerede yeni uygualama aç',
'OpenShift Deployment Interface': 'OpenShift Yayınlama Arayüzü',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'veya seçenek olarak',
'Or Get from URL:': 'Veya şu URL den alın:',
'or import from csv file': 'veya CSV dsoyasından içerin',
'or provide app url:': "veya uygulama URL'si verin:",
'or provide application url:': "veya uygulama URL'si verin:",
'Original/Translation': 'Orjinal / Çeviri',
'Overview': 'Overview',
'Overwrite installed app': 'Kurulu uygulama üzerine yaz',
'Pack all': 'Tümünü paketle',
'Pack compiled': 'Derlenenleri paketle',
@@ -268,106 +396,171 @@
'pack plugin': 'eklentiyi paketle',
'PAM authenticated user, cannot change password here': 'PAM onaylı kullanıcı, parola buradan değiştirilemiyor',
'password changed': 'parola değiştirilidi',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'appcfg.py dosyasının patikası',
'Path to local openshift repo root.': 'Yerel openshift repo kökünün patikası.',
'Peeking at file': 'Dosya gözetleniyor',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Lütfen',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': '"%(plugin)s" eklentisi silindi',
'Plugin "%s" in application': '"%s" uygulamasında eklenti',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'eklentiler',
'Plugins': 'Eklentiler',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Çoğul-Kipler:',
'Powered by': 'Yazılım Temeli:',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'önceki 100 satır',
'Private files': 'Özel dosyalar',
'private files': 'özel dosyalar',
'Project Progress': 'Proje İlerlemesi',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz kütüphanesi yok',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Sorgu: ',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Hızlı Arama',
'Record': 'Record',
'record': 'kayıt',
'record does not exist': 'kayıt bulunamıyor',
'record id': 'kayıt id',
'Record id': 'Record id',
'refresh': 'yeniden yükle',
'register': 'register',
'Reload routes': 'Yönelendirmeyi yeniden yükle',
'Remove compiled': 'Derlemeyi kaldır',
'Removed Breakpoint on %s at line %s': ' %s üzerindeki kesme noktası %s satırında değiştrildi.',
'Replace': 'Değiştir',
'Replace All': 'Tümünü değiştir',
'Repository (%s)': 'Repository (%s)',
'request': 'istek',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'python-git gerekyior, fakat kurulu değil',
'Resolve Conflict file': 'Dosyadaki çakışmayı çöz',
'response': 'tepki',
'restart': 'yeniden başla',
'restore': 'geri al',
'return': 'return',
'Revert': 'Revert',
'revert': 'geri al',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows in table': 'Tablosundaki satırlar',
'Rows selected': 'Seçilen satırlar',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Bu dosyadaki testleri çalıştırır (tüm dosyaları çalıştırmak için, 'test' etiketli düğmeyi kullanabilirsiniz)",
'Running on %s': '%s üzerinde çalışıyor',
'Save': 'Kaydet',
'save': 'kaydet',
'Save file:': 'Dosyayı kaydet:',
'Save file: %s': 'Dosyayı farklı kaydet: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Ajax üzerinden kaydet',
'Saved file hash:': 'Kaydedilen dosyanın parmak izi:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Paketlenecek Dosyaları Seç',
'selected': 'seçildi',
'session': 'oturum',
'session expired': 'oturum zamanaşımına uğradı',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': "%s'nin %s satırındaki kesme noktasını: %s yap",
'shell': 'kabuk',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': 'Site',
'Size of cache:': 'Size of cache:',
'skip to generate': 'oluşturmak için atla',
'some files could not be removed': 'bazı dosyalar kaldırılamadı',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'kaynak : dosyasistemi',
'Start a new app': 'Yeni uygualama başla',
'Start searching': 'Aramaya başla',
'Start wizard': 'Başlatma sihirbazı',
'state': 'durum',
'static': 'statik',
'Static': 'Statik',
'static': 'statik',
'Static files': 'Statik dosyalar',
'Statistics': 'Statistics',
'Step': 'Basamak',
'Submit': 'Gönder',
'step': 'step',
'stop': 'stop',
'submit': 'gönder',
'Submit': 'Gönder',
'successful': 'başarılı',
'Sure you want to delete this object?': 'Bu nesneyi silmek istediğinizden emin misiniz? ',
'switch to : db': 'geç : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'tablo',
'Table': 'Table',
'Temporary': 'Geçici',
'test': 'test',
'Testing application': 'Uygulama test ediliyor',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"sorgulama" "db.table1.field1==\'değer\'" şeklinde bir durumu ifade eder. SQL birleştirmede (JOIN) "db.table1.field1==db.table2.field2" şeklindedir.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': 'uygulama mantığı: her URL denetleyicideki bir işleve eşlenir',
'The application logic, each URL path is mapped in one exposed function in the controller': 'Uygulama mantığı: her URL denetleyicideki bir işleve eşlenir',
'the data representation, define database tables and sets': 'veri gösterimi, veritabanı tablolarını ve setlerini tanımla',
'The data representation, define database tables and sets': 'Veri gösterimi, veritabanı tablolarını ve setlerini tanımla',
'The presentations layer, views are also known as templates': 'Sunum katmanı, görünümler şablon olarakda biliniyor.',
'the presentations layer, views are also known as templates': 'sunum katmanı, görünümler şablon olarakda biliniyor.',
'Theme': 'Theme',
'There are no controllers': 'Denetçiler yok',
'There are no models': 'Modeller yok',
'There are no modules': 'Modüller yok',
'There are no plugins': 'Eklentiler yok',
'There are no private files': 'Özel dosyalar yok',
'There are no static files': 'Statik dosyalar yok',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': 'Çeviriler, sadeceön tanmlı dil destekleniyor.',
'There are no views': 'Görünümler yok',
'These files are not served, they are only available from within your app': 'Bu dosyalar servis yapılmıyor, bunlar sadece uygulamanız içerisinden erişilebilir.',
'These files are served without processing, your images go here': 'Bu dosyalarda işlem yapılmadan kaydedildi, resimler buraya gidiyor:',
'these files are served without processing, your images go here': 'bu dosyalarda işlem yapılmadan kaydedildi, resimler buraya gidiyor:',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': 'Bu şablonlar %(filename)s: ',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "Bu sayfa uygulamanızı OpenShif uygulama reposuna koyar. Uygulamanızın web2py iskeleti ile oluşturulduğunuz ve web2py dosya sisteminizdeki ropoya erişilebileceği varsayılmıştır. Bu işlev web2py'nin çalıştığı ortamda GitPython'e ihtiyaç duyar.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'Bu sayfa uygulamanızı Google App Motoru bilişim bulutuna yükleyecektir. İndeksleri yerel olarak oluştırmanız gerektiğini aklınızda tutun, Google uygulama sunucusunu yerel olarak kurup çalıştırın, aksi halde bazı kayıtlarda hatalar olacaktır. Uyarı: yayınlama ağ hızınıza bağlı olarak uzun zaman alabilir. Uyarı: bu sizin app.yaml dosyasını yeniden yazar. LÜTFEN BİRDEN FAZLA GÖNDERMEYİN.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'bu sayfayı, kesme noktasına geldiğini görmek için ve hata ayıklama etkileşmesi gerekiyor..',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': 'Bilet',
'Ticket ID': 'Bile ID\'si',
'Ticket ID': "Bile ID'si",
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'TM': 'TM',
'to previous version.': 'önceki sürüme.',
'To create a plugin, name a file/folder plugin_[name]': 'Eklenti oluşturmak için dosyayı dosya/klasör plugin_[isim] şeklinde isimlendir. ',
'To emulate a breakpoint programatically, write:': 'Program ile kesme noktasını öykünmek için, yazın:',
'to use the debugger!': 'hata ayıklayıcısını kullanmak için!',
'toggle breakpoint': 'kesme noktasını değiştir',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Tam Ekrana Geç',
'Traceback': 'Nedenin bul',
'translation strings for the application': 'uygulama için çeviri cümleleri',
@@ -376,23 +569,33 @@
'try something like': 'gibi birşey dene',
'Try the mobile interface': 'Mobil arayüzü dene',
'try view': 'görünümü dene',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Güncellemeler denetlenemiyor',
'unable to create application "%s"': '"%s" uygulaması oluşturulamıyor',
'unable to delete file "%(filename)s"': '"%(filename)s" dosylaları silinemiyor',
'unable to delete file plugin "%(plugin)s"': '"%(plugin)s" eklenti dosyasyaları silenemiyor',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': 'İndirilemiyor',
'Unable to download app': 'Uygulamanız indirilemiyor',
'Unable to download app because:': 'Uygulamanız indirilemiyor çünkü:',
'Unable to download because': 'İndirilemiyor çünkü:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': "impossible d'analyser les fichiers CSV",
'unable to uninstall "%s"': 'kladıramıyor çünkü "%s"',
'unable to upgrade because "%s"': 'güncelleyemiyor çünkü "%s"',
'uncheck all': 'tümünü kladır',
'Uninstall': 'Kaldır',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': 'güncelle',
'update all languages': 'tüm delleri yükle',
'Update:': 'Güncelle:',
'Upgrade': 'Upgrade',
'upgrade now': 'şimdi güncelle',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': "web2py'yi güncelle",
'upload': 'yükle',
'Upload': 'Yükle',
@@ -406,21 +609,38 @@
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Karmaşık sorgularda Ve (AND) için (...)&(...) kullanın, Veya (OR) için (...)|(...) kullanın ve DEĞİL (NOT) için ~(...) kullanın. ',
'Use an url:': "Url'yi kullan:",
'user': 'kullanıcı',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'değişkenler',
'Version': 'Sürüm',
'versioning': 'sürümleme',
'Versioning': 'Sürümleme',
'versioning': 'sürümleme',
'view': 'görüntü',
'Views': 'Görüntüler',
'views': 'görüntüler',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Çatısı',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'Yayınlanacak web2py uygulaması',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py güncel',
'web2py online debugger': 'çevirimiçi web2py hata ayıklayıcı',
'web2py Recent Tweets': 'web2py Son Twitler',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py güncellendi, lütfen yeniden başlatın',
'Working...': 'Working...',
'WSGI reference name': 'WSGI referans ismi',
'YES': 'EVET',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': '"kesme noktaları" düğmesini kullanarak düzenleme penceresine geçebilir ve kesme nokatalarını hem ekeleyebilir hemde kaldırabilirsiniz',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'Gelinceye kadar kurmalısınız',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

147
applications/admin/languages/uk.py Normal file → Executable file
View File

@@ -1,4 +1,4 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'uk',
'!langname!': 'Українська',
@@ -9,12 +9,15 @@
'%s %%{row} deleted': 'Вилучено %s %%{рядок}',
'%s %%{row} updated': 'Вилучено %s %%{рядок}',
'%s Recent Tweets': '%s %%{останній} %%{твіт}',
'%s selected': '%s selected',
'%s students registered': '%s студентів зареєстровано',
'%Y-%m-%d': '%Y/%m/%d',
'%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S',
'(requires internet access)': '(потрібно мати доступ в інтернет)',
'(requires internet access, experimental)': '(потрібно мати доступ в інтернет, експериментально)',
'(something like "it-it")': '(щось схоже на "uk-ua")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(не існує файлу **gluon/contrib/plural_rules/%s.py**)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'Сталась помилка, будь-ласка [[переватажте %s]] сторінку',
"@markmin\x01Mercurial Version Control System Interface[[NEWLINE]]for application '%s'": "Інтерфейс системи контролю версій Mercurial[[NEWLINE]]для додатку '%s'",
@@ -23,17 +26,21 @@
'About': 'Про',
'about': 'про',
'About application': 'Про додаток',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Додати точку зупинки',
'Additional code for your application': 'Додатковий код для вашого додатку',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': 'адмін.інтерфейс відключено, бо не вказано пароль адміністратора',
'admin disabled because not supported on google app engine': 'адмін.інтерфейс відключено через те, що Google Application Engine його не підтримує',
'admin disabled because too many invalid login attempts': 'адмін.інтерфейс заблоковано, бо кількість хибних спроб входу перевищило граничний рівень',
'admin disabled because unable to access password file': 'адмін.інтерфейс відключено через відсутність доступу до файлу паролів',
'Admin is disabled because insecure channel': "Адмін.інтерфейс відключено через використання ненадійного каналу звя'зку",
'Admin language': 'Мова інтерфейсу:',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'інтерфейс адміністратора',
'Administrator Password:': 'Пароль адміністратора:',
'and rename it:': 'i змінити назву на:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'App does not exist or your are not authorized': 'Додаток не існує, або ви не авторизовані',
'appadmin': 'Aдм.панель',
'appadmin is disabled because insecure channel': "адмін.панель відключено через використання ненадійного каналу зв'язку",
@@ -45,12 +52,14 @@
'Application exists already': 'Додаток вже існує',
'application is compiled and cannot be designed': 'додаток скомпільований. налаштування змінювати не можна',
'Application name:': 'Назва додатку:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'не використовуються',
'are not used yet': 'поки що не використовуються',
'Are you sure you want to delete file "%s"?': 'Ви впевнені, що хочете вилучити файл "%s"?',
'Are you sure you want to delete plugin "%s"?': 'Ви впевнені, що хочете вилучити втулку "%s"?"',
'Are you sure you want to delete this object?': "Ви впевнені, що хочете вилучити цей об'єкт?",
'Are you sure you want to uninstall application "%s"?': 'Ви впевнені, що хочете вилучити (uninstall) додаток "%s"?',
'Are you sure?': 'Are you sure?',
'arguments': 'аргументи',
'at char %s': 'на символі %s',
'at line %s': 'в рядку %s',
@@ -60,7 +69,10 @@
'ATTENTION: you cannot edit the running application!': 'УВАГА: Ви не можете редагувати додаток, який зараз виконуєте!',
'Autocomplete Python Code': 'Автозавершення коду на Python',
'Available databases and tables': 'Доступні бази даних та таблиці',
'Available Databases and Tables': 'Available Databases and Tables',
'back': '<< назад',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'bad_resource': 'поганий_ресурс',
'Basics': 'Початок',
'Begin': 'Початок',
@@ -69,7 +81,9 @@
'breakpoints': 'точки зупинок',
'Bulk Register': 'Масова реєстрація',
'Bulk Student Registration': 'Масова реєстрація студентів',
'Cache': 'Cache',
'cache': 'кеш',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Ключі кешу',
'cache, errors and sessions cleaned': 'кеш, список зареєстрованих помилок та сесії очищенні',
'can be a git repo': 'може бути git-репозитарієм',
@@ -78,13 +92,16 @@
'Cannot compile: there are errors in your app:': 'Не вдається скомпілювати: є помилки у вашому додатку:',
'cannot create file': 'не можу створити файл',
'cannot upload file "%(filename)s"': 'не можу завантажити файл "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'Змінити пароль адміністратора',
'change editor settings': 'змінити налаштування редактора',
'Changelog': 'Changelog',
'check all': 'відмітити всі',
'Check for upgrades': 'Перевірити оновлення',
'Check to delete': 'Помітити на вилучення',
'Checking for upgrades...': 'Відбувається пошук оновлень...',
'Clean': 'Очистити',
'Clear': 'Clear',
'Clear CACHE?': 'Очистити ВЕСЬ кеш?',
'Clear DISK': 'Очистити ДИСКОВИЙ КЕШ',
'Clear RAM': "Очистити КЕШ В ПАМ'ЯТІ",
@@ -97,7 +114,10 @@
'Comment:': 'Пояснення:',
'Commit': 'Комміт',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': 'Компілювати',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': 'скомпільований додаток вилучено',
'Condition': 'Умова',
'contact_admin': "зв'язатись_з_адміністратором",
@@ -112,7 +132,9 @@
'Create rules': 'Створити правила',
'Create/Upload': 'Створити/Завантажити',
'created by': 'Автор:',
'Created by:': 'Created by:',
'Created On': 'Створено в',
'Created on:': 'Created on:',
'crontab': 'таблиця cron',
'Current request': 'Поточний запит',
'Current response': 'Поточна відповідь',
@@ -120,9 +142,13 @@
'currently running': 'наразі, активний додаток',
'currently saved or': 'останній збережений, або',
'data uploaded': 'дані завантажено',
'Database': 'Database',
'database': 'база даних',
'Database %s select': 'Database %s select',
'database %s select': 'Вибірка з бази даних %s',
'Database administration': 'Database administration',
'database administration': 'адміністрування бази даних',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': 'Дата і час',
'db': 'база даних',
'Debug': 'Ладнати (Debug)',
@@ -134,10 +160,15 @@
'Delete this file (you will be asked to confirm deletion)': 'Вилучити цей файл (буде відображено запит на підтвердження операції)',
'Delete:': 'Вилучити:',
'deleted after first hit': 'автоматично вилучається після першого спрацювання',
'Demo': 'Demo',
'Deploy': 'Розгорнути',
'Deploy on Google App Engine': 'Розгорнути на Google App Engine (GAE)',
'Deploy to OpenShift': 'Розгорнути на OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Форма розгортання (deployment form)',
'Deployment Interface': 'Deployment Interface',
'Description:': 'Description:',
'design': 'налаштування',
'Detailed traceback description': 'Детальний опис стеку викликів (traceback)',
'details': 'детальніше',
@@ -146,14 +177,23 @@
'Disable': 'Вимкнути',
'Disabled': 'Вимкнено',
'disabled in demo mode': 'відключено в демо-режимі',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'відключено в багато-користувацькому режимі',
'DISK': 'DISK',
'Disk Cache Keys': 'Ключі дискового кешу',
'Disk Cleared': 'Дисковий кеш очищено',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'док.',
'Docs': 'Docs',
'done!': 'зроблено!',
'Downgrade': 'Повернути попередню версію',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'завантажити макет (layout)',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'завантажити втулки',
'Download plugins from repository': 'Download plugins from repository',
'Edit': 'Редагувати',
'edit all': 'редагувати всі',
'Edit application': 'Налаштування додатку',
@@ -165,7 +205,11 @@
'Editing file "%s"': 'Редагується файл "%s"',
'Editing Language file': 'Редагується файл перекладу',
'Editing Plural Forms File': 'Редагується файл форм множини',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Увімкнути',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'enter a value': 'введіть значення',
'Error': 'Помилка',
'Error logs for "%(app)s"': 'Список зареєстрованих помилок додатку "%(app)s"',
@@ -178,7 +222,9 @@
'Exception instance attributes': 'Атрибути примірника класу Exception (виключення)',
'Exit Fullscreen': 'Вийти з повноекранного режиму',
'Expand Abbreviation': 'Розгорнути абревіатуру',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': 'експортувати як файл csv',
'Exports:': 'Exports:',
'exposes': 'обслуговує',
'exposes:': 'обслуговує:',
'extends': 'розширює',
@@ -195,10 +241,13 @@
'file not found': 'файл не знайдено',
'file saved on %(time)s': 'файл збережено в %(time)s',
'file saved on %s': 'файл збережено в %s',
'filename': 'filename',
'Filename': "Ім'я файлу",
'Files added': 'Files added',
'filter': 'фільтр',
'Find Next': 'Шукати наступний',
'Find Previous': 'Шукати попередній',
'Form has errors': 'Form has errors',
'Frames': 'Стек викликів',
'Functions with no doctests will result in [passed] tests.': 'Функції, в яких відсутні док-тести відносяться до функцій, які успішно пройшли тести.',
'GAE Email': 'Ел.пошта GAE',
@@ -215,22 +264,30 @@
'Google Application Id': 'Ідентифікатор Google Application',
'Goto': 'Перейти до',
'graph model': 'графова модель',
'Graph Model': 'Graph Model',
'Help': 'Допомога',
'here': 'here',
'Hide/Show Translated strings': 'Сховати/показати ВЖЕ ПЕРЕКЛАДЕНІ рядки',
'Highlight current line': 'Highlight current line',
'Hits': 'Спрацьовувань',
'Home': 'Домівка',
'honored only if the expression evaluates to true': 'точка зупинки активується тільки за істинності умови',
'If start the downgrade, be patient, it may take a while to rollback': 'Запустивши повернення на попередню версію, будьте терплячими, це може зайняти трохи часу',
'If start the upgrade, be patient, it may take a while to download': 'Запустивши оновлення, будьте терплячими, потрібен час для завантаження необхідних даних',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Якщо в наданому вище звіті присутня позначка про помилку (ticket number), то це вказує на збій у виконанні контролера ще до початку запуску док-тестів. Це, зазвичай, сигналізує про помилку вирівнювання тексту програми (indention error) або помилку за межами функції (error outside function code).\n\t\tЗелений заголовок сигналізує, що всі тести (з наявних) пройшли успішно. В цьому випадку результат тестів показано не буде.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': 'Імпорт/Експорт',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'Під час розробки , використовуйте вбудований веб-сервер Rocket, він найкраще налаштований на спільну роботу з інтерактивним ладначем.',
'includes': 'включає',
'Indent with tabs': 'Indent with tabs',
'index': 'індекс',
'insert new': 'вставити новий',
'insert new %s': 'вставити новий %s',
'inspect attributes': 'інспектувати атрибути',
'Install': 'Встановлення',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': 'Встановлені додатки (applications)',
'Interaction at %s line %s': 'Виконується %s рядок %s',
'Interactive console': 'Інтерактивна консоль',
@@ -238,41 +295,57 @@
'internal error: %s': 'внутрішня помилка: %s',
'Internal State': 'Внутрішній стан',
'Invalid action': 'Помилкова дія',
'Invalid application name': 'Invalid application name',
'invalid circual reference': 'помилкове циклічне посилання',
'invalid circular reference': 'помилкове циклічне посилання',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': 'неправильний пароль',
'invalid password.': 'неправильний пароль.',
'Invalid Query': 'Помилковий запит',
'invalid request': 'хибний запит',
'Invalid request': 'Invalid request',
'invalid request ': 'Хибний запит',
'invalid table names (auth_* tables already defined)': 'хибна назва таблиці (таблиці auth_* вже оголошено)',
'invalid ticket': 'недійсна позначка про помилку (ticket)',
'Key': 'Ключ',
'Key bindings': 'Клавіатурні скорочення:',
'Key bindings for ZenCoding Plugin': 'Клавіатурні скорочення для втулки ZenCoding plugin',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'вбити процес',
'language file "%(filename)s" created/updated': 'Файл перекладу "%(filename)s" створено/оновлено',
'Language files (static strings) updated': 'Файли перекладів (із статичних рядків в першоджерелах) оновлено',
'languages': 'переклади',
'Languages': 'Переклади',
'Last Revision': 'Last Revision',
'Last saved on:': 'Востаннє збережено:',
'License for': 'Ліцензія додатку',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': '№ рядка',
'LineNo': '№ рядка',
'lists by exception': 'список виключень (exceptions)',
'lists by ticket': 'список позначок (tickets)',
'Loading...': 'Loading...',
'loading...': 'завантаження...',
'Local Apps': 'Local Apps',
'locals': 'локальні',
'Locals##debug': 'Локальні змінні',
'Login': 'Вхід',
'login': 'вхід',
'Login successful': 'Login successful',
'Login to the Administrative Interface': 'Вхід в адміністративний інтерфейс',
'Login/Register': 'Login/Register',
'Logout': 'Вихід',
'lost password': 'lost password',
'Main Menu': 'Основне меню',
'Manage': 'Керувати',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Адміністратор керування користувачами/студентами',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Керувати студентами',
'Match Pair': 'Знайти пару',
'Memberships': 'Memberships',
'merge': "з'єднати",
'Merge Lines': "З'єднати рядки",
'Minimum length is %s': 'Мінімальна довжина становить %s',
@@ -281,37 +354,46 @@
'Modified On': 'Змінено в',
'Modules': 'Модулі',
'modules': 'модулі',
'Multi User Mode': 'Multi User Mode',
'Must include at least %s %s': 'Має вміщувати щонайменше %s %s',
'Must include at least %s lower case': 'Повинен включати щонайменше %s малих букв',
'Must include at least %s lowercase': 'Повинен включати щонайменше %s малих букв',
'Must include at least %s of the following : %s': 'Має включати не менше %s таких символів : %s',
'Must include at least %s upper case': 'Повинен включати щонайменше %s великих букв',
'Must include at least %s uppercase': 'Повинен включати щонайменше %s великих букв',
'new application "%s" created': 'новий додаток "%s" створено',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'Майстер створення нового додатку',
'New application wizard': 'Майстер створення нового додатку',
'new plugin installed': 'нова втулка (plugin) встановлена',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': 'Новий запис',
'new record inserted': 'новий рядок додано',
'New simple application': 'Новий простий додаток',
'next': 'наступний',
'next %s rows': 'next %s rows',
'next 100 rows': 'наступні 100 рядків',
'Next Edit Point': 'Наступне місце редагування',
'NO': 'НІ',
'no changes': 'no changes',
'No databases in this application': 'Даний додаток не використовує бази даних',
'No Interaction yet': 'Ладнач не активовано',
'no match': 'співпадань нема',
'no package selected': 'пакет не вибрано',
'no permission to uninstall "%s"': 'нема прав на вилучення (uninstall) "%s"',
'No ticket_storage.txt found under /private folder': 'В каталозі /private відсутній файл ticket_storage.txt',
'Node:': 'Node:',
'Not Authorized': 'Не дозволено',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Примітка: Якщо ви отримали повідомлення про помилку з кодом стану github рівним 128, переконайтесь, що система та обліковий запис, з якого відбувається розгортання використовують відповідний ключ ssh, налаштований в обліковому записі openshift.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": 'У промисловій експлуатації, ви повинні налаштувати ваш веб-сервер на використання одного процесу та багатьох потоків, якщо бажаєте скористатись цим ладначем.',
'online designer': 'дизайнер БД',
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift: Інтерфейс розгортання',
'OpenShift Output': 'Вивід OpenShift',
'or alternatively': 'або альтернативно',
'Or Get from URL:': 'Або Отримати з мережі (ч/з URL):',
'or import from csv file': 'або імпортувати через csv-файл',
'Original/Translation': 'Оригінал/переклад',
'Overview': 'Overview',
'Overwrite installed app': 'Перезаписати встановлений додаток',
'Pack all': 'Пакувати все',
'Pack compiled': 'Пакувати зкомпільоване',
@@ -319,42 +401,62 @@
'pack plugin': 'запакувати втулку',
'PAM authenticated user, cannot change password here': 'Ввімкнена система ідентифікації користувачів PAM. Для зміни паролю скористайтесь командами вашої ОС ',
'password changed': 'пароль змінено',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Шлях до appcfg.py',
'Path to local openshift repo root.': 'Шлях до локального корня репозитарія openshift.',
'peek': 'глянути',
'Peeking at file': 'Перегляд файлу',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Будь-ласка',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin': 'втулка',
'plugin "%(plugin)s" deleted': 'втулку "%(plugin)s" вилучено',
'Plugin "%s" in application': 'Втулка "%s" в додатку',
'plugin not specified': 'втулку не визначено',
'Plugin page': 'Plugin page',
'plugins': 'втулки (plugins)',
'Plugins': 'Втулки (Plugins)',
'Plural Form #%s': 'Форма множини #%s',
'Plural-Forms:': 'Форми множини:',
'Powered by': 'Працює на',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': 'попередні 100 рядків',
'Previous Edit Point': 'Попереднє місце редагування',
'Private files': 'Приватні файли',
'private files': 'приватні файли',
'Project Progress': 'Поступ проекту',
'Pull': 'Втягнути',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Проштовхнути',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': 'Запит:',
'RAM': 'RAM',
'RAM Cache Keys': 'Ключ ОЗП-кешу (RAM Cache)',
'Ram Cleared': "Кеш в пам'яті очищено",
'Rapid Search': 'Миттєвий пошук',
'Record': 'Record',
'record': 'запис',
'record does not exist': 'запису не існує',
'record id': 'Ід.запису',
'Record id': 'Record id',
'refresh': 'оновіть',
'register': 'register',
'reload': 'перевантажити',
'Reload routes': 'Перезавантажити маршрути',
'Remove compiled': 'Вилуч.компл',
'Removed Breakpoint on %s at line %s': 'Вилучено точку зупинки у %s в рядку %s',
'Replace': 'Замінити',
'Replace All': 'Замінити все',
'Repository (%s)': 'Repository (%s)',
'request': 'запит',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'Для розгортання необхідний пакет python-git, але він не встановлений',
'resolve': "розв'язати",
'Resolve Conflict file': "Файл розв'язування конфлікту",
@@ -362,7 +464,14 @@
'restart': 'перезапустити майстра',
'restore': 'повернути',
'return': 'повернутись',
'Revert': 'Revert',
'revert': 'відновитись',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': 'Role',
'Roles': 'Roles',
'Rows in Table': 'Rows in Table',
'Rows in table': 'Рядків у таблиці',
'Rows selected': 'Рядків вибрано',
'rules are not defined': 'правила не визначені',
@@ -376,22 +485,33 @@
'Save': 'Зберегти',
'Save file:': 'Зберегти файл:',
'Save file: %s': 'Зберегти файл: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'зберегти через Ajax',
'Saved file hash:': 'Хеш збереженого файлу:',
'Screenshot %s': 'Screenshot %s',
'search': 'пошук',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': 'відмічено',
'session': 'сесія',
'session expired': 'час даної сесії вичерпано',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Додано точку зупинки в %s на рядок %s: %s',
'shell': 'консоль',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'signup': 'підписатись',
'signup_requested': 'необхідна_реєстрація',
'Singular Form': 'Форма однини',
'site': 'сайт',
'Site': 'Сайт',
'Size of cache:': 'Size of cache:',
'skip to generate': 'перейти до генерування результату',
'some files could not be removed': 'деякі файли не можна вилучити',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Не вдалось виявити встановлену систему контролю версій Mercurial',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Створюється новий додаток',
'Start searching': 'Розпочати пошук',
'Start wizard': 'Активувати майстра',
@@ -399,6 +519,7 @@
'Static': 'Статичні',
'static': 'статичні',
'Static files': 'Статичні файли',
'Statistics': 'Statistics',
'Step': 'Крок',
'step': 'крок',
'stop': 'зупинити',
@@ -406,7 +527,10 @@
'Submit': 'Застосувати',
'successful': 'успішно',
'switch to : db': 'перемкнути на : БД',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': 'таблиця',
'Table': 'Table',
'tags': 'мітки (tags)',
'Temporary': 'Тимчасово',
'test': 'тестувати всі',
@@ -417,6 +541,7 @@
'The application logic, each URL path is mapped in one exposed function in the controller': 'Логіка додатку, кожний шлях URL проектується на одну з функцій обслуговування в контролері',
'The data representation, define database tables and sets': 'Представлення даних, опис таблиць БД та наборів',
'The presentations layer, views are also known as templates': 'Презентаційний рівень, відображення, відомі також як шаблони',
'Theme': 'Theme',
'There are no controllers': 'Жодного контролера, наразі, не існує',
'There are no models': 'Моделей, наразі, нема',
'There are no modules': 'Модулів поки що нема',
@@ -448,6 +573,7 @@
'To emulate a breakpoint programatically, write:': 'Для встановлення точки зупинки програмним чином напишіть:',
'to use the debugger!': 'щоб активувати ладнач!',
'toggle breakpoint': '+/- точку зупинки',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Перемкнути на весь екран',
'Traceback': 'Стек викликів (Traceback)',
'Translation strings for the application': 'Пари рядків <оригінал>:<переклад> для вибраної мови',
@@ -456,6 +582,7 @@
'try view': 'дивитись результат',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'наберіть тут будь-які команди ладнача PDB і натисніть клавішу [Return] ([Enter]), щоб запустити їх на виконання.',
'Type python statement in here and hit Return (Enter) to execute it.': 'Наберіть тут будь-які вирази Python і натисніть клавішу [Return] ([Enter]), щоб запустити їх на виконання.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': 'Неможливо перевірити оновлення',
'unable to create application "%s"': 'не можу створити додаток "%s"',
'unable to create application "%s" (it may exist already)': 'не можу створити додаток "%s" (можливо його вже створено)',
@@ -466,7 +593,9 @@
'Unable to download because:': 'Неможливо завантажити через:',
'unable to download layout': 'не вдається завантажити макет',
'unable to download plugin: %s': 'не вдається завантажити втулку: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install application "%(appname)s"': 'не вдається встановити додаток "%(appname)s"',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': 'не вдається розібрати csv-файл',
'unable to uninstall "%s"': 'не вдається вилучити "%s"',
'unable to upgrade because "%s"': 'не вдається оновити, тому що "%s"',
@@ -490,6 +619,9 @@
'upload plugin file:': 'завантажити файл втулки:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Для створення складних запитів використовуйте (...)&(...) замість AND, (...)|(...) замість OR, та ~(...) замість NOT.',
'user': 'користувач',
'User': 'User',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Використання оболонки може заблокувати базу даних від сумісного використання іншими користувачами цього додатку.',
'value not allowed': 'недопустиме значення',
'variables': 'змінні',
@@ -499,8 +631,11 @@
'view': 'перегляд',
'Views': 'Відображення (Views)',
'views': 'відображення',
'Warning!': 'Warning!',
'WARNING:': 'ПОПЕРЕДЖЕННЯ:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Веб-каркас (Web Framework)',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'Готові до розгортання додатки web2py',
'web2py Debugger': 'Ладнач web2py',
'web2py downgrade': 'повернення на попередню версію web2py',
@@ -509,13 +644,17 @@
'web2py Recent Tweets': 'Останні твіти web2py',
'web2py upgrade': 'оновлення web2py',
'web2py upgraded; please restart it': 'web2py оновлено; будь-ласка перезапустіть його',
'Working...': 'Working...',
'Wrap with Abbreviation': 'Загорнути з абревіатурою',
'WSGI reference name': "ім'я посилання WSGI",
'YES': 'ТАК',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Ви також можете встановлювати/вилучати точки зупинок під час редагування першоджерел (sources), використовуючи кнопку "+/- точку зупинки"',
'You can inspect variables using the console bellow': 'Ви можете досліджувати змінні, використовуючи інтерактивну консоль',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'У вас є ще одна спроба перед тим, як вхід буде заблоковано',
'you must specify a name for the uploaded application': "ви повинні вказати ім'я додатка, перед ти, як завантажити його",
'You need to set up and reach a': 'Треба встановити та досягнути',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Ваш додаток буде заблоковано, поки ви не клацнете по одній з кнопок керування ("наступний", "крок", "продовжити", та ін.)',
'Your can inspect variables using the console bellow': 'Ви можете досліджувати змінні, використовуючи інтерактивну консоль',
}

692
applications/admin/languages/zh-tw.py Normal file → Executable file
View File

@@ -1,302 +1,682 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'zh-tw',
'!langname!': '台灣中文',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"更新" 是選擇性的條件式, 格式就像 "欄位1=\'\'". 但是 JOIN 的資料不可以使用 update 或是 delete"',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '已刪除 %s',
'%s %%{row} updated': '已更新 %s',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(格式類似 "zh-tw")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available': '新版的 web2py 已發行',
'A new version of web2py is available: %s': '新版的 web2py 已發行: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 登入管理帳號需要安全連線(HTTPS)或是在本機連線(localhost).',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: 因為在測試模式不保證多執行緒安全性,也就是說不可以同時執行多個測試案例',
'ATTENTION: you cannot edit the running application!': '注意:不可編輯正在執行的應用程式!',
'Abort': 'Abort',
'About': '關於',
'About application': '關於本應用程式',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': '應用程式額外的程式碼',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': '管理介面關閉原因是沒有設定管理員密碼 ',
'admin disabled because not supported on google app engine': '管理介面關閉原因是不支援在google apps engine環境下運作',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': '管理介面關閉原因是無法存取密碼檔',
'Admin is disabled because insecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
'Admin is disabled because unsecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': '管理員密碼:',
'amy_ajax': 'amy_ajax',
'and rename it (required):': '同時更名為(必要的):',
'and rename it:': '同時更名為:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': '應用程式管理員',
'appadmin is disabled because insecure channel': '管理介面關閉理由是連線方式不安全',
'Application': 'Application',
'application "%s" uninstalled': '已移除應用程式 "%s"',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': '已編譯應用程式',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': '應用程式已經編譯無法重新設計',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': '確定要刪除檔案"%s"?',
'Are you sure you want to delete plugin "%s"?': '確定要刪除插件 "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"': '確定要移除應用程式 "%s"',
'Are you sure you want to uninstall application "%s"?': '確定要移除應用程式 "%s"',
'Are you sure you want to upgrade web2py now?': '確定現在要升級 web2py?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 登入管理帳號需要安全連線(HTTPS)或是在本機連線(localhost).',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: 因為在測試模式不保證多執行緒安全性,也就是說不可以同時執行多個測試案例',
'ATTENTION: you cannot edit the running application!': '注意:不可編輯正在執行的應用程式!',
'Authentication': '驗證',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': '可提供的資料庫和資料表',
'Available Databases and Tables': 'Available Databases and Tables',
'back': '回復(back)',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': '快取記憶體',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': '快取記憶體,錯誤紀錄,連線紀錄已清除',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': '不可空白',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': '無法編譯:應用程式中含有錯誤,請除錯後再試一次.',
'Cannot compile: there are errors in your app:': '無法編譯: 在你的應用程式存在錯誤:',
'Change Password': '變更密碼',
'cannot create file': '無法創建檔案',
'cannot upload file "%(filename)s"': '無法上傳檔案 "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'change admin password',
'change editor settings': 'change editor settings',
'Change Password': '變更密碼',
'change_password': '變更密碼',
'Changelog': 'Changelog',
'check all': '全選',
'Check for upgrades': 'Check for upgrades',
'Check to delete': '打勾代表刪除',
'Check to delete:': '打勾代表刪除:',
'Checking for upgrades...': '檢查新版本中...',
'Clean': '清除',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': '點此處進入線上範例',
'click here for the administrative interface': '點此處進入管理介面',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': '點擊打勾以便升級',
'Client IP': '客戶端網址(IP)',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': '編譯',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': '已移除已編譯的應用程式',
'Condition': 'Condition',
'continue': 'continue',
'Controller': '控件',
'Controllers': '控件',
'controllers': '控件',
'Copyright': '版權所有',
'Count': 'Count',
'Create': '創建',
'create file with filename:': '創建檔案:',
'create new application:': '創建新應用程式:',
'Create new simple application': '創建應用程式',
'Create/Upload': 'Create/Upload',
'created by': '創建自',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': '定時執行表',
'Current request': '目前網路資料要求(request)',
'Current response': '目前網路資料回應(response)',
'Current session': '目前網路連線資訊(session)',
'DB Model': '資料庫模組',
'DESIGN': '設計',
'Database': '資料庫',
'Date and Time': '日期和時間',
'Delete': '刪除',
'Delete:': '刪除:',
'Deploy on Google App Engine': '配置到 Google App Engine',
'Description': '描述',
'Design for': '設計為了',
'E-mail': '電子郵件',
'EDIT': '編輯',
'Edit': '編輯',
'Edit Profile': '編輯設定檔',
'Edit This App': '編輯本應用程式',
'Edit application': '編輯應用程式',
'Edit current record': '編輯當前紀錄',
'Editing Language file': '編輯語言檔案',
'Editing file': '編輯檔案',
'Editing file "%s"': '編輯檔案"%s"',
'Enterprise Web Framework': '企業網站平台',
'Error logs for "%(app)s"': '"%(app)s"的錯誤紀錄',
'Errors': '錯誤紀錄',
'Exception instance attributes': 'Exception instance attributes',
'First name': '',
'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函式會顯示 [passed].',
'Group ID': '群組編號',
'Hello World': '嗨! 世界',
'Help': '說明檔',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'Import/Export': '匯入/匯出',
'Index': '索引',
'Install': '安裝',
'Installed applications': '已安裝應用程式',
'Internal State': '內部狀態',
'Invalid Query': '不合法的查詢',
'Invalid action': '不合法的動作(action)',
'Invalid email': '不合法的電子郵件',
'Language files (static strings) updated': '語言檔已更新',
'Languages': '各國語言',
'Last name': '',
'Last saved on:': '最後儲存時間:',
'Layout': '網頁配置',
'License for': '許可證',
'Login': '登入',
'Login to the Administrative Interface': '登入到管理員介面',
'Logout': '登出',
'Lost Password': '密碼遺忘',
'Main Menu': '主選單',
'Menu Model': '選單模組(menu)',
'Models': '資料模組',
'Modules': '程式模組',
'NO': '',
'Name': '名字',
'New Record': '新紀錄',
'No databases in this application': '這應用程式不含資料庫',
'Origin': '原文',
'Original/Translation': '原文/翻譯',
'Overwrite installed app': '覆蓋已安裝的應用程式',
'PAM authenticated user, cannot change password here': 'PAM 授權使用者, 無法在此變更密碼',
'Pack all': '全部打包',
'Pack compiled': '打包已編譯資料',
'Password': '密碼',
"Password fields don't match": '密碼欄不匹配',
'Peeking at file': '選個文件',
'Plugin "%s" in application': '在應用程式的插件 "%s"',
'Plugins': '插件',
'Powered by': '基於以下技術構建:',
'Query:': '查詢:',
'Record ID': '紀錄編號',
'Register': '註冊',
'Registration key': '註冊金鑰',
'Remember me (for 30 days)': '記住帳號(30 天)',
'Remove compiled': '編譯檔案已移除',
'Reset Password key': '重設密碼',
'Resolve Conflict file': '解決衝突檔案',
'Role': '角色',
'Rows in table': '在資料表裏的資料',
'Rows selected': '筆資料被選擇',
'Saved file hash:': '檔案雜湊值已紀錄:',
'Site': '網站',
'Static files': '靜態檔案',
'Stylesheet': '網頁風格檔',
'Submit': '傳送',
'Sure you want to delete this object?': '確定要刪除此物件?',
'TM': 'TM',
'Table name': '資料表名稱',
'Testing application': '測試中的應用程式',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"查詢"是一個像 "db.表1.欄位1==\'\'" 的條件式. 以"db.表1.欄位1==db.表2.欄位2"方式則相當於執行 JOIN SQL.',
'There are no controllers': '沒有控件(controllers)',
'There are no models': '沒有資料庫模組(models)',
'There are no modules': '沒有程式模組(modules)',
'There are no static files': '沒有靜態檔案',
'There are no translators, only default language is supported': '沒有翻譯檔,只支援原始語言',
'There are no views': '沒有視圖',
'This is the %(filename)s template': '這是%(filename)s檔案的樣板(template)',
'Ticket': '問題單',
'Timestamp': '時間標記',
'To create a plugin, name a file/folder plugin_[name]': '檔案或目錄名稱以 plugin_開頭來創建插件',
'Unable to check for upgrades': '無法做升級檢查',
'Unable to download': '無法下載',
'Unable to download app': '無法下載應用程式',
'Unable to download app because:': '無法下載應用程式因為:',
'Unable to download because': '因為下列原因無法下載:',
'Uninstall': '解除安裝',
'Update:': '更新:',
'Upload & install packed application': '上傳並安裝已打包的應用程式',
'Upload existing application': '更新存在的應用程式',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式來組合更複雜的條件式, (...)&(...) 代表同時存在的條件, (...)|(...) 代表擇一的條件, ~(...)則代表反向條件.',
'User %(id)s Logged-in': '使用者 %(id)s 已登入',
'User %(id)s Registered': '使用者 %(id)s 已註冊',
'User ID': '使用者編號',
'Verify Password': '驗證密碼',
'Version': '版本',
'View': '視圖',
'Views': '視圖',
'Welcome %s': '歡迎 %s',
'Welcome to web2py': '歡迎使用 web2py',
'YES': '',
'additional code for your application': '應用程式額外的程式碼',
'admin disabled because no admin password': '管理介面關閉原因是沒有設定管理員密碼 ',
'admin disabled because not supported on google app engine': '管理介面關閉原因是不支援在google apps engine環境下運作',
'admin disabled because unable to access password file': '管理介面關閉原因是無法存取密碼檔',
'amy_ajax': 'amy_ajax',
'and rename it (required):': '同時更名為(必要的):',
'and rename it:': '同時更名為:',
'appadmin': '應用程式管理員',
'appadmin is disabled because insecure channel': '管理介面關閉理由是連線方式不安全',
'application "%s" uninstalled': '已移除應用程式 "%s"',
'application compiled': '已編譯應用程式',
'application is compiled and cannot be designed': '應用程式已經編譯無法重新設計',
'arguments': 'arguments',
'back': '回復(back)',
'cache': '快取記憶體',
'cache, errors and sessions cleaned': '快取記憶體,錯誤紀錄,連線紀錄已清除',
'cannot create file': '無法創建檔案',
'cannot upload file "%(filename)s"': '無法上傳檔案 "%(filename)s"',
'change_password': '變更密碼',
'check all': '全選',
'click here for online examples': '點此處進入線上範例',
'click here for the administrative interface': '點此處進入管理介面',
'click to check for upgrades': '點擊打勾以便升級',
'code': 'code',
'compiled application removed': '已移除已編譯的應用程式',
'controllers': '控件',
'create file with filename:': '創建檔案:',
'create new application:': '創建新應用程式:',
'created by': '創建自',
'crontab': '定時執行表',
'currently running': 'currently running',
'currently saved or': '現在存檔或',
'customize me!': '請調整我!',
'data uploaded': '資料已上傳',
'Database': '資料庫',
'database': '資料庫',
'Database %s select': 'Database %s select',
'database %s select': '已選擇 %s 資料庫',
'Database administration': 'Database administration',
'database administration': '資料庫管理',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': '日期和時間',
'db': 'db',
'DB Model': '資料庫模組',
'Debug': 'Debug',
'defines tables': '定義資料表',
'Delete': '刪除',
'delete': '刪除',
'delete all checked': '刪除所有已選擇項目',
'delete plugin': '刪除插件',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': '刪除:',
'delete_plugin': '刪除插件',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'Deploy',
'Deploy on Google App Engine': '配置到 Google App Engine',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': '描述',
'Description:': 'Description:',
'design': '設計',
'DESIGN': '設計',
'Design for': '設計為了',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': '完成!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': '電子郵件',
'EDIT': '編輯',
'Edit': '編輯',
'edit all': 'edit all',
'Edit application': '編輯應用程式',
'edit controller': '編輯控件',
'edit controller:': 'edit controller:',
'Edit current record': '編輯當前紀錄',
'Edit Profile': '編輯設定檔',
'Edit This App': '編輯本應用程式',
'edit views:': '編輯視圖',
'edit_language': '編輯語言檔',
'Editing %s': 'Editing %s',
'Editing file': '編輯檔案',
'Editing file "%s"': '編輯檔案"%s"',
'Editing Language file': '編輯語言檔案',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': '企業網站平台',
'Error': 'Error',
'Error logs for "%(app)s"': '"%(app)s"的錯誤紀錄',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': '錯誤紀錄',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': '以逗號分隔檔(csv)格式匯出',
'Exports:': 'Exports:',
'exposes': '外顯',
'exposes:': 'exposes:',
'extends': '擴展',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module because:': '因為下列原因無法重新載入程式模組:',
'File': 'File',
'file "%(filename)s" created': '檔案 "%(filename)s" 已創建',
'file "%(filename)s" deleted': '檔案 "%(filename)s" 已刪除',
'file "%(filename)s" uploaded': '檔案 "%(filename)s" 已上傳',
'file "%s" of %s restored': '檔案 %s"%s" 已回存',
'file changed on disk': '在磁碟上檔案已改變',
'file does not exist': '檔案不存在',
'file not found': 'file not found',
'file saved on %(time)s': '檔案已於 %(time)s 儲存',
'file saved on %s': '檔案在 %s 已儲存',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'First name': '',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函式會顯示 [passed].',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': '群組編號',
'Hello World': '嗨! 世界',
'Help': '說明檔',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'html編輯',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': '匯入/匯出',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': '包含',
'Indent with tabs': 'Indent with tabs',
'Index': '索引',
'index': '索引',
'insert new': '插入新資料',
'insert new %s': '插入新資料 %s',
'inspect attributes': 'inspect attributes',
'Install': '安裝',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': '已安裝應用程式',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': '內部錯誤',
'internal error: %s': 'internal error: %s',
'Internal State': '內部狀態',
'Invalid action': '不合法的動作(action)',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': '不合法的電子郵件',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': '密碼錯誤',
'invalid password.': 'invalid password.',
'Invalid Query': '不合法的查詢',
'invalid request': '不合法的網路要求(request)',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': '不合法的問題單號',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': '語言檔"%(filename)s"已創建或更新',
'Language files (static strings) updated': '語言檔已更新',
'languages': '語言檔',
'Languages': '各國語言',
'Last name': '',
'Last Revision': 'Last Revision',
'Last saved on:': '最後儲存時間:',
'Layout': '網頁配置',
'License for': '許可證',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': '載入中...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'login': '登入',
'Login': '登入',
'Login successful': 'Login successful',
'Login to the Administrative Interface': '登入到管理員介面',
'Login/Register': 'Login/Register',
'Logout': '登出',
'Lost Password': '密碼遺忘',
'lost password': 'lost password',
'Main Menu': '主選單',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'Menu Model': '選單模組(menu)',
'merge': '合併',
'Models': '資料模組',
'models': '資料庫模組',
'Modified On': 'Modified On',
'Modules': '程式模組',
'modules': '程式模組',
'Multi User Mode': 'Multi User Mode',
'Name': '名字',
'new application "%s" created': '已創建新的應用程式 "%s"',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': '已安裝新插件',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': '新紀錄',
'new record inserted': '已新增新紀錄',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': '往後 100 筆',
'NO': '',
'no changes': 'no changes',
'No databases in this application': '這應用程式不含資料庫',
'No Interaction yet': 'No Interaction yet',
'no match': '無法匹配',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': '或是從逗號分隔檔(CSV)匯入',
'or provide app url:': '或是提供應用程式的安裝網址:',
'Origin': '原文',
'Original/Translation': '原文/翻譯',
'Overview': 'Overview',
'Overwrite installed app': '覆蓋已安裝的應用程式',
'Pack all': '全部打包',
'Pack compiled': '打包已編譯資料',
'Pack custom': 'Pack custom',
'pack plugin': '打包插件',
'PAM authenticated user, cannot change password here': 'PAM 授權使用者, 無法在此變更密碼',
'Password': '密碼',
'password changed': '密碼已變更',
"Password fields don't match": '密碼欄不匹配',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'peek': '選取',
'Peeking at file': '選個文件',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin': '插件',
'plugin "%(plugin)s" deleted': '已刪除插件"%(plugin)s"',
'Plugin "%s" in application': '在應用程式的插件 "%s"',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': '插件',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': '基於以下技術構建:',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '往前 100 筆',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': '查詢:',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': '紀錄',
'record does not exist': '紀錄不存在',
'record id': '紀錄編號',
'Record ID': '紀錄編號',
'Record id': 'Record id',
'refresh': 'refresh',
'register': '註冊',
'Register': '註冊',
'Registration key': '註冊金鑰',
'Reload routes': 'Reload routes',
'Remember me (for 30 days)': '記住帳號(30 天)',
'Remove compiled': '編譯檔案已移除',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Reset Password key': '重設密碼',
'resolve': '解決',
'Resolve Conflict file': '解決衝突檔案',
'response': 'response',
'restart': 'restart',
'restore': '回存',
'return': 'return',
'Revert': 'Revert',
'revert': '反向恢復',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': '角色',
'Roles': 'Roles',
'Rows in table': '在資料表裏的資料',
'Rows in Table': 'Rows in Table',
'Rows selected': '筆資料被選擇',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'save': '儲存',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': '檔案雜湊值已紀錄:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': '已選擇',
'session': 'session',
'session expired': '連線(session)已過時',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': '命令列操作介面',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': '網站',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': '部份檔案無法移除',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'Start wizard',
'state': '狀態',
'Static': 'Static',
'static': '靜態檔案',
'Static files': '靜態檔案',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'Stylesheet': '網頁風格檔',
'submit': '傳送',
'Submit': '傳送',
'successful': 'successful',
'Sure you want to delete this object?': '確定要刪除此物件?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': '資料表',
'Table': 'Table',
'Table name': '資料表名稱',
'Temporary': 'Temporary',
'test': '測試',
'Testing application': '測試中的應用程式',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"查詢"是一個像 "db.表1.欄位1==\'\'" 的條件式. 以"db.表1.欄位1==db.表2.欄位2"方式則相當於執行 JOIN SQL.',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': '應用程式邏輯 - 每個網址路徑對應到一個控件的函式',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': '資料展現層 - 用來定義資料表和集合',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': '外觀展現層 - 視圖有時也被稱為樣板',
'Theme': 'Theme',
'There are no controllers': '沒有控件(controllers)',
'There are no models': '沒有資料庫模組(models)',
'There are no modules': '沒有程式模組(modules)',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': '沒有靜態檔案',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': '沒有翻譯檔,只支援原始語言',
'There are no views': '沒有視圖',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': '這些檔案保留未經處理,你的影像檔在此',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': '這是%(filename)s檔案的樣板(template)',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'ticket': '問題單',
'Ticket': '問題單',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': '時間標記',
'TM': 'TM',
'to previous version.': '到前一個版本',
'To create a plugin, name a file/folder plugin_[name]': '檔案或目錄名稱以 plugin_開頭來創建插件',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': '翻譯此應用程式的字串',
'Translation strings for the application': 'Translation strings for the application',
'try': '嘗試',
'try something like': '嘗試如',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': '無法做升級檢查',
'unable to create application "%s"': '無法創建應用程式 "%s"',
'unable to delete file "%(filename)s"': '無法刪除檔案 "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': '無法刪查插件檔 "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': '無法下載',
'Unable to download app': '無法下載應用程式',
'Unable to download app because:': '無法下載應用程式因為:',
'Unable to download because': '因為下列原因無法下載:',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': '無法解析逗號分隔檔(csv)',
'unable to uninstall "%s"': '無法移除安裝 "%s"',
'unable to upgrade because "%s"': '無法升級因為 "%s"',
'uncheck all': '全不選',
'Uninstall': '解除安裝',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': '更新',
'update all languages': '將程式中待翻譯語句更新到所有的語言檔',
'Update:': '更新:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'upgrade web2py now',
'upgrade_web2py': '升級 web2py',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': '上傳並安裝已打包的應用程式',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload application:': '上傳應用程式:',
'Upload existing application': '更新存在的應用程式',
'upload file:': '上傳檔案:',
'upload plugin file:': '上傳插件檔:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式來組合更複雜的條件式, (...)&(...) 代表同時存在的條件, (...)|(...) 代表擇一的條件, ~(...)則代表反向條件.',
'User': 'User',
'User %(id)s Logged-in': '使用者 %(id)s 已登入',
'User %(id)s Registered': '使用者 %(id)s 已註冊',
'User ID': '使用者編號',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Verify Password': '驗證密碼',
'Version': '版本',
'Versioning': 'Versioning',
'versioning': '版本管理',
'View': '視圖',
'view': '視圖',
'Views': '視圖',
'views': '視圖',
'web2py Recent Tweets': 'web2py 最近的 Tweets',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py 已經是最新版',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'web2py 最近的 Tweets',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': '已升級 web2py ; 請重新啟動',
'Welcome %s': '歡迎 %s',
'Welcome to web2py': '歡迎使用 web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': '',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

671
applications/admin/languages/zh.py Normal file → Executable file
View File

@@ -1,4 +1,4 @@
# coding: utf8
# -*- coding: utf-8 -*-
{
'!langcode!': 'zh-cn',
'!langname!': '中文',
@@ -6,215 +6,243 @@
'"save"': '"保存"',
'"submit"': '"提交"',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"更新"是可配置项 如 "field1=\'newvalue\'",你无法在JOIN 中更新或删除',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'"User Exception" debug mode. ': '"User Exception" debug mode. ',
'%s': '%s',
'%s %%{row} deleted': '%s 行已删',
'%s %%{row} updated': '%s 行更新',
'%s selected': '%s selected',
'%s students registered': '%s students registered',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
'(requires internet access)': '(requires internet access)',
'(requires internet access, experimental)': '(requires internet access, experimental)',
'(something like "it-it")': '(就酱 "it-it")',
'(version %s)': '(version %s)',
'?': '?',
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'A new version of web2py is available': '新版本web2py已经可用',
'A new version of web2py is available: %s': '新版本web2py已经可用: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '',
'ATTENTION: you cannot edit the running application!': '注意: 不能修改正在运行中的应用!',
'Abort': 'Abort',
'About': '关于',
'About application': '关于这个应用',
'Accept Terms': 'Accept Terms',
'Add breakpoint': 'Add breakpoint',
'additional code for your application': '给你的应用附加代码',
'Additional code for your application': 'Additional code for your application',
'Admin design page': 'Admin design page',
'admin disabled because no admin password': '管理员需要设定密码,否则无法管理',
'admin disabled because not supported on google app engine': '未支持GAE,无法管理',
'admin disabled because too many invalid login attempts': 'admin disabled because too many invalid login attempts',
'admin disabled because unable to access password file': '需要可以操作密码文件,否则无法进行管理',
'Admin is disabled because insecure channel': '管理因不安全通道而关闭',
'Admin is disabled because unsecure channel': '管理因不稳定通道而关闭',
'Admin language': 'Admin language',
'Admin versioning page': 'Admin versioning page',
'administrative interface': 'administrative interface',
'Administrator Password:': '管理员密码:',
'and rename it (required):': '重命名为 (必须):',
'and rename it:': ' 重命名为:',
'App does not exist or you are not authorized': 'App does not exist or you are not authorized',
'appadmin': '应用管理',
'appadmin is disabled because insecure channel': '应用管理因非法通道失效',
'Application': 'Application',
'application "%s" uninstalled': '应用"%s" 已被卸载',
'Application cannot be generated in demo mode': 'Application cannot be generated in demo mode',
'application compiled': '应用已编译完',
'Application exists already': 'Application exists already',
'application is compiled and cannot be designed': '应用已编译完无法设计',
'Application name:': 'Application name:',
'Application updated via git pull': 'Application updated via git pull',
'are not used': 'are not used',
'are not used yet': 'are not used yet',
'Are you sure you want to delete file "%s"?': '你真想删除文件"%s"?',
'Are you sure you want to delete plugin "%s"?': 'Are you sure you want to delete plugin "%s"?',
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
'Are you sure you want to uninstall application "%s"': '你真确定要卸载应用 "%s"',
'Are you sure you want to uninstall application "%s"?': '你真确定要卸载应用 "%s" ?',
'Are you sure you want to upgrade web2py now?': 'Are you sure you want to upgrade web2py now?',
'Are you sure?': 'Are you sure?',
'arguments': 'arguments',
'at char %s': 'at char %s',
'at line %s': 'at line %s',
'ATTENTION:': 'ATTENTION:',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '',
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '',
'ATTENTION: you cannot edit the running application!': '注意: 不能修改正在运行中的应用!',
'Autocomplete Python Code': 'Autocomplete Python Code',
'Available databases and tables': '可用数据库/表',
'Available Databases and Tables': 'Available Databases and Tables',
'back': 'back',
'Back to the plugins list': 'Back to the plugins list',
'Back to wizard': 'Back to wizard',
'Basics': 'Basics',
'Begin': 'Begin',
'breakpoint': 'breakpoint',
'Breakpoints': 'Breakpoints',
'breakpoints': 'breakpoints',
'Bulk Register': 'Bulk Register',
'Bulk Student Registration': 'Bulk Student Registration',
'Cache': 'Cache',
'cache': 'cache',
'Cache Cleared': 'Cache Cleared',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': '缓存、错误、sesiones已被清空',
'can be a git repo': 'can be a git repo',
'Cancel': 'Cancel',
'Cannot be empty': '不能不填',
'Cannot compile: there are errors in your app.        Debug it, correct errors and try again.': '无法编译: 应用中有错误,请修订后再试.',
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
'Change Password': '修改密码',
'cannot create file': '无法创建文件',
'cannot upload file "%(filename)s"': '无法上传文件 "%(filename)s"',
'Change Admin Password': 'Change Admin Password',
'Change admin password': 'change admin password',
'change editor settings': 'change editor settings',
'Change Password': '修改密码',
'Changelog': 'Changelog',
'check all': '检查所有',
'Check for upgrades': 'check for upgrades',
'Check to delete': '检验删除',
'Checking for upgrades...': '是否有升级版本检查ing...',
'Clean': '清除',
'Clear': 'Clear',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click here for online examples': '猛击此处,查看在线实例',
'click here for the administrative interface': '猛击此处,进入管理界面',
'Click row to expand traceback': 'Click row to expand traceback',
'Click row to view a ticket': 'Click row to view a ticket',
'click to check for upgrades': '猛击查看是否有升级版本',
'Client IP': '客户端IP',
'code': 'code',
'Code listing': 'Code listing',
'collapse/expand all': 'collapse/expand all',
'Command': 'Command',
'Comment:': 'Comment:',
'Commit': 'Commit',
'Commit form': 'Commit form',
'Committed files': 'Committed files',
'Compile': '编译',
'Compile (all or nothing)': 'Compile (all or nothing)',
'Compile (skip failed views)': 'Compile (skip failed views)',
'compiled application removed': '已编译应用已移走',
'Condition': 'Condition',
'continue': 'continue',
'Controllers': '控制器s',
'controllers': '控制器',
'Count': 'Count',
'Create': 'create',
'create file with filename:': '创建文件用这名:',
'create new application:': '创建新应用:',
'Create new simple application': '创建一个新应用',
'Create/Upload': 'Create/Upload',
'created by': '创建自',
'Created by:': 'Created by:',
'Created On': 'Created On',
'Created on:': 'Created on:',
'crontab': '定期事务',
'Current request': '当前请求',
'Current response': '当前返回',
'Current session': '当前会话',
'DESIGN': '设计',
'Date and Time': '时间日期',
'Debug': 'Debug',
'Delete': '删除',
'Delete:': '删除:',
'Deploy': 'deploy',
'Deploy on Google App Engine': '部署到GAE',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Description': '描述',
'Design for': '设计:',
'Disable': 'Disable',
'E-mail': '邮箱:',
'EDIT': '编辑',
'Edit': '修改',
'Edit Profile': '修订配置',
'Edit application': '修订应用',
'Edit current record': '修订当前记录',
'Editing Language file': '修订语言文件',
'Editing file': '修订文件',
'Editing file "%s"': '修订文件 %s',
'Enterprise Web Framework': '强悍的网络开发框架',
'Error logs for "%(app)s"': '"%(app)s" 的错误日志',
'Errors': '错误',
'Exception instance attributes': 'Exception instance attributes',
'First name': '',
'Functions with no doctests will result in [passed] tests.': '',
'Get from URL:': 'Get from URL:',
'Group ID': '组ID',
'Hello World': '道可道,非常道;名可名,非常名',
'Help': '帮助',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'Import/Export': '导入/导出',
'Install': 'install',
'Installed applications': '已安装的应用',
'Internal State': '内部状态',
'Invalid Query': '无效查询',
'Invalid action': '无效动作',
'Invalid email': '无效的email',
'Language files (static strings) updated': '语言文件(静态部分)已更新',
'Languages': '语言',
'Last name': '',
'Last saved on:': '最后保存于:',
'License for': '许可证',
'Login': '登录',
'Login to the Administrative Interface': '登录到管理员界面',
'Logout': '注销',
'Lost Password': '忘记密码',
'Models': '模型s',
'Modules': '模块s',
'NO': '',
'Name': '姓名',
'New Record': '新记录',
'New application wizard': 'New application wizard',
'New simple application': 'New simple application',
'No databases in this application': '这应用没有数据库',
'Origin': '起源',
'Original/Translation': '原始文件/翻译文件',
'Overwrite installed app': 'overwrite installed app',
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
'Pack all': '全部打包',
'Pack compiled': '包编译完',
'Password': '密码',
'Peeking at file': '选个文件',
'Plugin "%s" in application': 'Plugin "%s" in application',
'Plugins': 'Plugins',
'Powered by': '',
'Query:': '查询',
'Record ID': '记录ID',
'Register': '注册',
'Registration key': '注册密匙',
'Reload routes': 'Reload routes',
'Remove compiled': '已移除',
'Resolve Conflict file': '解决冲突文件',
'Role': '角色',
'Rows in table': '表行',
'Rows selected': '行选择',
'Running on %s': 'Running on %s',
'Saved file hash:': '已存文件Hash:',
'Site': '总站',
'Start wizard': 'start wizard',
'Static files': '静态文件',
'Sure you want to delete this object?': '真的要删除这个对象?',
'TM': '',
'Table name': '表名',
'Testing application': '应用测试',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '',
'There are no controllers': '冇控制器',
'There are no models': '冇模型s',
'There are no modules': '冇模块s',
'There are no static files': '冇静态文件',
'There are no translators, only default language is supported': '没有找到相应翻译,只能使用默认语言',
'There are no views': '冇视图',
'This is the %(filename)s template': '这是 %(filename)s 模板',
'Ticket': '传票',
'Timestamp': '时间戳',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'Unable to check for upgrades': '无法检查是否需要升级',
'Unable to download': '无法下载',
'Unable to download app': '无法下载应用',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because': 'Unable to download because',
'Uninstall': '卸载',
'Update:': '更新:',
'Upload & install packed application': 'Upload & install packed application',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'Upload existing application': '上传已有应用',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...)  for NOT to build more complex queries.': '',
'Use an url:': 'Use an url:',
'User ID': '用户ID',
'Version': '版本',
'Views': '视图',
'Welcome to web2py': '欢迎使用web2py',
'YES': '',
'additional code for your application': '给你的应用附加代码',
'admin disabled because no admin password': '管理员需要设定密码,否则无法管理',
'admin disabled because not supported on google app engine': '未支持GAE,无法管理',
'admin disabled because unable to access password file': '需要可以操作密码文件,否则无法进行管理',
'administrative interface': 'administrative interface',
'and rename it (required):': '重命名为 (必须):',
'and rename it:': ' 重命名为:',
'appadmin': '应用管理',
'appadmin is disabled because insecure channel': '应用管理因非法通道失效',
'application "%s" uninstalled': '应用"%s" 已被卸载',
'application compiled': '应用已编译完',
'application is compiled and cannot be designed': '应用已编译完无法设计',
'arguments': 'arguments',
'back': 'back',
'cache': 'cache',
'cache, errors and sessions cleaned': '缓存、错误、sesiones已被清空',
'cannot create file': '无法创建文件',
'cannot upload file "%(filename)s"': '无法上传文件 "%(filename)s"',
'check all': '检查所有',
'click here for online examples': '猛击此处,查看在线实例',
'click here for the administrative interface': '猛击此处,进入管理界面',
'click to check for upgrades': '猛击查看是否有升级版本',
'code': 'code',
'compiled application removed': '已编译应用已移走',
'controllers': '控制器',
'create file with filename:': '创建文件用这名:',
'create new application:': '创建新应用:',
'created by': '创建自',
'crontab': '定期事务',
'currently running': 'currently running',
'currently saved or': '保存当前的或',
'customize me!': '定制俺!',
'data uploaded': '数据已上传',
'Database': 'Database',
'database': '数据库',
'Database %s select': 'Database %s select',
'database %s select': '数据库 %s 选择',
'Database administration': 'Database administration',
'database administration': '数据库管理',
'Database Administration (appadmin)': 'Database Administration (appadmin)',
'Date and Time': '时间日期',
'db': '',
'Debug': 'Debug',
'defines tables': '已定义表',
'Delete': '删除',
'delete': '删除',
'delete all checked': '删除所有选择的',
'delete plugin': 'delete plugin',
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
'Delete:': '删除:',
'deleted after first hit': 'deleted after first hit',
'Demo': 'Demo',
'Deploy': 'deploy',
'Deploy on Google App Engine': '部署到GAE',
'Deploy to OpenShift': 'Deploy to OpenShift',
'Deploy to pythonanywhere': 'Deploy to pythonanywhere',
'Deploy to PythonAnywhere': 'Deploy to PythonAnywhere',
'Deployment form': 'Deployment form',
'Deployment Interface': 'Deployment Interface',
'Description': '描述',
'Description:': 'Description:',
'design': '设计',
'DESIGN': '设计',
'Design for': '设计:',
'Detailed traceback description': 'Detailed traceback description',
'details': 'details',
'direction: ltr': 'direction: ltr',
'directory not found': 'directory not found',
'Disable': 'Disable',
'Disabled': 'Disabled',
'disabled in demo mode': 'disabled in demo mode',
'disabled in GAE mode': 'disabled in GAE mode',
'disabled in multi user mode': 'disabled in multi user mode',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Display line numbers': 'Display line numbers',
'DO NOT use the "Pack compiled" feature.': 'DO NOT use the "Pack compiled" feature.',
'docs': 'docs',
'Docs': 'Docs',
'done!': '搞定!',
'Downgrade': 'Downgrade',
'Download .w2p': 'Download .w2p',
'Download as .exe': 'Download as .exe',
'download layouts': 'download layouts',
'Download layouts from repository': 'Download layouts from repository',
'download plugins': 'download plugins',
'Download plugins from repository': 'Download plugins from repository',
'E-mail': '邮箱:',
'EDIT': '编辑',
'Edit': '修改',
'edit all': 'edit all',
'Edit application': '修订应用',
'edit controller': '修订控制器',
'edit controller:': 'edit controller:',
'Edit current record': '修订当前记录',
'Edit Profile': '修订配置',
'edit views:': 'edit views:',
'Editing %s': 'Editing %s',
'Editing file': '修订文件',
'Editing file "%s"': '修订文件 %s',
'Editing Language file': '修订语言文件',
'Editing Plural Forms File': 'Editing Plural Forms File',
'Editor': 'Editor',
'Email Address': 'Email Address',
'Enable': 'Enable',
'Enable Close-Tag': 'Enable Close-Tag',
'Enable Code Folding': 'Enable Code Folding',
'Enterprise Web Framework': '强悍的网络开发框架',
'Error': 'Error',
'Error logs for "%(app)s"': '"%(app)s" 的错误日志',
'Error snapshot': 'Error snapshot',
'Error ticket': 'Error ticket',
'Errors': '错误',
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
'Exception %s': 'Exception %s',
'Exception instance attributes': 'Exception instance attributes',
'Exit Fullscreen': 'Exit Fullscreen',
'Expand Abbreviation (html files only)': 'Expand Abbreviation (html files only)',
'export as csv file': '导出为CSV文件',
'Exports:': 'Exports:',
'exposes': '暴露',
'exposes:': 'exposes:',
'extends': '扩展',
'failed to compile file because:': 'failed to compile file because:',
'failed to reload module': '重新加载模块失败',
'failed to reload module because:': 'failed to reload module because:',
'File': 'File',
'file "%(filename)s" created': '文件 "%(filename)s" 已创建',
'file "%(filename)s" deleted': '文件 "%(filename)s" 已删除',
'file "%(filename)s" uploaded': '文件 "%(filename)s" 已上传',
@@ -222,78 +250,417 @@
'file "%s" of %s restored': '文件"%s" 有关 %s 已重存',
'file changed on disk': '硬盘上的文件已经修改',
'file does not exist': '文件并不存在',
'file not found': 'file not found',
'file saved on %(time)s': '文件保存于 %(time)s',
'file saved on %s': '文件保存在 %s',
'filename': 'filename',
'Filename': 'Filename',
'Files added': 'Files added',
'filter': 'filter',
'Find Next': 'Find Next',
'Find Previous': 'Find Previous',
'First name': '',
'Form has errors': 'Form has errors',
'Frames': 'Frames',
'Functions with no doctests will result in [passed] tests.': '',
'GAE Email': 'GAE Email',
'GAE Output': 'GAE Output',
'GAE Password': 'GAE Password',
'Generate': 'Generate',
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Globals##debug': 'Globals##debug',
'go!': 'go!',
'Google App Engine Deployment Interface': 'Google App Engine Deployment Interface',
'Google Application Id': 'Google Application Id',
'Goto': 'Goto',
'graph model': 'graph model',
'Graph Model': 'Graph Model',
'Group ID': '组ID',
'Hello World': '道可道,非常道;名可名,非常名',
'Help': '帮助',
'here': 'here',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
'Highlight current line': 'Highlight current line',
'Hits': 'Hits',
'Home': 'Home',
'honored only if the expression evaluates to true': 'honored only if the expression evaluates to true',
'htmledit': 'html编辑',
'If start the downgrade, be patient, it may take a while to rollback': 'If start the downgrade, be patient, it may take a while to rollback',
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\n\t\tA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.': 'if your application uses a database other than sqlite you will then have to configure its DAL in pythonanywhere.',
'import': 'import',
'Import/Export': '导入/导出',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'In development, use the default Rocket webserver that is currently supported by this debugger.',
'includes': '包含',
'Indent with tabs': 'Indent with tabs',
'insert new': '新插入',
'insert new %s': '新插入 %s',
'inspect attributes': 'inspect attributes',
'Install': 'install',
'Installation of %(plugin)s for %(app)s': 'Installation of %(plugin)s for %(app)s',
'Installed applications': '已安装的应用',
'Interaction at %s line %s': 'Interaction at %s line %s',
'Interactive console': 'Interactive console',
'internal error': '内部错误',
'internal error: %s': 'internal error: %s',
'Internal State': '内部状态',
'Invalid action': '无效动作',
'Invalid application name': 'Invalid application name',
'invalid circular reference': 'invalid circular reference',
'Invalid email': '无效的email',
'Invalid git repository specified.': 'Invalid git repository specified.',
'invalid password': '无效密码',
'invalid password.': 'invalid password.',
'Invalid Query': '无效查询',
'invalid request': '无效请求',
'Invalid request': 'Invalid request',
'invalid table names (auth_* tables already defined)': 'invalid table names (auth_* tables already defined)',
'invalid ticket': '无效传票',
'Key': 'Key',
'Keyboard shortcuts': 'Keyboard shortcuts',
'kill process': 'kill process',
'language file "%(filename)s" created/updated': '语言文件 "%(filename)s"被创建/更新',
'Language files (static strings) updated': '语言文件(静态部分)已更新',
'languages': '语言',
'Languages': '语言',
'languages updated': '语言已被刷新',
'Last name': '',
'Last Revision': 'Last Revision',
'Last saved on:': '最后保存于:',
'License for': '许可证',
'License:': 'License:',
'Line Nr': 'Line Nr',
'Line number': 'Line number',
'lists by exception': 'lists by exception',
'lists by ticket': 'lists by ticket',
'Loading...': 'Loading...',
'loading...': '载入中...',
'Local Apps': 'Local Apps',
'locals': 'locals',
'Locals##debug': 'Locals##debug',
'login': '登录',
'Login': '登录',
'Login successful': 'Login successful',
'Login to the Administrative Interface': '登录到管理员界面',
'Login/Register': 'Login/Register',
'Logout': '注销',
'Lost Password': '忘记密码',
'lost password': 'lost password',
'Main Menu': 'Main Menu',
'Manage': 'Manage',
'Manage %(action)s': 'Manage %(action)s',
'Manage Access Control': 'Manage Access Control',
'Manage Admin Users/Students': 'Manage Admin Users/Students',
'Manage Cache': 'Manage Cache',
'Manage Students': 'Manage Students',
'Memberships': 'Memberships',
'merge': '合并',
'Models': '模型s',
'models': '模型s',
'Modified On': 'Modified On',
'Modules': '模块s',
'modules': '模块s',
'Multi User Mode': 'Multi User Mode',
'Name': '姓名',
'new application "%s" created': '新应用 "%s"已被创建',
'new application "%s" imported': 'new application "%s" imported',
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'new plugin installed': 'new plugin installed',
'New plugin installed: %s': 'New plugin installed: %s',
'New Record': '新记录',
'new record inserted': '新记录被插入',
'New simple application': 'New simple application',
'next': 'next',
'next %s rows': 'next %s rows',
'next 100 rows': '后100行',
'NO': '',
'no changes': 'no changes',
'No databases in this application': '这应用没有数据库',
'No Interaction yet': 'No Interaction yet',
'no match': 'no match',
'no package selected': 'no package selected',
'no permission to uninstall "%s"': 'no permission to uninstall "%s"',
'Node:': 'Node:',
'Not Authorized': 'Not Authorized',
'Not supported': 'Not supported',
'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.': 'Note: If you receive an error with github status code of 128, ensure the system and account you are deploying from has a cooresponding ssh key configured in the openshift account.',
"On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.": "On production, you'll have to configure your webserver to use one process and multiple threads to use this debugger.",
'Open new app in new window': 'Open new app in new window',
'OpenShift Deployment Interface': 'OpenShift Deployment Interface',
'OpenShift Output': 'OpenShift Output',
'or alternatively': 'or alternatively',
'Or Get from URL:': 'Or Get from URL:',
'or import from csv file': '或者从csv文件导入',
'or provide app url:': 'or provide app url:',
'or provide application url:': '或者,提供应用所在地址链接:',
'Origin': '起源',
'Original/Translation': '原始文件/翻译文件',
'Overview': 'Overview',
'Overwrite installed app': 'overwrite installed app',
'Pack all': '全部打包',
'Pack compiled': '包编译完',
'Pack custom': 'Pack custom',
'pack plugin': 'pack plugin',
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
'Password': '密码',
'password changed': 'password changed',
'Past revisions': 'Past revisions',
'Path to appcfg.py': 'Path to appcfg.py',
'Path to local openshift repo root.': 'Path to local openshift repo root.',
'Peeking at file': '选个文件',
'Permission': 'Permission',
'Permissions': 'Permissions',
'Please': 'Please',
'Please wait, giving pythonanywhere a moment...': 'Please wait, giving pythonanywhere a moment...',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
'Plugin "%s" in application': 'Plugin "%s" in application',
'plugin not specified': 'plugin not specified',
'Plugin page': 'Plugin page',
'plugins': 'plugins',
'Plugins': 'Plugins',
'Plural Form #%s': 'Plural Form #%s',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': '',
'Preferences saved correctly': 'Preferences saved correctly',
'Preferences saved on session only': 'Preferences saved on session only',
'previous %s rows': 'previous %s rows',
'previous 100 rows': '前100行',
'Private files': 'Private files',
'private files': 'private files',
'Project Progress': 'Project Progress',
'Pull': 'Pull',
'Pull failed, certain files could not be checked out. Check logs for details.': 'Pull failed, certain files could not be checked out. Check logs for details.',
'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.': 'Pull is not possible because you have unmerged files. Fix them up in the work tree, and then try again.',
'Push': 'Push',
'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.': 'Push failed, there are unmerged entries in the cache. Resolve merge issues manually and try again.',
'pygraphviz library not found': 'pygraphviz library not found',
'PythonAnywhere Apps': 'PythonAnywhere Apps',
'PythonAnywhere Password': 'PythonAnywhere Password',
'Query:': '查询',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Rapid Search': 'Rapid Search',
'Record': 'Record',
'record': 'record',
'record does not exist': '记录并不存在',
'record id': '记录ID',
'Record ID': '记录ID',
'Record id': 'Record id',
'refresh': 'refresh',
'register': 'register',
'Register': '注册',
'Registration key': '注册密匙',
'Reload routes': 'Reload routes',
'Remove compiled': '已移除',
'Removed Breakpoint on %s at line %s': 'Removed Breakpoint on %s at line %s',
'Replace': 'Replace',
'Replace All': 'Replace All',
'Repository (%s)': 'Repository (%s)',
'request': 'request',
'requires distutils, but not installed': 'requires distutils, but not installed',
'requires python-git, but not installed': 'requires python-git, but not installed',
'Resolve Conflict file': '解决冲突文件',
'response': 'response',
'restart': 'restart',
'restore': '重存',
'return': 'return',
'Revert': 'Revert',
'revert': '恢复',
'reverted to revision %s': 'reverted to revision %s',
'Revision %s': 'Revision %s',
'Revision:': 'Revision:',
'Role': '角色',
'Roles': 'Roles',
'Rows in table': '表行',
'Rows in Table': 'Rows in Table',
'Rows selected': '行选择',
'rules are not defined': 'rules are not defined',
'Run tests': 'Run tests',
'Run tests in this file': 'Run tests in this file',
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
'Running on %s': 'Running on %s',
'Save': 'Save',
'save': '保存',
'Save file:': 'Save file:',
'Save file: %s': 'Save file: %s',
'Save model as...': 'Save model as...',
'Save via Ajax': 'Save via Ajax',
'Saved file hash:': '已存文件Hash:',
'Screenshot %s': 'Screenshot %s',
'Search': 'Search',
'Select Files to Package': 'Select Files to Package',
'selected': '已选',
'session': 'session',
'session expired': '会话过期',
'Session saved correctly': 'Session saved correctly',
'Session saved on session only': 'Session saved on session only',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
'shell': '',
'Showing %s to %s of %s %s found': 'Showing %s to %s of %s %s found',
'Singular Form': 'Singular Form',
'Site': '总站',
'Size of cache:': 'Size of cache:',
'skip to generate': 'skip to generate',
'some files could not be removed': '有些文件无法被移除',
'Something went wrong please wait a few minutes before retrying': 'Something went wrong please wait a few minutes before retrying',
'Sorry, could not find mercurial installed': 'Sorry, could not find mercurial installed',
'source : db': 'source : db',
'source : filesystem': 'source : filesystem',
'Start a new app': 'Start a new app',
'Start searching': 'Start searching',
'Start wizard': 'start wizard',
'state': '状态',
'Static': 'Static',
'static': '静态文件',
'Static files': '静态文件',
'Statistics': 'Statistics',
'Step': 'Step',
'step': 'step',
'stop': 'stop',
'submit': '提交',
'Submit': 'Submit',
'successful': 'successful',
'Sure you want to delete this object?': '真的要删除这个对象?',
'switch to : db': 'switch to : db',
'switch to : filesystem': 'switch to : filesystem',
'Tab width (# characters)': 'Tab width (# characters)',
'table': '',
'Table': 'Table',
'Table name': '表名',
'Temporary': 'Temporary',
'test': '测试',
'Testing application': '应用测试',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '',
'The app exists, was created by wizard, continue to overwrite!': 'The app exists, was created by wizard, continue to overwrite!',
'The app exists, was NOT created by wizard, continue to overwrite!': 'The app exists, was NOT created by wizard, continue to overwrite!',
'the application logic, each URL path is mapped in one exposed function in the controller': '应用逻辑:每个URL由控制器暴露的函式完成映射',
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
'the data representation, define database tables and sets': '数据表达式,定义数据库/表',
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'the presentations layer, views are also known as templates': '提交层/视图都在模板中可知',
'Theme': 'Theme',
'There are no controllers': '冇控制器',
'There are no models': '冇模型s',
'There are no modules': '冇模块s',
'There are no plugins': 'There are no plugins',
'There are no private files': 'There are no private files',
'There are no static files': '冇静态文件',
'There are no translators': 'There are no translators',
'There are no translators, only default language is supported': '没有找到相应翻译,只能使用默认语言',
'There are no views': '冇视图',
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'these files are served without processing, your images go here': '',
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": "This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.",
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk',
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
'This is the %(filename)s template': '这是 %(filename)s 模板',
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": "This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.",
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.',
'this page to see if a breakpoint was hit and debug interaction is required.': 'this page to see if a breakpoint was hit and debug interaction is required.',
'This will pull changes from the remote repo for application "%s"?': 'This will pull changes from the remote repo for application "%s"?',
'This will push changes to the remote repo for application "%s".': 'This will push changes to the remote repo for application "%s".',
'Ticket': '传票',
'Ticket ID': 'Ticket ID',
'Ticket Missing': 'Ticket Missing',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': '时间戳',
'TM': '',
'to previous version.': 'to previous version.',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'To emulate a breakpoint programatically, write:': 'To emulate a breakpoint programatically, write:',
'to use the debugger!': 'to use the debugger!',
'to  previous version.': '退回前一版本',
'toggle breakpoint': 'toggle breakpoint',
'Toggle comment': 'Toggle comment',
'Toggle Fullscreen': 'Toggle Fullscreen',
'Traceback': 'Traceback',
'translation strings for the application': '应用的翻译字串',
'Translation strings for the application': 'Translation strings for the application',
'try': '尝试',
'try something like': '尝试',
'Try the mobile interface': 'Try the mobile interface',
'try view': 'try view',
'Type PDB debugger command in here and hit Return (Enter) to execute it.': 'Type PDB debugger command in here and hit Return (Enter) to execute it.',
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
'Unable to check for upgrades': '无法检查是否需要升级',
'unable to create application "%s"': '无法创建应用 "%s"',
'unable to delete file "%(filename)s"': '无法删除文件 "%(filename)s"',
'unable to delete file plugin "%(plugin)s"': 'unable to delete file plugin "%(plugin)s"',
'Unable to determine the line number!': 'Unable to determine the line number!',
'Unable to download': '无法下载',
'Unable to download app': '无法下载应用',
'Unable to download app because:': 'Unable to download app because:',
'Unable to download because': 'Unable to download because',
'unable to download layout': 'unable to download layout',
'unable to download plugin: %s': 'unable to download plugin: %s',
'Unable to download the list of plugins': 'Unable to download the list of plugins',
'unable to install plugin "%s"': 'unable to install plugin "%s"',
'unable to parse csv file': '无法生成 cvs',
'unable to uninstall "%s"': '无法卸载 "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': '反选全部',
'Uninstall': '卸载',
'Unsupported webserver working mode: %s': 'Unsupported webserver working mode: %s',
'update': '更新',
'update all languages': '更新所有语言',
'Update:': '更新:',
'Upgrade': 'Upgrade',
'upgrade now to %s': 'upgrade now to %s',
'upgrade web2py now': 'upgrade web2py now',
'upload': 'upload',
'Upload': 'Upload',
'Upload & install packed application': 'Upload & install packed application',
'Upload a package:': 'Upload a package:',
'Upload and install packed application': 'Upload and install packed application',
'upload application:': '提交已有的应用:',
'Upload existing application': '上传已有应用',
'upload file:': '提交文件:',
'upload plugin file:': 'upload plugin file:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...)  for NOT to build more complex queries.': '',
'Use an url:': 'Use an url:',
'User': 'User',
'User ID': '用户ID',
'Username': 'Username',
'Users': 'Users',
'Using the shell may lock the database to other users of this app.': 'Using the shell may lock the database to other users of this app.',
'variables': 'variables',
'Version': '版本',
'Versioning': 'Versioning',
'versioning': '版本',
'view': '视图',
'Views': '视图',
'views': '视图s',
'web2py Recent Tweets': 'twitter上的web2py进展实播',
'Warning!': 'Warning!',
'WARNING:': 'WARNING:',
'WARNING: The following views could not be compiled:': 'WARNING: The following views could not be compiled:',
'Web Framework': 'Web Framework',
'web2py Admin Password': 'web2py Admin Password',
'web2py apps to deploy': 'web2py apps to deploy',
'web2py Debugger': 'web2py Debugger',
'web2py downgrade': 'web2py downgrade',
'web2py is up to date': 'web2py现在已经是最新的版本了',
'web2py online debugger': 'web2py online debugger',
'web2py Recent Tweets': 'twitter上的web2py进展实播',
'web2py upgrade': 'web2py upgrade',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
'Welcome to web2py': '欢迎使用web2py',
'Working...': 'Working...',
'WSGI reference name': 'WSGI reference name',
'YES': '',
'Yes': 'Yes',
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button',
'You can inspect variables using the console below': 'You can inspect variables using the console below',
'You have one more login attempt before you are locked out': 'You have one more login attempt before you are locked out',
'You need to set up and reach a': 'You need to set up and reach a',
'You only need these if you have already registered': 'You only need these if you have already registered',
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Your application will be blocked until you click an action button (next, step, continue, etc.)',
}

View File

@@ -45,4 +45,6 @@ if 'adminLanguage' in request.cookies and not (request.cookies['adminLanguage']
T.force(request.cookies['adminLanguage'].value)
#set static_version
response.static_version = open('VERSION').read().split(' ',1)[1].split('-')[0]
from gluon.settings import global_settings
response.static_version = global_settings.web2py_version.split('-')[0]
response.static_version_urls = True

View File

@@ -1,9 +1,10 @@
import base64
import os
import time
from gluon import portalocker
from gluon.admin import apath
from gluon.fileutils import read_file
from gluon.utils import web2py_uuid
from pydal.contrib import portalocker
# ###########################################################
# ## make sure administrator is on localhost or https
# ###########################################################
@@ -19,7 +20,7 @@ if request.env.web2py_runtime_gae:
else:
is_gae = False
if request.env.http_x_forwarded_for or request.is_https:
if request.is_https:
session.secure()
elif not request.is_local and not DEMO_MODE:
raise HTTP(200, T('Admin is disabled because insecure channel'))
@@ -49,15 +50,18 @@ except IOError:
def verify_password(password):
session.pam_user = None
if DEMO_MODE:
return True
ret = True
elif not _config.get('password'):
return False
ret = False
elif _config['password'].startswith('pam_user:'):
session.pam_user = _config['password'][9:].strip()
import gluon.contrib.pam
return gluon.contrib.pam.authenticate(session.pam_user, password)
ret = gluon.contrib.pam.authenticate(session.pam_user, password)
else:
return _config['password'] == CRYPT()(password)[0]
ret = _config['password'] == CRYPT()(password)[0]
if ret:
session.hmac_key = web2py_uuid()
return ret
# ###########################################################
@@ -100,13 +104,12 @@ def write_hosts_deny(denied_hosts):
portalocker.unlock(f)
f.close()
def login_record(success=True):
denied_hosts = read_hosts_deny()
val = (0, 0)
if success and request.client in denied_hosts:
del denied_hosts[request.client]
elif not success and not request.is_local:
elif not success:
val = denied_hosts.get(request.client, (0, 0))
if time.time() - val[1] < expiration_failed_logins \
and val[0] >= allowed_number_of_attempts:
@@ -117,6 +120,11 @@ def login_record(success=True):
write_hosts_deny(denied_hosts)
return val[0]
def failed_login_count():
denied_hosts = read_hosts_deny()
val = denied_hosts.get(request.client, (0, 0))
return val[0]
# ###########################################################
# ## session expiration

View File

@@ -34,4 +34,3 @@ else:
URL(_a, 'default', f='logout')))
response.menu.append((T('Debug'), False,
URL(_a, 'debug', 'interact')))

View File

@@ -7,11 +7,10 @@ def stateWidget(field, value, data={'on-label':'Enabled', 'off-label':'Disabled'
except:
fieldName = field
div = DIV(INPUT( _type='checkbox', _name='%s' % fieldName, _checked= 'checked' if value == 'true' else None, _value='true'),
_class='make-bootstrap-switch',
div = DIV(INPUT( _type='checkbox', _name='%s' % fieldName, _checked= 'checked' if value == 'true' else None, _value='true'),
_class='make-bootstrap-switch',
data=data)
script = SCRIPT("""
jQuery(".make-bootstrap-switch input[name='%s']").parent().bootstrapSwitch();
""" % fieldName)
return DIV(div, script)

View File

@@ -1,72 +0,0 @@
# How to contribute
- [Getting help](#getting-help-)
- [Submitting bug reports](#submitting-bug-reports-)
- [Contributing code](#contributing-code-)
## Getting help
Community discussion, questions, and informal bug reporting is done on the
[CodeMirror Google group](http://groups.google.com/group/codemirror).
## Submitting bug reports
The preferred way to report bugs is to use the
[GitHub issue tracker](http://github.com/marijnh/CodeMirror/issues). Before
reporting a bug, read these pointers.
**Note:** The issue tracker is for *bugs*, not requests for help. Questions
should be asked on the
[CodeMirror Google group](http://groups.google.com/group/codemirror) instead.
### Reporting bugs effectively
- CodeMirror is maintained by volunteers. They don't owe you anything, so be
polite. Reports with an indignant or belligerent tone tend to be moved to the
bottom of the pile.
- Include information about **the browser in which the problem occurred**. Even
if you tested several browsers, and the problem occurred in all of them,
mention this fact in the bug report. Also include browser version numbers and
the operating system that you're on.
- Mention which release of CodeMirror you're using. Preferably, try also with
the current development snapshot, to ensure the problem has not already been
fixed.
- Mention very precisely what went wrong. "X is broken" is not a good bug
report. What did you expect to happen? What happened instead? Describe the
exact steps a maintainer has to take to make the problem occur. We can not
fix something that we can not observe.
- If the problem can not be reproduced in any of the demos included in the
CodeMirror distribution, please provide an HTML document that demonstrates
the problem. The best way to do this is to go to
[jsbin.com](http://jsbin.com/ihunin/edit), enter it there, press save, and
include the resulting link in your bug report.
## Contributing code
- Make sure you have a [GitHub Account](https://github.com/signup/free)
- Fork [CodeMirror](https://github.com/marijnh/CodeMirror/)
([how to fork a repo](https://help.github.com/articles/fork-a-repo))
- Make your changes
- If your changes are easy to test or likely to regress, add tests.
Tests for the core go into `test/test.js`, some modes have their own
test suite under `mode/XXX/test.js`. Feel free to add new test
suites to modes that don't have one yet (be sure to link the new
tests into `test/index.html`).
- Follow the general code style of the rest of the project (see
below). Run `bin/lint` to verify that the linter is happy.
- Make sure all tests pass. Visit `test/index.html` in your browser to
run them.
- Submit a pull request
([how to create a pull request](https://help.github.com/articles/fork-a-repo))
### Coding standards
- 2 spaces per indentation level, no tabs.
- Include semicolons after statements.
- Note that the linter (`bin/lint`) which is run after each commit
complains about unused variables and functions. Prefix their names
with an underscore to muffle it.

View File

@@ -1,11 +0,0 @@
# CodeMirror
[![Build Status](https://secure.travis-ci.org/marijnh/CodeMirror.png?branch=master)](http://travis-ci.org/marijnh/CodeMirror)
[![NPM version](https://badge.fury.io/js/codemirror.png)](http://badge.fury.io/js/codemirror)
CodeMirror is a JavaScript component that provides a code editor in
the browser. When a mode is available for the language you are coding
in, it will color your code, and optionally help with indentation.
The project page is http://codemirror.net
The manual is at http://codemirror.net/doc/manual.html
The contributing guidelines are in [CONTRIBUTING.md](https://github.com/marijnh/CodeMirror/blob/master/CONTRIBUTING.md)

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var noOptions = {};
@@ -11,8 +21,21 @@
}
CodeMirror.commands.toggleComment = function(cm) {
var from = cm.getCursor("start"), to = cm.getCursor("end");
cm.uncomment(from, to) || cm.lineComment(from, to);
var minLine = Infinity, ranges = cm.listSelections(), mode = null;
for (var i = ranges.length - 1; i >= 0; i--) {
var from = ranges[i].from(), to = ranges[i].to();
if (from.line >= minLine) continue;
if (to.line >= minLine) to = Pos(minLine, 0);
minLine = from.line;
if (mode == null) {
if (cm.uncomment(from, to)) mode = "un";
else { cm.lineComment(from, to); mode = "line"; }
} else if (mode == "un") {
cm.uncomment(from, to);
} else {
cm.lineComment(from, to);
}
}
};
CodeMirror.defineExtension("lineComment", function(from, to, options) {
@@ -86,7 +109,7 @@
CodeMirror.defineExtension("uncomment", function(from, to, options) {
if (!options) options = noOptions;
var self = this, mode = self.getModeAt(from);
var end = Math.min(to.line, self.lastLine()), start = Math.min(from.line, end);
var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);
// Try finding line comments
var lineString = options.lineComment || mode.lineComment, lines = [];
@@ -130,6 +153,17 @@
!/comment/.test(self.getTokenTypeAt(Pos(end, close + 1))))
return false;
// Avoid killing block comments completely outside the selection.
// Positions of the last startString before the start of the selection, and the first endString after it.
var lastStart = startLine.lastIndexOf(startString, from.ch);
var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);
if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;
// Positions of the first endString after the end of the selection, and the last startString before it.
firstEnd = endLine.indexOf(endString, to.ch);
var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);
lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;
if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;
self.operation(function() {
self.replaceRange("", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),
Pos(end, close + endString.length));
@@ -146,4 +180,4 @@
});
return true;
});
})();
});

View File

@@ -0,0 +1,85 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var modes = ["clike", "css", "javascript"];
for (var i = 0; i < modes.length; ++i)
CodeMirror.extendMode(modes[i], {blockCommentContinue: " * "});
function continueComment(cm) {
if (cm.getOption("disableInput")) return CodeMirror.Pass;
var ranges = cm.listSelections(), mode, inserts = [];
for (var i = 0; i < ranges.length; i++) {
var pos = ranges[i].head, token = cm.getTokenAt(pos);
if (token.type != "comment") return CodeMirror.Pass;
var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode;
if (!mode) mode = modeHere;
else if (mode != modeHere) return CodeMirror.Pass;
var insert = null;
if (mode.blockCommentStart && mode.blockCommentContinue) {
var end = token.string.indexOf(mode.blockCommentEnd);
var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;
if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) {
// Comment ended, don't continue it
} else if (token.string.indexOf(mode.blockCommentStart) == 0) {
insert = full.slice(0, token.start);
if (!/^\s*$/.test(insert)) {
insert = "";
for (var j = 0; j < token.start; ++j) insert += " ";
}
} else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&
found + mode.blockCommentContinue.length > token.start &&
/^\s*$/.test(full.slice(0, found))) {
insert = full.slice(0, found);
}
if (insert != null) insert += mode.blockCommentContinue;
}
if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {
var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);
if (found > -1) {
insert = line.slice(0, found);
if (/\S/.test(insert)) insert = null;
else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\s*/)[0];
}
}
if (insert == null) return CodeMirror.Pass;
inserts[i] = "\n" + insert;
}
cm.operation(function() {
for (var i = ranges.length - 1; i >= 0; i--)
cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), "+insert");
});
}
function continueLineCommentEnabled(cm) {
var opt = cm.getOption("continueComments");
if (opt && typeof opt == "object")
return opt.continueLineComment !== false;
return true;
}
CodeMirror.defineOption("continueComments", null, function(cm, val, prev) {
if (prev && prev != CodeMirror.Init)
cm.removeKeyMap("continueComment");
if (val) {
var key = "Enter";
if (typeof val == "string")
key = val;
else if (typeof val == "object" && val.key)
key = val.key;
var map = {name: "continueComment"};
map[key] = continueComment;
cm.addKeyMap(map);
}
});
});

View File

@@ -1,15 +1,25 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
// Open simple dialogs on top of an editor. Relies on dialog.css.
(function() {
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
function dialogDiv(cm, template, bottom) {
var wrap = cm.getWrapperElement();
var dialog;
dialog = wrap.appendChild(document.createElement("div"));
if (bottom) {
if (bottom)
dialog.className = "CodeMirror-dialog CodeMirror-dialog-bottom";
} else {
else
dialog.className = "CodeMirror-dialog CodeMirror-dialog-top";
}
if (typeof template == "string") {
dialog.innerHTML = template;
} else { // Assuming it's a detached DOM element.
@@ -25,39 +35,59 @@
}
CodeMirror.defineExtension("openDialog", function(template, callback, options) {
if (!options) options = {};
closeNotification(this, null);
var dialog = dialogDiv(this, template, options && options.bottom);
var dialog = dialogDiv(this, template, options.bottom);
var closed = false, me = this;
function close() {
if (closed) return;
closed = true;
dialog.parentNode.removeChild(dialog);
function close(newVal) {
if (typeof newVal == 'string') {
inp.value = newVal;
} else {
if (closed) return;
closed = true;
dialog.parentNode.removeChild(dialog);
me.focus();
if (options.onClose) options.onClose(dialog);
}
}
var inp = dialog.getElementsByTagName("input")[0], button;
if (inp) {
if (options && options.value) inp.value = options.value;
if (options.value) {
inp.value = options.value;
inp.select();
}
if (options.onInput)
CodeMirror.on(inp, "input", function(e) { options.onInput(e, inp.value, close);});
if (options.onKeyUp)
CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);});
CodeMirror.on(inp, "keydown", function(e) {
if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }
if (e.keyCode == 13 || e.keyCode == 27) {
if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {
inp.blur();
CodeMirror.e_stop(e);
close();
me.focus();
if (e.keyCode == 13) callback(inp.value);
}
if (e.keyCode == 13) callback(inp.value, e);
});
if (options && options.onKeyUp) {
CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);});
}
if (options && options.value) inp.value = options.value;
if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close);
inp.focus();
CodeMirror.on(inp, "blur", close);
} else if (button = dialog.getElementsByTagName("button")[0]) {
CodeMirror.on(button, "click", function() {
close();
me.focus();
});
if (options.closeOnBlur !== false) CodeMirror.on(button, "blur", close);
button.focus();
CodeMirror.on(button, "blur", close);
}
return close;
});
@@ -102,8 +132,8 @@
CodeMirror.defineExtension("openNotification", function(template, options) {
closeNotification(this, close);
var dialog = dialogDiv(this, template, options && options.bottom);
var duration = options && (options.duration === undefined ? 5000 : options.duration);
var closed = false, doneTimer;
var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000;
function close() {
if (closed) return;
@@ -116,7 +146,10 @@
CodeMirror.e_preventDefault(e);
close();
});
if (duration)
doneTimer = setTimeout(close, options.duration);
doneTimer = setTimeout(close, duration);
return close;
});
})();
});

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
@@ -28,4 +38,4 @@
window.scrollTo(info.scrollLeft, info.scrollTop);
cm.refresh();
}
})();
});

View File

@@ -0,0 +1,94 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
CodeMirror.defineExtension("addPanel", function(node, options) {
if (!this.state.panels) initPanels(this);
var info = this.state.panels;
if (options && options.position == "bottom")
info.wrapper.appendChild(node);
else
info.wrapper.insertBefore(node, info.wrapper.firstChild);
var height = (options && options.height) || node.offsetHeight;
this._setSize(null, info.heightLeft -= height);
info.panels++;
return new Panel(this, node, options, height);
});
function Panel(cm, node, options, height) {
this.cm = cm;
this.node = node;
this.options = options;
this.height = height;
this.cleared = false;
}
Panel.prototype.clear = function() {
if (this.cleared) return;
this.cleared = true;
var info = this.cm.state.panels;
this.cm._setSize(null, info.heightLeft += this.height);
info.wrapper.removeChild(this.node);
if (--info.panels == 0) removePanels(this.cm);
};
Panel.prototype.changed = function(height) {
var newHeight = height == null ? this.node.offsetHeight : height;
var info = this.cm.state.panels;
this.cm._setSize(null, info.height += (newHeight - this.height));
this.height = newHeight;
};
function initPanels(cm) {
var wrap = cm.getWrapperElement();
var style = window.getComputedStyle ? window.getComputedStyle(wrap) : wrap.currentStyle;
var height = parseInt(style.height);
var info = cm.state.panels = {
setHeight: wrap.style.height,
heightLeft: height,
panels: 0,
wrapper: document.createElement("div")
};
wrap.parentNode.insertBefore(info.wrapper, wrap);
var hasFocus = cm.hasFocus();
info.wrapper.appendChild(wrap);
if (hasFocus) cm.focus();
cm._setSize = cm.setSize;
if (height != null) cm.setSize = function(width, newHeight) {
if (newHeight == null) return this._setSize(width, newHeight);
info.setHeight = newHeight;
if (typeof newHeight != "number") {
var px = /^(\d+\.?\d*)px$/.exec(newHeight);
if (px) {
newHeight = Number(px[1]);
} else {
info.wrapper.style.height = newHeight;
newHeight = info.wrapper.offsetHeight;
info.wrapper.style.height = "";
}
}
cm._setSize(width, info.heightLeft += (newHeight - height));
height = newHeight;
};
}
function removePanels(cm) {
var info = cm.state.panels;
cm.state.panels = null;
var wrap = cm.getWrapperElement();
info.wrapper.parentNode.replaceChild(wrap, info.wrapper);
wrap.style.height = info.setHeight;
cm.setSize = cm._setSize;
cm.setSize();
}
});

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
CodeMirror.defineOption("placeholder", "", function(cm, val, old) {
var prev = old && old != CodeMirror.Init;
if (val && !prev) {
@@ -45,4 +55,4 @@
function isEmpty(cm) {
return (cm.lineCount() === 1) && (cm.getLine(0) === "");
}
})();
});

View File

@@ -0,0 +1,64 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineOption("rulers", false, function(cm, val, old) {
if (old && old != CodeMirror.Init) {
clearRulers(cm);
cm.off("refresh", refreshRulers);
}
if (val && val.length) {
setRulers(cm);
cm.on("refresh", refreshRulers);
}
});
function clearRulers(cm) {
for (var i = cm.display.lineSpace.childNodes.length - 1; i >= 0; i--) {
var node = cm.display.lineSpace.childNodes[i];
if (/(^|\s)CodeMirror-ruler($|\s)/.test(node.className))
node.parentNode.removeChild(node);
}
}
function setRulers(cm) {
var val = cm.getOption("rulers");
var cw = cm.defaultCharWidth();
var left = cm.charCoords(CodeMirror.Pos(cm.firstLine(), 0), "div").left;
var minH = cm.display.scroller.offsetHeight + 30;
for (var i = 0; i < val.length; i++) {
var elt = document.createElement("div");
elt.className = "CodeMirror-ruler";
var col, cls = null, conf = val[i];
if (typeof conf == "number") {
col = conf;
} else {
col = conf.column;
if (conf.className) elt.className += " " + conf.className;
if (conf.color) elt.style.borderColor = conf.color;
if (conf.lineStyle) elt.style.borderLeftStyle = conf.lineStyle;
if (conf.width) elt.style.borderLeftWidth = conf.width;
cls = val[i].className;
}
elt.style.left = (left + col * cw) + "px";
elt.style.top = "-50px";
elt.style.bottom = "-20px";
elt.style.minHeight = minH + "px";
cm.display.lineSpace.insertBefore(elt, cm.display.cursorDiv);
}
}
function refreshRulers(cm) {
clearRulers(cm);
setRulers(cm);
}
});

View File

@@ -1,84 +1,161 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var DEFAULT_BRACKETS = "()[]{}''\"\"";
var DEFAULT_TRIPLES = "'\"";
var DEFAULT_EXPLODE_ON_ENTER = "[]{}";
var SPACE_CHAR_REGEX = /\s/;
var Pos = CodeMirror.Pos;
CodeMirror.defineOption("autoCloseBrackets", false, function(cm, val, old) {
if (old != CodeMirror.Init && old)
cm.removeKeyMap("autoCloseBrackets");
if (!val) return;
var pairs = DEFAULT_BRACKETS, explode = DEFAULT_EXPLODE_ON_ENTER;
var pairs = DEFAULT_BRACKETS, triples = DEFAULT_TRIPLES, explode = DEFAULT_EXPLODE_ON_ENTER;
if (typeof val == "string") pairs = val;
else if (typeof val == "object") {
if (val.pairs != null) pairs = val.pairs;
if (val.triples != null) triples = val.triples;
if (val.explode != null) explode = val.explode;
}
var map = buildKeymap(pairs);
var map = buildKeymap(pairs, triples);
if (explode) map.Enter = buildExplodeHandler(explode);
cm.addKeyMap(map);
});
function charsAround(cm, pos) {
var str = cm.getRange(CodeMirror.Pos(pos.line, pos.ch - 1),
CodeMirror.Pos(pos.line, pos.ch + 1));
var str = cm.getRange(Pos(pos.line, pos.ch - 1),
Pos(pos.line, pos.ch + 1));
return str.length == 2 ? str : null;
}
function buildKeymap(pairs) {
// Project the token type that will exists after the given char is
// typed, and use it to determine whether it would cause the start
// of a string token.
function enteringString(cm, pos, ch) {
var line = cm.getLine(pos.line);
var token = cm.getTokenAt(pos);
if (/\bstring2?\b/.test(token.type)) return false;
var stream = new CodeMirror.StringStream(line.slice(0, pos.ch) + ch + line.slice(pos.ch), 4);
stream.pos = stream.start = token.start;
for (;;) {
var type1 = cm.getMode().token(stream, token.state);
if (stream.pos >= pos.ch + 1) return /\bstring2?\b/.test(type1);
stream.start = stream.pos;
}
}
function buildKeymap(pairs, triples) {
var map = {
name : "autoCloseBrackets",
Backspace: function(cm) {
if (cm.somethingSelected() || cm.getOption("disableInput")) return CodeMirror.Pass;
var cur = cm.getCursor(), around = charsAround(cm, cur);
if (around && pairs.indexOf(around) % 2 == 0)
cm.replaceRange("", CodeMirror.Pos(cur.line, cur.ch - 1), CodeMirror.Pos(cur.line, cur.ch + 1));
else
return CodeMirror.Pass;
if (cm.getOption("disableInput")) return CodeMirror.Pass;
var ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
if (!ranges[i].empty()) return CodeMirror.Pass;
var around = charsAround(cm, ranges[i].head);
if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;
}
for (var i = ranges.length - 1; i >= 0; i--) {
var cur = ranges[i].head;
cm.replaceRange("", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1));
}
}
};
var closingBrackets = "";
for (var i = 0; i < pairs.length; i += 2) (function(left, right) {
if (left != right) closingBrackets += right;
function surround(cm) {
var selection = cm.getSelection();
cm.replaceSelection(left + selection + right);
}
function maybeOverwrite(cm) {
var cur = cm.getCursor(), ahead = cm.getRange(cur, CodeMirror.Pos(cur.line, cur.ch + 1));
if (ahead != right || cm.somethingSelected()) return CodeMirror.Pass;
else cm.execCommand("goCharRight");
}
closingBrackets += right;
map["'" + left + "'"] = function(cm) {
if (left == "'" && cm.getTokenAt(cm.getCursor()).type == "comment" ||
cm.getOption("disableInput"))
return CodeMirror.Pass;
if (cm.somethingSelected()) return surround(cm);
if (left == right && maybeOverwrite(cm) != CodeMirror.Pass) return;
var cur = cm.getCursor(), ahead = CodeMirror.Pos(cur.line, cur.ch + 1);
var line = cm.getLine(cur.line), nextChar = line.charAt(cur.ch), curChar = cur.ch > 0 ? line.charAt(cur.ch - 1) : "";
if (left == right && CodeMirror.isWordChar(curChar))
return CodeMirror.Pass;
if (line.length == cur.ch || closingBrackets.indexOf(nextChar) >= 0 || SPACE_CHAR_REGEX.test(nextChar))
cm.replaceSelection(left + right, {head: ahead, anchor: ahead});
else
return CodeMirror.Pass;
if (cm.getOption("disableInput")) return CodeMirror.Pass;
var ranges = cm.listSelections(), type, next;
for (var i = 0; i < ranges.length; i++) {
var range = ranges[i], cur = range.head, curType;
var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));
if (!range.empty()) {
curType = "surround";
} else if (left == right && next == right) {
if (cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == left + left + left)
curType = "skipThree";
else
curType = "skip";
} else if (left == right && cur.ch > 1 && triples.indexOf(left) >= 0 &&
cm.getRange(Pos(cur.line, cur.ch - 2), cur) == left + left &&
(cur.ch <= 2 || cm.getRange(Pos(cur.line, cur.ch - 3), Pos(cur.line, cur.ch - 2)) != left)) {
curType = "addFour";
} else if (left == '"' || left == "'") {
if (!CodeMirror.isWordChar(next) && enteringString(cm, cur, left)) curType = "both";
else return CodeMirror.Pass;
} else if (cm.getLine(cur.line).length == cur.ch || closingBrackets.indexOf(next) >= 0 || SPACE_CHAR_REGEX.test(next)) {
curType = "both";
} else {
return CodeMirror.Pass;
}
if (!type) type = curType;
else if (type != curType) return CodeMirror.Pass;
}
cm.operation(function() {
if (type == "skip") {
cm.execCommand("goCharRight");
} else if (type == "skipThree") {
for (var i = 0; i < 3; i++)
cm.execCommand("goCharRight");
} else if (type == "surround") {
var sels = cm.getSelections();
for (var i = 0; i < sels.length; i++)
sels[i] = left + sels[i] + right;
cm.replaceSelections(sels, "around");
} else if (type == "both") {
cm.replaceSelection(left + right, null);
cm.execCommand("goCharLeft");
} else if (type == "addFour") {
cm.replaceSelection(left + left + left + left, "before");
cm.execCommand("goCharRight");
}
});
};
if (left != right) map["'" + right + "'"] = function(cm) {
var ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
var range = ranges[i];
if (!range.empty() ||
cm.getRange(range.head, Pos(range.head.line, range.head.ch + 1)) != right)
return CodeMirror.Pass;
}
cm.execCommand("goCharRight");
};
if (left != right) map["'" + right + "'"] = maybeOverwrite;
})(pairs.charAt(i), pairs.charAt(i + 1));
return map;
}
function buildExplodeHandler(pairs) {
return function(cm) {
var cur = cm.getCursor(), around = charsAround(cm, cur);
if (!around || pairs.indexOf(around) % 2 != 0 || cm.getOption("disableInput"))
return CodeMirror.Pass;
if (cm.getOption("disableInput")) return CodeMirror.Pass;
var ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
if (!ranges[i].empty()) return CodeMirror.Pass;
var around = charsAround(cm, ranges[i].head);
if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;
}
cm.operation(function() {
var newPos = CodeMirror.Pos(cur.line + 1, 0);
cm.replaceSelection("\n\n", {anchor: newPos, head: newPos}, "+input");
cm.indentLine(cur.line + 1, null, true);
cm.indentLine(cur.line + 2, null, true);
cm.replaceSelection("\n\n", null);
cm.execCommand("goCharLeft");
ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
var line = ranges[i].head.line;
cm.indentLine(line, null, true);
cm.indentLine(line + 1, null, true);
}
});
};
}
})();
});

View File

@@ -1,3 +1,6 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
/**
* Tag-closer extension for CodeMirror.
*
@@ -22,7 +25,14 @@
* See demos/closetag.html for a usage example.
*/
(function() {
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("../fold/xml-fold"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "../fold/xml-fold"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
CodeMirror.defineOption("autoCloseTags", false, function(cm, val, old) {
if (old != CodeMirror.Init && old)
cm.removeKeyMap("autoCloseTags");
@@ -41,53 +51,116 @@
"h5", "h6", "head", "html", "iframe", "layer", "legend", "object", "ol", "p", "select", "table", "ul"];
function autoCloseGT(cm) {
var pos = cm.getCursor(), tok = cm.getTokenAt(pos);
var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
if (inner.mode.name != "xml" || !state.tagName || cm.getOption("disableInput")) return CodeMirror.Pass;
if (cm.getOption("disableInput")) return CodeMirror.Pass;
var ranges = cm.listSelections(), replacements = [];
for (var i = 0; i < ranges.length; i++) {
if (!ranges[i].empty()) return CodeMirror.Pass;
var pos = ranges[i].head, tok = cm.getTokenAt(pos);
var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
if (inner.mode.name != "xml" || !state.tagName) return CodeMirror.Pass;
var opt = cm.getOption("autoCloseTags"), html = inner.mode.configuration == "html";
var dontCloseTags = (typeof opt == "object" && opt.dontCloseTags) || (html && htmlDontClose);
var indentTags = (typeof opt == "object" && opt.indentTags) || (html && htmlIndent);
var opt = cm.getOption("autoCloseTags"), html = inner.mode.configuration == "html";
var dontCloseTags = (typeof opt == "object" && opt.dontCloseTags) || (html && htmlDontClose);
var indentTags = (typeof opt == "object" && opt.indentTags) || (html && htmlIndent);
var tagName = state.tagName;
if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch);
var lowerTagName = tagName.toLowerCase();
// Don't process the '>' at the end of an end-tag or self-closing tag
if (!tagName ||
tok.type == "string" && (tok.end != pos.ch || !/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) ||
tok.type == "tag" && state.type == "closeTag" ||
tok.string.indexOf("/") == (tok.string.length - 1) || // match something like <someTagName />
dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1 ||
CodeMirror.scanForClosingTag && CodeMirror.scanForClosingTag(cm, pos, tagName,
Math.min(cm.lastLine() + 1, pos.line + 50)))
return CodeMirror.Pass;
var tagName = state.tagName;
if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch);
var lowerTagName = tagName.toLowerCase();
// Don't process the '>' at the end of an end-tag or self-closing tag
if (!tagName ||
tok.type == "string" && (tok.end != pos.ch || !/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) ||
tok.type == "tag" && state.type == "closeTag" ||
tok.string.indexOf("/") == (tok.string.length - 1) || // match something like <someTagName />
dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1 ||
closingTagExists(cm, tagName, pos, state, true))
return CodeMirror.Pass;
var doIndent = indentTags && indexOf(indentTags, lowerTagName) > -1;
var curPos = doIndent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1);
cm.replaceSelection(">" + (doIndent ? "\n\n" : "") + "</" + tagName + ">",
{head: curPos, anchor: curPos});
if (doIndent) {
cm.indentLine(pos.line + 1, null, true);
cm.indentLine(pos.line + 2, null);
var indent = indentTags && indexOf(indentTags, lowerTagName) > -1;
replacements[i] = {indent: indent,
text: ">" + (indent ? "\n\n" : "") + "</" + tagName + ">",
newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1)};
}
for (var i = ranges.length - 1; i >= 0; i--) {
var info = replacements[i];
cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor, "+insert");
var sel = cm.listSelections().slice(0);
sel[i] = {head: info.newPos, anchor: info.newPos};
cm.setSelections(sel);
if (info.indent) {
cm.indentLine(info.newPos.line, null, true);
cm.indentLine(info.newPos.line + 1, null, true);
}
}
}
function autoCloseSlash(cm) {
var pos = cm.getCursor(), tok = cm.getTokenAt(pos);
var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
if (tok.type == "string" || tok.string.charAt(0) != "<" ||
tok.start != pos.ch - 1 || inner.mode.name != "xml" ||
cm.getOption("disableInput"))
return CodeMirror.Pass;
var tagName = state.context && state.context.tagName;
if (tagName) cm.replaceSelection("/" + tagName + ">", "end");
function autoCloseCurrent(cm, typingSlash) {
var ranges = cm.listSelections(), replacements = [];
var head = typingSlash ? "/" : "</";
for (var i = 0; i < ranges.length; i++) {
if (!ranges[i].empty()) return CodeMirror.Pass;
var pos = ranges[i].head, tok = cm.getTokenAt(pos);
var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
if (typingSlash && (tok.type == "string" || tok.string.charAt(0) != "<" ||
tok.start != pos.ch - 1))
return CodeMirror.Pass;
// Kludge to get around the fact that we are not in XML mode
// when completing in JS/CSS snippet in htmlmixed mode. Does not
// work for other XML embedded languages (there is no general
// way to go from a mixed mode to its current XML state).
if (inner.mode.name != "xml") {
if (cm.getMode().name == "htmlmixed" && inner.mode.name == "javascript")
replacements[i] = head + "script>";
else if (cm.getMode().name == "htmlmixed" && inner.mode.name == "css")
replacements[i] = head + "style>";
else
return CodeMirror.Pass;
} else {
if (!state.context || !state.context.tagName ||
closingTagExists(cm, state.context.tagName, pos, state))
return CodeMirror.Pass;
replacements[i] = head + state.context.tagName + ">";
}
}
cm.replaceSelections(replacements);
ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++)
if (i == ranges.length - 1 || ranges[i].head.line < ranges[i + 1].head.line)
cm.indentLine(ranges[i].head.line);
}
function autoCloseSlash(cm) {
if (cm.getOption("disableInput")) return CodeMirror.Pass;
return autoCloseCurrent(cm, true);
}
CodeMirror.commands.closeTag = function(cm) { return autoCloseCurrent(cm); };
function indexOf(collection, elt) {
if (collection.indexOf) return collection.indexOf(elt);
for (var i = 0, e = collection.length; i < e; ++i)
if (collection[i] == elt) return i;
return -1;
}
})();
// If xml-fold is loaded, we use its functionality to try and verify
// whether a given tag is actually unclosed.
function closingTagExists(cm, tagName, pos, state, newTag) {
if (!CodeMirror.scanForClosingTag) return false;
var end = Math.min(cm.lastLine() + 1, pos.line + 500);
var nextClose = CodeMirror.scanForClosingTag(cm, pos, null, end);
if (!nextClose || nextClose.tag != tagName) return false;
var cx = state.context;
// If the immediate wrapping context contains onCx instances of
// the same tag, a closing tag only exists if there are at least
// that many closing tags of that type following.
for (var onCx = newTag ? 1 : 0; cx && cx.tagName == tagName; cx = cx.prev) ++onCx;
pos = nextClose.to;
for (var i = 1; i < onCx; i++) {
var next = CodeMirror.scanForClosingTag(cm, pos, null, end);
if (!next || next.tag != tagName) return false;
pos = next.to;
}
return true;
}
});

View File

@@ -1,27 +1,51 @@
(function() {
'use strict';
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
var listRE = /^(\s*)([*+-]|(\d+)\.)(\s*)/,
unorderedBullets = '*+-';
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var listRE = /^(\s*)(>[> ]*|[*+-]\s|(\d+)\.)(\s*)/,
emptyListRE = /^(\s*)(>[> ]*|[*+-]|(\d+)\.)(\s*)$/,
unorderedListRE = /[*+-]\s/;
CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {
if (cm.getOption("disableInput")) return CodeMirror.Pass;
var ranges = cm.listSelections(), replacements = [];
for (var i = 0; i < ranges.length; i++) {
var pos = ranges[i].head, match;
var eolState = cm.getStateAfter(pos.line);
var inList = eolState.list !== false;
var inQuote = eolState.quote !== false;
var pos = cm.getCursor(),
inList = cm.getStateAfter(pos.line).list !== false,
match;
if (!ranges[i].empty() || (!inList && !inQuote) || !(match = cm.getLine(pos.line).match(listRE))) {
cm.execCommand("newlineAndIndent");
return;
}
if (cm.getLine(pos.line).match(emptyListRE)) {
cm.replaceRange("", {
line: pos.line, ch: 0
}, {
line: pos.line, ch: pos.ch + 1
});
replacements[i] = "\n";
if (!inList || !(match = cm.getLine(pos.line).match(listRE))) {
cm.execCommand('newlineAndIndent');
return;
} else {
var indent = match[1], after = match[4];
var bullet = unorderedListRE.test(match[2]) || match[2].indexOf(">") >= 0
? match[2]
: (parseInt(match[3], 10) + 1) + ".";
replacements[i] = "\n" + indent + bullet + after;
}
}
var indent = match[1], after = match[4];
var bullet = unorderedBullets.indexOf(match[2]) >= 0
? match[2]
: (parseInt(match[3], 10) + 1) + '.';
cm.replaceSelection('\n' + indent + bullet + after, 'end');
cm.replaceSelections(replacements);
};
}());
});

View File

@@ -1,73 +1,103 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
(document.documentMode == null || document.documentMode < 8);
var Pos = CodeMirror.Pos;
var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
function findMatchingBracket(cm, where, strict) {
var state = cm.state.matchBrackets;
var maxScanLen = (state && state.maxScanLineLength) || 10000;
var maxScanLines = (state && state.maxScanLines) || 100;
var cur = where || cm.getCursor(), line = cm.getLineHandle(cur.line), pos = cur.ch - 1;
function findMatchingBracket(cm, where, strict, config) {
var line = cm.getLineHandle(where.line), pos = where.ch - 1;
var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
if (!match) return null;
var forward = match.charAt(1) == ">", d = forward ? 1 : -1;
if (strict && forward != (pos == cur.ch)) return null;
var style = cm.getTokenTypeAt(Pos(cur.line, pos + 1));
var dir = match.charAt(1) == ">" ? 1 : -1;
if (strict && (dir > 0) != (pos == where.ch)) return null;
var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));
var stack = [line.text.charAt(pos)], re = /[(){}[\]]/;
function scan(line, lineNo, start) {
if (!line.text) return;
var pos = forward ? 0 : line.text.length - 1, end = forward ? line.text.length : -1;
if (line.text.length > maxScanLen) return null;
if (start != null) pos = start + d;
for (; pos != end; pos += d) {
var ch = line.text.charAt(pos);
if (re.test(ch) && cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style) {
var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);
if (found == null) return null;
return {from: Pos(where.line, pos), to: found && found.pos,
match: found && found.ch == match.charAt(0), forward: dir > 0};
}
// bracketRegex is used to specify which type of bracket to scan
// should be a regexp, e.g. /[[\]]/
//
// Note: If "where" is on an open bracket, then this bracket is ignored.
//
// Returns false when no bracket was found, null when it reached
// maxScanLines and gave up
function scanForBracket(cm, where, dir, style, config) {
var maxScanLen = (config && config.maxScanLineLength) || 10000;
var maxScanLines = (config && config.maxScanLines) || 1000;
var stack = [];
var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\]]/;
var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)
: Math.max(cm.firstLine() - 1, where.line - maxScanLines);
for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {
var line = cm.getLine(lineNo);
if (!line) continue;
var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;
if (line.length > maxScanLen) continue;
if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);
for (; pos != end; pos += dir) {
var ch = line.charAt(pos);
if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {
var match = matching[ch];
if (match.charAt(1) == ">" == forward) stack.push(ch);
else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false};
else if (!stack.length) return {pos: pos, match: true};
if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch);
else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};
else stack.pop();
}
}
}
for (var i = cur.line, found, e = forward ? Math.min(i + maxScanLines, cm.lineCount()) : Math.max(-1, i - maxScanLines); i != e; i+=d) {
if (i == cur.line) found = scan(line, i, pos);
else found = scan(cm.getLineHandle(i), i);
if (found) break;
}
return {from: Pos(cur.line, pos), to: found && Pos(i, found.pos),
match: found && found.match, forward: forward};
return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;
}
function matchBrackets(cm, autoclear) {
function matchBrackets(cm, autoclear, config) {
// Disable brace matching in long lines, since it'll cause hugely slow updates
var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;
var found = findMatchingBracket(cm);
if (!found || cm.getLine(found.from.line).length > maxHighlightLen ||
found.to && cm.getLine(found.to.line).length > maxHighlightLen)
return;
var marks = [], ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);
if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {
var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));
if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)
marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));
}
}
var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
var one = cm.markText(found.from, Pos(found.from.line, found.from.ch + 1), {className: style});
var two = found.to && cm.markText(found.to, Pos(found.to.line, found.to.ch + 1), {className: style});
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textarea whenever this fires.
if (ie_lt8 && cm.state.focused) cm.display.input.focus();
var clear = function() {
cm.operation(function() { one.clear(); two && two.clear(); });
};
if (autoclear) setTimeout(clear, 800);
else return clear;
if (marks.length) {
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textare whever this fires.
if (ie_lt8 && cm.state.focused) cm.display.input.focus();
var clear = function() {
cm.operation(function() {
for (var i = 0; i < marks.length; i++) marks[i].clear();
});
};
if (autoclear) setTimeout(clear, 800);
else return clear;
}
}
var currentlyHighlighted = null;
function doMatchBrackets(cm) {
cm.operation(function() {
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
if (!cm.somethingSelected()) currentlyHighlighted = matchBrackets(cm, false);
currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);
});
}
@@ -81,7 +111,10 @@
});
CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);});
CodeMirror.defineExtension("findMatchingBracket", function(pos, strict){
return findMatchingBracket(this, pos, strict);
CodeMirror.defineExtension("findMatchingBracket", function(pos, strict, config){
return findMatchingBracket(this, pos, strict, config);
});
})();
CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){
return scanForBracket(this, pos, dir, style, config);
});
});

View File

@@ -0,0 +1,66 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("../fold/xml-fold"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "../fold/xml-fold"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineOption("matchTags", false, function(cm, val, old) {
if (old && old != CodeMirror.Init) {
cm.off("cursorActivity", doMatchTags);
cm.off("viewportChange", maybeUpdateMatch);
clear(cm);
}
if (val) {
cm.state.matchBothTags = typeof val == "object" && val.bothTags;
cm.on("cursorActivity", doMatchTags);
cm.on("viewportChange", maybeUpdateMatch);
doMatchTags(cm);
}
});
function clear(cm) {
if (cm.state.tagHit) cm.state.tagHit.clear();
if (cm.state.tagOther) cm.state.tagOther.clear();
cm.state.tagHit = cm.state.tagOther = null;
}
function doMatchTags(cm) {
cm.state.failedTagMatch = false;
cm.operation(function() {
clear(cm);
if (cm.somethingSelected()) return;
var cur = cm.getCursor(), range = cm.getViewport();
range.from = Math.min(range.from, cur.line); range.to = Math.max(cur.line + 1, range.to);
var match = CodeMirror.findMatchingTag(cm, cur, range);
if (!match) return;
if (cm.state.matchBothTags) {
var hit = match.at == "open" ? match.open : match.close;
if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to, {className: "CodeMirror-matchingtag"});
}
var other = match.at == "close" ? match.open : match.close;
if (other)
cm.state.tagOther = cm.markText(other.from, other.to, {className: "CodeMirror-matchingtag"});
else
cm.state.failedTagMatch = true;
});
}
function maybeUpdateMatch(cm) {
if (cm.state.failedTagMatch) doMatchTags(cm);
}
CodeMirror.commands.toMatchingTag = function(cm) {
var found = CodeMirror.findMatchingTag(cm, cm.getCursor());
if (found) {
var other = found.at == "close" ? found.open : found.close;
if (other) cm.extendSelection(other.to, other.from);
}
};
});

View File

@@ -1,15 +1,27 @@
CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) {
if (prev == CodeMirror.Init) prev = false;
if (prev && !val)
cm.removeOverlay("trailingspace");
else if (!prev && val)
cm.addOverlay({
token: function(stream) {
for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {}
if (i > stream.pos) { stream.pos = i; return null; }
stream.pos = l;
return "trailingspace";
},
name: "trailingspace"
});
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) {
if (prev == CodeMirror.Init) prev = false;
if (prev && !val)
cm.removeOverlay("trailingspace");
else if (!prev && val)
cm.addOverlay({
token: function(stream) {
for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {}
if (i > stream.pos) { stream.pos = i; return null; }
stream.pos = l;
return "trailingspace";
},
name: "trailingspace"
});
});
});

View File

@@ -1,3 +1,16 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.registerHelper("fold", "brace", function(cm, start) {
var line = start.line, lineText = cm.getLine(line);
var startCh, tokenType;
@@ -45,7 +58,6 @@ CodeMirror.registerHelper("fold", "brace", function(cm, start) {
return {from: CodeMirror.Pos(line, startCh),
to: CodeMirror.Pos(end, endCh)};
});
CodeMirror.braceRangeFinder = CodeMirror.fold.brace; // deprecated
CodeMirror.registerHelper("fold", "import", function(cm, start) {
function hasImport(line) {
@@ -70,7 +82,6 @@ CodeMirror.registerHelper("fold", "import", function(cm, start) {
}
return {from: cm.clipPos(CodeMirror.Pos(start, has.startCh + 1)), to: end};
});
CodeMirror.importRangeFinder = CodeMirror.fold["import"]; // deprecated
CodeMirror.registerHelper("fold", "include", function(cm, start) {
function hasInclude(line) {
@@ -90,4 +101,5 @@ CodeMirror.registerHelper("fold", "include", function(cm, start) {
return {from: CodeMirror.Pos(start, has + 1),
to: cm.clipPos(CodeMirror.Pos(end))};
});
CodeMirror.includeRangeFinder = CodeMirror.fold.include; // deprecated
});

View File

@@ -1,3 +1,16 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.registerGlobalHelper("fold", "comment", function(mode) {
return mode.blockCommentStart && mode.blockCommentEnd;
}, function(cm, start) {
@@ -40,3 +53,5 @@ CodeMirror.registerGlobalHelper("fold", "comment", function(mode) {
return {from: CodeMirror.Pos(line, startCh),
to: CodeMirror.Pos(end, endCh)};
});
});

View File

@@ -1,11 +1,25 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
function doFold(cm, pos, options, force) {
var finder = options && (options.call ? options : options.rangeFinder);
if (!finder) finder = CodeMirror.fold.auto;
if (options && options.call) {
var finder = options;
options = null;
} else {
var finder = getOption(cm, options, "rangeFinder");
}
if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0);
var minSize = options && options.minFoldSize || 0;
var minSize = getOption(cm, options, "minFoldSize");
function getRange(allowFolded) {
var range = finder(cm, pos);
@@ -22,14 +36,17 @@
}
var range = getRange(true);
if (options && options.scanUp) while (!range && pos.line > cm.firstLine()) {
if (getOption(cm, options, "scanUp")) while (!range && pos.line > cm.firstLine()) {
pos = CodeMirror.Pos(pos.line - 1, 0);
range = getRange(false);
}
if (!range || range.cleared || force === "unfold") return;
var myWidget = makeWidget(options);
CodeMirror.on(myWidget, "mousedown", function() { myRange.clear(); });
var myWidget = makeWidget(cm, options);
CodeMirror.on(myWidget, "mousedown", function(e) {
myRange.clear();
CodeMirror.e_preventDefault(e);
});
var myRange = cm.markText(range.from, range.to, {
replacedWith: myWidget,
clearOnEnter: true,
@@ -41,8 +58,8 @@
CodeMirror.signal(cm, "fold", cm, range.from, range.to);
}
function makeWidget(options) {
var widget = (options && options.widget) || "\u2194";
function makeWidget(cm, options) {
var widget = getOption(cm, options, "widget");
if (typeof widget == "string") {
var text = document.createTextNode(widget);
widget = document.createElement("span");
@@ -62,9 +79,33 @@
doFold(this, pos, options, force);
});
CodeMirror.commands.fold = function(cm) {
CodeMirror.defineExtension("isFolded", function(pos) {
var marks = this.findMarksAt(pos);
for (var i = 0; i < marks.length; ++i)
if (marks[i].__isFold) return true;
});
CodeMirror.commands.toggleFold = function(cm) {
cm.foldCode(cm.getCursor());
};
CodeMirror.commands.fold = function(cm) {
cm.foldCode(cm.getCursor(), null, "fold");
};
CodeMirror.commands.unfold = function(cm) {
cm.foldCode(cm.getCursor(), null, "unfold");
};
CodeMirror.commands.foldAll = function(cm) {
cm.operation(function() {
for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
cm.foldCode(CodeMirror.Pos(i, 0), null, "fold");
});
};
CodeMirror.commands.unfoldAll = function(cm) {
cm.operation(function() {
for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
cm.foldCode(CodeMirror.Pos(i, 0), null, "unfold");
});
};
CodeMirror.registerHelper("fold", "combine", function() {
var funcs = Array.prototype.slice.call(arguments, 0);
@@ -83,4 +124,26 @@
if (cur) return cur;
}
});
})();
var defaultOptions = {
rangeFinder: CodeMirror.fold.auto,
widget: "\u2194",
minFoldSize: 0,
scanUp: false
};
CodeMirror.defineOption("foldOptions", null);
function getOption(cm, options, name) {
if (options && options[name] !== undefined)
return options[name];
var editorOptions = cm.options.foldOptions;
if (editorOptions && editorOptions[name] !== undefined)
return editorOptions[name];
return defaultOptions[name];
}
CodeMirror.defineExtension("foldOption", function(options, name) {
return getOption(this, options, name);
});
});

View File

@@ -10,7 +10,6 @@
}
.CodeMirror-foldgutter-open,
.CodeMirror-foldgutter-folded {
color: #555;
cursor: pointer;
}
.CodeMirror-foldgutter-open:after {

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("./foldcode"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "./foldcode"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineOption("foldGutter", false, function(cm, val, old) {
@@ -48,7 +58,7 @@
function marker(spec) {
if (typeof spec == "string") {
var elt = document.createElement("div");
elt.className = spec;
elt.className = spec + " CodeMirror-guttermarker-subtle";
return elt;
} else {
return spec.cloneNode(true);
@@ -57,14 +67,16 @@
function updateFoldInfo(cm, from, to) {
var opts = cm.state.foldGutter.options, cur = from;
var minSize = cm.foldOption(opts, "minFoldSize");
var func = cm.foldOption(opts, "rangeFinder");
cm.eachLine(from, to, function(line) {
var mark = null;
if (isFolded(cm, cur)) {
mark = marker(opts.indicatorFolded);
} else {
var pos = Pos(cur, 0), func = opts.rangeFinder || CodeMirror.fold.auto;
var pos = Pos(cur, 0);
var range = func && func(cm, pos);
if (range && range.from.line + 1 < range.to.line)
if (range && range.to.line - range.from.line >= minSize)
mark = marker(opts.indicatorOpen);
}
cm.setGutterMarker(line, opts.gutter, mark);
@@ -82,20 +94,26 @@
}
function onGutterClick(cm, line, gutter) {
var opts = cm.state.foldGutter.options;
var state = cm.state.foldGutter;
if (!state) return;
var opts = state.options;
if (gutter != opts.gutter) return;
cm.foldCode(Pos(line, 0), opts.rangeFinder);
}
function onChange(cm) {
var state = cm.state.foldGutter, opts = cm.state.foldGutter.options;
var state = cm.state.foldGutter;
if (!state) return;
var opts = state.options;
state.from = state.to = 0;
clearTimeout(state.changeUpdate);
state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);
}
function onViewportChange(cm) {
var state = cm.state.foldGutter, opts = cm.state.foldGutter.options;
var state = cm.state.foldGutter;
if (!state) return;
var opts = state.options;
clearTimeout(state.changeUpdate);
state.changeUpdate = setTimeout(function() {
var vp = cm.getViewport();
@@ -117,8 +135,10 @@
}
function onFold(cm, from) {
var state = cm.state.foldGutter, line = from.line;
var state = cm.state.foldGutter;
if (!state) return;
var line = from.line;
if (line >= state.from && line < state.to)
updateFoldInfo(cm, line, line + 1);
}
})();
});

View File

@@ -1,3 +1,16 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.registerHelper("fold", "indent", function(cm, start) {
var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line);
if (!/\S/.test(firstLine)) return;
@@ -27,4 +40,5 @@ CodeMirror.registerHelper("fold", "indent", function(cm, start) {
to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
};
});
CodeMirror.indentRangeFinder = CodeMirror.fold.indent; // deprecated
});

View File

@@ -0,0 +1,49 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.registerHelper("fold", "markdown", function(cm, start) {
var maxDepth = 100;
function isHeader(lineNo) {
var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0));
return tokentype && /\bheader\b/.test(tokentype);
}
function headerLevel(lineNo, line, nextLine) {
var match = line && line.match(/^#+/);
if (match && isHeader(lineNo)) return match[0].length;
match = nextLine && nextLine.match(/^[=\-]+\s*$/);
if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2;
return maxDepth;
}
var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1);
var level = headerLevel(start.line, firstLine, nextLine);
if (level === maxDepth) return undefined;
var lastLineNo = cm.lastLine();
var end = start.line, nextNextLine = cm.getLine(end + 2);
while (end < lastLineNo) {
if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break;
++end;
nextLine = nextNextLine;
nextNextLine = cm.getLine(end + 2);
}
return {
from: CodeMirror.Pos(start.line, firstLine.length),
to: CodeMirror.Pos(end, cm.getLine(end).length)
};
});
});

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var Pos = CodeMirror.Pos;
@@ -136,15 +146,14 @@
}
}
});
CodeMirror.tagRangeFinder = CodeMirror.fold.xml; // deprecated
CodeMirror.findMatchingTag = function(cm, pos, range) {
var iter = new Iter(cm, pos.line, pos.ch, range);
if (iter.text.indexOf(">") == -1 && iter.text.indexOf("<") == -1) return;
var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);
var start = end && toTagStart(iter);
if (!end || end == "selfClose" || !start || cmp(iter, pos) > 0) return;
if (!end || !start || cmp(iter, pos) > 0) return;
var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};
if (end == "selfClose") return {open: here, close: null, at: "open"};
if (start[1]) { // closing tag
return {open: findMatchingOpen(iter, start[2]), close: here, at: "close"};
@@ -168,6 +177,6 @@
// Used by addon/edit/closetag.js
CodeMirror.scanForClosingTag = function(cm, pos, name, end) {
var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);
return !!findMatchingClose(iter, name);
return findMatchingClose(iter, name);
};
})();
});

View File

@@ -0,0 +1,41 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var WORD = /[\w$]+/, RANGE = 500;
CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
var word = options && options.word || WORD;
var range = options && options.range || RANGE;
var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
var end = cur.ch, start = end;
while (start && word.test(curLine.charAt(start - 1))) --start;
var curWord = start != end && curLine.slice(start, end);
var list = [], seen = {};
var re = new RegExp(word.source, "g");
for (var dir = -1; dir <= 1; dir += 2) {
var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
for (; line != endLine; line += dir) {
var text = editor.getLine(line), m;
while (m = re.exec(text)) {
if (line == cur.line && m[0] === curWord) continue;
if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {
seen[m[0]] = true;
list.push(m[0]);
}
}
}
}
return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
});
});

View File

@@ -0,0 +1,56 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("../../mode/css/css"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "../../mode/css/css"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var pseudoClasses = {link: 1, visited: 1, active: 1, hover: 1, focus: 1,
"first-letter": 1, "first-line": 1, "first-child": 1,
before: 1, after: 1, lang: 1};
CodeMirror.registerHelper("hint", "css", function(cm) {
var cur = cm.getCursor(), token = cm.getTokenAt(cur);
var inner = CodeMirror.innerMode(cm.getMode(), token.state);
if (inner.mode.name != "css") return;
var start = token.start, end = cur.ch, word = token.string.slice(0, end - start);
if (/[^\w$_-]/.test(word)) {
word = ""; start = end = cur.ch;
}
var spec = CodeMirror.resolveMode("text/css");
var result = [];
function add(keywords) {
for (var name in keywords)
if (!word || name.lastIndexOf(word, 0) == 0)
result.push(name);
}
var st = inner.state.state;
if (st == "pseudo" || token.type == "variable-3") {
add(pseudoClasses);
} else if (st == "block" || st == "maybeprop") {
add(spec.propertyKeywords);
} else if (st == "prop" || st == "parens" || st == "at" || st == "params") {
add(spec.valueKeywords);
add(spec.colorKeywords);
} else if (st == "media" || st == "media_parens") {
add(spec.mediaTypes);
add(spec.mediaFeatures);
}
if (result.length) return {
list: result,
from: CodeMirror.Pos(cur.line, start),
to: CodeMirror.Pos(cur.line, end)
};
});
});

17
applications/admin/static/codemirror/addon/hint/html-hint.js vendored Executable file → Normal file
View File

@@ -1,4 +1,16 @@
(function () {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("./xml-hint"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "./xml-hint"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var langs = "ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" ");
var targets = ["_blank", "_self", "_top", "_parent"];
var charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"];
@@ -332,6 +344,5 @@
if (options) for (var opt in options) local[opt] = options[opt];
return CodeMirror.hint.xml(cm, local);
}
CodeMirror.htmlHint = htmlHint; // deprecated
CodeMirror.registerHelper("hint", "html", htmlHint);
})();
});

View File

@@ -1,4 +1,14 @@
(function () {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var Pos = CodeMirror.Pos;
function forEach(arr, f) {
@@ -20,15 +30,20 @@
function scriptHint(editor, keywords, getToken, options) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
var cur = editor.getCursor(), token = getToken(editor, cur);
if (/\b(?:string|comment)\b/.test(token.type)) return;
token.state = CodeMirror.innerMode(editor.getMode(), token.state).state;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_]*$/.test(token.string)) {
token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state,
type: token.string == "." ? "property" : null};
token = {start: cur.ch, end: cur.ch, string: "", state: token.state,
type: token.string == "." ? "property" : null};
} else if (token.end > cur.ch) {
token.end = cur.ch;
token.string = token.string.slice(0, cur.ch - token.start);
}
var tprop = token;
// If it is a property, find out what it is a property of.
while (tprop.type == "property") {
tprop = getToken(editor, Pos(cur.line, tprop.start));
@@ -47,7 +62,6 @@
function (e, cur) {return e.getTokenAt(cur);},
options);
};
CodeMirror.javascriptHint = javascriptHint; // deprecated
CodeMirror.registerHelper("hint", "javascript", javascriptHint);
function getCoffeeScriptToken(editor, cur) {
@@ -71,7 +85,6 @@
function coffeescriptHint(editor, options) {
return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options);
}
CodeMirror.coffeescriptHint = coffeescriptHint; // deprecated
CodeMirror.registerHelper("hint", "coffeescript", coffeescriptHint);
var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight " +
@@ -85,7 +98,7 @@
"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" ");
function getCompletions(token, context, keywords, options) {
var found = [], start = token.string;
var found = [], start = token.string, global = options && options.globalScope || window;
function maybeAdd(str) {
if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str);
}
@@ -103,29 +116,31 @@
if (obj.type && obj.type.indexOf("variable") === 0) {
if (options && options.additionalContext)
base = options.additionalContext[obj.string];
base = base || window[obj.string];
if (!options || options.useGlobalScope !== false)
base = base || global[obj.string];
} else if (obj.type == "string") {
base = "";
} else if (obj.type == "atom") {
base = 1;
} else if (obj.type == "function") {
if (window.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&
(typeof window.jQuery == 'function'))
base = window.jQuery();
else if (window._ != null && (obj.string == '_') && (typeof window._ == 'function'))
base = window._();
if (global.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&
(typeof global.jQuery == 'function'))
base = global.jQuery();
else if (global._ != null && (obj.string == '_') && (typeof global._ == 'function'))
base = global._();
}
while (base != null && context.length)
base = base[context.pop().string];
if (base != null) gatherCompletions(base);
} else {
// If not, just look in the window object and any local scope
// If not, just look in the global object and any local scope
// (reading into JS mode internals to get at the local and global variables)
for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);
for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);
gatherCompletions(window);
if (!options || options.useGlobalScope !== false)
gatherCompletions(global);
forEach(keywords, maybeAdd);
}
return found;
}
})();
});

View File

@@ -1,121 +0,0 @@
(function () {
"use strict";
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, _keywords, getToken) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_]*$/.test(token.string)) {
token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state,
className: token.string == ":" ? "pig-type" : null};
}
if (!context) var context = [];
context.push(tprop);
var completionList = getCompletions(token, context);
completionList = completionList.sort();
//prevent autocomplete for last word, instead show dropdown with one word
if(completionList.length == 1) {
completionList.push(" ");
}
return {list: completionList,
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)};
}
function pigHint(editor) {
return scriptHint(editor, pigKeywordsU, function (e, cur) {return e.getTokenAt(cur);});
}
CodeMirror.pigHint = pigHint; // deprecated
CodeMirror.registerHelper("hint", "pig", pigHint);
var pigKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP "
+ "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL "
+ "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE "
+ "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE "
+ "NEQ MATCHES TRUE FALSE";
var pigKeywordsU = pigKeywords.split(" ");
var pigKeywordsL = pigKeywords.toLowerCase().split(" ");
var pigTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP";
var pigTypesU = pigTypes.split(" ");
var pigTypesL = pigTypes.toLowerCase().split(" ");
var pigBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL "
+ "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS "
+ "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG "
+ "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN "
+ "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER "
+ "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS "
+ "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA "
+ "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE "
+ "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG "
+ "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER";
var pigBuiltinsU = pigBuiltins.split(" ").join("() ").split(" ");
var pigBuiltinsL = pigBuiltins.toLowerCase().split(" ").join("() ").split(" ");
var pigBuiltinsC = ("BagSize BinStorage Bloom BuildBloom ConstantSize CubeDimensions DoubleAbs "
+ "DoubleAvg DoubleBase DoubleMax DoubleMin DoubleRound DoubleSum FloatAbs FloatAvg FloatMax "
+ "FloatMin FloatRound FloatSum GenericInvoker IntAbs IntAvg IntMax IntMin IntSum "
+ "InvokeForDouble InvokeForFloat InvokeForInt InvokeForLong InvokeForString Invoker "
+ "IsEmpty JsonLoader JsonMetadata JsonStorage LongAbs LongAvg LongMax LongMin LongSum MapSize "
+ "MonitoredUDF Nondeterministic OutputSchema PigStorage PigStreaming StringConcat StringMax "
+ "StringMin StringSize TextLoader TupleSize Utf8StorageConverter").split(" ").join("() ").split(" ");
function getCompletions(token, context) {
var found = [], start = token.string;
function maybeAdd(str) {
if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str);
}
function gatherCompletions(obj) {
if(obj == ":") {
forEach(pigTypesL, maybeAdd);
}
else {
forEach(pigBuiltinsU, maybeAdd);
forEach(pigBuiltinsL, maybeAdd);
forEach(pigBuiltinsC, maybeAdd);
forEach(pigTypesU, maybeAdd);
forEach(pigTypesL, maybeAdd);
forEach(pigKeywordsU, maybeAdd);
forEach(pigKeywordsL, maybeAdd);
}
}
if (context) {
// If this is a property, see if it belongs to some object we can
// find in the current environment.
var obj = context.pop(), base;
if (obj.type == "variable")
base = obj.string;
else if(obj.type == "variable-3")
base = ":" + obj.string;
while (base != null && context.length)
base = base[context.pop().string];
if (base != null) gatherCompletions(base);
}
return found;
}
})();

View File

@@ -1,4 +1,13 @@
(function () {
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
@@ -40,7 +49,6 @@
function pythonHint(editor) {
return scriptHint(editor, pythonKeywordsU, function (e, cur) {return e.getTokenAt(cur);});
}
CodeMirror.pythonHint = pythonHint; // deprecated
CodeMirror.registerHelper("hint", "python", pythonHint);
var pythonKeywords = "and del from not while as elif global or with assert else if pass yield"
@@ -88,4 +96,4 @@
}
return found;
}
})();
});

View File

@@ -32,7 +32,7 @@
cursor: pointer;
}
.CodeMirror-hint-active {
li.CodeMirror-hint-active {
background: #08f;
color: white;
}

View File

@@ -1,31 +1,57 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var HINT_ELEMENT_CLASS = "CodeMirror-hint";
var ACTIVE_HINT_ELEMENT_CLASS = "CodeMirror-hint-active";
// This is the old interface, kept around for now to stay
// backwards-compatible.
CodeMirror.showHint = function(cm, getHints, options) {
// We want a single cursor position.
if (cm.somethingSelected()) return;
if (getHints == null) {
if (options && options.async) return;
else getHints = CodeMirror.hint.auto;
}
if (cm.state.completionActive) cm.state.completionActive.close();
var completion = cm.state.completionActive = new Completion(cm, getHints, options || {});
CodeMirror.signal(cm, "startCompletion", cm);
if (completion.options.async)
getHints(cm, function(hints) { completion.showHints(hints); }, completion.options);
else
return completion.showHints(getHints(cm, completion.options));
if (!getHints) return cm.showHint(options);
if (options && options.async) getHints.async = true;
var newOpts = {hint: getHints};
if (options) for (var prop in options) newOpts[prop] = options[prop];
return cm.showHint(newOpts);
};
function Completion(cm, getHints, options) {
var asyncRunID = 0;
function retrieveHints(getter, cm, options, then) {
if (getter.async) {
var id = ++asyncRunID;
getter(cm, function(hints) {
if (asyncRunID == id) then(hints);
}, options);
} else {
then(getter(cm, options));
}
}
CodeMirror.defineExtension("showHint", function(options) {
// We want a single cursor position.
if (this.listSelections().length > 1 || this.somethingSelected()) return;
if (this.state.completionActive) this.state.completionActive.close();
var completion = this.state.completionActive = new Completion(this, options);
var getHints = completion.options.hint;
if (!getHints) return;
CodeMirror.signal(this, "startCompletion", this);
return retrieveHints(getHints, this, completion.options, function(hints) { completion.showHints(hints); });
});
function Completion(cm, options) {
this.cm = cm;
this.getHints = getHints;
this.options = options;
this.options = this.buildOptions(options);
this.widget = this.onClose = null;
}
@@ -46,7 +72,8 @@
pick: function(data, i) {
var completion = data.list[i];
if (completion.hint) completion.hint(this.cm, data, completion);
else this.cm.replaceRange(getText(completion), data.from, data.to);
else this.cm.replaceRange(getText(completion), completion.from || data.from,
completion.to || data.to, "complete");
CodeMirror.signal(data, "pick", completion);
this.close();
},
@@ -54,7 +81,7 @@
showHints: function(data) {
if (!data || !data.list.length || !this.active()) return this.close();
if (this.options.completeSingle != false && data.list.length == 1)
if (this.options.completeSingle && data.list.length == 1)
this.pick(data, 0);
else
this.showWidget(data);
@@ -65,7 +92,7 @@
CodeMirror.signal(data, "shown");
var debounce = 0, completion = this, finished;
var closeOn = this.options.closeCharacters || /[\s()\[\]{};:>,]/;
var closeOn = this.options.closeCharacters;
var startPos = this.cm.getCursor(), startLen = this.cm.getLine(startPos.line).length;
var requestAnimationFrame = window.requestAnimationFrame || function(fn) {
@@ -84,15 +111,13 @@
function update() {
if (finished) return;
CodeMirror.signal(data, "update");
if (completion.options.async)
completion.getHints(completion.cm, finishUpdate, completion.options);
else
finishUpdate(completion.getHints(completion.cm, completion.options));
retrieveHints(completion.options.hint, completion.cm, completion.options, finishUpdate);
}
function finishUpdate(data_) {
data = data_;
if (finished) return;
if (!data || !data.list.length) return done();
if (completion.widget) completion.widget.close();
completion.widget = new Widget(completion, data);
}
@@ -117,6 +142,17 @@
}
this.cm.on("cursorActivity", activity);
this.onClose = done;
},
buildOptions: function(options) {
var editor = this.cm.options.hintOptions;
var out = {};
for (var prop in defaultOptions) out[prop] = defaultOptions[prop];
if (editor) for (var prop in editor)
if (editor[prop] !== undefined) out[prop] = editor[prop];
if (options) for (var prop in options)
if (options[prop] !== undefined) out[prop] = options[prop];
return out;
}
};
@@ -125,7 +161,7 @@
else return completion.text;
}
function buildKeyMap(options, handle) {
function buildKeyMap(completion, handle) {
var baseMap = {
Up: function() {handle.moveFocus(-1);},
Down: function() {handle.moveFocus(1);},
@@ -137,7 +173,8 @@
Tab: handle.pick,
Esc: handle.close
};
var ourMap = options.customKeys ? {} : baseMap;
var custom = completion.options.customKeys;
var ourMap = custom ? {} : baseMap;
function addBinding(key, val) {
var bound;
if (typeof val != "string")
@@ -149,12 +186,13 @@
bound = val;
ourMap[key] = bound;
}
if (options.customKeys)
for (var key in options.customKeys) if (options.customKeys.hasOwnProperty(key))
addBinding(key, options.customKeys[key]);
if (options.extraKeys)
for (var key in options.extraKeys) if (options.extraKeys.hasOwnProperty(key))
addBinding(key, options.extraKeys[key]);
if (custom)
for (var key in custom) if (custom.hasOwnProperty(key))
addBinding(key, custom[key]);
var extra = completion.options.extraKeys;
if (extra)
for (var key in extra) if (extra.hasOwnProperty(key))
addBinding(key, extra[key]);
return ourMap;
}
@@ -168,11 +206,11 @@
function Widget(completion, data) {
this.completion = completion;
this.data = data;
var widget = this, cm = completion.cm, options = completion.options;
var widget = this, cm = completion.cm;
var hints = this.hints = document.createElement("ul");
hints.className = "CodeMirror-hints";
this.selectedHint = options.getDefaultSelection ? options.getDefaultSelection(cm,options,data) : 0;
this.selectedHint = data.selectedHint || 0;
var completions = data.list;
for (var i = 0; i < completions.length; ++i) {
@@ -185,16 +223,32 @@
elt.hintId = i;
}
var pos = cm.cursorCoords(options.alignWithWord !== false ? data.from : null);
var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);
var left = pos.left, top = pos.bottom, below = true;
hints.style.left = left + "px";
hints.style.top = top + "px";
// If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.
var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);
var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);
(options.container || document.body).appendChild(hints);
var box = hints.getBoundingClientRect();
var overlapX = box.right - winW, overlapY = box.bottom - winH;
(completion.options.container || document.body).appendChild(hints);
var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;
if (overlapY > 0) {
var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);
if (curTop - height > 0) { // Fits above cursor
hints.style.top = (top = pos.top - height) + "px";
below = false;
} else if (height > winH) {
hints.style.height = (winH - 5) + "px";
hints.style.top = (top = pos.bottom - box.top) + "px";
var cursor = cm.getCursor();
if (data.from.ch != cursor.ch) {
pos = cm.cursorCoords(cursor);
hints.style.left = (left = pos.left) + "px";
box = hints.getBoundingClientRect();
}
}
}
var overlapX = box.right - winW;
if (overlapX > 0) {
if (box.right - box.left > winW) {
hints.style.width = (winW - 5) + "px";
@@ -202,28 +256,18 @@
}
hints.style.left = (left = pos.left - overlapX) + "px";
}
if (overlapY > 0) {
var height = box.bottom - box.top;
if (box.top - (pos.bottom - pos.top) - height > 0) {
overlapY = height + (pos.bottom - pos.top);
below = false;
} else if (height > winH) {
hints.style.height = (winH - 5) + "px";
overlapY -= height - winH;
}
hints.style.top = (top = pos.bottom - overlapY) + "px";
}
cm.addKeyMap(this.keyMap = buildKeyMap(options, {
cm.addKeyMap(this.keyMap = buildKeyMap(completion, {
moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },
setFocus: function(n) { widget.changeActive(n); },
menuSize: function() { return widget.screenAmount(); },
length: completions.length,
close: function() { completion.close(); },
pick: function() { widget.pick(); }
pick: function() { widget.pick(); },
data: data
}));
if (options.closeOnUnfocus !== false) {
if (completion.options.closeOnUnfocus) {
var closingOnBlur;
cm.on("blur", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });
cm.on("focus", this.onFocus = function() { clearTimeout(closingOnBlur); });
@@ -249,7 +293,7 @@
var t = getHintElement(hints, e.target || e.srcElement);
if (t && t.hintId != null) {
widget.changeActive(t.hintId);
if (options.completeOnSingleClick) widget.pick();
if (completion.options.completeOnSingleClick) widget.pick();
}
});
@@ -269,7 +313,7 @@
this.completion.cm.removeKeyMap(this.keyMap);
var cm = this.completion.cm;
if (this.completion.options.closeOnUnfocus !== false) {
if (this.completion.options.closeOnUnfocus) {
cm.off("blur", this.onBlur);
cm.off("focus", this.onFocus);
}
@@ -303,15 +347,16 @@
};
CodeMirror.registerHelper("hint", "auto", function(cm, options) {
var helpers = cm.getHelpers(cm.getCursor(), "hint");
var helpers = cm.getHelpers(cm.getCursor(), "hint"), words;
if (helpers.length) {
for (var i = 0; i < helpers.length; i++) {
var cur = helpers[i](cm, options);
if (cur && cur.list.length) return cur;
}
} else {
var words = cm.getHelper(cm.getCursor(), "hintWords");
} else if (words = cm.getHelper(cm.getCursor(), "hintWords")) {
if (words) return CodeMirror.hint.fromList(cm, {words: words});
} else if (CodeMirror.hint.anyword) {
return CodeMirror.hint.anyword(cm, options);
}
});
@@ -332,4 +377,18 @@
});
CodeMirror.commands.autocomplete = CodeMirror.showHint;
})();
var defaultOptions = {
hint: CodeMirror.hint.auto,
completeSingle: true,
alignWithWord: true,
closeCharacters: /[\s()\[\]{};:>,]/,
closeOnUnfocus: true,
completeOnSingleClick: false,
container: null,
customKeys: null,
extraKeys: null
};
CodeMirror.defineOption("hintOptions", null);
});

View File

@@ -0,0 +1,240 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("../../mode/sql/sql"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "../../mode/sql/sql"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var tables;
var defaultTable;
var keywords;
var CONS = {
QUERY_DIV: ";",
ALIAS_KEYWORD: "AS"
};
var Pos = CodeMirror.Pos;
function getKeywords(editor) {
var mode = editor.doc.modeOption;
if (mode === "sql") mode = "text/x-sql";
return CodeMirror.resolveMode(mode).keywords;
}
function getText(item) {
return typeof item == "string" ? item : item.text;
}
function getItem(list, item) {
if (!list.slice) return list[item];
for (var i = list.length - 1; i >= 0; i--) if (getText(list[i]) == item)
return list[i];
}
function shallowClone(object) {
var result = {};
for (var key in object) if (object.hasOwnProperty(key))
result[key] = object[key];
return result;
}
function match(string, word) {
var len = string.length;
var sub = getText(word).substr(0, len);
return string.toUpperCase() === sub.toUpperCase();
}
function addMatches(result, search, wordlist, formatter) {
for (var word in wordlist) {
if (!wordlist.hasOwnProperty(word)) continue;
if (Array.isArray(wordlist)) {
word = wordlist[word];
}
if (match(search, word)) {
result.push(formatter(word));
}
}
}
function cleanName(name) {
// Get rid name from backticks(`) and preceding dot(.)
if (name.charAt(0) == ".") {
name = name.substr(1);
}
return name.replace(/`/g, "");
}
function insertBackticks(name) {
var nameParts = getText(name).split(".");
for (var i = 0; i < nameParts.length; i++)
nameParts[i] = "`" + nameParts[i] + "`";
var escaped = nameParts.join(".");
if (typeof name == "string") return escaped;
name = shallowClone(name);
name.text = escaped;
return name;
}
function nameCompletion(cur, token, result, editor) {
// Try to complete table, colunm names and return start position of completion
var useBacktick = false;
var nameParts = [];
var start = token.start;
var cont = true;
while (cont) {
cont = (token.string.charAt(0) == ".");
useBacktick = useBacktick || (token.string.charAt(0) == "`");
start = token.start;
nameParts.unshift(cleanName(token.string));
token = editor.getTokenAt(Pos(cur.line, token.start));
if (token.string == ".") {
cont = true;
token = editor.getTokenAt(Pos(cur.line, token.start));
}
}
// Try to complete table names
var string = nameParts.join(".");
addMatches(result, string, tables, function(w) {
return useBacktick ? insertBackticks(w) : w;
});
// Try to complete columns from defaultTable
addMatches(result, string, defaultTable, function(w) {
return useBacktick ? insertBackticks(w) : w;
});
// Try to complete columns
string = nameParts.pop();
var table = nameParts.join(".");
// Check if table is available. If not, find table by Alias
if (!getItem(tables, table))
table = findTableByAlias(table, editor);
var columns = getItem(tables, table);
if (columns && Array.isArray(tables) && columns.columns)
columns = columns.columns;
if (columns) {
addMatches(result, string, columns, function(w) {
if (typeof w == "string") {
w = table + "." + w;
} else {
w = shallowClone(w);
w.text = table + "." + w.text;
}
return useBacktick ? insertBackticks(w) : w;
});
}
return start;
}
function eachWord(lineText, f) {
if (!lineText) return;
var excepted = /[,;]/g;
var words = lineText.split(" ");
for (var i = 0; i < words.length; i++) {
f(words[i]?words[i].replace(excepted, '') : '');
}
}
function convertCurToNumber(cur) {
// max characters of a line is 999,999.
return cur.line + cur.ch / Math.pow(10, 6);
}
function convertNumberToCur(num) {
return Pos(Math.floor(num), +num.toString().split('.').pop());
}
function findTableByAlias(alias, editor) {
var doc = editor.doc;
var fullQuery = doc.getValue();
var aliasUpperCase = alias.toUpperCase();
var previousWord = "";
var table = "";
var separator = [];
var validRange = {
start: Pos(0, 0),
end: Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).length)
};
//add separator
var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);
while(indexOfSeparator != -1) {
separator.push(doc.posFromIndex(indexOfSeparator));
indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV, indexOfSeparator+1);
}
separator.unshift(Pos(0, 0));
separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length));
//find valid range
var prevItem = 0;
var current = convertCurToNumber(editor.getCursor());
for (var i=0; i< separator.length; i++) {
var _v = convertCurToNumber(separator[i]);
if (current > prevItem && current <= _v) {
validRange = { start: convertNumberToCur(prevItem), end: convertNumberToCur(_v) };
break;
}
prevItem = _v;
}
var query = doc.getRange(validRange.start, validRange.end, false);
for (var i = 0; i < query.length; i++) {
var lineText = query[i];
eachWord(lineText, function(word) {
var wordUpperCase = word.toUpperCase();
if (wordUpperCase === aliasUpperCase && getItem(tables, previousWord))
table = previousWord;
if (wordUpperCase !== CONS.ALIAS_KEYWORD)
previousWord = word;
});
if (table) break;
}
return table;
}
CodeMirror.registerHelper("hint", "sql", function(editor, options) {
tables = (options && options.tables) || {};
var defaultTableName = options && options.defaultTable;
defaultTable = (defaultTableName && getItem(tables, defaultTableName)) || [];
keywords = keywords || getKeywords(editor);
var cur = editor.getCursor();
var result = [];
var token = editor.getTokenAt(cur), start, end, search;
if (token.end > cur.ch) {
token.end = cur.ch;
token.string = token.string.slice(0, cur.ch - token.start);
}
if (token.string.match(/^[.`\w@]\w*$/)) {
search = token.string;
start = token.start;
end = token.end;
} else {
start = end = cur.ch;
search = "";
}
if (search.charAt(0) == "." || search.charAt(0) == "`") {
start = nameCompletion(cur, token, result, editor);
} else {
addMatches(result, search, tables, function(w) {return w;});
addMatches(result, search, defaultTable, function(w) {return w;});
addMatches(result, search, keywords, function(w) {return w.toUpperCase();});
}
return {list: result, from: Pos(cur.line, start), to: Pos(cur.line, end)};
});
});

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var Pos = CodeMirror.Pos;
@@ -8,30 +18,55 @@
var quote = (options && options.quoteChar) || '"';
if (!tags) return;
var cur = cm.getCursor(), token = cm.getTokenAt(cur);
if (token.end > cur.ch) {
token.end = cur.ch;
token.string = token.string.slice(0, cur.ch - token.start);
}
var inner = CodeMirror.innerMode(cm.getMode(), token.state);
if (inner.mode.name != "xml") return;
var result = [], replaceToken = false, prefix;
var isTag = token.string.charAt(0) == "<";
if (!inner.state.tagName || isTag) { // Tag completion
if (isTag) {
prefix = token.string.slice(1);
replaceToken = true;
}
var tag = /\btag\b/.test(token.type) && !/>$/.test(token.string);
var tagName = tag && /^\w/.test(token.string), tagStart;
if (tagName) {
var before = cm.getLine(cur.line).slice(Math.max(0, token.start - 2), token.start);
var tagType = /<\/$/.test(before) ? "close" : /<$/.test(before) ? "open" : null;
if (tagType) tagStart = token.start - (tagType == "close" ? 2 : 1);
} else if (tag && token.string == "<") {
tagType = "open";
} else if (tag && token.string == "</") {
tagType = "close";
}
if (!tag && !inner.state.tagName || tagType) {
if (tagName)
prefix = token.string;
replaceToken = tagType;
var cx = inner.state.context, curTag = cx && tags[cx.tagName];
var childList = cx ? curTag && curTag.children : tags["!top"];
if (childList) {
if (childList && tagType != "close") {
for (var i = 0; i < childList.length; ++i) if (!prefix || childList[i].lastIndexOf(prefix, 0) == 0)
result.push("<" + childList[i]);
} else {
for (var name in tags) if (tags.hasOwnProperty(name) && name != "!top" && (!prefix || name.lastIndexOf(prefix, 0) == 0))
result.push("<" + name);
} else if (tagType != "close") {
for (var name in tags)
if (tags.hasOwnProperty(name) && name != "!top" && name != "!attrs" && (!prefix || name.lastIndexOf(prefix, 0) == 0))
result.push("<" + name);
}
if (cx && (!prefix || ("/" + cx.tagName).lastIndexOf(prefix, 0) == 0))
if (cx && (!prefix || tagType == "close" && cx.tagName.lastIndexOf(prefix, 0) == 0))
result.push("</" + cx.tagName + ">");
} else {
// Attribute completion
var curTag = tags[inner.state.tagName], attrs = curTag && curTag.attrs;
if (!attrs) return;
var globalAttrs = tags["!attrs"];
if (!attrs && !globalAttrs) return;
if (!attrs) {
attrs = globalAttrs;
} else if (globalAttrs) { // Combine tag-local and global attributes
var set = {};
for (var nm in globalAttrs) if (globalAttrs.hasOwnProperty(nm)) set[nm] = globalAttrs[nm];
for (var nm in attrs) if (attrs.hasOwnProperty(nm)) set[nm] = attrs[nm];
attrs = set;
}
if (token.type == "string" || token.string == "=") { // A value
var before = cm.getRange(Pos(cur.line, Math.max(0, cur.ch - 60)),
Pos(cur.line, token.type == "string" ? token.start : token.end));
@@ -40,9 +75,16 @@
if (typeof atValues == 'function') atValues = atValues.call(this, cm); // Functions can be used to supply values for autocomplete widget
if (token.type == "string") {
prefix = token.string;
var n = 0;
if (/['"]/.test(token.string.charAt(0))) {
quote = token.string.charAt(0);
prefix = token.string.slice(1);
n++;
}
var len = token.string.length;
if (/['"]/.test(token.string.charAt(len - 1))) {
quote = token.string.charAt(len - 1);
prefix = token.string.substr(n, len - 2);
}
replaceToken = true;
}
@@ -59,11 +101,10 @@
}
return {
list: result,
from: replaceToken ? Pos(cur.line, token.start) : cur,
from: replaceToken ? Pos(cur.line, tagStart == null ? token.start : tagStart) : cur,
to: replaceToken ? Pos(cur.line, token.end) : cur
};
}
CodeMirror.xmlHint = getHints; // deprecated
CodeMirror.registerHelper("hint", "xml", getHints);
})();
});

View File

@@ -1,27 +0,0 @@
// Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js
// declare global: coffeelint
CodeMirror.registerHelper("lint", "coffeescript", function(text) {
var found = [];
var parseError = function(err) {
var loc = err.lineNumber;
found.push({from: CodeMirror.Pos(loc-1, 0),
to: CodeMirror.Pos(loc, 0),
severity: err.level,
message: err.message});
};
try {
var res = coffeelint.lint(text);
for(var i = 0; i < res.length; i++) {
parseError(res[i]);
}
} catch(e) {
found.push({from: CodeMirror.Pos(e.location.first_line, 0),
to: CodeMirror.Pos(e.location.last_line, e.location.last_column),
severity: 'error',
message: e.message});
}
return found;
});
CodeMirror.coffeeValidator = CodeMirror.lint.coffeescript; // deprecated

View File

@@ -1,126 +0,0 @@
(function() {
"use strict";
// declare global: JSHINT
var bogus = [ "Dangerous comment" ];
var warnings = [ [ "Expected '{'",
"Statement body should be inside '{ }' braces." ] ];
var errors = [ "Missing semicolon", "Extra comma", "Missing property name",
"Unmatched ", " and instead saw", " is not defined",
"Unclosed string", "Stopping, unable to continue" ];
function validator(text, options) {
JSHINT(text, options);
var errors = JSHINT.data().errors, result = [];
if (errors) parseErrors(errors, result);
return result;
}
CodeMirror.registerHelper("lint", "javascript", validator);
CodeMirror.javascriptValidator = CodeMirror.lint.javascript; // deprecated
function cleanup(error) {
// All problems are warnings by default
fixWith(error, warnings, "warning", true);
fixWith(error, errors, "error");
return isBogus(error) ? null : error;
}
function fixWith(error, fixes, severity, force) {
var description, fix, find, replace, found;
description = error.description;
for ( var i = 0; i < fixes.length; i++) {
fix = fixes[i];
find = (typeof fix === "string" ? fix : fix[0]);
replace = (typeof fix === "string" ? null : fix[1]);
found = description.indexOf(find) !== -1;
if (force || found) {
error.severity = severity;
}
if (found && replace) {
error.description = replace;
}
}
}
function isBogus(error) {
var description = error.description;
for ( var i = 0; i < bogus.length; i++) {
if (description.indexOf(bogus[i]) !== -1) {
return true;
}
}
return false;
}
function parseErrors(errors, output) {
for ( var i = 0; i < errors.length; i++) {
var error = errors[i];
if (error) {
var linetabpositions, index;
linetabpositions = [];
// This next block is to fix a problem in jshint. Jshint
// replaces
// all tabs with spaces then performs some checks. The error
// positions (character/space) are then reported incorrectly,
// not taking the replacement step into account. Here we look
// at the evidence line and try to adjust the character position
// to the correct value.
if (error.evidence) {
// Tab positions are computed once per line and cached
var tabpositions = linetabpositions[error.line];
if (!tabpositions) {
var evidence = error.evidence;
tabpositions = [];
// ugggh phantomjs does not like this
// forEachChar(evidence, function(item, index) {
Array.prototype.forEach.call(evidence, function(item,
index) {
if (item === '\t') {
// First col is 1 (not 0) to match error
// positions
tabpositions.push(index + 1);
}
});
linetabpositions[error.line] = tabpositions;
}
if (tabpositions.length > 0) {
var pos = error.character;
tabpositions.forEach(function(tabposition) {
if (pos > tabposition) pos -= 1;
});
error.character = pos;
}
}
var start = error.character - 1, end = start + 1;
if (error.evidence) {
index = error.evidence.substring(start).search(/.\b/);
if (index > -1) {
end += index;
}
}
// Convert to format expected by validation service
error.description = error.reason;// + "(jshint)";
error.start = error.character;
error.end = end;
error = cleanup(error);
if (error)
output.push({message: error.description,
severity: error.severity,
from: CodeMirror.Pos(error.line - 1, start),
to: CodeMirror.Pos(error.line - 1, end)});
}
}
}
})();

View File

@@ -1,17 +0,0 @@
// Depends on jsonlint.js from https://github.com/zaach/jsonlint
// declare global: jsonlint
CodeMirror.registerHelper("lint", "json", function(text) {
var found = [];
jsonlint.parseError = function(str, hash) {
var loc = hash.loc;
found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),
to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),
message: str});
};
try { jsonlint.parse(text); }
catch(e) {}
return found;
});
CodeMirror.jsonValidator = CodeMirror.lint.json; // deprecated

View File

@@ -1,73 +0,0 @@
/* The lint marker gutter */
.CodeMirror-lint-markers {
width: 16px;
}
.CodeMirror-lint-tooltip {
background-color: infobackground;
border: 1px solid black;
border-radius: 4px 4px 4px 4px;
color: infotext;
font-family: monospace;
font-size: 10pt;
overflow: hidden;
padding: 2px 5px;
position: fixed;
white-space: pre;
white-space: pre-wrap;
z-index: 100;
max-width: 600px;
opacity: 0;
transition: opacity .4s;
-moz-transition: opacity .4s;
-webkit-transition: opacity .4s;
-o-transition: opacity .4s;
-ms-transition: opacity .4s;
}
.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
background-position: left bottom;
background-repeat: repeat-x;
}
.CodeMirror-lint-mark-error {
background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
;
}
.CodeMirror-lint-mark-warning {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
}
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
background-position: center center;
background-repeat: no-repeat;
cursor: pointer;
display: inline-block;
height: 16px;
width: 16px;
vertical-align: middle;
position: relative;
}
.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
padding-left: 18px;
background-position: top left;
background-repeat: no-repeat;
}
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
}
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
}
.CodeMirror-lint-marker-multiple {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
background-repeat: no-repeat;
background-position: right bottom;
width: 100%; height: 100%;
}

View File

@@ -1,203 +0,0 @@
(function() {
"use strict";
var GUTTER_ID = "CodeMirror-lint-markers";
var SEVERITIES = /^(?:error|warning)$/;
function showTooltip(e, content) {
var tt = document.createElement("div");
tt.className = "CodeMirror-lint-tooltip";
tt.appendChild(content.cloneNode(true));
document.body.appendChild(tt);
function position(e) {
if (!tt.parentNode) return CodeMirror.off(document, "mousemove", position);
tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + "px";
tt.style.left = (e.clientX + 5) + "px";
}
CodeMirror.on(document, "mousemove", position);
position(e);
if (tt.style.opacity != null) tt.style.opacity = 1;
return tt;
}
function rm(elt) {
if (elt.parentNode) elt.parentNode.removeChild(elt);
}
function hideTooltip(tt) {
if (!tt.parentNode) return;
if (tt.style.opacity == null) rm(tt);
tt.style.opacity = 0;
setTimeout(function() { rm(tt); }, 600);
}
function showTooltipFor(e, content, node) {
var tooltip = showTooltip(e, content);
function hide() {
CodeMirror.off(node, "mouseout", hide);
if (tooltip) { hideTooltip(tooltip); tooltip = null; }
}
var poll = setInterval(function() {
if (tooltip) for (var n = node;; n = n.parentNode) {
if (n == document.body) return;
if (!n) { hide(); break; }
}
if (!tooltip) return clearInterval(poll);
}, 400);
CodeMirror.on(node, "mouseout", hide);
}
function LintState(cm, options, hasGutter) {
this.marked = [];
this.options = options;
this.timeout = null;
this.hasGutter = hasGutter;
this.onMouseOver = function(e) { onMouseOver(cm, e); };
}
function parseOptions(cm, options) {
if (options instanceof Function) return {getAnnotations: options};
if (!options || options === true) options = {};
if (!options.getAnnotations) options.getAnnotations = cm.getHelper(CodeMirror.Pos(0, 0), "lint");
if (!options.getAnnotations) throw new Error("Required option 'getAnnotations' missing (lint addon)");
return options;
}
function clearMarks(cm) {
var state = cm.state.lint;
if (state.hasGutter) cm.clearGutter(GUTTER_ID);
for (var i = 0; i < state.marked.length; ++i)
state.marked[i].clear();
state.marked.length = 0;
}
function makeMarker(labels, severity, multiple, tooltips) {
var marker = document.createElement("div"), inner = marker;
marker.className = "CodeMirror-lint-marker-" + severity;
if (multiple) {
inner = marker.appendChild(document.createElement("div"));
inner.className = "CodeMirror-lint-marker-multiple";
}
if (tooltips != false) CodeMirror.on(inner, "mouseover", function(e) {
showTooltipFor(e, labels, inner);
});
return marker;
}
function getMaxSeverity(a, b) {
if (a == "error") return a;
else return b;
}
function groupByLine(annotations) {
var lines = [];
for (var i = 0; i < annotations.length; ++i) {
var ann = annotations[i], line = ann.from.line;
(lines[line] || (lines[line] = [])).push(ann);
}
return lines;
}
function annotationTooltip(ann) {
var severity = ann.severity;
if (!SEVERITIES.test(severity)) severity = "error";
var tip = document.createElement("div");
tip.className = "CodeMirror-lint-message-" + severity;
tip.appendChild(document.createTextNode(ann.message));
return tip;
}
function startLinting(cm) {
var state = cm.state.lint, options = state.options;
if (options.async)
options.getAnnotations(cm, updateLinting, options);
else
updateLinting(cm, options.getAnnotations(cm.getValue(), options.options));
}
function updateLinting(cm, annotationsNotSorted) {
clearMarks(cm);
var state = cm.state.lint, options = state.options;
var annotations = groupByLine(annotationsNotSorted);
for (var line = 0; line < annotations.length; ++line) {
var anns = annotations[line];
if (!anns) continue;
var maxSeverity = null;
var tipLabel = state.hasGutter && document.createDocumentFragment();
for (var i = 0; i < anns.length; ++i) {
var ann = anns[i];
var severity = ann.severity;
if (!SEVERITIES.test(severity)) severity = "error";
maxSeverity = getMaxSeverity(maxSeverity, severity);
if (options.formatAnnotation) ann = options.formatAnnotation(ann);
if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));
if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {
className: "CodeMirror-lint-mark-" + severity,
__annotation: ann
}));
}
if (state.hasGutter)
cm.setGutterMarker(line, GUTTER_ID, makeMarker(tipLabel, maxSeverity, anns.length > 1,
state.options.tooltips));
}
if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);
}
function onChange(cm) {
var state = cm.state.lint;
clearTimeout(state.timeout);
state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500);
}
function popupSpanTooltip(ann, e) {
var target = e.target || e.srcElement;
showTooltipFor(e, annotationTooltip(ann), target);
}
// When the mouseover fires, the cursor might not actually be over
// the character itself yet. These pairs of x,y offsets are used to
// probe a few nearby points when no suitable marked range is found.
var nearby = [0, 0, 0, 5, 0, -5, 5, 0, -5, 0];
function onMouseOver(cm, e) {
if (!/\bCodeMirror-lint-mark-/.test((e.target || e.srcElement).className)) return;
for (var i = 0; i < nearby.length; i += 2) {
var spans = cm.findMarksAt(cm.coordsChar({left: e.clientX + nearby[i],
top: e.clientY + nearby[i + 1]}));
for (var j = 0; j < spans.length; ++j) {
var span = spans[j], ann = span.__annotation;
if (ann) return popupSpanTooltip(ann, e);
}
}
}
function optionHandler(cm, val, old) {
if (old && old != CodeMirror.Init) {
clearMarks(cm);
cm.off("change", onChange);
CodeMirror.off(cm.getWrapperElement(), "mouseover", cm.state.lint.onMouseOver);
delete cm.state.lint;
}
if (val) {
var gutters = cm.getOption("gutters"), hasLintGutter = false;
for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;
var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter);
cm.on("change", onChange);
if (state.options.tooltips != false)
CodeMirror.on(cm.getWrapperElement(), "mouseover", state.onMouseOver);
startLinting(cm);
}
}
CodeMirror.defineOption("lintWith", false, optionHandler); // deprecated
CodeMirror.defineOption("lint", false, optionHandler); // deprecated
})();

View File

@@ -1,50 +0,0 @@
// From https://code.google.com/p/google-diff-match-patch/ , licensed under the Apache License 2.0
(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=0.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=0.5;this.Patch_Margin=4;this.Match_MaxBits=32}
diff_match_patch.prototype.diff_main=function(a,b,c,d){"undefined"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error("Null input. (diff_main)");if(a==b)return a?[[0,a]]:[];"undefined"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);var f=this.diff_commonSuffix(a,b),g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,
b,e,d);c&&a.unshift([0,c]);g&&a.push([0,g]);this.diff_cleanupMerge(a);return a};
diff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[1,b]];if(!b)return[[-1,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[1,e.substring(0,g)],[0,f],[1,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=-1),c):1==f.length?[[-1,a],[1,b]]:(e=this.diff_halfMatch_(a,b))?(f=e[0],a=e[1],g=e[2],b=e[3],e=e[4],f=this.diff_main(f,g,c,d),c=this.diff_main(a,b,c,d),f.concat([[0,e]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,
d):this.diff_bisect_(a,b,d)};
diff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([0,""]);for(var e=d=b=0,f="",g="";b<a.length;){switch(a[b][0]){case 1:e++;g+=a[b][1];break;case -1:d++;f+=a[b][1];break;case 0:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=d.length}d=e=0;g=f=""}b++}a.pop();return a};
diff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=f,h=2*f,j=Array(h),i=Array(h),k=0;k<h;k++)j[k]=-1,i[k]=-1;j[g+1]=0;i[g+1]=0;for(var k=d-e,q=0!=k%2,r=0,t=0,p=0,w=0,v=0;v<f&&!((new Date).getTime()>c);v++){for(var n=-v+r;n<=v-t;n+=2){var l=g+n,m;m=n==-v||n!=v&&j[l-1]<j[l+1]?j[l+1]:j[l-1]+1;for(var s=m-n;m<d&&s<e&&a.charAt(m)==b.charAt(s);)m++,s++;j[l]=m;if(m>d)t+=2;else if(s>e)r+=2;else if(q&&(l=g+k-n,0<=l&&l<h&&-1!=i[l])){var u=d-i[l];if(m>=
u)return this.diff_bisectSplit_(a,b,m,s,c)}}for(n=-v+p;n<=v-w;n+=2){l=g+n;u=n==-v||n!=v&&i[l-1]<i[l+1]?i[l+1]:i[l-1]+1;for(m=u-n;u<d&&m<e&&a.charAt(d-u-1)==b.charAt(e-m-1);)u++,m++;i[l]=u;if(u>d)w+=2;else if(m>e)p+=2;else if(!q&&(l=g+k-n,0<=l&&(l<h&&-1!=j[l])&&(m=j[l],s=g+m-l,u=d-u,m>=u)))return this.diff_bisectSplit_(a,b,m,s,c)}}return[[-1,a],[1,b]]};
diff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};
diff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b="",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf("\n",c);-1==f&&(f=a.length-1);var r=a.substring(c,f+1),c=f+1;(e.hasOwnProperty?e.hasOwnProperty(r):void 0!==e[r])?b+=String.fromCharCode(e[r]):(b+=String.fromCharCode(g),e[r]=g,d[g++]=r)}return b}var d=[],e={};d[0]="";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};
diff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join("")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};
diff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};
diff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;for(var d=0,e=1;;){var f=a.substring(c-e),f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};
diff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g="",h,j,n,l;-1!=(e=b.indexOf(d,e+1));){var m=f.diff_commonPrefix(a.substring(c),b.substring(e)),s=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<s+m&&(g=b.substring(e-s,e)+b.substring(e,e+m),h=a.substring(0,c-s),j=a.substring(c+m),n=b.substring(0,e-s),l=b.substring(e+m))}return 2*g.length>=a.length?[h,j,n,l,g]:null}if(0>=this.Diff_Timeout)return null;
var d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4)),d=c(d,e,Math.ceil(d.length/2)),h;if(!g&&!d)return null;h=d?g?g[4].length>d[4].length?g:d:d:g;var j;a.length>b.length?(g=h[0],d=h[1],e=h[2],j=h[3]):(e=h[0],j=h[1],g=h[2],d=h[3]);h=h[4];return[g,d,e,j,h]};
diff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,j=0,i=0;f<a.length;)0==a[f][0]?(c[d++]=f,g=j,h=i,i=j=0,e=a[f][1]):(1==a[f][0]?j+=a[f][1].length:i+=a[f][1].length,e&&(e.length<=Math.max(g,h)&&e.length<=Math.max(j,i))&&(a.splice(c[d-1],0,[-1,e]),a[c[d-1]+1][0]=1,d--,d--,f=0<d?c[d-1]:-1,i=j=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(-1==a[f-1][0]&&1==a[f][0]){b=a[f-1][1];c=a[f][1];
d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[0,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[0,b.substring(0,e)]),a[f-1][0]=1,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=-1,a[f+1][1]=b.substring(e),f++;f++}f++}};
diff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_),c=g&&c.match(diff_match_patch.linebreakRegex_),d=h&&d.match(diff_match_patch.linebreakRegex_),i=c&&a.match(diff_match_patch.blanklineEndRegex_),j=d&&b.match(diff_match_patch.blanklineStartRegex_);
return i||j?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(0==a[c-1][0]&&0==a[c+1][0]){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g)var h=e.substring(e.length-g),d=d.substring(0,d.length-g),e=h+e.substring(0,e.length-g),f=h+f;for(var g=d,h=e,j=f,i=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){var d=d+e.charAt(0),e=e.substring(1)+f.charAt(0),f=f.substring(1),k=b(d,e)+b(e,f);k>=i&&(i=k,g=d,h=e,j=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-1,1),c--),a[c][1]=
h,j?a[c+1][1]=j:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\s/;diff_match_patch.linebreakRegex_=/[\r\n]/;diff_match_patch.blanklineEndRegex_=/\n\r?\n$/;diff_match_patch.blanklineStartRegex_=/^\r?\n\r?\n/;
diff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,j=!1,i=!1;f<a.length;){if(0==a[f][0])a[f][1].length<this.Diff_EditCost&&(j||i)?(c[d++]=f,g=j,h=i,e=a[f][1]):(d=0,e=null),j=i=!1;else if(-1==a[f][0]?i=!0:j=!0,e&&(g&&h&&j&&i||e.length<this.Diff_EditCost/2&&3==g+h+j+i))a.splice(c[d-1],0,[-1,e]),a[c[d-1]+1][0]=1,d--,e=null,g&&h?(j=i=!0,d=0):(d--,f=0<d?c[d-1]:-1,j=i=!1),b=!0;f++}b&&this.diff_cleanupMerge(a)};
diff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([0,""]);for(var b=0,c=0,d=0,e="",f="",g;b<a.length;)switch(a[b][0]){case 1:d++;f+=a[b][1];b++;break;case -1:c++;e+=a[b][1];b++;break;case 0:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&0==a[b-c-d-1][0]?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[0,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-g)+a[b][1],f=f.substring(0,f.length-
g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[1,f]):0===d?a.splice(b-c,c+d,[-1,e]):a.splice(b-c-d,c+d,[-1,e],[1,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&0==a[b-1][0]?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=""}""===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)0==a[b-1][0]&&0==a[b+1][0]&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,a[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,
a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};diff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){1!==a[g][0]&&(c+=a[g][1].length);-1!==a[g][0]&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&-1===a[g][0]?f:f+(b-e)};
diff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\n/g,g=0;g<a.length;g++){var h=a[g][0],j=a[g][1],j=j.replace(c,"&amp;").replace(d,"&lt;").replace(e,"&gt;").replace(f,"&para;<br>");switch(h){case 1:b[g]='<ins style="background:#e6ffe6;">'+j+"</ins>";break;case -1:b[g]='<del style="background:#ffe6e6;">'+j+"</del>";break;case 0:b[g]="<span>"+j+"</span>"}}return b.join("")};
diff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)1!==a[c][0]&&(b[c]=a[c][1]);return b.join("")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)-1!==a[c][0]&&(b[c]=a[c][1]);return b.join("")};diff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][0],g=a[e][1];switch(f){case 1:c+=g.length;break;case -1:d+=g.length;break;case 0:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};
diff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case 1:b[c]="+"+encodeURI(a[c][1]);break;case -1:b[c]="-"+a[c][1].length;break;case 0:b[c]="="+a[c][1].length}return b.join("\t").replace(/%20/g," ")};
diff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case "+":try{c[d++]=[1,decodeURI(h)]}catch(j){throw Error("Illegal escape in diff_fromDelta: "+h);}break;case "-":case "=":var i=parseInt(h,10);if(isNaN(i)||0>i)throw Error("Invalid number in diff_fromDelta: "+h);h=a.substring(e,e+=i);"="==f[g].charAt(0)?c[d++]=[0,h]:c[d++]=[-1,h];break;default:if(f[g])throw Error("Invalid diff operation in diff_fromDelta: "+
f[g]);}}if(e!=a.length)throw Error("Delta length ("+e+") does not equal source text length ("+a.length+").");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error("Null input. (match_main)");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};
diff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return!f.Match_Distance?g?1:e:e+g/f.Match_Distance}if(b.length>this.Match_MaxBits)throw Error("Pattern too long for this browser.");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));for(var j=1<<b.length-1,h=-1,i,k,q=b.length+a.length,r,t=0;t<b.length;t++){i=0;for(k=q;i<k;)d(t,c+
k)<=g?i=k:q=k,k=Math.floor((q-i)/2+i);q=k;i=Math.max(1,c-k+1);var p=Math.min(c+k,a.length)+b.length;k=Array(p+2);for(k[p+1]=(1<<t)-1;p>=i;p--){var w=e[a.charAt(p-1)];k[p]=0===t?(k[p+1]<<1|1)&w:(k[p+1]<<1|1)&w|((r[p+1]|r[p])<<1|1)|r[p+1];if(k[p]&j&&(w=d(t,p-1),w<=g))if(g=w,h=p-1,h>c)i=Math.max(1,2*c-h);else break}if(d(t+1,c)>g)break;r=k}return h};
diff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};
diff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([0,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([0,d]);a.start1-=c.length;a.start2-=c.length;a.length1+=
c.length+d.length;a.length2+=c.length+d.length}};
diff_match_patch.prototype.patch_make=function(a,b,c){var d;if("string"==typeof a&&"string"==typeof b&&"undefined"==typeof c)d=a,b=this.diff_main(d,b,!0),2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b));else if(a&&"object"==typeof a&&"undefined"==typeof b&&"undefined"==typeof c)b=a,d=this.diff_text1(b);else if("string"==typeof a&&b&&"object"==typeof b&&"undefined"==typeof c)d=a;else if("string"==typeof a&&"string"==typeof b&&c&&"object"==typeof c)d=a,b=c;else throw Error("Unknown call format to patch_make.");
if(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,j=0;j<b.length;j++){var i=b[j][0],k=b[j][1];!e&&0!==i&&(a.start1=f,a.start2=g);switch(i){case 1:a.diffs[e++]=b[j];a.length2+=k.length;d=d.substring(0,g)+k+d.substring(g);break;case -1:a.length1+=k.length;a.diffs[e++]=b[j];d=d.substring(0,g)+d.substring(g+k.length);break;case 0:k.length<=2*this.Patch_Margin&&e&&b.length!=j+1?(a.diffs[e++]=b[j],a.length1+=k.length,a.length2+=k.length):k.length>=2*this.Patch_Margin&&
e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}1!==i&&(f+=k.length);-1!==i&&(g+=k.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};diff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};
diff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),j,i=-1;if(h.length>this.Match_MaxBits){if(j=this.match_main(b,h.substring(0,this.Match_MaxBits),g),-1!=j&&(i=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==i||j>=i))j=-1}else j=this.match_main(b,h,g);
if(-1==j)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=j-g,g=-1==i?b.substring(j,j+h.length):b.substring(j,i+this.Match_MaxBits),h==g)b=b.substring(0,j)+this.diff_text2(a[f].diffs)+b.substring(j+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);for(var h=0,k,i=0;i<a[f].diffs.length;i++){var q=a[f].diffs[i];0!==q[0]&&(k=this.diff_xIndex(g,h));1===q[0]?b=b.substring(0,
j+k)+q[1]+b.substring(j+k):-1===q[0]&&(b=b.substring(0,j+k)+b.substring(j+this.diff_xIndex(g,h+q[1].length)));-1!==q[0]&&(h+=q[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};
diff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c="",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;var d=a[0],e=d.diffs;if(0==e.length||0!=e[0][0])e.unshift([0,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||0!=e[e.length-1][0]?(e.push([0,
c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};
diff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g="";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,j=!0;h.start1=e-g.length;h.start2=f-g.length;""!==g&&(h.length1=h.length2=g.length,h.diffs.push([0,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){var g=d.diffs[0][0],i=d.diffs[0][1];1===g?(h.length2+=i.length,f+=i.length,h.diffs.push(d.diffs.shift()),
j=!1):-1===g&&1==h.diffs.length&&0==h.diffs[0][0]&&i.length>2*b?(h.length1+=i.length,e+=i.length,j=!1,h.diffs.push([g,i]),d.diffs.shift()):(i=i.substring(0,b-h.length1-this.Patch_Margin),h.length1+=i.length,e+=i.length,0===g?(h.length2+=i.length,f+=i.length):j=!1,h.diffs.push([g,i]),i==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(i.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);i=this.diff_text1(d.diffs).substring(0,this.Patch_Margin);""!==i&&
(h.length1+=i.length,h.length2+=i.length,0!==h.diffs.length&&0===h.diffs[h.diffs.length-1][0]?h.diffs[h.diffs.length-1][1]+=i:h.diffs.push([0,i]));j||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join("")};
diff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split("\n");for(var c=0,d=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error("Invalid patch string: "+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);""===e[2]?(f.start1--,f.length1=1):"0"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);""===e[4]?(f.start2--,f.length2=1):"0"==e[4]?f.length2=0:(f.start2--,f.length2=
parseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error("Illegal escape in patch_fromText: "+g);}if("-"==e)f.diffs.push([-1,g]);else if("+"==e)f.diffs.push([1,g]);else if(" "==e)f.diffs.push([0,g]);else if("@"==e)break;else if(""!==e)throw Error('Invalid patch mode "'+e+'" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};
diff_match_patch.patch_obj.prototype.toString=function(){var a,b;a=0===this.length1?this.start1+",0":1==this.length1?this.start1+1:this.start1+1+","+this.length1;b=0===this.length2?this.start2+",0":1==this.length2?this.start2+1:this.start2+1+","+this.length2;a=["@@ -"+a+" +"+b+" @@\n"];var c;for(b=0;b<this.diffs.length;b++){switch(this.diffs[b][0]){case 1:c="+";break;case -1:c="-";break;case 0:c=" "}a[b+1]=c+encodeURI(this.diffs[b][1])+"\n"}return a.join("").replace(/%20/g," ")};
this.diff_match_patch=diff_match_patch;this.DIFF_DELETE=-1;this.DIFF_INSERT=1;this.DIFF_EQUAL=0;})()

View File

@@ -1,92 +0,0 @@
.CodeMirror-merge {
position: relative;
border: 1px solid #ddd;
white-space: pre;
}
.CodeMirror-merge, .CodeMirror-merge .CodeMirror {
height: 350px;
}
.CodeMirror-merge-2pane .CodeMirror-merge-pane { width: 47%; }
.CodeMirror-merge-2pane .CodeMirror-merge-gap { width: 6%; }
.CodeMirror-merge-3pane .CodeMirror-merge-pane { width: 31%; }
.CodeMirror-merge-3pane .CodeMirror-merge-gap { width: 3.5%; }
.CodeMirror-merge-pane {
display: inline-block;
white-space: normal;
vertical-align: top;
}
.CodeMirror-merge-pane-rightmost {
position: absolute;
right: 0px;
z-index: 1;
}
.CodeMirror-merge-gap {
z-index: 2;
display: inline-block;
height: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
position: relative;
background: #f8f8f8;
}
.CodeMirror-merge-scrolllock-wrap {
position: absolute;
bottom: 0; left: 50%;
}
.CodeMirror-merge-scrolllock {
position: relative;
left: -50%;
cursor: pointer;
color: #555;
line-height: 1;
}
.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right {
position: absolute;
left: 0; top: 0;
right: 0; bottom: 0;
line-height: 1;
}
.CodeMirror-merge-copy {
position: absolute;
cursor: pointer;
color: #44c;
}
.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy { left: 2px; }
.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy { right: 2px; }
.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}
.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}
.CodeMirror-merge-r-chunk { background: #ffffe0; }
.CodeMirror-merge-r-chunk-start { border-top: 1px solid #ee8; }
.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #ee8; }
.CodeMirror-merge-r-connect { fill: #ffffe0; stroke: #ee8; stroke-width: 1px; }
.CodeMirror-merge-l-chunk { background: #eef; }
.CodeMirror-merge-l-chunk-start { border-top: 1px solid #88e; }
.CodeMirror-merge-l-chunk-end { border-bottom: 1px solid #88e; }
.CodeMirror-merge-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px; }
.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk { background: #dfd; }
.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start { border-top: 1px solid #4e4; }
.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #4e4; }

View File

@@ -1,479 +0,0 @@
(function() {
"use strict";
// declare global: diff_match_patch, DIFF_INSERT, DIFF_DELETE, DIFF_EQUAL
var Pos = CodeMirror.Pos;
var svgNS = "http://www.w3.org/2000/svg";
function DiffView(mv, type) {
this.mv = mv;
this.type = type;
this.classes = type == "left"
? {chunk: "CodeMirror-merge-l-chunk",
start: "CodeMirror-merge-l-chunk-start",
end: "CodeMirror-merge-l-chunk-end",
insert: "CodeMirror-merge-l-inserted",
del: "CodeMirror-merge-l-deleted",
connect: "CodeMirror-merge-l-connect"}
: {chunk: "CodeMirror-merge-r-chunk",
start: "CodeMirror-merge-r-chunk-start",
end: "CodeMirror-merge-r-chunk-end",
insert: "CodeMirror-merge-r-inserted",
del: "CodeMirror-merge-r-deleted",
connect: "CodeMirror-merge-r-connect"};
}
DiffView.prototype = {
constructor: DiffView,
init: function(pane, orig, options) {
this.edit = this.mv.edit;
this.orig = CodeMirror(pane, copyObj({value: orig, readOnly: true}, copyObj(options)));
this.diff = getDiff(asString(orig), asString(options.value));
this.diffOutOfDate = false;
this.showDifferences = options.showDifferences !== false;
this.forceUpdate = registerUpdate(this);
setScrollLock(this, true, false);
registerScroll(this);
},
setShowDifferences: function(val) {
val = val !== false;
if (val != this.showDifferences) {
this.showDifferences = val;
this.forceUpdate("full");
}
}
};
function registerUpdate(dv) {
var edit = {from: 0, to: 0, marked: []};
var orig = {from: 0, to: 0, marked: []};
var debounceChange;
function update(mode) {
if (mode == "full") {
if (dv.svg) clear(dv.svg);
clear(dv.copyButtons);
clearMarks(dv.edit, edit.marked, dv.classes);
clearMarks(dv.orig, orig.marked, dv.classes);
edit.from = edit.to = orig.from = orig.to = 0;
}
if (dv.diffOutOfDate) {
dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue());
dv.diffOutOfDate = false;
CodeMirror.signal(dv.edit, "updateDiff", dv.diff);
}
if (dv.showDifferences) {
updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes);
updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes);
}
drawConnectors(dv);
}
function set(slow) {
clearTimeout(debounceChange);
debounceChange = setTimeout(update, slow == true ? 250 : 100);
}
function change() {
if (!dv.diffOutOfDate) {
dv.diffOutOfDate = true;
edit.from = edit.to = orig.from = orig.to = 0;
}
set(true);
}
dv.edit.on("change", change);
dv.orig.on("change", change);
dv.edit.on("viewportChange", set);
dv.orig.on("viewportChange", set);
update();
return update;
}
function registerScroll(dv) {
dv.edit.on("scroll", function() {
syncScroll(dv, DIFF_INSERT) && drawConnectors(dv);
});
dv.orig.on("scroll", function() {
syncScroll(dv, DIFF_DELETE) && drawConnectors(dv);
});
}
function syncScroll(dv, type) {
// Change handler will do a refresh after a timeout when diff is out of date
if (dv.diffOutOfDate) return false;
if (!dv.lockScroll) return true;
var editor, other, now = +new Date;
if (type == DIFF_INSERT) { editor = dv.edit; other = dv.orig; }
else { editor = dv.orig; other = dv.edit; }
// Don't take action if the position of this editor was recently set
// (to prevent feedback loops)
if (editor.state.scrollSetBy == dv && (editor.state.scrollSetAt || 0) + 50 > now) return false;
var sInfo = editor.getScrollInfo(), halfScreen = .5 * sInfo.clientHeight, midY = sInfo.top + halfScreen;
var mid = editor.lineAtHeight(midY, "local");
var around = chunkBoundariesAround(dv.diff, mid, type == DIFF_INSERT);
var off = getOffsets(editor, type == DIFF_INSERT ? around.edit : around.orig);
var offOther = getOffsets(other, type == DIFF_INSERT ? around.orig : around.edit);
var ratio = (midY - off.top) / (off.bot - off.top);
var targetPos = (offOther.top - halfScreen) + ratio * (offOther.bot - offOther.top);
var botDist, mix;
// Some careful tweaking to make sure no space is left out of view
// when scrolling to top or bottom.
if (targetPos > sInfo.top && (mix = sInfo.top / halfScreen) < 1) {
targetPos = targetPos * mix + sInfo.top * (1 - mix);
} else if ((botDist = sInfo.height - sInfo.clientHeight - sInfo.top) < halfScreen) {
var otherInfo = other.getScrollInfo();
var botDistOther = otherInfo.height - otherInfo.clientHeight - targetPos;
if (botDistOther > botDist && (mix = botDist / halfScreen) < 1)
targetPos = targetPos * mix + (otherInfo.height - otherInfo.clientHeight - botDist) * (1 - mix);
}
other.scrollTo(sInfo.left, targetPos);
other.state.scrollSetAt = now;
other.state.scrollSetBy = dv;
return true;
}
function getOffsets(editor, around) {
var bot = around.after;
if (bot == null) bot = editor.lastLine() + 1;
return {top: editor.heightAtLine(around.before || 0, "local"),
bot: editor.heightAtLine(bot, "local")};
}
function setScrollLock(dv, val, action) {
dv.lockScroll = val;
if (val && action != false) syncScroll(dv, DIFF_INSERT) && drawConnectors(dv);
dv.lockButton.innerHTML = val ? "\u21db\u21da" : "\u21db&nbsp;&nbsp;\u21da";
}
// Updating the marks for editor content
function clearMarks(editor, arr, classes) {
for (var i = 0; i < arr.length; ++i) {
var mark = arr[i];
if (mark instanceof CodeMirror.TextMarker) {
mark.clear();
} else {
editor.removeLineClass(mark, "background", classes.chunk);
editor.removeLineClass(mark, "background", classes.start);
editor.removeLineClass(mark, "background", classes.end);
}
}
arr.length = 0;
}
// FIXME maybe add a margin around viewport to prevent too many updates
function updateMarks(editor, diff, state, type, classes) {
var vp = editor.getViewport();
editor.operation(function() {
if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {
clearMarks(editor, state.marked, classes);
markChanges(editor, diff, type, state.marked, vp.from, vp.to, classes);
state.from = vp.from; state.to = vp.to;
} else {
if (vp.from < state.from) {
markChanges(editor, diff, type, state.marked, vp.from, state.from, classes);
state.from = vp.from;
}
if (vp.to > state.to) {
markChanges(editor, diff, type, state.marked, state.to, vp.to, classes);
state.to = vp.to;
}
}
});
}
function markChanges(editor, diff, type, marks, from, to, classes) {
var pos = Pos(0, 0);
var top = Pos(from, 0), bot = editor.clipPos(Pos(to - 1));
var cls = type == DIFF_DELETE ? classes.del : classes.insert;
function markChunk(start, end) {
var bfrom = Math.max(from, start), bto = Math.min(to, end);
for (var i = bfrom; i < bto; ++i) {
var line = editor.addLineClass(i, "background", classes.chunk);
if (i == start) editor.addLineClass(line, "background", classes.start);
if (i == end - 1) editor.addLineClass(line, "background", classes.end);
marks.push(line);
}
// When the chunk is empty, make sure a horizontal line shows up
if (start == end && bfrom == end && bto == end) {
if (bfrom)
marks.push(editor.addLineClass(bfrom - 1, "background", classes.end));
else
marks.push(editor.addLineClass(bfrom, "background", classes.start));
}
}
var chunkStart = 0;
for (var i = 0; i < diff.length; ++i) {
var part = diff[i], tp = part[0], str = part[1];
if (tp == DIFF_EQUAL) {
var cleanFrom = pos.line + (startOfLineClean(diff, i) ? 0 : 1);
moveOver(pos, str);
var cleanTo = pos.line + (endOfLineClean(diff, i) ? 1 : 0);
if (cleanTo > cleanFrom) {
if (i) markChunk(chunkStart, cleanFrom);
chunkStart = cleanTo;
}
} else {
if (tp == type) {
var end = moveOver(pos, str, true);
var a = posMax(top, pos), b = posMin(bot, end);
if (!posEq(a, b))
marks.push(editor.markText(a, b, {className: cls}));
pos = end;
}
}
}
if (chunkStart <= pos.line) markChunk(chunkStart, pos.line + 1);
}
// Updating the gap between editor and original
function drawConnectors(dv) {
if (!dv.showDifferences) return;
if (dv.svg) {
clear(dv.svg);
var w = dv.gap.offsetWidth;
attrs(dv.svg, "width", w, "height", dv.gap.offsetHeight);
}
clear(dv.copyButtons);
var flip = dv.type == "left";
var vpEdit = dv.edit.getViewport(), vpOrig = dv.orig.getViewport();
var sTopEdit = dv.edit.getScrollInfo().top, sTopOrig = dv.orig.getScrollInfo().top;
iterateChunks(dv.diff, function(topOrig, botOrig, topEdit, botEdit) {
if (topEdit > vpEdit.to || botEdit < vpEdit.from ||
topOrig > vpOrig.to || botOrig < vpOrig.from)
return;
var topLpx = dv.orig.heightAtLine(topOrig, "local") - sTopOrig, top = topLpx;
if (dv.svg) {
var topRpx = dv.edit.heightAtLine(topEdit, "local") - sTopEdit;
if (flip) { var tmp = topLpx; topLpx = topRpx; topRpx = tmp; }
var botLpx = dv.orig.heightAtLine(botOrig, "local") - sTopOrig;
var botRpx = dv.edit.heightAtLine(botEdit, "local") - sTopEdit;
if (flip) { var tmp = botLpx; botLpx = botRpx; botRpx = tmp; }
var curveTop = " C " + w/2 + " " + topRpx + " " + w/2 + " " + topLpx + " " + (w + 2) + " " + topLpx;
var curveBot = " C " + w/2 + " " + botLpx + " " + w/2 + " " + botRpx + " -1 " + botRpx;
attrs(dv.svg.appendChild(document.createElementNS(svgNS, "path")),
"d", "M -1 " + topRpx + curveTop + " L " + (w + 2) + " " + botLpx + curveBot + " z",
"class", dv.classes.connect);
}
var copy = dv.copyButtons.appendChild(elt("div", dv.type == "left" ? "\u21dd" : "\u21dc",
"CodeMirror-merge-copy"));
copy.title = "Revert chunk";
copy.chunk = {topEdit: topEdit, botEdit: botEdit, topOrig: topOrig, botOrig: botOrig};
copy.style.top = top + "px";
});
}
function copyChunk(dv, chunk) {
if (dv.diffOutOfDate) return;
dv.edit.replaceRange(dv.orig.getRange(Pos(chunk.topOrig, 0), Pos(chunk.botOrig, 0)),
Pos(chunk.topEdit, 0), Pos(chunk.botEdit, 0));
}
// Merge view, containing 0, 1, or 2 diff views.
var MergeView = CodeMirror.MergeView = function(node, options) {
if (!(this instanceof MergeView)) return new MergeView(node, options);
var origLeft = options.origLeft, origRight = options.origRight == null ? options.orig : options.origRight;
var hasLeft = origLeft != null, hasRight = origRight != null;
var panes = 1 + (hasLeft ? 1 : 0) + (hasRight ? 1 : 0);
var wrap = [], left = this.left = null, right = this.right = null;
if (hasLeft) {
left = this.left = new DiffView(this, "left");
var leftPane = elt("div", null, "CodeMirror-merge-pane");
wrap.push(leftPane);
wrap.push(buildGap(left));
}
var editPane = elt("div", null, "CodeMirror-merge-pane");
wrap.push(editPane);
if (hasRight) {
right = this.right = new DiffView(this, "right");
wrap.push(buildGap(right));
var rightPane = elt("div", null, "CodeMirror-merge-pane");
wrap.push(rightPane);
}
(hasRight ? rightPane : editPane).className += " CodeMirror-merge-pane-rightmost";
wrap.push(elt("div", null, null, "height: 0; clear: both;"));
var wrapElt = this.wrap = node.appendChild(elt("div", wrap, "CodeMirror-merge CodeMirror-merge-" + panes + "pane"));
this.edit = CodeMirror(editPane, copyObj(options));
if (left) left.init(leftPane, origLeft, options);
if (right) right.init(rightPane, origRight, options);
var onResize = function() {
if (left) drawConnectors(left);
if (right) drawConnectors(right);
};
CodeMirror.on(window, "resize", onResize);
var resizeInterval = setInterval(function() {
for (var p = wrapElt.parentNode; p && p != document.body; p = p.parentNode) {}
if (!p) { clearInterval(resizeInterval); CodeMirror.off(window, "resize", onResize); }
}, 5000);
};
function buildGap(dv) {
var lock = dv.lockButton = elt("div", null, "CodeMirror-merge-scrolllock");
lock.title = "Toggle locked scrolling";
var lockWrap = elt("div", [lock], "CodeMirror-merge-scrolllock-wrap");
CodeMirror.on(lock, "click", function() { setScrollLock(dv, !dv.lockScroll); });
dv.copyButtons = elt("div", null, "CodeMirror-merge-copybuttons-" + dv.type);
CodeMirror.on(dv.copyButtons, "click", function(e) {
var node = e.target || e.srcElement;
if (node.chunk) copyChunk(dv, node.chunk);
});
var gapElts = [dv.copyButtons, lockWrap];
var svg = document.createElementNS && document.createElementNS(svgNS, "svg");
if (svg && !svg.createSVGRect) svg = null;
dv.svg = svg;
if (svg) gapElts.push(svg);
return dv.gap = elt("div", gapElts, "CodeMirror-merge-gap");
}
MergeView.prototype = {
constuctor: MergeView,
editor: function() { return this.edit; },
rightOriginal: function() { return this.right && this.right.orig; },
leftOriginal: function() { return this.left && this.left.orig; },
setShowDifferences: function(val) {
if (this.right) this.right.setShowDifferences(val);
if (this.left) this.left.setShowDifferences(val);
}
};
function asString(obj) {
if (typeof obj == "string") return obj;
else return obj.getValue();
}
// Operations on diffs
var dmp = new diff_match_patch();
function getDiff(a, b) {
var diff = dmp.diff_main(a, b);
dmp.diff_cleanupSemantic(diff);
// The library sometimes leaves in empty parts, which confuse the algorithm
for (var i = 0; i < diff.length; ++i) {
var part = diff[i];
if (!part[1]) {
diff.splice(i--, 1);
} else if (i && diff[i - 1][0] == part[0]) {
diff.splice(i--, 1);
diff[i][1] += part[1];
}
}
return diff;
}
function iterateChunks(diff, f) {
var startEdit = 0, startOrig = 0;
var edit = Pos(0, 0), orig = Pos(0, 0);
for (var i = 0; i < diff.length; ++i) {
var part = diff[i], tp = part[0];
if (tp == DIFF_EQUAL) {
var startOff = startOfLineClean(diff, i) ? 0 : 1;
var cleanFromEdit = edit.line + startOff, cleanFromOrig = orig.line + startOff;
moveOver(edit, part[1], null, orig);
var endOff = endOfLineClean(diff, i) ? 1 : 0;
var cleanToEdit = edit.line + endOff, cleanToOrig = orig.line + endOff;
if (cleanToEdit > cleanFromEdit) {
if (i) f(startOrig, cleanFromOrig, startEdit, cleanFromEdit);
startEdit = cleanToEdit; startOrig = cleanToOrig;
}
} else {
moveOver(tp == DIFF_INSERT ? edit : orig, part[1]);
}
}
if (startEdit <= edit.line || startOrig <= orig.line)
f(startOrig, orig.line + 1, startEdit, edit.line + 1);
}
function endOfLineClean(diff, i) {
if (i == diff.length - 1) return true;
var next = diff[i + 1][1];
if (next.length == 1 || next.charCodeAt(0) != 10) return false;
if (i == diff.length - 2) return true;
next = diff[i + 2][1];
return next.length > 1 && next.charCodeAt(0) == 10;
}
function startOfLineClean(diff, i) {
if (i == 0) return true;
var last = diff[i - 1][1];
if (last.charCodeAt(last.length - 1) != 10) return false;
if (i == 1) return true;
last = diff[i - 2][1];
return last.charCodeAt(last.length - 1) == 10;
}
function chunkBoundariesAround(diff, n, nInEdit) {
var beforeE, afterE, beforeO, afterO;
iterateChunks(diff, function(fromOrig, toOrig, fromEdit, toEdit) {
var fromLocal = nInEdit ? fromEdit : fromOrig;
var toLocal = nInEdit ? toEdit : toOrig;
if (afterE == null) {
if (fromLocal > n) { afterE = fromEdit; afterO = fromOrig; }
else if (toLocal > n) { afterE = toEdit; afterO = toOrig; }
}
if (toLocal <= n) { beforeE = toEdit; beforeO = toOrig; }
else if (fromLocal <= n) { beforeE = fromEdit; beforeO = fromOrig; }
});
return {edit: {before: beforeE, after: afterE}, orig: {before: beforeO, after: afterO}};
}
// General utilities
function elt(tag, content, className, style) {
var e = document.createElement(tag);
if (className) e.className = className;
if (style) e.style.cssText = style;
if (typeof content == "string") e.appendChild(document.createTextNode(content));
else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]);
return e;
}
function clear(node) {
for (var count = node.childNodes.length; count > 0; --count)
node.removeChild(node.firstChild);
}
function attrs(elt) {
for (var i = 1; i < arguments.length; i += 2)
elt.setAttribute(arguments[i], arguments[i+1]);
}
function copyObj(obj, target) {
if (!target) target = {};
for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] = obj[prop];
return target;
}
function moveOver(pos, str, copy, other) {
var out = copy ? Pos(pos.line, pos.ch) : pos, at = 0;
for (;;) {
var nl = str.indexOf("\n", at);
if (nl == -1) break;
++out.line;
if (other) ++other.line;
at = nl + 1;
}
out.ch = (at ? 0 : out.ch) + (str.length - at);
if (other) other.ch = (at ? 0 : other.ch) + (str.length - at);
return out;
}
function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ? a : b; }
function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ? a : b; }
function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }
})();

View File

@@ -1,4 +1,14 @@
(function() {
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), "cjs");
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], function(CM) { mod(CM, "amd"); });
else // Plain browser env
mod(CodeMirror, "plain");
})(function(CodeMirror, env) {
if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js";
var loading = {};
@@ -25,21 +35,24 @@
if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont);
if (loading.hasOwnProperty(mode)) return loading[mode].push(cont);
var script = document.createElement("script");
script.src = CodeMirror.modeURL.replace(/%N/g, mode);
var others = document.getElementsByTagName("script")[0];
others.parentNode.insertBefore(script, others);
var list = loading[mode] = [cont];
var count = 0, poll = setInterval(function() {
if (++count > 100) return clearInterval(poll);
if (CodeMirror.modes.hasOwnProperty(mode)) {
clearInterval(poll);
loading[mode] = null;
var file = CodeMirror.modeURL.replace(/%N/g, mode);
if (env == "plain") {
var script = document.createElement("script");
script.src = file;
var others = document.getElementsByTagName("script")[0];
var list = loading[mode] = [cont];
CodeMirror.on(script, "load", function() {
ensureDeps(mode, function() {
for (var i = 0; i < list.length; ++i) list[i]();
});
}
}, 200);
});
others.parentNode.insertBefore(script, others);
} else if (env == "cjs") {
require(file);
cont();
} else if (env == "amd") {
requirejs([file], cont);
}
};
CodeMirror.autoLoadMode = function(instance, mode) {
@@ -48,4 +61,4 @@
instance.setOption("mode", instance.getOption("mode"));
});
};
}());
});

View File

@@ -1,3 +1,16 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.multiplexingMode = function(outer /*, others */) {
// Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects
var others = Array.prototype.slice.call(arguments, 1);
@@ -101,3 +114,5 @@ CodeMirror.multiplexingMode = function(outer /*, others */) {
}
};
};
});

View File

@@ -1,3 +1,6 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function() {
CodeMirror.defineMode("markdown_with_stex", function(){
var inner = CodeMirror.getMode({}, "stex");

View File

@@ -1,20 +1,34 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
// Utility function that allows modes to be combined. The mode given
// as the base argument takes care of most of the normal mode
// functionality, but a second (typically simple) mode is used, which
// can override the style of text. Both modes get to parse all of the
// text, but when both assign a non-null style to a piece of code, the
// overlay wins, unless the combine argument was true, in which case
// the styles are combined.
// overlay wins, unless the combine argument was true and not overridden,
// or state.overlay.combineTokens was true, in which case the styles are
// combined.
// overlayParser is the old, deprecated name
CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, combine) {
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.overlayMode = function(base, overlay, combine) {
return {
startState: function() {
return {
base: CodeMirror.startState(base),
overlay: CodeMirror.startState(overlay),
basePos: 0, baseCur: null,
overlayPos: 0, overlayCur: null
overlayPos: 0, overlayCur: null,
streamSeen: null
};
},
copyState: function(state) {
@@ -27,6 +41,12 @@ CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, comb
},
token: function(stream, state) {
if (stream != state.streamSeen ||
Math.min(state.basePos, state.overlayPos) < stream.start) {
state.streamSeen = stream;
state.basePos = state.overlayPos = stream.start;
}
if (stream.start == state.basePos) {
state.baseCur = base.token(stream, state.base);
state.basePos = stream.pos;
@@ -37,10 +57,14 @@ CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, comb
state.overlayPos = stream.pos;
}
stream.pos = Math.min(state.basePos, state.overlayPos);
if (stream.eol()) state.basePos = state.overlayPos = 0;
// state.overlay.combineTokens always takes precedence over combine,
// unless set to null
if (state.overlayCur == null) return state.baseCur;
if (state.baseCur != null && combine) return state.baseCur + " " + state.overlayCur;
else if (state.baseCur != null &&
state.overlay.combineTokens ||
combine && state.overlay.combineTokens == null)
return state.baseCur + " " + state.overlayCur;
else return state.overlayCur;
},
@@ -57,3 +81,5 @@ CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, comb
}
};
};
});

View File

@@ -0,0 +1,213 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineSimpleMode = function(name, states) {
CodeMirror.defineMode(name, function(config) {
return CodeMirror.simpleMode(config, states);
});
};
CodeMirror.simpleMode = function(config, states) {
ensureState(states, "start");
var states_ = {}, meta = states.meta || {}, hasIndentation = false;
for (var state in states) if (state != meta && states.hasOwnProperty(state)) {
var list = states_[state] = [], orig = states[state];
for (var i = 0; i < orig.length; i++) {
var data = orig[i];
list.push(new Rule(data, states));
if (data.indent || data.dedent) hasIndentation = true;
}
}
var mode = {
startState: function() {
return {state: "start", pending: null,
local: null, localState: null,
indent: hasIndentation ? [] : null};
},
copyState: function(state) {
var s = {state: state.state, pending: state.pending,
local: state.local, localState: null,
indent: state.indent && state.indent.slice(0)};
if (state.localState)
s.localState = CodeMirror.copyState(state.local.mode, state.localState);
if (state.stack)
s.stack = state.stack.slice(0);
for (var pers = state.persistentStates; pers; pers = pers.next)
s.persistentStates = {mode: pers.mode,
spec: pers.spec,
state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),
next: s.persistentStates};
return s;
},
token: tokenFunction(states_, config),
innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },
indent: indentFunction(states_, meta)
};
if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))
mode[prop] = meta[prop];
return mode;
};
function ensureState(states, name) {
if (!states.hasOwnProperty(name))
throw new Error("Undefined state " + name + "in simple mode");
}
function toRegex(val, caret) {
if (!val) return /(?:)/;
var flags = "";
if (val instanceof RegExp) {
if (val.ignoreCase) flags = "i";
val = val.source;
} else {
val = String(val);
}
return new RegExp((caret === false ? "" : "^") + "(?:" + val + ")", flags);
}
function asToken(val) {
if (!val) return null;
if (typeof val == "string") return val.replace(/\./g, " ");
var result = [];
for (var i = 0; i < val.length; i++)
result.push(val[i] && val[i].replace(/\./g, " "));
return result;
}
function Rule(data, states) {
if (data.next || data.push) ensureState(states, data.next || data.push);
this.regex = toRegex(data.regex);
this.token = asToken(data.token);
this.data = data;
}
function tokenFunction(states, config) {
return function(stream, state) {
if (state.pending) {
var pend = state.pending.shift();
if (state.pending.length == 0) state.pending = null;
stream.pos += pend.text.length;
return pend.token;
}
if (state.local) {
if (state.local.end && stream.match(state.local.end)) {
var tok = state.local.endToken || null;
state.local = state.localState = null;
return tok;
} else {
var tok = state.local.mode.token(stream, state.localState), m;
if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))
stream.pos = stream.start + m.index;
return tok;
}
}
var curState = states[state.state];
for (var i = 0; i < curState.length; i++) {
var rule = curState[i];
var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);
if (matches) {
if (rule.data.next) {
state.state = rule.data.next;
} else if (rule.data.push) {
(state.stack || (state.stack = [])).push(state.state);
state.state = rule.data.push;
} else if (rule.data.pop && state.stack && state.stack.length) {
state.state = state.stack.pop();
}
if (rule.data.mode)
enterLocalMode(config, state, rule.data.mode, rule.token);
if (rule.data.indent)
state.indent.push(stream.indentation() + config.indentUnit);
if (rule.data.dedent)
state.indent.pop();
if (matches.length > 2) {
state.pending = [];
for (var j = 2; j < matches.length; j++)
if (matches[j])
state.pending.push({text: matches[j], token: rule.token[j - 1]});
stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));
return rule.token[0];
} else if (rule.token && rule.token.join) {
return rule.token[0];
} else {
return rule.token;
}
}
}
stream.next();
return null;
};
}
function cmp(a, b) {
if (a === b) return true;
if (!a || typeof a != "object" || !b || typeof b != "object") return false;
var props = 0;
for (var prop in a) if (a.hasOwnProperty(prop)) {
if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;
props++;
}
for (var prop in b) if (b.hasOwnProperty(prop)) props--;
return props == 0;
}
function enterLocalMode(config, state, spec, token) {
var pers;
if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)
if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;
var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);
var lState = pers ? pers.state : CodeMirror.startState(mode);
if (spec.persistent && !pers)
state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};
state.localState = lState;
state.local = {mode: mode,
end: spec.end && toRegex(spec.end),
endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),
endToken: token && token.join ? token[token.length - 1] : token};
}
function indexOf(val, arr) {
for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;
}
function indentFunction(states, meta) {
return function(state, textAfter, line) {
if (state.local && state.local.mode.indent)
return state.local.mode.indent(state.localState, textAfter, line);
if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)
return CodeMirror.Pass;
var pos = state.indent.length - 1, rules = states[state.state];
scan: for (;;) {
for (var i = 0; i < rules.length; i++) {
var rule = rules[i];
if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {
var m = rule.regex.exec(textAfter);
if (m && m[0]) {
pos--;
if (rule.next || rule.push) rules = states[rule.next || rule.push];
textAfter = textAfter.slice(m[0].length);
continue scan;
}
}
}
break;
}
return pos < 0 ? 0 : state.indent[pos];
};
}
});

View File

@@ -1,29 +0,0 @@
CodeMirror.colorize = (function() {
var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/;
function textContent(node, out) {
if (node.nodeType == 3) return out.push(node.nodeValue);
for (var ch = node.firstChild; ch; ch = ch.nextSibling) {
textContent(ch, out);
if (isBlock.test(node.nodeType)) out.push("\n");
}
}
return function(collection, defaultMode) {
if (!collection) collection = document.body.getElementsByTagName("pre");
for (var i = 0; i < collection.length; ++i) {
var node = collection[i];
var mode = node.getAttribute("data-lang") || defaultMode;
if (!mode) continue;
var text = [];
textContent(node, text);
node.innerHTML = "";
CodeMirror.runMode(text.join(""), mode, node);
node.className += " cm-s-default";
}
};
})();

View File

@@ -1,151 +0,0 @@
/* Just enough of CodeMirror to run runMode under node.js */
window.CodeMirror = {};
(function() {
"use strict";
function splitLines(string){ return string.split(/\r?\n|\r/); };
function StringStream(string) {
this.pos = this.start = 0;
this.string = string;
this.lineStart = 0;
}
StringStream.prototype = {
eol: function() {return this.pos >= this.string.length;},
sol: function() {return this.pos == 0;},
peek: function() {return this.string.charAt(this.pos) || null;},
next: function() {
if (this.pos < this.string.length)
return this.string.charAt(this.pos++);
},
eat: function(match) {
var ch = this.string.charAt(this.pos);
if (typeof match == "string") var ok = ch == match;
else var ok = ch && (match.test ? match.test(ch) : match(ch));
if (ok) {++this.pos; return ch;}
},
eatWhile: function(match) {
var start = this.pos;
while (this.eat(match)){}
return this.pos > start;
},
eatSpace: function() {
var start = this.pos;
while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
return this.pos > start;
},
skipToEnd: function() {this.pos = this.string.length;},
skipTo: function(ch) {
var found = this.string.indexOf(ch, this.pos);
if (found > -1) {this.pos = found; return true;}
},
backUp: function(n) {this.pos -= n;},
column: function() {return this.start - this.lineStart;},
indentation: function() {return 0;},
match: function(pattern, consume, caseInsensitive) {
if (typeof pattern == "string") {
var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
var substr = this.string.substr(this.pos, pattern.length);
if (cased(substr) == cased(pattern)) {
if (consume !== false) this.pos += pattern.length;
return true;
}
} else {
var match = this.string.slice(this.pos).match(pattern);
if (match && match.index > 0) return null;
if (match && consume !== false) this.pos += match[0].length;
return match;
}
},
current: function(){return this.string.slice(this.start, this.pos);},
hideFirstChars: function(n, inner) {
this.lineStart += n;
try { return inner(); }
finally { this.lineStart -= n; }
}
};
CodeMirror.StringStream = StringStream;
CodeMirror.startState = function (mode, a1, a2) {
return mode.startState ? mode.startState(a1, a2) : true;
};
var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};
CodeMirror.defineMode = function (name, mode) { modes[name] = mode; };
CodeMirror.defineMIME = function (mime, spec) { mimeModes[mime] = spec; };
CodeMirror.resolveMode = function(spec) {
if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) {
spec = mimeModes[spec];
} else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) {
spec = mimeModes[spec.name];
}
if (typeof spec == "string") return {name: spec};
else return spec || {name: "null"};
};
CodeMirror.getMode = function (options, spec) {
spec = CodeMirror.resolveMode(spec);
var mfactory = modes[spec.name];
if (!mfactory) throw new Error("Unknown mode: " + spec);
return mfactory(options, spec);
};
CodeMirror.registerHelper = CodeMirror.registerGlobalHelper = Math.min;
CodeMirror.defineMode("null", function() {
return {token: function(stream) {stream.skipToEnd();}};
});
CodeMirror.defineMIME("text/plain", "null");
CodeMirror.runMode = function (string, modespec, callback, options) {
var mode = CodeMirror.getMode({ indentUnit: 2 }, modespec);
if (callback.nodeType == 1) {
var tabSize = (options && options.tabSize) || 4;
var node = callback, col = 0;
node.innerHTML = "";
callback = function (text, style) {
if (text == "\n") {
node.appendChild(document.createElement("br"));
col = 0;
return;
}
var content = "";
// replace tabs
for (var pos = 0; ;) {
var idx = text.indexOf("\t", pos);
if (idx == -1) {
content += text.slice(pos);
col += text.length - pos;
break;
} else {
col += idx - pos;
content += text.slice(pos, idx);
var size = tabSize - col % tabSize;
col += size;
for (var i = 0; i < size; ++i) content += " ";
pos = idx + 1;
}
}
if (style) {
var sp = node.appendChild(document.createElement("span"));
sp.className = "cm-" + style.replace(/ +/g, " cm-");
sp.appendChild(document.createTextNode(content));
} else {
node.appendChild(document.createTextNode(content));
}
};
}
var lines = splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);
for (var i = 0, e = lines.length; i < e; ++i) {
if (i) callback("\n");
var stream = new CodeMirror.StringStream(lines[i]);
while (!stream.eol()) {
var style = mode.token(stream, state);
callback(stream.current(), style, i, stream.start, state);
stream.start = stream.pos;
}
}
};
})();

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