diff --git a/Makefile b/Makefile
index 6a646213..ee7ecd03 100644
--- a/Makefile
+++ b/Makefile
@@ -114,12 +114,12 @@ pip:
run:
python2.5 web2py.py -a hello
commit:
+ python web2py.py --run_system_tests
make src
echo '' > NEWINSTALL
hg commit -m "$(S)"
#bzr commit -m "$(S)"
git commit -a -m "$(S)"
- python web2py.py --run_system_tests
push:
hg push
git push
diff --git a/VERSION b/VERSION
index 2ac640e6..d44d196a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Version 2.00.0 (2012-07-06 11:47:22) dev
+Version 2.00.0 (2012-07-19 16:56:40) dev
diff --git a/applications/admin/controllers/appadmin.py b/applications/admin/controllers/appadmin.py
index a45f5539..b8eccf9e 100644
--- a/applications/admin/controllers/appadmin.py
+++ b/applications/admin/controllers/appadmin.py
@@ -197,7 +197,7 @@ def select():
_name='update_fields', _value=request.vars.update_fields
or '')), TR(T('Delete:'), INPUT(_name='delete_check',
_class='delete', _type='checkbox', value=False), ''),
- TR('', '', INPUT(_type='submit', _value='submit'))),
+ TR('', '', INPUT(_type='submit', _value=T('submit')))),
_action=URL(r=request,args=request.args))
if request.vars.csvfile != None:
try:
@@ -218,10 +218,10 @@ def select():
if form.vars.update_check and form.vars.update_fields:
db(query).update(**eval_in_global_env('dict(%s)'
% form.vars.update_fields))
- response.flash = T('%s rows updated', nrows)
+ response.flash = T('%s %%{row} updated', nrows)
elif form.vars.delete_check:
db(query).delete()
- response.flash = T('%s rows deleted', nrows)
+ response.flash = T('%s %%{row} deleted', nrows)
nrows = db(query).count()
if orderby:
rows = db(query,ignore_common_filters=True).select(limitby=(start, stop), orderby=eval_in_global_env(orderby))
diff --git a/applications/admin/controllers/default.py b/applications/admin/controllers/default.py
index e3848f10..102cac82 100644
--- a/applications/admin/controllers/default.py
+++ b/applications/admin/controllers/default.py
@@ -8,11 +8,16 @@ if EXPERIMENTAL_STUFF:
response.view = response.view.replace('default/','default.mobile/')
response.menu = []
+import re
from gluon.admin import *
from gluon.fileutils import abspath, read_file, write_file
from glob import glob
import shutil
import platform
+from gluon.languages import (regex_language, read_possible_languages,
+ read_possible_plurals, lang_sampling,
+ read_dict, write_dict, read_plural_dict,
+ write_plural_dict)
if DEMO_MODE and request.function in ['change_password','pack','pack_plugin','upgrade_web2py','uninstall','cleanup','compile_app','remove_compiled_app','delete','delete_plugin','create_file','upload_file','update_languages','reload_routes']:
session.flash = T('disabled in demo mode')
@@ -186,14 +191,14 @@ def site():
elif file_or_appurl and request.vars.filename:
# fetch an application via URL or file upload
f = None
- if request.vars.appurl is not '':
+ if request.vars.appurl:
try:
f = urllib.urlopen(request.vars.appurl)
except Exception, e:
session.flash = DIV(T('Unable to download app because:'),PRE(str(e)))
redirect(URL(r=request))
fname = request.vars.appurl
- elif request.vars.file is not '':
+ elif request.vars.file:
f = request.vars.file.file
fname = request.vars.file.filename
@@ -247,7 +252,7 @@ def report_progress(app):
counter += int(m[1])
events.append([days,counter])
return events
-
+
def pack():
app = get_app()
@@ -357,7 +362,7 @@ def delete():
sender = sender[0]
if 'nodelete' in request.vars:
- redirect(URL(sender))
+ redirect(URL(sender, anchor=request.vars.id))
elif 'delete' in request.vars:
try:
full_path = apath(filename, r=request)
@@ -369,7 +374,7 @@ def delete():
except Exception:
session.flash = T('unable to delete file "%(filename)s"',
dict(filename=filename))
- redirect(URL(sender))
+ redirect(URL(sender, anchor=request.vars.id2))
return dict(filename=filename, sender=sender)
def enable():
@@ -384,22 +389,25 @@ def enable():
def peek():
""" Visualize object code """
- app = get_app()
+ app = get_app(request.vars.app)
filename = '/'.join(request.args)
+ if request.vars.app:
+ path = abspath(filename, gluon=False)
+ else:
+ path = apath(filename, r=request)
try:
- data = safe_read(apath(filename, r=request)).replace('\r','')
+ data = safe_read(path).replace('\r','')
except IOError:
session.flash = T('file does not exist')
redirect(URL('site'))
extension = filename[filename.rfind('.') + 1:].lower()
- return dict(app=request.args[0],
+ return dict(app=app,
filename=filename,
data=data,
extension=extension)
-
def test():
""" Execute controller tests """
app = get_app()
@@ -428,14 +436,18 @@ def search():
files2 = glob(os.path.join(path,'*/*.html'))
files3 = glob(os.path.join(path,'*/*/*.html'))
files=[x[len(path)+1:].replace('\\','/') for x in files1+files2+files3 if match(x,keywords)]
- return response.json({'files':files})
+ return response.json(dict(files=files, message=T.M('Searching: **%s** %%{file}', len(files))))
def edit():
""" File edit handler """
# Load json only if it is ajax edited...
- app = get_app()
+ app = get_app(request.vars.app)
filename = '/'.join(request.args)
- # Try to discover the file type
+ if request.vars.app:
+ path = abspath(filename)
+ else:
+ path = apath(filename, r=request)
+ # Try to discover the file type
if filename[-3:] == '.py':
filetype = 'python'
elif filename[-5:] == '.html':
@@ -450,9 +462,6 @@ def edit():
filetype = 'html'
# ## check if file is not there
-
- path = apath(filename, r=request)
-
if ('revert' in request.vars) and os.path.exists(path + '.bak'):
try:
data = safe_read(path + '.bak')
@@ -526,8 +535,8 @@ def edit():
except:
ex_name = 'unknown exception!'
response.flash = DIV(T('failed to compile file because:'), BR(),
- B(ex_name), T(' at line %s') % e.lineno,
- offset and T(' at char %s') % offset or '',
+ B(ex_name), ' '+T('at line %s', e.lineno),
+ offset and ' '+T('at char %s', offset) or '',
PRE(str(e)))
if data_or_revert and request.args[1] == 'modules':
@@ -568,7 +577,7 @@ def edit():
for v in viewlist:
vf = os.path.split(v)[-1]
vargs = "/".join([viewpath.replace(os.sep,"/"),vf])
- editviewlinks.append(A(T(vf.split(".")[0]),\
+ editviewlinks.append(A(vf.split(".")[0],\
_href=URL('edit',args=[vargs])))
if len(request.args) > 2 and request.args[1] == 'controllers':
@@ -672,29 +681,39 @@ def edit_language():
""" Edit language file """
app = get_app()
filename = '/'.join(request.args)
- from gluon.languages import read_dict, write_dict
strings = read_dict(apath(filename, r=request))
- keys = sorted(strings.keys(),lambda x,y: cmp(x.lower(), y.lower()))
+
+ if '__corrupted__' in strings:
+ form = SPAN(strings['__corrupted__'],_class='error')
+ return dict(filename=filename, form=form)
+
+ keys = sorted(strings.keys(),lambda x,y: cmp(unicode(x,'utf-8').lower(), unicode(y,'utf-8').lower()))
rows = []
rows.append(H2(T('Original/Translation')))
for key in keys:
name = md5_hash(key)
- if key==strings[key]:
- _class='untranslated'
+ s = strings[key]
+ (prefix, sep, key) = key.partition('\x01')
+ if sep:
+ prefix = SPAN(prefix+': ', _style='color: blue;')
+ k = key
else:
- _class='translated'
+ (k, prefix) = (prefix, '')
+
+ _class='untranslated' if k==s else 'translated'
+
if len(key) <= 40:
- elem = INPUT(_type='text', _name=name,value=strings[key],
+ elem = INPUT(_type='text', _name=name, value=s,
_size=70,_class=_class)
else:
- elem = TEXTAREA(_name=name, value=strings[key], _cols=70,
+ elem = TEXTAREA(_name=name, value=s, _cols=70,
_rows=5, _class=_class)
# Making the short circuit compatible with <= python2.4
- k = (strings[key] != key) and key or B(key)
+ k = (s != k) and k or B(k)
- rows.append(P(k, BR(), elem, TAG.BUTTON(T('delete'),
+ rows.append(P(prefix, k, BR(), elem, TAG.BUTTON(T('delete'),
_onclick='return delkey("%s")' % name), _id=name))
rows.append(INPUT(_type='submit', _value=T('update')))
@@ -710,6 +729,53 @@ def edit_language():
redirect(URL(r=request,args=request.args))
return dict(app=request.args[0], filename=filename, form=form)
+def edit_plurals():
+ """ Edit plurals file """
+ #import ipdb; ipdb.set_trace()
+ app = get_app()
+ filename = '/'.join(request.args)
+ plurals = read_plural_dict(apath(filename, r=request)) # plural forms dictionary
+ nplurals = int(request.vars.nplurals)-1 # plural forms quantity
+ xnplurals = xrange(nplurals)
+
+ if '__corrupted__' in plurals:
+ # show error message and exit
+ form = SPAN(plurals['__corrupted__'],_class='error')
+ return dict(filename=filename, form=form)
+
+ keys = sorted(plurals.keys(),lambda x,y: cmp(unicode(x,'utf-8').lower(), unicode(y,'utf-8').lower()))
+ rows = []
+
+ row=[T("Singular Form")]
+ row.extend([T("Plural Form #%s", n+1) for n in xnplurals])
+ table=TABLE(THEAD(TR(row)))
+
+ for key in keys:
+ name = md5_hash(key)
+ forms = plurals[key]
+
+ if len(forms) < nplurals:
+ forms.extend(None for i in xrange(nplurals-len(forms)))
+
+ row = [B(key)]
+ row.extend([INPUT(_type='text', _name=name+'_'+str(n), value=forms[n], _size=20) for n in xnplurals])
+ row.append(TD(TAG.BUTTON(T('delete'), _onclick='return delkey("%s")' % name)))
+ rows.append(TR(row, _id=name))
+ if rows:
+ table.append(TBODY(rows))
+ rows=[table, INPUT(_type='submit', _value=T('update'))]
+ form = FORM(*rows)
+ if form.accepts(request.vars, keepvalues=True):
+ new_plurals = dict()
+ for key in keys:
+ name = md5_hash(key)
+ if form.vars[name+'_0']==chr(127): continue
+ new_plurals[key] = [form.vars[name+'_'+str(n)] for n in xnplurals]
+ write_plural_dict(apath(filename, r=request), new_plurals)
+ session.flash = T('file saved on %(time)s', dict(time=time.ctime()))
+ redirect(URL(r=request, args=request.args, vars=dict(nplurals=request.vars.nplurals)))
+ return dict(app=request.args[0], filename=filename, form=form)
+
def about():
""" Read about info """
@@ -794,7 +860,30 @@ def design():
statics.sort()
# Get all languages
- languages = listdir(apath('%s/languages/' % app, r=request), '[\w-]*\.py')
+ all_languages=dict([(lang+'.py',info[0]) for lang,info
+ in read_possible_languages(apath(app, r=request)).iteritems()
+ if info[2]!=0]) # info[2] is langfile_mtime:
+ # get only existed files
+ languages = sorted(all_languages)
+
+ plural_rules={}
+ all_plurals=read_possible_plurals()
+ for langfile,lang in all_languages.iteritems():
+ lang=lang.strip()
+ match_language = regex_language.match(lang)
+ if match_language:
+ match_language = tuple(part
+ for part in match_language.groups()
+ if part)
+ plang = lang_sampling(match_language, all_plurals.keys())
+ if plang:
+ plural=all_plurals[plang]
+ plural_rules[langfile]=(plural[0],plang,plural[1],plural[3])
+ else:
+ plural_rules[langfile]=(0,lang,'plural_rules-%s.py'%lang,'')
+
+ plurals = listdir(apath('%s/languages/' % app, r=request),
+ '^plural-[\w-]+\.py$')
#Get crontab
cronfolder = apath('%s/cron' % app, r=request)
@@ -821,6 +910,8 @@ def design():
include=include,
statics=filter_plugins(statics,plugins),
languages=languages,
+ plurals=plurals,
+ plural_rules=plural_rules,
crontab=crontab,
plugins=plugins)
@@ -830,7 +921,7 @@ def delete_plugin():
plugin = request.args(1)
plugin_name='plugin_'+plugin
if 'nodelete' in request.vars:
- redirect(URL('design',args=app))
+ redirect(URL('design', args=app, anchor=request.vars.id))
elif 'delete' in request.vars:
try:
for folder in ['models','views','controllers','static','modules']:
@@ -847,7 +938,7 @@ def delete_plugin():
except Exception:
session.flash = T('unable to delete file plugin "%(plugin)s"',
dict(plugin=plugin))
- redirect(URL('design',args=request.args(0)))
+ redirect(URL('design', args=request.args(0), anchor=request.vars.id2))
return dict(plugin=plugin)
def plugin():
@@ -909,7 +1000,10 @@ def plugin():
statics.sort()
# Get all languages
- languages = listdir(apath('%s/languages/' % app, r=request), '[\w-]*\.py')
+ languages = sorted([lang+'.py' for lang, info in
+ T.get_possible_languages_info().iteritems()
+ if info[2]!=0]) # info[2] is langfile_mtime:
+ # get only existed files
#Get crontab
crontab = apath('%s/cron/crontab' % app, r=request)
@@ -937,24 +1031,56 @@ def plugin():
def create_file():
""" Create files handler """
try:
- app = get_app(name=request.vars.location.split('/')[0])
- path = apath(request.vars.location, r=request)
+ anchor='#'+request.vars.id if request.vars.id else ''
+ if request.vars.app:
+ app = get_app(request.vars.app)
+ path = abspath(request.vars.location, gluon=False)
+ else:
+ app = get_app(name=request.vars.location.split('/')[0])
+ path = apath(request.vars.location, r=request)
filename = re.sub('[^\w./-]+', '_', request.vars.filename)
+ if path[-7:] == '/rules/':
+ # Handle plural rules files
+ if len(filename) == 0:
+ raise SyntaxError
+ if not filename[-3:] == '.py':
+ filename += '.py'
+ lang = re.match('^plural_rules-(.*)\.py$',filename).group(1)
+ langinfo = read_possible_languages(apath(app, r=request))[lang]
+ text = dedent("""
+ #!/usr/bin/env python
+ # -*- coding: utf8 -*-
+ # Plural-Forms for %(lang)s (%(langname)s)
- if path[-11:] == '/languages/':
+ nplurals=2 # for example, English language has 2 forms:
+ # 1 singular and 1 plural
+
+ # Determine plural_id for number *n* as sequence of positive
+ # integers: 0,1,...
+ # NOTE! For singular form ALWAYS return plural_id = 0
+ get_plural_id = lambda n: int(n != 1)
+
+ # Construct and return plural form of *word* using
+ # *plural_id* (which ALWAYS>0). This function will be executed
+ # for words (or phrases) not found in plural_dict dictionary.
+ # By default this function simply returns word in singular:
+ construct_plural_form = lambda word, plural_id: word
+ """)[1:] % dict(lang=langinfo[0], langname=langinfo[1])
+
+ elif path[-11:] == '/languages/':
# Handle language files
if len(filename) == 0:
raise SyntaxError
if not filename[-3:] == '.py':
filename += '.py'
- app = path.split('/')[-3]
path=os.path.join(apath(app, r=request),'languages',filename)
if not os.path.exists(path):
safe_write(path, '')
+ # create language xx[-yy].py file:
findT(apath(app, r=request), filename[:-3])
session.flash = T('language file "%(filename)s" created/updated',
- dict(filename=filename))
- redirect(request.vars.sender)
+ dict(filename=filename))
+ redirect(request.vars.sender+anchor)
elif path[-8:] == '/models/':
# Handle python models
@@ -988,13 +1114,12 @@ def create_file():
if len(filename) == 5:
raise SyntaxError
- msg = T('This is the %(filename)s template',
- dict(filename=filename))
+ msg = T('This is the %(filename)s template', dict(filename=filename))
if extension == 'html':
text = dedent("""
{{extend 'layout.html'}}
%s
- {{=BEAUTIFY(response._vars)}}""" % msg)
+ {{=BEAUTIFY(response._vars)}}""" % msg)[1:]
else:
generic = os.path.join(path,'generic.'+extension)
if os.path.exists(generic):
@@ -1015,14 +1140,14 @@ def create_file():
text = dedent("""
#!/usr/bin/env python
# coding: utf8
- from gluon import *\n""")
+ from gluon import *\n""")[1:]
elif path[-8:] == '/static/':
if request.vars.plugin and not filename.startswith('plugin_%s/' % request.vars.plugin):
filename = 'plugin_%s/%s' % (request.vars.plugin, filename)
text = ''
else:
- redirect(request.vars.sender)
+ redirect(request.vars.sender+anchor)
full_filename = os.path.join(path, filename)
dirpath = os.path.dirname(full_filename)
@@ -1037,18 +1162,20 @@ def create_file():
log_progress(app,'CREATE',filename)
session.flash = T('file "%(filename)s" created',
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)]))
+ args=[os.path.join(request.vars.location, filename)], vars=vars))
except Exception, e:
if not isinstance(e,HTTP):
session.flash = T('cannot create file')
- redirect(request.vars.sender)
+ redirect(request.vars.sender+anchor)
def upload_file():
""" File uploading handler """
-
try:
filename = None
app = get_app(name=request.vars.location.split('/')[0])
@@ -1121,7 +1248,7 @@ def errors():
hash2error = dict()
- for fn in listdir(errors_path, '^\w.*'):
+ for fn in listdir(errors_path, '^[a-fA-F0-9.\-]+$'):
fullpath = os.path.join(errors_path, fn)
if not os.path.isfile(fullpath): continue
try:
@@ -1368,7 +1495,7 @@ def twitter():
try:
if TWITTER_HASH:
page = urllib.urlopen("http://search.twitter.com/search.json?q=%%40%s" % TWITTER_HASH).read()
- data = sj.loads(page , encoding="utf-8")['results']
+ data = sj.loads(page, encoding="utf-8")['results']
d = dict()
for e in data:
d[e["id"]] = e
diff --git a/applications/admin/controllers/mercurial.py b/applications/admin/controllers/mercurial.py
index 68921342..6c063097 100644
--- a/applications/admin/controllers/mercurial.py
+++ b/applications/admin/controllers/mercurial.py
@@ -42,7 +42,7 @@ def commit():
path = apath(app, r=request)
repo = hg_repo(path)
form = FORM('Comment:',INPUT(_name='comment',requires=IS_NOT_EMPTY()),
- INPUT(_type='submit',_value='Commit'))
+ INPUT(_type='submit',_value=T('Commit')))
if form.accepts(request.vars,session):
oldid = repo[repo.lookup('.')]
addremove(repo)
@@ -69,7 +69,7 @@ def revision():
repo = hg_repo(path)
revision = request.args(1)
ctx=repo.changectx(revision)
- form=FORM(INPUT(_type='submit',_value='revert'))
+ form=FORM(INPUT(_type='submit',_value=T('Revert')))
if form.accepts(request.vars):
hg.update(repo, revision)
session.flash = "reverted to revision %s" % ctx.rev()
diff --git a/applications/admin/controllers/openshift.py b/applications/admin/controllers/openshift.py
index 6f3620d2..52889b5e 100644
--- a/applications/admin/controllers/openshift.py
+++ b/applications/admin/controllers/openshift.py
@@ -3,15 +3,15 @@ from distutils import dir_util
try:
from git import *
except ImportError:
- session.flash = 'requires python-git, but not installed'
+ session.flash = T('requires python-git, but not installed')
redirect(URL('default','site'))
def deploy():
apps = sorted(file for file in os.listdir(apath(r=request)))
form = SQLFORM.factory(
- Field('osrepo',default='/tmp',label='Path to local openshift repo root.',
+ Field('osrepo',default='/tmp',label=T('Path to local openshift repo root.'),
requires=EXISTS(error_message=T('directory not found'))),
- Field('osname',default='web2py',label='WSGI reference name'),
+ Field('osname',default='web2py',label=T('WSGI reference name')),
Field('applications','list:string',
requires=IS_IN_SET(apps,multiple=True),
label=T('web2py apps to deploy')))
diff --git a/applications/admin/languages/af.py b/applications/admin/languages/af.py
index 5a28013d..5d164923 100644
--- a/applications/admin/languages/af.py
+++ b/applications/admin/languages/af.py
@@ -1,27 +1,46 @@
# coding: utf8
{
+'!langcode!': 'af',
+'!langname!': 'Afrikaanse',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
+'%s %%{row} deleted': '%s rows deleted',
+'%s %%{row} updated': '%s rows updated',
'(requires internet access)': '(vereis internet toegang)',
'(something like "it-it")': '(iets soos "it-it")',
-'About': 'Oor',
+'@markmin\x01Searching: **%s** %%{file}': 'Soek: **%s** lêre',
+'About': 'oor',
'About application': 'Oor program',
'Additional code for your application': 'Additionele kode vir u application',
'Admin language': 'Admin taal',
'Application name:': 'Program naam:',
+'Change admin password': 'verander admin wagwoord',
+'Check for upgrades': 'soek vir upgrades',
+'Clean': 'maak skoon',
+'Compile': 'kompileer',
'Controllers': 'Beheerders',
+'Create': 'skep',
+'Deploy': 'deploy',
'Deploy on Google App Engine': 'Stuur na Google App Engine toe',
+'Edit': 'wysig',
'Edit application': 'Wysig program',
+'Errors': 'foute',
+'Help': 'hulp',
+'Install': 'installeer',
'Installed applications': 'Geinstalleerde apps',
'Languages': 'Tale',
'License for': 'Lisensie vir',
+'Logout': 'logout',
'Models': 'Modelle',
'Modules': 'Modules',
'New application wizard': 'Nuwe app wizard',
'New simple application': 'Nuwe eenvoudige app',
+'Overwrite installed app': 'skryf oor geinstalleerde program',
+'Pack all': 'pack alles',
'Plugins': 'Plugins',
'Powered by': 'Aangedryf deur',
-'Searching:': 'Soek:',
+'Site': 'site',
+'Start wizard': 'start wizard',
'Static files': 'Static files',
'Sure you want to delete this object?': 'Is jy seker jy will hierde object verwyder?',
'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',
@@ -29,54 +48,37 @@
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
'There are no plugins': 'Daar is geen plugins',
'These files are served without processing, your images go here': 'Hierdie lêre is sonder veranderinge geserved, jou images gaan hier',
-'To create a plugin, name a file/folder plugin_[name]': 'Om ''n plugin te skep, noem ''n lêer/gids plugin_[name]',
+'To create a plugin, name a file/folder plugin_[name]': 'Om n plugin te skep, noem n lêer/gids plugin_[name]',
'Translation strings for the application': 'Vertaling woorde vir die program',
+'Uninstall': 'verwyder',
'Upload & install packed application': 'Oplaai & install gepakte program',
-'Upload a package:': 'Oplaai ''n package:',
+'Upload a package:': 'Oplaai n package:',
'Use an url:': 'Gebruik n url:',
'Views': 'Views',
-'About': 'oor',
'administrative interface': 'administrative interface',
'and rename it:': 'en verander die naam:',
-'Change admin password': 'verander admin wagwoord',
-'Check for upgrades': 'soek vir upgrades',
-'Clean': 'maak skoon',
'collapse/expand all': 'collapse/expand all',
-'Compile': 'kompileer',
'controllers': 'beheerders',
-'Create': 'skep',
'create file with filename:': 'skep lêer met naam:',
'created by': 'geskep deur',
'crontab': 'crontab',
'currently running': 'loop tans',
'database administration': 'database administration',
-'Deploy': 'deploy',
'direction: ltr': 'direction: ltr',
'download layouts': 'aflaai layouts',
'download plugins': 'aflaai plugins',
-'Edit': 'wysig',
-'Errors': 'foute',
'exposes': 'exposes',
'extends': 'extends',
-'files': 'lêre',
'filter': 'filter',
-'Help': 'hulp',
'includes': 'includes',
-'Install': 'installeer',
'languages': 'tale',
'loading...': 'laai...',
-'Logout': 'logout',
'models': 'modelle',
'modules': 'modules',
-'Overwrite installed app': 'skryf oor geinstalleerde program',
-'Pack all': 'pack alles',
'plugins': 'plugins',
'shell': 'shell',
-'Site': 'site',
-'Start wizard': 'start wizard',
'static': 'static',
'test': 'toets',
-'Uninstall': 'verwyder',
'update all languages': 'update all languages',
'upload': 'oplaai',
'upload file:': 'oplaai lêer:',
@@ -85,5 +87,3 @@
'views': 'views',
'web2py Recent Tweets': 'web2py Onlangse Tweets',
}
-
-
diff --git a/applications/admin/languages/bg.py b/applications/admin/languages/bg.py
index 9fd00101..46e90655 100644
--- a/applications/admin/languages/bg.py
+++ b/applications/admin/languages/bg.py
@@ -1,18 +1,21 @@
# coding: utf8
{
+'!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',
-'%s rows deleted': '%s записите бяха изтрити',
-'%s rows updated': '%s записите бяха обновени',
+'%s %%{row} deleted': '%s записите бяха изтрити',
+'%s %%{row} updated': '%s записите бяха обновени',
'(requires internet access)': '(requires internet access)',
'(something like "it-it")': '(something like "it-it")',
+'@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!',
-'About': 'About',
+'About': 'about',
'About application': 'About application',
'Additional code for your application': 'Additional code for your application',
'Admin is disabled because insecure channel': 'Admin is disabled because insecure channel',
@@ -22,6 +25,7 @@
'Application name:': 'Application name:',
'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?',
@@ -29,20 +33,30 @@
'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:',
+'Change admin password': 'change admin password',
+'Check for upgrades': 'check for upgrades',
'Check to delete': 'Check to delete',
'Checking for upgrades...': 'Checking for upgrades...',
+'Clean': 'clean',
+'Compile': 'compile',
'Controllers': 'Controllers',
+'Create': 'create',
'Create new simple application': 'Create new simple application',
'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',
@@ -50,11 +64,15 @@
'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': 'Невалидна заявка',
@@ -65,6 +83,7 @@
'License for': 'License for',
'Login': 'Login',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
+'Logout': 'logout',
'Models': 'Models',
'Modules': 'Modules',
'NO': 'NO',
@@ -73,17 +92,24 @@
'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:',
-'Searching:': 'Searching:',
+'Site': 'site',
+'Start wizard': 'start wizard',
'Static files': 'Static files',
'Sure you want to delete this object?': 'Сигурен ли си, че искаш да изтриеш този обект?',
'TM': 'TM',
@@ -108,17 +134,19 @@
'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',
-'About': 'about',
'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',
@@ -137,19 +165,14 @@
'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"',
-'Change admin password': 'change admin password',
'check all': 'check all',
-'Check for upgrades': 'check for upgrades',
-'Clean': 'clean',
'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',
-'Compile': 'compile',
'compiled application removed': 'compiled application removed',
'controllers': 'controllers',
-'Create': 'create',
'create file with filename:': 'create file with filename:',
'create new application:': 'create new application:',
'created by': 'created by',
@@ -165,16 +188,13 @@
'delete': 'delete',
'delete all checked': 'delete all checked',
'delete plugin': 'delete plugin',
-'Deploy': 'deploy',
'design': 'дизайн',
'direction: ltr': 'direction: ltr',
'done!': 'готово!',
'download layouts': 'download layouts',
'download plugins': 'download plugins',
-'Edit': 'edit',
'edit controller': 'edit controller',
'edit views:': 'edit views:',
-'Errors': 'errors',
'export as csv file': 'export as csv file',
'exposes': 'exposes',
'extends': 'extends',
@@ -189,14 +209,11 @@
'file does not exist': 'file does not exist',
'file saved on %(time)s': 'file saved on %(time)s',
'file saved on %s': 'file saved on %s',
-'files': 'files',
'filter': 'filter',
-'Help': 'help',
'htmledit': 'htmledit',
'includes': 'includes',
'insert new': 'insert new',
'insert new %s': 'insert new %s',
-'Install': 'install',
'internal error': 'internal error',
'invalid password': 'invalid password',
'invalid request': 'невалидна заявка',
@@ -206,7 +223,6 @@
'languages updated': 'languages updated',
'loading...': 'loading...',
'login': 'login',
-'Logout': 'logout',
'merge': 'merge',
'models': 'models',
'modules': 'modules',
@@ -218,9 +234,6 @@
'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:',
-'Overwrite installed app': 'overwrite installed app',
-'Pack all': 'pack all',
-'Pack compiled': 'pack compiled',
'pack plugin': 'pack plugin',
'password changed': 'password changed',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
@@ -229,16 +242,13 @@
'record': 'record',
'record does not exist': 'записът не съществува',
'record id': 'record id',
-'Remove compiled': 'remove compiled',
'restore': 'restore',
'revert': 'revert',
'save': 'save',
'selected': 'selected',
'session expired': 'session expired',
'shell': 'shell',
-'Site': 'site',
'some files could not be removed': 'some files could not be removed',
-'Start wizard': 'start wizard',
'state': 'състояние',
'static': 'static',
'submit': 'submit',
@@ -259,7 +269,6 @@
'unable to uninstall "%s"': 'unable to uninstall "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': 'uncheck all',
-'Uninstall': 'uninstall',
'update': 'update',
'update all languages': 'update all languages',
'upgrade web2py now': 'upgrade web2py now',
@@ -275,5 +284,3 @@
'web2py is up to date': 'web2py is up to date',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
}
-
-
diff --git a/applications/admin/languages/de.py b/applications/admin/languages/de.py
index 4969d2c7..4a9e7212 100644
--- a/applications/admin/languages/de.py
+++ b/applications/admin/languages/de.py
@@ -1,12 +1,15 @@
# coding: utf8
{
+'!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',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
-'%s rows deleted': '%s Zeilen gelöscht',
-'%s rows updated': '%s Zeilen aktualisiert',
+'%s %%{row} deleted': '%s Zeilen gelöscht',
+'%s %%{row} updated': '%s Zeilen aktualisiert',
'(requires internet access)': '(requires internet access)',
'(something like "it-it")': '(so etwas wie "it-it")',
+'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
'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',
'A new version of web2py is available: Version 1.85.3 (2010-09-18 07:07:46)\n': 'Eine neue Version von web2py ist verfügbar: Version 1.85.3 (2010-09-18 07:07:46)\n',
@@ -32,12 +35,17 @@
'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.',
'Change Password': 'Passwort ändern',
+'Change admin password': 'Administrator-Passwort ändern',
+'Check for upgrades': 'check for upgrades',
'Check to delete': 'Markiere zum löschen',
'Checking for upgrades...': 'Auf Updates überprüfen...',
+'Clean': 'löschen',
'Client IP': 'Client IP',
+'Compile': 'kompilieren',
'Controller': 'Controller',
'Controllers': 'Controller',
'Copyright': 'Urheberrecht',
+'Create': 'erstellen',
'Create new simple application': 'Erzeuge neue Anwendung',
'Current request': 'Aktuelle Anfrage (request)',
'Current response': 'Aktuelle Antwort (response)',
@@ -48,12 +56,13 @@
'Date and Time': 'Datum und Uhrzeit',
'Delete': 'Löschen',
'Delete:': 'Löschen:',
+'Deploy': 'deploy',
'Deploy on Google App Engine': 'Auf Google App Engine installieren',
'Description': 'Beschreibung',
'Design for': 'Design für',
'E-mail': 'E-mail',
'EDIT': 'BEARBEITEN',
-'Edit': 'Bearbeiten',
+'Edit': 'bearbeiten',
'Edit Profile': 'Bearbeite Profil',
'Edit This App': 'Bearbeite diese Anwendung',
'Edit application': 'Bearbeite Anwendung',
@@ -63,6 +72,7 @@
'Editing file "%s"': 'Bearbeite Datei "%s"',
'Enterprise Web Framework': 'Enterprise Web Framework',
'Error logs for "%(app)s"': 'Fehlerprotokoll für "%(app)s"',
+'Errors': 'Fehler',
'Exception instance attributes': 'Atribute der Ausnahmeinstanz',
'Expand Abbreviation': 'Kürzel erweitern',
'First name': 'Vorname',
@@ -70,11 +80,13 @@
'Go to Matching Pair': 'gehe zum übereinstimmenden Paar',
'Group ID': 'Gruppen ID',
'Hello World': 'Hallo Welt',
+'Help': 'Hilfe',
'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',
'Import/Export': 'Importieren/Exportieren',
'Index': 'Index',
+'Install': 'installieren',
'Installed applications': 'Installierte Anwendungen',
'Internal State': 'interner Status',
'Invalid Query': 'Ungültige Abfrage',
@@ -90,7 +102,7 @@
'License for': 'Lizenz für',
'Login': 'Anmelden',
'Login to the Administrative Interface': 'An das Administrations-Interface anmelden',
-'Logout': 'Abmeldung',
+'Logout': 'abmelden',
'Lost Password': 'Passwort vergessen',
'Main Menu': 'Menú principal',
'Match Pair': 'Paare finden',
@@ -107,6 +119,9 @@
'No databases in this application': 'Keine Datenbank in dieser Anwendung',
'Origin': 'Herkunft',
'Original/Translation': 'Original/Übersetzung',
+'Overwrite installed app': 'installierte Anwendungen überschreiben',
+'Pack all': 'verpacke alles',
+'Pack compiled': 'Verpacke kompiliert',
'Password': 'Passwort',
'Peeking at file': 'Dateiansicht',
'Plugin "%s" in application': 'Plugin "%s" in Anwendung',
@@ -117,6 +132,7 @@
'Record ID': 'Datensatz ID',
'Register': 'registrieren',
'Registration key': 'Registrierungsschlüssel',
+'Remove compiled': 'kompilat gelöscht',
'Reset Password key': 'Passwortschlüssel zurücksetzen',
'Resolve Conflict file': 'bereinige Konflikt-Datei',
'Role': 'Rolle',
@@ -124,7 +140,8 @@
'Rows selected': 'Zeilen ausgewählt',
'Save via Ajax': 'via Ajax sichern',
'Saved file hash:': 'Gespeicherter Datei-Hash:',
-'Searching:': 'Searching:',
+'Site': 'Seite',
+'Start wizard': 'start wizard',
'Static files': 'statische Dateien',
'Stylesheet': 'Stylesheet',
'Sure you want to delete this object?': 'Wollen Sie das Objekt wirklich löschen?',
@@ -154,6 +171,7 @@
'Unable to check for upgrades': 'überprüfen von Upgrades nicht möglich',
'Unable to download': 'herunterladen nicht möglich',
'Unable to download app': 'herunterladen der Anwendung nicht möglich',
+'Uninstall': 'deinstallieren',
'Update:': 'Aktualisiere:',
'Upload & install packed application': 'Verpackte Anwendung hochladen und installieren',
'Upload a package:': 'Upload a package:',
@@ -172,7 +190,6 @@
'You are successfully running web2py': 'web2by wird erfolgreich ausgeführt',
'You can modify this application and adapt it to your needs': 'Sie können diese Anwendung verändern und Ihren Bedürfnissen anpassen',
'You visited the url': 'Sie besuchten die URL',
-'About': 'Über',
'additional code for your application': 'zusätzlicher Code für Ihre Anwendung',
'admin disabled because no admin password': ' admin ist deaktiviert, weil kein Admin-Passwort gesetzt ist',
'admin disabled because not supported on google apps engine': 'admin ist deaktiviert, es existiert dafür keine Unterstützung auf der google apps engine',
@@ -193,20 +210,15 @@
'call': 'call',
'cannot create file': 'Kann Datei nicht erstellen',
'cannot upload file "%(filename)s"': 'Kann Datei nicht Hochladen "%(filename)s"',
-'Change admin password': 'Administrator-Passwort ändern',
'change password': 'Passwort ändern',
'check all': 'alles auswählen',
-'Check for upgrades': 'check for upgrades',
-'Clean': 'löschen',
'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 to check for upgrades': 'hier klicken um nach Upgrades zu suchen',
'code': 'code',
'collapse/expand all': 'collapse/expand all',
-'Compile': 'kompilieren',
'compiled application removed': 'kompilierte Anwendung gelöscht',
'controllers': 'Controllers',
-'Create': 'erstellen',
'create file with filename:': 'erzeuge Datei mit Dateinamen:',
'create new application:': 'erzeuge neue Anwendung:',
'created by': 'created by',
@@ -223,18 +235,15 @@
'delete': 'löschen',
'delete all checked': 'lösche alle markierten',
'delete plugin': 'Plugin löschen',
-'Deploy': 'deploy',
'design': 'design',
'direction: ltr': 'direction: ltr',
'documentation': 'Dokumentation',
'done!': 'fertig!',
'download layouts': 'download layouts',
'download plugins': 'download plugins',
-'Edit': 'bearbeiten',
'edit controller': 'Bearbeite Controller',
'edit profile': 'bearbeite Profil',
'edit views:': 'Views bearbeiten:',
-'Errors': 'Fehler',
'escape': 'escape',
'export as csv file': 'Exportieren als CSV-Datei',
'exposes': 'stellt zur Verfügung',
@@ -249,15 +258,12 @@
'file does not exist': 'Datei existiert nicht',
'file saved on %(time)s': 'Datei gespeichert am %(time)s',
'file saved on %s': 'Datei gespeichert auf %s',
-'files': 'files',
'filter': 'filter',
-'Help': 'Hilfe',
'htmledit': 'htmledit',
'includes': 'Einfügen',
'index': 'index',
'insert new': 'neu einfügen',
'insert new %s': 'neu einfügen %s',
-'Install': 'installieren',
'internal error': 'interner Fehler',
'invalid password': 'Ungültiges Passwort',
'invalid request': 'ungültige Anfrage',
@@ -268,7 +274,6 @@
'loading...': 'lade...',
'located in the file': 'located in Datei',
'login': 'anmelden',
-'Logout': 'abmelden',
'lost password?': 'Passwort vergessen?',
'merge': 'verbinden',
'models': 'Modelle',
@@ -279,9 +284,6 @@
'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:',
-'Overwrite installed app': 'installierte Anwendungen überschreiben',
-'Pack all': 'verpacke alles',
-'Pack compiled': 'Verpacke kompiliert',
'pack plugin': 'Plugin verpacken',
'please wait!': 'bitte warten!',
'plugins': 'plugins',
@@ -290,16 +292,13 @@
'record does not exist': 'Datensatz existiert nicht',
'record id': 'Datensatz id',
'register': 'Registrierung',
-'Remove compiled': 'kompilat gelöscht',
'restore': 'wiederherstellen',
'revert': 'zurückkehren',
'save': 'sichern',
'selected': 'ausgewählt(e)',
'session expired': 'Sitzung Abgelaufen',
'shell': 'shell',
-'Site': 'Seite',
'some files could not be removed': 'einige Dateien konnten nicht gelöscht werden',
-'Start wizard': 'start wizard',
'state': 'Status',
'static': 'statische Dateien',
'submit': 'Absenden',
@@ -322,7 +321,6 @@
'unable to parse csv file': 'analysieren der cvs Datei nicht möglich',
'unable to uninstall "%s"': 'deinstallieren von "%s" nicht möglich',
'uncheck all': 'alles demarkieren',
-'Uninstall': 'deinstallieren',
'update': 'aktualisieren',
'update all languages': 'aktualisiere alle Sprachen',
'upgrade web2py now': 'jetzt web2py upgraden',
@@ -339,5 +337,3 @@
'web2py is up to date': 'web2py ist auf dem neuesten Stand',
'xml': 'xml',
}
-
-
diff --git a/applications/admin/languages/default.py b/applications/admin/languages/default.py
new file mode 100644
index 00000000..94b0828c
--- /dev/null
+++ b/applications/admin/languages/default.py
@@ -0,0 +1,8 @@
+# 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',
+'back': '<': '>',
'>=': '>=',
+'@markmin\x01Searching: **%s** %%{file}': 'Căutare: **%s** fișiere',
'A new version of web2py is available': 'O nouă versiune de web2py este disponibilă',
'A new version of web2py is available: %s': 'O nouă versiune de web2py este disponibilă: %s',
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENȚIE: Nu vă puteți conecta decât utilizând o conexiune securizată (HTTPS) sau rulând aplicația pe computerul local.',
@@ -174,11 +177,11 @@
'Next Edit Point': 'Următorul punct de editare',
'No databases in this application': 'Aplicație fără bază de date',
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
+'OR': 'SAU',
'Object or table name': 'Obiect sau nume de tabel',
'Old password': 'Parola veche',
'Online examples': 'Exemple online',
'Or': 'Sau',
-'OR': 'SAU',
'Origin': 'Origine',
'Original/Translation': 'Original/Traducere',
'Other Plugins': 'Alte plugin-uri',
@@ -220,7 +223,6 @@
'Save via Ajax': 'Salvează utilizând Ajax',
'Saved file hash:': 'Hash fișier salvat:',
'Search': 'Căutare',
-'Searching:': 'Căutare:',
'Semantic': 'Semantică',
'Services': 'Servicii',
'Set Breakpoint on %s at line %s: %s': 'Set Breakpoint on %s at line %s: %s',
@@ -368,7 +370,6 @@
'file does not exist': 'fișier inexistent',
'file saved on %(time)s': 'fișier salvat %(time)s',
'file saved on %s': 'fișier salvat pe %s',
-'files': 'fișiere',
'filter': 'filtru',
'help': 'ajutor',
'htmledit': 'editare html',
diff --git a/applications/admin/languages/ru.py b/applications/admin/languages/ru.py
index 5bf12c10..ee1a6bbd 100644
--- a/applications/admin/languages/ru.py
+++ b/applications/admin/languages/ru.py
@@ -1,183 +1,31 @@
# coding: utf8
{
+'!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',
+'%s %%{row} deleted': '%s %%{строкa} %%{удаленa}',
+'%s %%{row} updated': '%s %%{строкa} %%{обновленa}',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
-'%s rows deleted': '%s строк удалено',
-'%s rows updated': '%s строк обновлено',
'(requires internet access)': '(требует подключения к интернету)',
'(something like "it-it")': '(наподобие "it-it")',
+'@markmin\x01Searching: **%s** %%{file}': 'Найдено: **%s** %%{файл}',
'A new version of web2py is available': 'Доступна новая версия web2py',
'A new version of web2py is available: %s': 'Доступна новая версия web2py: %s',
'A new version of web2py is available: Version 1.85.3 (2010-09-18 07:07:46)\n': 'Доступна новая версия web2py: Версия 1.85.3 (2010-09-18 07:07:46)\n',
-'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!': 'ВНИМАНИЕ: Вы не можете редактировать работающее приложение!',
'Abort': 'Отмена',
'About': 'О',
'About application': 'О приложении',
-'Additional code for your application': 'Допольнительный код для вашего приложения',
-'Admin is disabled because insecure channel': 'Админпанель выключена из-за небезопасного соединения',
-'Admin is disabled because unsecure channel': 'Админпанель выключен из-за небезопасного соединения',
-'Admin language': 'Язык админпанели',
-'Administrator Password:': 'Пароль администратора:',
-'Application name:': 'Название приложения:',
-'Are you sure you want to delete file "%s"?': 'Вы действительно хотите удалить файл "%s"?',
-'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 сейчас?',
-'Authentication': 'Аутентификация',
-'Available databases and tables': 'Доступные базы данных и таблицы',
-'Cannot be empty': 'Не может быть пустым',
-'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Невозможно компилировать: в приложении присутствуют ошибки. Отладьте его, исправьте ошибки и попробуйте заново.',
-'Change Password': 'Изменить пароль',
-'Check to delete': 'Поставьте для удаления',
-'Checking for upgrades...': 'Проверка обновлений...',
-'Client IP': 'IP клиента',
-'Controller': 'Контроллер',
-'Controllers': 'Контроллеры',
-'Copyright': 'Copyright',
-'Create new simple application': 'Создать новое простое приложение',
-'Current request': 'Текущий запрос',
-'Current response': 'Текущий ответ',
-'Current session': 'Текущая сессия',
-'DB Model': 'Модель БД',
-'DESIGN': 'ДИЗАЙН',
-'Database': 'База данных',
-'Date and Time': 'Дата и время',
-'Delete': 'Удалить',
-'Delete:': 'Удалить:',
-'Deploy on Google App Engine': 'Развернуть на Google App Engine',
-'Description': 'Описание',
-'Design for': 'Дизайн для',
-'E-mail': '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': 'Enterprise Web Framework',
-'Error logs for "%(app)s"': 'Журнал ошибок для "%(app)"',
-'Exception instance attributes': 'Атрибуты объекта исключения',
-'Expand Abbreviation': 'Раскрыть аббревиатуру',
-'First name': 'Имя',
-'Functions with no doctests will result in [passed] tests.': 'Функции без doctest будут давать [прошел] в тестах.',
-'Go to Matching Pair': 'К подходящей паре',
-'Group ID': 'ID группы',
-'Hello World': 'Привет, Мир',
-'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': 'Если вы ответили "Да", потерпите, загрузка может потребовать времени',
-'Import/Export': 'Импорт/Экспорт',
-'Index': 'Индекс',
-'Installed applications': 'Установленные приложения',
-'Internal State': 'Внутренний статус',
-'Invalid Query': 'Неверный запрос',
-'Invalid action': 'Неверное действие',
-'Invalid email': 'Неверный email',
-'Key bindings': 'Связываник клавиш',
-'Key bindings for ZenConding Plugin': 'Связывание клавиш для плагина ZenConding',
-'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': 'Главное меню',
-'Match Pair': 'Найти пару',
-'Menu Model': 'Модель меню',
-'Merge Lines': 'Объединить линии',
-'Models': 'Модели',
-'Modules': 'Модули',
-'NO': 'НЕТ',
-'Name': 'Название',
-'New Record': 'Новая запись',
-'New application wizard': 'Мастер нового приложения',
-'New simple application': 'Новое простое приложение',
-'Next Edit Point': 'Следующее место правки',
-'No databases in this application': 'В приложении нет базы данных',
-'Origin': 'Оригинал',
-'Original/Translation': 'Оригинал/Перевод',
-'Password': 'Пароль',
-'Peeking at file': 'Просмотр',
-'Plugin "%s" in application': 'Плагин "%s" в приложении',
-'Plugins': 'Плагины',
-'Powered by': 'Обеспечен',
-'Previous Edit Point': 'Предыдущее место правки',
-'Query:': 'Запрос:',
-'Record ID': 'ID записи',
-'Register': 'Зарегистрироваться',
-'Registration key': 'Ключ регистрации',
-'Reset Password key': 'Сброс пароля',
-'Resolve Conflict file': 'Решить конфликт в файле',
-'Role': 'Роль',
-'Rows in table': 'Строк в таблице',
-'Rows selected': 'Выбрано строк',
-'Save via Ajax': 'Сохранить через Ajax',
-'Saved file hash:': 'Хэш сохраненного файла:',
-'Searching:': 'Поиск:',
-'Static files': 'Статические файлы',
-'Stylesheet': 'Таблицы стилей',
-'Sure you want to delete this object?': 'Действительно хотите удалить данный объект?',
-'TM': 'TM',
-'Table name': 'Название таблицы',
-'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 application logic, each URL path is mapped in one exposed function in the controller': 'Логика приложения, каждый URL отображается к одной функции в контроллере',
-'The data representation, define database tables and sets': 'Представление данных, определите таблицы базы данных и наборы',
-'The output of the file is a dictionary that was rendered by the view': 'Выводом файла является словарь, который создан в виде',
-'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 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': 'Эти файлы обслуживаются без обработки, ваши изображения попадут сюда',
-'This is a copy of the scaffolding application': 'Это копия сгенерированного приложения',
-'This is the %(filename)s template': 'Это шаблон %(filename)s',
-'Ticket': 'Тикет',
-'Timestamp': 'Время',
-'To create a plugin, name a file/folder plugin_[name]': 'Для создания плагина назовите файл/папку plugin_[название]',
-'Translation strings for the application': 'Строки перевода для приложения',
-'Unable to check for upgrades': 'Невозможно проверить обновления',
-'Unable to download': 'Невозможно загрузить',
-'Unable to download app': 'Невозможно загрузить',
-'Update:': 'Обновить:',
-'Upload & install packed application': 'Загрузить и установить приложение в архиве',
-'Upload a package:': 'Загрузить пакет:',
-'Upload existing application': 'Загрузить существующее приложение',
-'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Используйте (...)&(...) для AND, (...)|(...) для OR, и ~(...) для NOT при создании сложных запросов.',
-'Use an url:': 'Используйте url:',
-'User ID': 'ID пользователя',
-'Version': 'Версия',
-'View': 'Вид',
-'Views': 'Виды',
-'Welcome %s': 'Добро пожаловать, %s',
-'Welcome to web2py': 'Добро пожаловать в web2py',
-'Which called the function': 'Который вызвал функцию',
-'Wrap with Abbreviation': 'Заключить в аббревиатуру',
-'YES': 'ДА',
-'You are successfully running web2py': 'Вы успешно запустили web2by',
-'You can modify this application and adapt it to your needs': 'Вы можете изменить это приложение и подогнать под свои нужды',
-'You visited the url': 'Вы посетили URL',
-'About': 'О',
'additional code for your application': 'добавочный код для вашего приложения',
+'Additional code for your application': 'Допольнительный код для вашего приложения',
'admin disabled because no admin password': 'админка отключена, потому что отсутствует пароль администратора',
'admin disabled because not supported on google apps engine': 'админка отключена, т.к. не поддерживается на google app engine',
'admin disabled because unable to access password file': 'админка отключена, т.к. невозможно получить доступ к файлу с паролями ',
+'Admin is disabled because insecure channel': 'Админпанель выключена из-за небезопасного соединения',
+'Admin is disabled because unsecure channel': 'Админпанель выключен из-за небезопасного соединения',
+'Admin language': 'Язык админпанели',
'administrative interface': 'интерфейс администратора',
+'Administrator Password:': 'Пароль администратора:',
'and rename it (required):': 'и переименуйте его (необходимо):',
'and rename it:': ' и переименуйте его:',
'appadmin': 'appadmin',
@@ -185,57 +33,115 @@
'application "%s" uninstalled': 'Приложение "%s" удалено',
'application compiled': 'Приложение скомпилировано',
'application is compiled and cannot be designed': 'Приложение скомпилировано и дизайн не может быть изменен',
+'Application name:': 'Название приложения:',
+'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 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 сейчас?',
'arguments': 'аргументы',
+'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': 'Аутентификация',
+'Available databases and tables': 'Доступные базы данных и таблицы',
'back': 'назад',
'beautify': 'Раскрасить',
'cache': 'кэш',
'cache, errors and sessions cleaned': 'Кэш, ошибки и сессии очищены',
'call': 'вызов',
+'Cannot be empty': 'Не может быть пустым',
+'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Невозможно компилировать: в приложении присутствуют ошибки. Отладьте его, исправьте ошибки и попробуйте заново.',
'cannot create file': 'Невозможно создать файл',
'cannot upload file "%(filename)s"': 'Невозможно загрузить файл "%(filename)s"',
'Change admin password': 'Изменить пароль администратора',
+'Change Password': 'Изменить пароль',
'change password': 'изменить пароль',
'check all': 'проверить все',
'Check for upgrades': 'проверить обновления',
+'Check to delete': 'Поставьте для удаления',
+'Checking for upgrades...': 'Проверка обновлений...',
'Clean': 'Очистить',
'click here for online examples': 'нажмите здесь для онлайн примеров',
'click here for the administrative interface': 'нажмите здесь для интерфейса администратора',
'click to check for upgrades': 'нажмите для проверки обновления',
+'Client IP': 'IP клиента',
'code': 'код',
'collapse/expand all': 'свернуть/развернуть все',
'Compile': 'Компилировать',
'compiled application removed': 'скомпилированное приложение удалено',
+'Controller': 'Контроллер',
+'Controllers': 'Контроллеры',
'controllers': 'контроллеры',
+'Copyright': 'Copyright',
'Create': 'Создать',
'create file with filename:': 'Создать файл с названием:',
'create new application:': 'создать новое приложение:',
+'Create new simple application': 'Создать новое простое приложение',
'created by': 'создано',
'crontab': 'crontab',
+'Current request': 'Текущий запрос',
+'Current response': 'Текущий ответ',
+'Current session': 'Текущая сессия',
'currently running': 'сейчас работает',
'currently saved or': 'сейчас сохранено или',
'customize me!': 'настрой меня!',
'data uploaded': 'дата загрузки',
+'Database': 'База данных',
'database': 'база данных',
'database %s select': 'Выбор базы данных %s ',
'database administration': 'администраторирование базы данных',
+'Date and Time': 'Дата и время',
'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:': 'Удалить:',
'Deploy': 'Развернуть',
+'Deploy on Google App Engine': 'Развернуть на Google App Engine',
+'Deploy to OpenShift': 'Deploy to OpenShift',
+'Description': 'Описание',
'design': 'дизайн',
+'DESIGN': 'ДИЗАЙН',
+'Design for': 'Дизайн для',
+'Detailed traceback description': 'Detailed traceback description',
'direction: ltr': 'направление: ltr',
+'Disable': 'Disable',
+'docs': 'docs',
'documentation': 'документация',
'done!': 'выполнено!',
'download layouts': 'загрузить шаблоны',
'download plugins': 'загрузить плагины',
+'E-mail': 'E-mail',
+'EDIT': 'ПРАВКА',
'Edit': 'Правка',
+'Edit application': 'Правка приложения',
'edit controller': 'правка контроллера',
+'Edit current record': 'Правка текущей записи',
+'Edit Profile': 'Правка профиля',
'edit profile': 'правка профиля',
+'Edit This App': 'Правка данного приложения',
'edit views:': 'правка видов:',
+'Editing file': 'Правка файла',
+'Editing file "%s"': 'Правка файла "%s"',
+'Editing Language file': 'Правка языкового файла',
+'Editing Plural Forms File': 'Editing Plural Forms File',
+'Enterprise Web Framework': 'Enterprise Web Framework',
+'Error logs for "%(app)s"': 'Журнал ошибок для "%(app)"',
+'Error snapshot': 'Error snapshot',
+'Error ticket': 'Error ticket',
'Errors': 'Ошибка',
'escape': 'escape',
+'Exception instance attributes': 'Атрибуты объекта исключения',
+'Expand Abbreviation': 'Раскрыть аббревиатуру',
'export as csv file': 'Экспорт в CSV',
'exposes': 'открывает',
'extends': 'расширяет',
@@ -249,95 +155,219 @@
'file does not exist': 'файл не существует',
'file saved on %(time)s': 'файл сохранен %(time)s',
'file saved on %s': 'файл сохранен %s',
-'files': 'файлы',
'filter': 'фильтр',
+'First name': 'Имя',
+'Frames': 'Frames',
+'Functions with no doctests will result in [passed] tests.': 'Функции без doctest будут давать [прошел] в тестах.',
+'Get from URL:': 'Get from URL:',
+'Go to Matching Pair': 'К подходящей паре',
+'Group ID': 'ID группы',
+'Hello World': 'Привет, Мир',
'Help': 'Помощь',
+'Hide/Show Translated strings': 'Hide/Show Translated strings',
'htmledit': 'htmledit',
+'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': 'Если вы ответили "Да", потерпите, загрузка может потребовать времени',
+'Import/Export': 'Импорт/Экспорт',
'includes': 'включает',
+'Index': 'Индекс',
'index': 'index',
'insert new': 'вставить новый',
'insert new %s': 'вставить новый %s',
+'inspect attributes': 'inspect attributes',
'Install': 'Установить',
+'Installed applications': 'Установленные приложения',
'internal error': 'внутренняя ошибка',
+'Internal State': 'Внутренний статус',
+'Invalid action': 'Неверное действие',
+'Invalid email': 'Неверный email',
'invalid password': 'неверный пароль',
+'Invalid Query': 'Неверный запрос',
'invalid request': 'неверный запрос',
'invalid ticket': 'неверный тикет',
+'Key bindings': 'Связываник клавиш',
+'Key bindings for ZenConding Plugin': 'Связывание клавиш для плагина ZenConding',
'language file "%(filename)s" created/updated': 'Языковой файл "%(filename)s" создан/обновлен',
+'Language files (static strings) updated': 'Языковые файлы (статичные строки) обновлены',
'languages': 'языки',
+'Languages': 'Языки',
'languages updated': 'языки обновлены',
+'Last name': 'Фамилия',
+'Last saved on:': 'Последнее сохранение:',
+'Layout': 'Верстка',
+'License for': 'Лицензия для',
'loading...': 'загрузка...',
+'locals': 'locals',
'located in the file': 'расположенный в файле',
+'Login': 'Логин',
'login': 'логин',
+'Login to the Administrative Interface': 'Вход в интерфейс администратора',
'Logout': 'выход',
+'Lost Password': 'Забыли пароль',
'lost password?': 'Пароль утерен?',
+'Main Menu': 'Главное меню',
+'Match Pair': 'Найти пару',
+'Menu Model': 'Модель меню',
'merge': 'объединить',
+'Merge Lines': 'Объединить линии',
+'Models': 'Модели',
'models': 'модели',
+'Modules': 'Модули',
'modules': 'модули',
+'Name': 'Название',
'new application "%s" created': 'новое приложение "%s" создано',
+'New application wizard': 'Мастер нового приложения',
+'New Record': 'Новая запись',
'new record inserted': 'новая запись вставлена',
+'New simple application': 'Новое простое приложение',
'next 100 rows': 'следующие 100 строк',
+'Next Edit Point': 'Следующее место правки',
+'NO': 'НЕТ',
+'No databases in this application': 'В приложении нет базы данных',
'or import from csv file': 'или испорт из cvs файла',
'or provide app url:': 'или URL приложения:',
'or provide application url:': 'или URL приложения:',
+'Origin': 'Оригинал',
+'Original/Translation': 'Оригинал/Перевод',
'Overwrite installed app': 'Переписать на установленное приложение',
'Pack all': 'упаковать все',
'Pack compiled': 'Архив скомпилирован',
'pack plugin': 'Упаковать плагин',
+'Password': 'Пароль',
+'Peeking at file': 'Просмотр',
'please wait!': 'подождите, пожалуйста!',
+'Plugin "%s" in application': 'Плагин "%s" в приложении',
'plugins': 'плагины',
+'Plugins': 'Плагины',
+'Plural Form #%s': 'Plural Form #%s',
+'Plural-Forms:': 'Plural-Forms:',
+'Powered by': 'Обеспечен',
'previous 100 rows': 'предыдущие 100 строк',
+'Previous Edit Point': 'Предыдущее место правки',
+'Query:': 'Запрос:',
'record': 'запись',
'record does not exist': 'запись не существует',
'record id': 'id записи',
+'Record ID': 'ID записи',
'register': 'зарегистрироваться',
+'Register': 'Зарегистрироваться',
+'Registration key': 'Ключ регистрации',
+'Reload routes': 'Reload routes',
'Remove compiled': 'Удалить скомпилированное',
+'request': 'request',
+'Reset Password key': 'Сброс пароля',
+'Resolve Conflict file': 'Решить конфликт в файле',
+'response': 'response',
'restore': 'восстановить',
'revert': 'откатиться',
+'Role': 'Роль',
+'Rows in table': 'Строк в таблице',
+'Rows selected': 'Выбрано строк',
+'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': 'сохранить',
+'Save via Ajax': 'Сохранить через Ajax',
+'Saved file hash:': 'Хэш сохраненного файла:',
'selected': 'выбрано',
+'session': 'session',
'session expired': 'сессия истекла',
'shell': 'shell',
+'Singular Form': 'Singular Form',
'Site': 'сайт',
'some files could not be removed': 'некоторые файлы нельзя удалить',
'Start wizard': 'запустить мастер',
'state': 'статус',
'static': 'статичные файлы',
+'Static files': 'Статические файлы',
+'Stylesheet': 'Таблицы стилей',
'submit': 'Отправить',
+'Sure you want to delete this object?': 'Действительно хотите удалить данный объект?',
'table': 'таблица',
+'Table name': 'Название таблицы',
'test': 'тест',
'test_def': 'test_def',
'test_for': 'test_for',
'test_if': 'test_if',
'test_try': 'test_try',
+'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 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': 'представление данных, определить таблицы и наборы',
+'The data representation, define database tables and sets': 'Представление данных, определите таблицы базы данных и наборы',
+'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': 'слой представления, виды известные так же как шаблоны',
+'There are no controllers': 'Отсутствуют контроллеры',
+'There are no models': 'Отсутствуют модели',
+'There are no modules': 'Отсутствуют модули',
+'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 a copy of the scaffolding application': 'Это копия сгенерированного приложения',
+'This is the %(filename)s template': 'Это шаблон %(filename)s',
+'Ticket': 'Тикет',
+'Ticket ID': 'Ticket ID',
+'Timestamp': 'Время',
+'TM': 'TM',
'to previous version.': 'на предыдущую версию.',
+'To create a plugin, name a file/folder plugin_[name]': 'Для создания плагина назовите файл/папку plugin_[название]',
+'toggle breakpoint': 'toggle breakpoint',
+'Traceback': 'Traceback',
'translation strings for the application': 'строки перевода для приложения',
+'Translation strings for the application': 'Строки перевода для приложения',
'try': 'try',
'try something like': 'попробовать что-либо вида',
+'Unable to check for upgrades': 'Невозможно проверить обновления',
'unable to create application "%s"': 'невозможно создать приложение "%s" nicht möglich',
'unable to delete file "%(filename)s"': 'невозможно удалить файл "%(filename)s"',
+'Unable to download': 'Невозможно загрузить',
+'Unable to download app': 'Невозможно загрузить',
'unable to parse csv file': 'невозможно разобрать файл csv',
'unable to uninstall "%s"': 'невозможно удалить "%s"',
'uncheck all': 'снять выбор всего',
'Uninstall': 'Удалить',
'update': 'обновить',
'update all languages': 'обновить все языки',
+'Update:': 'Обновить:',
'upgrade web2py now': 'обновить web2py сейчас',
'upload': 'загрузить',
+'Upload & install packed application': 'Загрузить и установить приложение в архиве',
+'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.': 'Используйте (...)&(...) для AND, (...)|(...) для OR, и ~(...) для NOT при создании сложных запросов.',
+'Use an url:': 'Используйте url:',
'user': 'пользователь',
+'User ID': 'ID пользователя',
'variables': 'переменные',
+'Version': 'Версия',
'versioning': 'версии',
+'Versioning': 'Versioning',
+'View': 'Вид',
'view': 'вид',
+'Views': 'Виды',
'views': 'виды',
-'web2py Recent Tweets': 'последние твиты по web2py',
+'Web Framework': 'Web Framework',
'web2py is up to date': 'web2py обновлен',
+'web2py Recent Tweets': 'последние твиты по web2py',
+'Welcome %s': 'Добро пожаловать, %s',
+'Welcome to web2py': 'Добро пожаловать в web2py',
+'Which called the function': 'Который вызвал функцию',
+'Wrap with Abbreviation': 'Заключить в аббревиатуру',
'xml': 'xml',
+'YES': 'ДА',
+'You are successfully running web2py': 'Вы успешно запустили web2by',
+'You can modify this application and adapt it to your needs': 'Вы можете изменить это приложение и подогнать под свои нужды',
+'You visited the url': 'Вы посетили URL',
}
-
-
diff --git a/applications/admin/languages/sl.py b/applications/admin/languages/sl.py
index e9f50e07..7d1638ff 100755
--- a/applications/admin/languages/sl.py
+++ b/applications/admin/languages/sl.py
@@ -1,368 +1,369 @@
-# coding: utf8
-{
-'"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',
-'%s rows deleted': '%s vrstic izbrisanih',
-'%s rows updated': '%s vrstic popravljeno',
-'(requires internet access)': '(zahteva internetni dostop)',
-'(something like "it-it")': '(nekaj kot "sl-SI" ali samo "sl")',
-'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',
-'A new version of web2py is available: Version 1.85.3 (2010-09-18 07:07:46)\n': 'Nova različica web2py je na voljo: Različica 1.85.3 (2010-09-18 07:07:46)\n',
-'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',
-'Additional code for your application': 'Dodatna koda za vašo aplikacijo',
-'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',
-'Administrator Password:': 'Skrbniško geslo:',
-'Application name:': 'Ime aplikacije:',
-'Are you sure you want to delete file "%s"?': 'Ali res želite pobrisati datoteko "%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?',
-'Authentication': 'Avtentikacija',
-'Available databases and tables': 'Podatkovne baze in tabele',
-'Begin': 'Začni',
-'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',
-'Change admin password': 'Spremenite skrbniško geslo',
-'Check for upgrades': 'Preveri za posodobitve',
-'Check to delete': 'Odkljukajte, če želite izbrisati',
-'Checking for upgrades...': 'Preverjam posodobitve...',
-'Clean': 'Počisti',
-'Click row to expand traceback': 'Kliknite vrstico da razširite sledenje',
-'Click row to view a ticket': 'Kliknite vrstico za ogled listka',
-'Client IP': 'IP klienta',
-'Compile': 'Prevedi',
-'Controller': 'Krmilnik',
-'Controllers': 'Krmilniki',
-'Copyright': 'Copyright',
-'Count': 'Število',
-'Create': 'Ustvari',
-'Create new simple application': 'Ustvari novo enostavno aplikacijo',
-'Current request': 'Trenutna zahteva',
-'Current response': 'Trenutni odgovor',
-'Current session': 'Trenutna seja',
-'DB Model': 'Podatkovni model',
-'DESIGN': 'Izgled',
-'Database': 'Podatkovna baza',
-'Date and Time': 'Datum in čas',
-'Delete': 'Izbriši',
-'Delete this file (you will be asked to confirm deletion)': 'Izbriši to datoteko (izbris boste morali potrditi)',
-'Delete:': 'Izbriši:',
-'Deploy': 'Namesti',
-'Deploy on Google App Engine': 'Prenesi na Google App sistem',
-'Description': 'Opis',
-'Design for': 'Oblikuj za',
-'Detailed traceback description': 'Natačen opis sledenja',
-'Disable': 'Izključi',
-'E-mail': 'E-mail',
-'EDIT': 'UREDI',
-'Edit': 'Uredi',
-'Edit Profile': 'Uredi profil',
-'Edit This App': 'Uredi ta program',
-'Edit application': 'Uredi program',
-'Edit current record': 'Uredi trenutni zapis',
-'Editing Language file': 'Uredi jezikovno datoteko',
-'Editing file': 'Urejanje datoteke',
-'Editing file "%s"': 'Urejanje datoteke "%s"',
-'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:',
-'Searching:': 'Iskanje:',
-'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',
-'export as csv file': 'izvozi kot CSV',
-'exposes': 'objavlja',
-'extends': 'razširja',
-'failed to reload module': 'nisem uspel ponovno naložiti modula',
-'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',
-'file "%(filename)s" was not deleted': 'datoteka "%(filename)s" ni bila izbrisana',
-'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 saved on %(time)s': 'datoteka shranjena %(time)s',
-'file saved on %s': 'datoteka shranjena %s',
-'files': 'datoteke',
-'filter': 'fiter',
-'htmledit': 'htmledit',
-'includes': 'vključuje',
-'index': 'indeks',
-'insert new': 'vstavi nov',
-'insert new %s': 'vstavi nov %s',
-'inspect attributes': 'pregled lastnosti',
-'internal error': 'notranja napaka',
-'invalid password': 'napačno geslo',
-'invalid request': 'napačna zahteva',
-'invalid ticket': 'napačen kartonček',
-'language file "%(filename)s" created/updated': 'jezikovna datoteka "%(filename)s" ustvarjena/posodobljena',
-'languages': 'jeziki',
-'languages updated': 'jeziki posodobljeni',
-'loading...': 'nalaganje...',
-'locals': 'locals',
-'located in the file': 'se nahaja v datoteki',
-'login': 'prijava',
-'lost password?': 'Izgubljeno geslo?',
-'merge': 'združi',
-'models': 'modeli',
-'modules': 'moduli',
-'new application "%s" created': 'ustvarjen nov program "%s"',
-'new record inserted': 'vstavljen nov zapis',
-'next 100 rows': 'naslednjih 100 zapisov',
-'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:',
-'pack plugin': 'zapakiraj vtičnik',
-'please wait!': 'Prosim počakajte!',
-'plugins': 'vtičniki',
-'previous 100 rows': 'prejšnjih 100 zapisov',
-'record': 'zapis',
-'record does not exist': 'zapis ne obstaja',
-'record id': 'id zapisa',
-'register': 'registracija',
-'request': 'zahteva',
-'response': 'odgovor',
-'restore': 'obnovi',
-'revert': 'povrni',
-'save': 'shrani',
-'selected': 'izbrano',
-'session': 'seja',
-'session expired': 'seja pretekla',
-'shell': 'lupina',
-'some files could not be removed': 'nekaterih datotek se ni dalo izbrisati',
-'state': 'stanje',
-'static': 'statično',
-'submit': 'pošlji',
-'table': 'tabela',
-'test': 'test',
-'test_def': 'test_def',
-'test_for': 'test_for',
-'test_if': 'test_if',
-'test_try': 'test_try',
-'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 data representation, define database tables and sets': 'podatkovna predstavitev, definirajte tabele in množice',
-'the presentations layer, views are also known as templates': 'predstavitveni nivo, pogledi so tudi znani kot predloge',
-'these files are served without processing, your images go here': 'te datoteke so poslane brez posredovanja in obdelave, svoje slike shranite tu',
-'to previous version.': 'na prejšnjo različico.',
-'translation strings for the application': 'prevodna besedila za program',
-'try': 'poskusi',
-'try something like': 'poskusite na primer',
-'unable to create application "%s"': 'ne morem ustvariti programa "%s" ',
-'unable to delete file "%(filename)s"': 'ne morem izbrisati datoteke "%(filename)s"',
-'unable to parse csv file': 'ne morem obdelati csv datoteke',
-'unable to uninstall "%s"': 'ne morem odstraniti "%s"',
-'uncheck all': 'odznači vse',
-'update': 'posodobi',
-'update all languages': 'posodobi vse jezike',
-'upgrade web2py now': 'posodobi web2py',
-'upload': 'naloži',
-'upload application:': 'naloži program:',
-'upload file:': 'naloži datoteko:',
-'upload plugin file:': 'naloži vtičnik:',
-'user': 'uporabnik',
-'variables': 'spremenljivke',
-'versioning': 'različice',
-'view': 'pogled',
-'views': 'pogledi',
-'web2py Recent Tweets': 'zadnji tviti na web2py',
-'web2py is up to date': 'web2py je ažuren',
-'xml': 'xml',
-}
+# coding: utf8
+{
+'!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',
+'%s %%{row} deleted': '%s vrstic izbrisanih',
+'%s %%{row} updated': '%s vrstic popravljeno',
+'(requires internet access)': '(zahteva internetni dostop)',
+'(something like "it-it")': '(nekaj kot "sl-SI" ali samo "sl")',
+'@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',
+'A new version of web2py is available: Version 1.85.3 (2010-09-18 07:07:46)\n': 'Nova različica web2py je na voljo: Različica 1.85.3 (2010-09-18 07:07:46)\n',
+'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',
+'Additional code for your application': 'Dodatna koda za vašo aplikacijo',
+'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',
+'Administrator Password:': 'Skrbniško geslo:',
+'Application name:': 'Ime aplikacije:',
+'Are you sure you want to delete file "%s"?': 'Ali res želite pobrisati datoteko "%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?',
+'Authentication': 'Avtentikacija',
+'Available databases and tables': 'Podatkovne baze in tabele',
+'Begin': 'Začni',
+'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',
+'Change admin password': 'Spremenite skrbniško geslo',
+'Check for upgrades': 'Preveri za posodobitve',
+'Check to delete': 'Odkljukajte, če želite izbrisati',
+'Checking for upgrades...': 'Preverjam posodobitve...',
+'Clean': 'Počisti',
+'Click row to expand traceback': 'Kliknite vrstico da razširite sledenje',
+'Click row to view a ticket': 'Kliknite vrstico za ogled listka',
+'Client IP': 'IP klienta',
+'Compile': 'Prevedi',
+'Controller': 'Krmilnik',
+'Controllers': 'Krmilniki',
+'Copyright': 'Copyright',
+'Count': 'Število',
+'Create': 'Ustvari',
+'Create new simple application': 'Ustvari novo enostavno aplikacijo',
+'Current request': 'Trenutna zahteva',
+'Current response': 'Trenutni odgovor',
+'Current session': 'Trenutna seja',
+'DB Model': 'Podatkovni model',
+'DESIGN': 'Izgled',
+'Database': 'Podatkovna baza',
+'Date and Time': 'Datum in čas',
+'Delete': 'Izbriši',
+'Delete this file (you will be asked to confirm deletion)': 'Izbriši to datoteko (izbris boste morali potrditi)',
+'Delete:': 'Izbriši:',
+'Deploy': 'Namesti',
+'Deploy on Google App Engine': 'Prenesi na Google App sistem',
+'Description': 'Opis',
+'Design for': 'Oblikuj za',
+'Detailed traceback description': 'Natačen opis sledenja',
+'Disable': 'Izključi',
+'E-mail': 'E-mail',
+'EDIT': 'UREDI',
+'Edit': 'Uredi',
+'Edit Profile': 'Uredi profil',
+'Edit This App': 'Uredi ta program',
+'Edit application': 'Uredi program',
+'Edit current record': 'Uredi trenutni zapis',
+'Editing Language file': 'Uredi jezikovno datoteko',
+'Editing file': 'Urejanje datoteke',
+'Editing file "%s"': 'Urejanje datoteke "%s"',
+'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',
+'export as csv file': 'izvozi kot CSV',
+'exposes': 'objavlja',
+'extends': 'razširja',
+'failed to reload module': 'nisem uspel ponovno naložiti modula',
+'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',
+'file "%(filename)s" was not deleted': 'datoteka "%(filename)s" ni bila izbrisana',
+'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 saved on %(time)s': 'datoteka shranjena %(time)s',
+'file saved on %s': 'datoteka shranjena %s',
+'filter': 'fiter',
+'htmledit': 'htmledit',
+'includes': 'vključuje',
+'index': 'indeks',
+'insert new': 'vstavi nov',
+'insert new %s': 'vstavi nov %s',
+'inspect attributes': 'pregled lastnosti',
+'internal error': 'notranja napaka',
+'invalid password': 'napačno geslo',
+'invalid request': 'napačna zahteva',
+'invalid ticket': 'napačen kartonček',
+'language file "%(filename)s" created/updated': 'jezikovna datoteka "%(filename)s" ustvarjena/posodobljena',
+'languages': 'jeziki',
+'languages updated': 'jeziki posodobljeni',
+'loading...': 'nalaganje...',
+'locals': 'locals',
+'located in the file': 'se nahaja v datoteki',
+'login': 'prijava',
+'lost password?': 'Izgubljeno geslo?',
+'merge': 'združi',
+'models': 'modeli',
+'modules': 'moduli',
+'new application "%s" created': 'ustvarjen nov program "%s"',
+'new record inserted': 'vstavljen nov zapis',
+'next 100 rows': 'naslednjih 100 zapisov',
+'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:',
+'pack plugin': 'zapakiraj vtičnik',
+'please wait!': 'Prosim počakajte!',
+'plugins': 'vtičniki',
+'previous 100 rows': 'prejšnjih 100 zapisov',
+'record': 'zapis',
+'record does not exist': 'zapis ne obstaja',
+'record id': 'id zapisa',
+'register': 'registracija',
+'request': 'zahteva',
+'response': 'odgovor',
+'restore': 'obnovi',
+'revert': 'povrni',
+'save': 'shrani',
+'selected': 'izbrano',
+'session': 'seja',
+'session expired': 'seja pretekla',
+'shell': 'lupina',
+'some files could not be removed': 'nekaterih datotek se ni dalo izbrisati',
+'state': 'stanje',
+'static': 'statično',
+'submit': 'pošlji',
+'table': 'tabela',
+'test': 'test',
+'test_def': 'test_def',
+'test_for': 'test_for',
+'test_if': 'test_if',
+'test_try': 'test_try',
+'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 data representation, define database tables and sets': 'podatkovna predstavitev, definirajte tabele in množice',
+'the presentations layer, views are also known as templates': 'predstavitveni nivo, pogledi so tudi znani kot predloge',
+'these files are served without processing, your images go here': 'te datoteke so poslane brez posredovanja in obdelave, svoje slike shranite tu',
+'to previous version.': 'na prejšnjo različico.',
+'translation strings for the application': 'prevodna besedila za program',
+'try': 'poskusi',
+'try something like': 'poskusite na primer',
+'unable to create application "%s"': 'ne morem ustvariti programa "%s" ',
+'unable to delete file "%(filename)s"': 'ne morem izbrisati datoteke "%(filename)s"',
+'unable to parse csv file': 'ne morem obdelati csv datoteke',
+'unable to uninstall "%s"': 'ne morem odstraniti "%s"',
+'uncheck all': 'odznači vse',
+'update': 'posodobi',
+'update all languages': 'posodobi vse jezike',
+'upgrade web2py now': 'posodobi web2py',
+'upload': 'naloži',
+'upload application:': 'naloži program:',
+'upload file:': 'naloži datoteko:',
+'upload plugin file:': 'naloži vtičnik:',
+'user': 'uporabnik',
+'variables': 'spremenljivke',
+'versioning': 'različice',
+'view': 'pogled',
+'views': 'pogledi',
+'web2py Recent Tweets': 'zadnji tviti na web2py',
+'web2py is up to date': 'web2py je ažuren',
+'xml': 'xml',
+}
diff --git a/applications/admin/languages/uk.py b/applications/admin/languages/uk.py
index 1a29f017..ef4487a6 100644
--- a/applications/admin/languages/uk.py
+++ b/applications/admin/languages/uk.py
@@ -1,93 +1,185 @@
# coding: utf8
{
-' at char %s': ' на символі %s',
-' at line %s': ' в рядку %s',
-'"User Exception" debug mode. ': 'Режим ладнання "Сигнали від користувачів" ("User Exception" debug mode) ',
-'"User Exception" debug mode. An error ticket could be issued!': 'Режим ладнання "Сигнали від користувачів" ("User Exception" debug mode). Користувачі можуть залишати відмітки про помилки!',
+'!langcode!': 'uk',
+'!langname!': 'Українська',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Оновити" це додатковий вираз, такий, як "field1=\'нове_значення\'". Ви не можете змінювати або вилучати дані об\'єднаних таблиць',
+'"User Exception" debug mode. ': 'Режим ладнання "Сигнали від користувачів" ("User Exception" debug mode) ',
+'"User Exception" debug mode. An error ticket could be issued!': 'Режим ладнання "Сигнали від користувачів" ("User Exception" debug mode). Користувачі можуть залишати позначки про помилки!',
+'%s': '%s',
+'%s %%{row} deleted': 'Вилучено %s %%{рядок}',
+'%s %%{row} updated': 'Вилучено %s %%{рядок}',
+'%s Recent Tweets': '%s останніх твітів',
+'%s students registered': '%s студентів зареєстровано',
'%Y-%m-%d': '%Y/%m/%d',
'%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S',
-'%s Recent Tweets': '%s останніх твітів',
-'%s rows deleted': '%s рядків вилучено',
-'%s rows updated': '%s рядків оновлено',
-'%s students registered': '%s студентів зареєстровано',
'(requires internet access)': '(потрібно мати доступ в інтернет)',
'(something like "it-it")': '(щось схоже на "uk-ua")',
-'ATTENTION:': 'УВАГА:',
-'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': "УВАГА: Вхід потребує надійного (HTTPS) з'єднання або запуску на локальному комп'ютері.",
-'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ОБЕРЕЖНО: ТЕСТУВАННЯ НЕ Є ПОТОКО-БЕЗПЕЧНИМ, ТОЖ НЕ ЗАПУСКАЙТЕ ДЕКІЛЬКА ТЕСТІВ ОДНОЧАСНО.',
-'ATTENTION: you cannot edit the running application!': 'УВАГА: Ви не можете редагувати додаток, який зараз виконуєте!',
+'@markmin\x01Searching: **%s** %%{file}': 'Знайдено: **%s** %%{файл}',
'Abort': 'Припинити',
'About': 'Про',
+'about': 'про',
'About application': 'Про додаток',
'Add breakpoint': 'Додати точку зупинки',
'Additional code for your application': 'Додатковий код для вашого додатку',
+'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': 'Мова інтерфейсу:',
+'administrative interface': 'інтерфейс адміністратора',
'Administrator Password:': 'Пароль адміністратора:',
+'and rename it:': 'i змінити назву на:',
'App does not exist or your are not authorized': 'Додаток не існує, або ви не авторизовані',
+'appadmin': 'Aдм.панель',
+'appadmin is disabled because insecure channel': "адмін.панель відключено через використання ненадійного каналу зв'язку",
+'application "%s" uninstalled': 'додаток "%s" вилучено',
+'application %(appname)s installed with md5sum: %(digest)s': 'додаток %(appname)s встановлено з md5sum: %(digest)s',
'Application cannot be generated in demo mode': 'В демо-режимі генерувати додатки не можна',
+'application compiled': 'додаток скомпільовано',
+'application is compiled and cannot be designed': 'додаток скомпільований. налаштування змінювати не можна',
'Application name:': 'Назва додатку:',
+'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"?',
+'arguments': 'аргументи',
+'at char %s': 'на символі %s',
+'at line %s': 'в рядку %s',
+'ATTENTION:': 'УВАГА:',
+'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': "УВАГА: Вхід потребує надійного (HTTPS) з'єднання або запуску на локальному комп'ютері.",
+'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ОБЕРЕЖНО: ТЕСТУВАННЯ НЕ Є ПОТОКО-БЕЗПЕЧНИМ, ТОЖ НЕ ЗАПУСКАЙТЕ ДЕКІЛЬКА ТЕСТІВ ОДНОЧАСНО.',
+'ATTENTION: you cannot edit the running application!': 'УВАГА: Ви не можете редагувати додаток, який зараз виконуєте!',
'Available databases and tables': 'Доступні бази даних та таблиці',
+'back': '<< назад',
+'bad_resource': 'поганий_ресурс',
'Basics': 'Початок',
'Begin': 'Початок',
+'breakpoint': 'точку зупинки',
'Breakpoints': 'Точки зупинок',
+'breakpoints': 'точки зупинок',
'Bulk Register': 'Масова реєстрація',
'Bulk Student Registration': 'Масова реєстрація студентів',
+'cache': 'кеш',
'Cache Keys': 'Ключі кешу',
+'cache, errors and sessions cleaned': 'кеш, список зареєстрованих помилок та сесії очищенні',
'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': 'Змінити пароль адміністратора',
+'check all': 'відмітити всі',
'Check for upgrades': 'Перевірити оновлення',
'Check to delete': 'Помітити на вилучення',
'Checking for upgrades...': 'Відбувається пошук оновлень...',
'Clean': 'Очистити',
+'Clear CACHE?': 'Очистити ВЕСЬ кеш?',
+'Clear DISK': 'Очистити ДИСКОВИЙ КЕШ',
+'Clear RAM': "Очистити КЕШ В ПАМ'ЯТІ",
'Click row to expand traceback': '"Клацніть" мишкою по рядку, щоб розгорнути стек викликів (traceback)',
-'Click row to view a ticket': 'Для перегляду відмітки (ticket) "клацніть" мишкою по рядку',
+'Click row to view a ticket': 'Для перегляду позначки (ticket) "клацніть" мишкою по рядку',
+'code': 'код',
'Code listing': 'Лістинг',
+'collapse/expand all': 'згорнути/розгорнути все',
+'Command': 'Команда',
'Compile': 'Компілювати',
+'compiled application removed': 'скомпільований додаток вилучено',
'Condition': 'Умова',
+'contact_admin': "зв'язатись_з_адміністратором",
+'continue': 'продовжити',
'Controllers': 'Контролери',
+'controllers': 'контролери',
'Count': 'К-сть',
'Create': 'Створити',
+'create': 'створити',
+'create file with filename:': 'створити файл з назвою:',
+'create plural-form': 'створити форму множини',
+'Create rules': 'Створити правила',
+'created by': 'Автор:',
'Created On': 'Створено в',
+'crontab': 'таблиця cron',
'Current request': 'Поточний запит',
'Current response': 'Поточна відповідь',
'Current session': 'Поточна сесія',
+'currently running': 'наразі, активний додаток',
+'currently saved or': 'останній збережений, або',
+'data uploaded': 'дані завантажено',
+'database': 'база даних',
+'database %s select': 'Вибірка з бази даних %s',
+'database administration': 'адміністрування бази даних',
'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:': 'Вилучити:',
+'deleted after first hit': 'автоматично вилучається після першого спрацювання',
'Deploy': 'Розгорнути',
'Deploy on Google App Engine': 'Розгорнути на Google App Engine (GAE)',
+'Deploy to OpenShift': 'Розгорнути на OpenShift',
'Deployment form': 'Форма розгортання (deployment form)',
+'design': 'налаштування',
'Detailed traceback description': 'Детальний опис стеку викликів (traceback)',
+'details': 'детальніше',
+'direction: ltr': 'напрямок: зліва-направо (ltr)',
+'directory not found': 'каталог не знайдено',
'Disable': 'Вимкнути',
'Disabled': 'Вимкнено',
+'disabled in demo mode': 'відключено в демо-режимі',
+'disabled in multi user mode': 'відключено в багато-користувацькому режимі',
'Disk Cache Keys': 'Ключі дискового кешу',
+'Disk Cleared': 'Дисковий кеш очищено',
+'docs': 'док.',
+'done!': 'зроблено!',
'Downgrade': 'Повернути попередню версію',
+'download layouts': 'завантажити макет (layout)',
+'download plugins': 'завантажити втулки',
'Edit': 'Редагувати',
+'edit all': 'редагувати всі',
'Edit application': 'Налаштування додатку',
+'edit controller': 'редагувати контролер',
'Edit current record': 'Редагувати поточний запис',
-'Editing Language file': 'Редагується файл перекладу',
+'edit views:': 'редагувати відображення (views):',
'Editing file "%s"': 'Редагується файл "%s"',
+'Editing Language file': 'Редагується файл перекладу',
+'Editing Plural Forms File': 'Редагується файл форм множини',
'Enable': 'Увімкнути',
+'enter a value': 'введіть значення',
'Error': 'Помилка',
'Error logs for "%(app)s"': 'Список зареєстрованих помилок додатку "%(app)s"',
'Error snapshot': 'Розгорнутий знімок стану (Error snapshot)',
-'Error ticket': 'Відмітка (ticket) про помилку',
+'Error ticket': 'Позначка (ticket) про помилку',
'Errors': 'Помилки',
+'Exception %(extype)s: %(exvalue)s': 'Виключення %(extype)s: %(exvalue)s',
'Exception %s': 'Виключення %s',
'Exception instance attributes': 'Атрибути примірника класу Exception (виключення)',
'Expand Abbreviation': 'Розгорнути абревіатуру',
+'export as csv file': 'експортувати як файл csv',
+'exposes': 'обслуговує',
+'exposes:': 'обслуговує:',
+'extends': 'розширює',
+'failed to compile file because:': 'не вдалось скомпілювати файл через:',
+'failed to reload module because:': 'не вдалось перевантажити модуль через:',
+'faq': 'ЧаПи (faq)',
'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 saved on %(time)s': 'файл збережено в %(time)s',
+'file saved on %s': 'файл збережено в %s',
'Filename': "Ім'я файлу",
+'filter': 'фільтр',
'Frames': 'Стек викликів',
'Functions with no doctests will result in [passed] tests.': 'Функції, в яких відсутні док-тести відносяться до функцій, які успішно пройшли тести.',
'GAE Email': 'Ел.пошта GAE',
@@ -95,106 +187,192 @@
'GAE Password': 'Пароль GAE',
'Generate': 'Генерувати',
'Get from URL:': 'Отримати з URL:',
-'Globals': 'Глобальні змінні',
+'Globals##debug': 'Глобальні змінні',
'Go to Matching Pair': 'Перейти до відповідної пари',
+'go!': 'почали!',
'Google App Engine Deployment Interface': 'Інтерфейс розгортання Google App Engine',
'Google Application Id': 'Ідентифікатор Google Application',
'Goto': 'Перейти до',
'Help': 'Допомога',
-'Hide/Show Translated strings': 'Сховати/показати рядки перекладу',
+'Hide/Show Translated strings': 'Сховати/показати ВЖЕ ПЕРЕКЛАДЕНІ рядки',
'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.\nA 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).\r\nЗелений заголовок сигналізує, що всі тести (з наявних) пройшли успішно. В цьому випадку результат тестів показано не буде.',
+'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.': 'Якщо в наданому вище звіті присутня позначка про помилку (ticket number), то це вказує на збій у виконанні контролера ще до початку запуску док-тестів. Це, зазвичай, сигналізує про помилку вирівнювання тексту програми (indention error) або помилку за межами функції (error outside function code).\r\nЗелений заголовок сигналізує, що всі тести (з наявних) пройшли успішно. В цьому випадку результат тестів показано не буде.',
'Import/Export': 'Імпорт/Експорт',
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'Під час розробки , використовуйте вбудований веб-сервер Rocket, він найкраще налаштований на спільну роботу з інтерактивним ладначем.',
+'includes': 'включає',
+'index': 'індекс',
+'insert new': 'вставити новий',
+'insert new %s': 'вставити новий %s',
+'inspect attributes': 'інспектувати атрибути',
'Install': 'Встановлення',
'Installed applications': 'Встановлені додатки (applications)',
'Interaction at %s line %s': 'Виконується %s рядок %s',
'Interactive console': 'Інтерактивна консоль',
+'internal error': 'внутрішня помилка',
+'internal error: %s': 'внутрішня помилка: %s',
'Internal State': 'Внутрішній стан',
-'Invalid Query': 'Помилковий запит',
'Invalid action': 'Помилкова дія',
+'invalid circual reference': 'помилкове циклічне посилання',
+'invalid circular reference': 'помилкове циклічне посилання',
+'invalid password': 'неправильний пароль',
+'invalid password.': 'неправильний пароль.',
+'Invalid Query': 'Помилковий запит',
+'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',
-'Language files (static strings) updated': 'Файли перекладів (незмінні рядки) оновлено',
+'kill process': 'вбити процес',
+'language file "%(filename)s" created/updated': 'Файл перекладу "%(filename)s" створено/оновлено',
+'Language files (static strings) updated': 'Файли перекладів (із статичних рядків в першоджерелах) оновлено',
+'languages': 'переклади',
'Languages': 'Переклади',
'Last saved on:': 'Востаннє збережено:',
'License for': 'Ліцензія додатку',
'Line number': '№ рядка',
'LineNo': '№ рядка',
-'Locals': 'Локальні змінні',
+'loading...': 'завантаження...',
+'locals': 'локальні',
+'Locals##debug': 'Локальні змінні',
'Login': 'Вхід',
+'login': 'вхід',
'Login to the Administrative Interface': 'Вхід в адміністративний інтерфейс',
'Logout': 'Вихід',
'Main Menu': 'Основне меню',
'Manage Admin Users/Students': 'Адміністратор керування користувачами/студентами',
'Manage Students': 'Керувати студентами',
'Match Pair': 'Знайти пару',
+'merge': "з'єднати",
'Merge Lines': "З'єднати рядки",
'Minimum length is %s': 'Мінімальна довжина становить %s',
'Models': 'Моделі',
+'models': 'моделі',
'Modified On': 'Змінено в',
'Modules': 'Модулі',
+'modules': 'модулі',
'Must include at least %s %s': 'Має вміщувати щонайменше %s %s',
'Must include at least %s lower case': 'Повинен включати щонайменше %s малих букв',
'Must include at least %s of the following : %s': 'Має включати не менше %s таких символів : %s',
'Must include at least %s upper case': 'Повинен включати щонайменше %s великих букв',
-'NO': 'НІ',
+'new application "%s" created': 'новий додаток "%s" створено',
'New Application Wizard': 'Майстер створення нового додатку',
-'New Record': 'Новий запис',
'New application wizard': 'Майстер створення нового додатку',
+'new plugin installed': 'нова втулка (plugin) встановлена',
+'New Record': 'Новий запис',
+'new record inserted': 'новий рядок додано',
'New simple application': 'Новий простий додаток',
+'next': 'наступний',
+'next 100 rows': 'наступні 100 рядків',
'Next Edit Point': 'Наступне місце редагування',
-'No Interaction yet': 'Ладнач не активовано',
+'NO': 'НІ',
'No databases in this application': 'Даний додаток не використовує бази даних',
+'No Interaction yet': 'Ладнач не активовано',
+'no match': 'співпадань нема',
+'no permission to uninstall "%s"': 'нема прав на вилучення (uninstall) "%s"',
'No ticket_storage.txt found under /private folder': 'В каталозі /private відсутній файл ticket_storage.txt',
'Not Authorized': 'Не дозволено',
+'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': 'дизайнер БД',
+'OpenShift Deployment Interface': 'OpenShift: Інтерфейс розгортання',
+'OpenShift Output': 'Вивід OpenShift',
+'or import from csv file': 'або імпортувати через csv-файл',
'Original/Translation': 'Оригінал/переклад',
'Overwrite installed app': 'Перезаписати встановлений додаток',
-'PAM authenticated user, cannot change password here': 'Ввімкнена система ідентифікації користувачів PAM. Для зміни паролю скористайтесь командами вашої ОС ',
'Pack all': 'Запак.все',
'Pack compiled': 'Запак.компл',
+'pack plugin': 'запакувати втулку',
+'PAM authenticated user, cannot change password here': 'Ввімкнена система ідентифікації користувачів PAM. Для зміни паролю скористайтесь командами вашої ОС ',
+'password changed': 'пароль змінено',
'Path to appcfg.py': 'Шлях до appcfg.py',
+'Path to local openshift repo root.': 'Шлях до локального корня репозитарія openshift.',
+'peek': 'глянути',
'Peeking at file': 'Перегляд файлу',
'Please': 'Будь-ласка',
+'plugin': 'втулка',
+'plugin "%(plugin)s" deleted': 'втулку "%(plugin)s" вилучено',
'Plugin "%s" in application': 'Втулка "%s" в додатку',
+'plugin not specified': 'втулку не визначено',
+'plugins': 'втулки (plugins)',
'Plugins': 'Втулки (Plugins)',
+'Plural Form #%s': 'Форма множини #%s',
+'Plural-Forms:': 'Форми множини:',
'Powered by': 'Працює на',
+'previous 100 rows': 'попередні 100 рядків',
'Previous Edit Point': 'Попереднє місце редагування',
'Project Progress': 'Поступ проекту',
'Query:': 'Запит:',
-'RAM Cache Keys': "Ключ ОЗП-кешу (RAM Cache)",
+'RAM Cache Keys': 'Ключ ОЗП-кешу (RAM Cache)',
+'Ram Cleared': "Кеш в пам'яті очищено",
+'record': 'запис',
+'record does not exist': 'запису не існує',
+'record id': 'Ід.запису',
+'refresh': 'оновіть',
'Reload routes': 'Перезавантажити маршрути',
'Remove compiled': 'Вилуч.компл',
'Removed Breakpoint on %s at line %s': 'Вилучено точку зупинки у %s в рядку %s',
+'request': 'запит',
+'requires python-git, but not installed': 'Для розгортання необхідний пакет python-git, але він не встановлений',
+'resolve': "розв'язати",
'Resolve Conflict file': "Файл розв'язування конфлікту",
+'response': 'відповідь',
+'restart': 'перезапустити майстра',
+'restore': 'повернути',
+'return': 'повернутись',
+'revert': 'відновитись',
'Rows in table': 'Рядків у таблиці',
'Rows selected': 'Рядків вибрано',
+'rules are not defined': 'правила не визначені',
+'rules parsed with errors': 'в правилах є помилка',
+'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')": "Запустити тести з цього файлу (для тестування всіх файлів, вам необхідно натиснути кнопку з назвою 'тестувати всі')",
'Running on %s': 'Запущено на %s',
+'runonce': 'одноразово',
'Save': 'Зберегти',
'Save via Ajax': 'зберегти через Ajax',
'Saved file hash:': 'Хеш збереженого файлу:',
-'Searching:': 'Пошук:',
+'search': 'пошук',
+'selected': 'відмічено',
+'session': 'сесія',
+'session expired': 'час даної сесії вичерпано',
'Set Breakpoint on %s at line %s: %s': 'Додано точку зупинки в %s на рядок %s: %s',
+'shell': 'консоль',
+'signup': 'підписатись',
+'signup_requested': 'необхідна_реєстрація',
+'Singular Form': 'Форма однини',
+'site': 'сайт',
'Site': 'Сайт',
+'skip to generate': 'перейти до генерування результату',
+'some files could not be removed': 'деякі файли не можна вилучити',
'Sorry, could not find mercurial installed': 'Не вдалось виявити встановлену систему контролю версій Mercurial',
'Start a new app': 'Створюється новий додаток',
'Start wizard': 'Активувати майстра',
+'state': 'стан',
+'static': 'статичні',
'Static files': 'Статичні файли',
'Step': 'Крок',
+'step': 'крок',
+'stop': 'зупинити',
+'submit': 'застосувати',
'Submit': 'Застосувати',
+'successful': 'успішно',
+'table': 'таблиця',
+'tags': 'мітки (tags)',
'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.table1.field1==\'значення\'". Вираз "db.table1.field1==db.table2.field2" повертає результат об\'єднання (SQL JOIN) таблиць.',
-'The app exists, was NOT created by wizard, continue to overwrite!': 'Додаток вже існує, і його НЕ було створено майстром. Продовжуємо перезаписування!',
'The app exists, was created by wizard, continue to overwrite!': 'Додаток вже існує і його було створено майстром. Продовжуємо переписування!',
-'The application logic, each URL path is mapped in one exposed function in the controller': 'Логіка додатку, кожний шлях URL проектується на одну з експонуючих функцій в контролері',
+'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': 'Презентаційний рівень, відображення, відомі також як шаблони',
'There are no controllers': 'Жодного контролера, наразі, не існує',
@@ -210,215 +388,83 @@
'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 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.": 'На цій сторінці можна закомітити ваші зміни в репозитарій додатків openshift та проштовхнути їх у ваш примірник в хмарі. Це передбачає, що ви вже створили примірник додатку, використовуючи базовий додаток web2py, як скелет, і маєте репозитарій десь на вашій файловій системі, причому екземпляр web2py має до нього доступ. Ця властивість вимагає наявності встановленого модулю GitPython так, щоб web2py міг його викликати.',
'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.': 'На цій сторінці ви можете завантажити свій додаток в сервіс хмарних обчислень Google App Engine. Майте на увазі, що спочатку необхідно локально створити індекси, і це можна зробити встановивши сервер додатків Google appserver та запустивши в ньому додаток один раз, інакше при виборі записів виникатимуть помилки. Увага: розгортання може зайняти тривалий час, в залежності від швидкості мережі. Увага: це призведе до перезапису app.yaml. НЕ ПУБЛІКУЙТЕ ДВІЧІ.',
-'Ticket': 'Відмітка (Ticket)',
-'Ticket ID': 'Ідентифікатор відмітки (Ticket ID)',
+'this page to see if a breakpoint was hit and debug interaction is required.': 'цю сторінку, щоб побачити, чи була досягнута точка зупинки і процес ладнання розпочато.',
+'ticket': 'позначка',
+'Ticket': 'Позначка (Ticket)',
+'Ticket ID': 'Ід.позначки (Ticket ID)',
+'tickets': 'позначки (tickets)',
+'Time in Cache (h:m:s)': 'Час в кеші (г:хв:сек)',
+'to previous version.': 'до попередньої версії.',
'To create a plugin, name a file/folder plugin_[name]': 'Для створення втулки, назвіть файл/каталог plugin_[name]',
'To emulate a breakpoint programatically, write:': 'Для встановлення точки зупинки програмним чином напишіть:',
+'to use the debugger!': 'щоб активувати ладнач!',
+'toggle breakpoint': '+/- точку зупинки',
'Traceback': 'Стек викликів (Traceback)',
'Translation strings for the application': 'Пари рядків <оригінал>:<переклад> для вибраної мови',
+'try something like': 'спробуйте щось схоже на',
+'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]), щоб запустити їх на виконання.',
'Unable to check for upgrades': 'Неможливо перевірити оновлення',
-'Unable to determine the line number!': 'Не можу визначити номер рядка!',
-'Unable to download app because:': 'Не можу завантажити додаток через:',
-'Unable to download because:': 'Неможливо завантажити через:',
-'Uninstall': 'Вилучити',
-'Unsupported webserver working mode: %s': 'Веб-сервер знаходиться в режимі, який не підтримується: %s',
-'Update:': 'Поновити:',
-'Upgrade': 'Оновити',
-'Upload a package:': 'Завантажити пакет:',
-'Upload and install packed application': 'Завантажити та встановити запакований додаток',
-'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Для створення складних запитів використовуйте (...)&(...) замість AND, (...)|(...) замість OR, та ~(...) замість NOT.',
-'Using the shell may lock the database to other users of this app.': 'Використання оболонки може заблокувати базу даних від сумісного використання іншими користувачами цього додатку.',
-'Version': 'Версія',
-'Version %s.%s.%s (%s) %s': 'Версія %s.%s.%s (%s) %s',
-'Versioning': 'Контроль версій',
-'Views': 'Відображення (Views)',
-'WARNING:': 'ПОПЕРЕДЖЕННЯ:',
-'Web Framework': 'Web Framework',
-'Wrap with Abbreviation': 'Загорнути з абревіатурою',
-'YES': 'ТАК',
-'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Ви також можете встановлювати/вилучати точки зупинок під час редагування першоджерел (sources), використовуючи кнопку "+/- точку зупинки"',
-'You have one more login attempt before you are locked out': 'У вас є ще одна спроба перед тим, як вхід буде заблоковано',
-'You need to set up and reach a': 'Треба встановити та досягнути',
-'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Ваш додаток буде заблоковано, поки ви не клацнете по одній з кнопок керування ("наступний", "крок", "продовжити", та ін.)',
-'Your can inspect variables using the console bellow': 'Ви можете досліджувати змінні, використовуючи інтерактивну консоль',
-'about': 'про',
-'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': 'адмін.інтерфейс відключено через відсутність доступу до файлу паролів',
-'administrative interface': 'інтерфейс адміністратора',
-'and rename it:': 'i змінити назву на:',
-'appadmin': 'Aдм.панель',
-'appadmin is disabled because insecure channel': "адмін.панель відключено через використання ненадійного каналу зв'язку",
-'application "%s" uninstalled': 'додаток "%s" вилучено',
-'application %(appname)s installed with md5sum: %(digest)s': 'додаток %(appname)s встановлено з md5sum: %(digest)s',
-'application compiled': 'додаток скомпільовано',
-'application is compiled and cannot be designed': 'додаток скомпільований. налаштування змінювати не можна',
-'arguments': 'аргументи',
-'back': '<< назад',
-'breakpoint': 'точку зупинки',
-'breakpoints': 'точки зупинок',
-'cache': 'кеш',
-'cache, errors and sessions cleaned': 'кеш, список зареєстрованих помилок та сесії очищенні',
-'cannot create file': 'не можу створити файл',
-'cannot upload file "%(filename)s"': 'не можу завантажити файл "%(filename)s"',
-'check all': 'відмітити всі',
-'code': 'код',
-'collapse/expand all': 'згорнути/розгорнути все',
-'compiled application removed': 'скомпільований додаток вилучено',
-'continue': 'продовжити',
-'controllers': 'контролери',
-'create file with filename:': 'створити файл з назвою:',
-'created by': 'Автор:',
-'crontab': 'таблиця cron',
-'currently running': 'наразі, активний додаток',
-'currently saved or': 'останній збережений, або',
-'data uploaded': 'дані завантажено',
-'database': 'база даних',
-'database %s select': 'Вибірка з бази даних %s',
-'database administration': 'адміністрування бази даних',
-'db': 'дб',
-'defines tables': "об'являє таблиці",
-'delete': 'вилучити',
-'delete all checked': 'вилучити всі відмічені',
-'delete plugin': 'вилучити втулку',
-'deleted after first hit': 'автоматично вилучається після першого спрацювання',
-'design': 'налаштування',
-'details': 'детальніше',
-'direction: ltr': 'напрямок: зліва-направо (ltr)',
-'disabled in demo mode': 'відключено в демо-режимі',
-'disabled in multi user mode': 'відключено в багато-користувацькому режимі',
-'docs': 'док.',
-'done!': 'зроблено!',
-'download layouts': 'завантажити макет (layout)',
-'download plugins': 'завантажити втулки',
-'edit all': 'редагувати всі',
-'edit controller': 'редагувати контролер',
-'edit views:': 'редагувати відображення (views):',
-'enter a value': 'введіть значення',
-'export as csv file': 'експортувати як файл csv',
-'exposes': 'експонує',
-'exposes:': 'експонує:',
-'extends': 'розширює',
-'failed to compile file because:': 'не вдалось скомпілювати файл через:',
-'failed to reload module because:': 'не вдалось перевантажити модуль через:',
-'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 saved on %(time)s': 'файл збережено в %(time)s',
-'file saved on %s': 'файл збережено в %s',
-'files': 'файли',
-'filter': 'фільтр',
-'go!': 'почали!',
-'honored only if the expression evaluates to true': 'точка зупинки активується тільки за істинності умови',
-'includes': 'включає',
-'index': 'індекс',
-'insert new': 'вставити новий',
-'insert new %s': 'вставити новий %s',
-'inspect attributes': 'інспектувати атрибути',
-'internal error': 'внутрішня помилка',
-'internal error: %s': 'внутрішня помилка: %s',
-'invalid circual reference': 'помилкове циклічне посилання',
-'invalid circular reference': 'помилкове циклічне посилання',
-'invalid password': 'неправильний пароль',
-'invalid password.': 'неправильний пароль.',
-'invalid request': 'хибний запит',
-'invalid table names (auth_* tables already defined)': "хибна назва таблиці (таблиці auth_* вже оголошено)",
-'invalid ticket': 'недійсна відмітка про помилку (ticket)',
-'language file "%(filename)s" created/updated': 'Файл перекладу "%(filename)s" створено/оновлено',
-'languages': 'переклади',
-'loading...': 'завантаження...',
-'locals': 'локальні',
-'merge': "з'єднати",
-'models': 'моделі',
-'modules': 'модулі',
-'new application "%s" created': 'новий додаток "%s" створено',
-'new plugin installed': 'нова втулка (plugin) встановлена',
-'new record inserted': 'новий рядок додано',
-'next': 'наступний',
-'next 100 rows': 'наступні 100 рядків',
-'no match': 'співпадань нема',
-'no permission to uninstall "%s"': 'нема прав на вилучення (uninstall) "%s"',
-'online designer': 'ДБ-дизайнер',
-'or import from csv file': 'або імпортувати через csv-файл',
-'pack plugin': 'запакувати втулку',
-'password changed': 'пароль змінено',
-'peek': 'глянути',
-'plugin': 'втулка',
-'plugin "%(plugin)s" deleted': 'втулку "%(plugin)s" вилучено',
-'plugin not specified': 'втулку не визначено',
-'plugins': 'втулки (plugins)',
-'previous 100 rows': 'попередні 100 рядків',
-'record': 'запис',
-'record does not exist': 'запису не існує',
-'record id': 'Ід.запису',
-'refresh': 'оновіть',
-'request': 'запит',
-'resolve': "розв'язати",
-'response': 'відповідь',
-'restart': 'перезапустити майстра',
-'restore': 'повернути',
-'return': 'повернутись',
-'revert': 'відновитись',
-'selected': 'відмічено',
-'session': 'сесія',
-'session expired': 'час даної сесії вичерпано',
-'shell': 'консоль',
-'site': 'сайт',
-'skip to generate': 'перейти до генерування результату',
-'some files could not be removed': 'деякі файли не можна вилучити',
-'state': 'стан',
-'static': 'статичні',
-'step': 'крок',
-'stop': 'зупинити',
-'submit': 'застосувати',
-'successful': 'успішно',
-'table': 'таблиця',
-'test': 'тестувати всі',
-'this page to see if a breakpoint was hit and debug interaction is required.': 'цю сторінку, щоб побачити, чи була досягнута точка зупинки і процес ладнання розпочато.',
-'ticket': 'відмітка',
-'to previous version.': 'до попередньої версії.',
-'to use the debugger!': 'щоб активувати ладнач!',
-'toggle breakpoint': '+/- точку зупинки',
-'try something like': 'спробуйте щось схоже на',
-'try view': 'дивитись результат',
'unable to create application "%s"': 'не можу створити додаток "%s"',
'unable to create application "%s" (it may exist already)': 'не можу створити додаток "%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 because:': 'Неможливо завантажити через:',
'unable to download layout': 'не вдається завантажити макет',
'unable to download plugin: %s': 'не вдається завантажити втулку: %s',
'unable to install application "%(appname)s"': 'не вдається встановити додаток "%(appname)s"',
'unable to parse csv file': 'не вдається розібрати csv-файл',
'unable to uninstall "%s"': 'не вдається вилучити "%s"',
'unable to upgrade because "%s"': 'не вдається оновити, тому що "%s"',
+'unauthorized': 'неавторизовано',
'uncheck all': 'зняти відмітку з усіх',
'uninstall': 'вилучити',
+'Uninstall': 'Вилучити',
+'Unsupported webserver working mode: %s': 'Веб-сервер знаходиться в режимі, який не підтримується: %s',
'update': 'оновити',
'update all languages': 'оновити всі переклади',
+'Update:': 'Поновити:',
+'Upgrade': 'Оновити',
'upgrade now': 'оновитись зараз',
'upgrade_web2py': 'оновити web2py',
'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.': 'Для створення складних запитів використовуйте (...)&(...) замість AND, (...)|(...) замість OR, та ~(...) замість NOT.',
'user': 'користувач',
+'Using the shell may lock the database to other users of this app.': 'Використання оболонки може заблокувати базу даних від сумісного використання іншими користувачами цього додатку.',
'value not allowed': 'недопустиме значення',
'variables': 'змінні',
+'Version': 'Версія',
+'Version %s.%s.%s (%s) %s': 'Версія %s.%s.%s (%s) %s',
+'Versioning': 'Контроль версій',
+'view': 'перегляд',
+'Views': 'Відображення (Views)',
'views': 'відображення',
-'web2py Debugger': 'Ладнач web2py',
-'web2py Recent Tweets': 'Останні твіти web2py',
+'WARNING:': 'ПОПЕРЕДЖЕННЯ:',
+'Web Framework': 'Web Framework',
'web2py apps to deploy': 'Готові до розгортання додатки web2py',
+'web2py Debugger': 'Ладнач web2py',
'web2py downgrade': 'повернення на попередню версію web2py',
'web2py is up to date': 'web2py оновлено до актуальної версії',
'web2py online debugger': 'оперативний ладнач (online debugger) web2py',
+'web2py Recent Tweets': 'Останні твіти web2py',
'web2py upgrade': 'оновлення web2py',
'web2py upgraded; please restart it': 'web2py оновлено; будь-ласка перезапустіть його',
+'Wrap with Abbreviation': 'Загорнути з абревіатурою',
+'WSGI reference name': "ім'я посилання WSGI",
+'YES': 'ТАК',
+'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Ви також можете встановлювати/вилучати точки зупинок під час редагування першоджерел (sources), використовуючи кнопку "+/- точку зупинки"',
+'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': 'Треба встановити та досягнути',
+'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Ваш додаток буде заблоковано, поки ви не клацнете по одній з кнопок керування ("наступний", "крок", "продовжити", та ін.)',
+'Your can inspect variables using the console bellow': 'Ви можете досліджувати змінні, використовуючи інтерактивну консоль',
}
diff --git a/applications/admin/languages/zh-tw.py b/applications/admin/languages/zh-tw.py
index 49a4ff12..d04b2c48 100644
--- a/applications/admin/languages/zh-tw.py
+++ b/applications/admin/languages/zh-tw.py
@@ -1,11 +1,14 @@
# coding: utf8
{
+'!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',
-'%s rows deleted': '已刪除 %s 筆',
-'%s rows updated': '已更新 %s 筆',
+'%s %%{row} deleted': '已刪除 %s 筆',
+'%s %%{row} updated': '已更新 %s 筆',
'(something like "it-it")': '(格式類似 "zh-tw")',
+'@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).',
@@ -27,13 +30,17 @@
'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': '變更密碼',
+'Change admin password': 'change admin password',
'Check to delete': '打勾代表刪除',
'Check to delete:': '打勾代表刪除:',
'Checking for upgrades...': '檢查新版本中...',
+'Clean': '清除',
'Client IP': '客戶端網址(IP)',
+'Compile': '編譯',
'Controller': '控件',
'Controllers': '控件',
'Copyright': '版權所有',
+'Create': '創建',
'Create new simple application': '創建應用程式',
'Current request': '目前網路資料要求(request)',
'Current response': '目前網路資料回應(response)',
@@ -59,14 +66,17 @@
'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': '不合法的查詢',
@@ -92,7 +102,10 @@
'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': '選個文件',
@@ -104,12 +117,14 @@
'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': '傳送',
@@ -133,6 +148,7 @@
'Unable to download app': '無法下載應用程式',
'Unable to download app because:': '無法下載應用程式因為:',
'Unable to download because': '因為下列原因無法下載:',
+'Uninstall': '解除安裝',
'Update:': '更新:',
'Upload & install packed application': '上傳並安裝已打包的應用程式',
'Upload existing application': '更新存在的應用程式',
@@ -147,7 +163,6 @@
'Welcome %s': '歡迎 %s',
'Welcome to web2py': '歡迎使用 web2py',
'YES': '是',
-'About': '關於',
'additional code for your application': '應用程式額外的程式碼',
'admin disabled because no admin password': '管理介面關閉原因是沒有設定管理員密碼 ',
'admin disabled because not supported on google app engine': '管理介面關閉原因是不支援在google apps engine環境下運作',
@@ -166,18 +181,14 @@
'cache, errors and sessions cleaned': '快取記憶體,錯誤紀錄,連線紀錄已清除',
'cannot create file': '無法創建檔案',
'cannot upload file "%(filename)s"': '無法上傳檔案 "%(filename)s"',
-'Change admin password': 'change admin password',
'change_password': '變更密碼',
'check all': '全選',
-'Clean': '清除',
'click here for online examples': '點此處進入線上範例',
'click here for the administrative interface': '點此處進入管理介面',
'click to check for upgrades': '點擊打勾以便升級',
'code': 'code',
-'Compile': '編譯',
'compiled application removed': '已移除已編譯的應用程式',
'controllers': '控件',
-'Create': '創建',
'create file with filename:': '創建檔案:',
'create new application:': '創建新應用程式:',
'created by': '創建自',
@@ -197,11 +208,9 @@
'design': '設計',
'direction: ltr': 'direction: ltr',
'done!': '完成!',
-'Edit': '編輯',
'edit controller': '編輯控件',
'edit views:': '編輯視圖',
'edit_language': '編輯語言檔',
-'Errors': '錯誤紀錄',
'export as csv file': '以逗號分隔檔(csv)格式匯出',
'exposes': '外顯',
'extends': '擴展',
@@ -214,13 +223,11 @@
'file does not exist': '檔案不存在',
'file saved on %(time)s': '檔案已於 %(time)s 儲存',
'file saved on %s': '檔案在 %s 已儲存',
-'Help': '說明檔',
'htmledit': 'html編輯',
'includes': '包含',
'index': '索引',
'insert new': '插入新資料',
'insert new %s': '插入新資料 %s',
-'Install': '安裝',
'internal error': '內部錯誤',
'invalid password': '密碼錯誤',
'invalid request': '不合法的網路要求(request)',
@@ -229,7 +236,6 @@
'languages': '語言檔',
'loading...': '載入中...',
'login': '登入',
-'Logout': '登出',
'merge': '合併',
'models': '資料庫模組',
'modules': '程式模組',
@@ -240,9 +246,6 @@
'no match': '無法匹配',
'or import from csv file': '或是從逗號分隔檔(CSV)匯入',
'or provide app url:': '或是提供應用程式的安裝網址:',
-'Overwrite installed app': '覆蓋已安裝的應用程式',
-'Pack all': '全部打包',
-'Pack compiled': '打包已編譯資料',
'pack plugin': '打包插件',
'password changed': '密碼已變更',
'peek': '選取',
@@ -253,7 +256,6 @@
'record does not exist': '紀錄不存在',
'record id': '紀錄編號',
'register': '註冊',
-'Remove compiled': '編譯檔案已移除',
'resolve': '解決',
'restore': '回存',
'revert': '反向恢復',
@@ -261,7 +263,6 @@
'selected': '已選擇',
'session expired': '連線(session)已過時',
'shell': '命令列操作介面',
-'Site': '網站',
'some files could not be removed': '部份檔案無法移除',
'state': '狀態',
'static': '靜態檔案',
@@ -284,7 +285,6 @@
'unable to uninstall "%s"': '無法移除安裝 "%s"',
'unable to upgrade because "%s"': '無法升級因為 "%s"',
'uncheck all': '全不選',
-'Uninstall': '解除安裝',
'update': '更新',
'update all languages': '將程式中待翻譯語句更新到所有的語言檔',
'upgrade web2py now': 'upgrade web2py now',
@@ -300,5 +300,3 @@
'web2py is up to date': 'web2py 已經是最新版',
'web2py upgraded; please restart it': '已升級 web2py ; 請重新啟動',
}
-
-
diff --git a/applications/admin/languages/zh.py b/applications/admin/languages/zh.py
index ae374232..4633a17a 100644
--- a/applications/admin/languages/zh.py
+++ b/applications/admin/languages/zh.py
@@ -1,15 +1,18 @@
# coding: utf8
{
+'!langcode!': 'zh-cn',
+'!langname!': '中文',
'"browse"': '游览',
'"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',
-'%s rows deleted': '%s 行已删',
-'%s rows updated': '%s 行更新',
+'%s %%{row} deleted': '%s 行已删',
+'%s %%{row} updated': '%s 行更新',
'(requires internet access)': '(requires internet access)',
'(something like "it-it")': '(就酱 "it-it")',
+'@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.': '',
@@ -24,6 +27,7 @@
'Application name:': 'Application name:',
'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?',
@@ -32,23 +36,33 @@
'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': '修改密码',
+'Change admin password': 'change admin password',
+'Check for upgrades': 'check for upgrades',
'Check to delete': '检验删除',
'Checking for upgrades...': '是否有升级版本检查ing...',
+'Clean': '清除',
'Client IP': '客户端IP',
+'Compile': '编译',
'Controllers': '控制器s',
+'Create': 'create',
'Create new simple application': '创建一个新应用',
'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': '修订当前记录',
@@ -57,13 +71,17 @@
'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': '无效查询',
@@ -88,7 +106,10 @@
'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',
@@ -98,11 +119,16 @@
'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': '',
@@ -124,9 +150,11 @@
'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.': '',
@@ -136,7 +164,6 @@
'Views': '视图',
'Welcome to web2py': '欢迎使用web2py',
'YES': '是',
-'About': '关于',
'additional code for your application': '给你的应用附加代码',
'admin disabled because no admin password': '管理员需要设定密码,否则无法管理',
'admin disabled because not supported on google app engine': '未支持GAE,无法管理',
@@ -155,18 +182,13 @@
'cache, errors and sessions cleaned': '缓存、错误、sesiones已被清空',
'cannot create file': '无法创建文件',
'cannot upload file "%(filename)s"': '无法上传文件 "%(filename)s"',
-'Change admin password': 'change admin password',
'check all': '检查所有',
-'Check for upgrades': 'check for upgrades',
-'Clean': '清除',
'click here for online examples': '猛击此处,查看在线实例',
'click here for the administrative interface': '猛击此处,进入管理界面',
'click to check for upgrades': '猛击查看是否有升级版本',
'code': 'code',
-'Compile': '编译',
'compiled application removed': '已编译应用已移走',
'controllers': '控制器',
-'Create': 'create',
'create file with filename:': '创建文件用这名:',
'create new application:': '创建新应用:',
'created by': '创建自',
@@ -183,14 +205,11 @@
'delete': '删除',
'delete all checked': '删除所有选择的',
'delete plugin': 'delete plugin',
-'Deploy': 'deploy',
'design': '设计',
'direction: ltr': 'direction: ltr',
'done!': '搞定!',
-'Edit': '修改',
'edit controller': '修订控制器',
'edit views:': 'edit views:',
-'Errors': '错误',
'export as csv file': '导出为CSV文件',
'exposes': '暴露',
'extends': '扩展',
@@ -205,12 +224,10 @@
'file does not exist': '文件并不存在',
'file saved on %(time)s': '文件保存于 %(time)s',
'file saved on %s': '文件保存在 %s',
-'Help': '帮助',
'htmledit': 'html编辑',
'includes': '包含',
'insert new': '新插入',
'insert new %s': '新插入 %s',
-'Install': 'install',
'internal error': '内部错误',
'invalid password': '无效密码',
'invalid request': '无效请求',
@@ -220,7 +237,6 @@
'languages updated': '语言已被刷新',
'loading...': '载入中...',
'login': '登录',
-'Logout': '注销',
'merge': '合并',
'models': '模型s',
'modules': '模块s',
@@ -232,9 +248,6 @@
'or import from csv file': '或者,从csv文件导入',
'or provide app url:': 'or provide app url:',
'or provide application url:': '或者,提供应用所在地址链接:',
-'Overwrite installed app': 'overwrite installed app',
-'Pack all': '全部打包',
-'Pack compiled': '包编译完',
'pack plugin': 'pack plugin',
'password changed': 'password changed',
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" deleted',
@@ -242,16 +255,13 @@
'record': 'record',
'record does not exist': '记录并不存在',
'record id': '记录ID',
-'Remove compiled': '已移除',
'restore': '重存',
'revert': '恢复',
'save': '保存',
'selected': '已选',
'session expired': '会话过期',
'shell': '',
-'Site': '总站',
'some files could not be removed': '有些文件无法被移除',
-'Start wizard': 'start wizard',
'state': '状态',
'static': '静态文件',
'submit': '提交',
@@ -273,7 +283,6 @@
'unable to uninstall "%s"': '无法卸载 "%s"',
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
'uncheck all': '反选全部',
-'Uninstall': '卸载',
'update': '更新',
'update all languages': '更新所有语言',
'upgrade web2py now': 'upgrade web2py now',
@@ -288,5 +297,3 @@
'web2py is up to date': 'web2py现在已经是最新的版本了',
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
}
-
-
diff --git a/applications/admin/models/access.py b/applications/admin/models/access.py
index 633d739e..1669c526 100644
--- a/applications/admin/models/access.py
+++ b/applications/admin/models/access.py
@@ -152,5 +152,3 @@ if request.controller=='appadmin' and DEMO_MODE:
session.flash = 'Appadmin disabled in demo mode'
redirect(URL('default','sites'))
-
-
diff --git a/applications/admin/models/menu.py b/applications/admin/models/menu.py
index dc28e7f8..0ec6a810 100644
--- a/applications/admin/models/menu.py
+++ b/applications/admin/models/menu.py
@@ -9,12 +9,12 @@ response.title = '%s %s' % (_f, '/'.join(request.args))
response.subtitle = 'admin'
response.menu = [(T('Site'), _f == 'site', URL(_a,'default','site'))]
-if request.args:
- _t = request.args[0]
+if request.vars.app or request.args:
+ _t = request.vars.app or request.args[0]
response.menu.append((T('Edit'), _c == 'default' and _f == 'design',
URL(_a,'default','design',args=_t)))
response.menu.append((T('About'), _c == 'default' and _f == 'about',
- URL(_a,'default','about',args=_t)))
+ URL(_a,'default','about',args=_t,)))
response.menu.append((T('Errors'), _c == 'default' and _f == 'errors',
URL(_a,'default','errors',args=_t)))
response.menu.append((T('Versioning'),
diff --git a/applications/admin/static/css/styles.css b/applications/admin/static/css/styles.css
index 08a82d72..f75bdfe1 100644
--- a/applications/admin/static/css/styles.css
+++ b/applications/admin/static/css/styles.css
@@ -1245,3 +1245,6 @@ color: #222;
}
.ie9 #query_panel {padding-bottom:2px;}
+.error, .error a {color:red}
+.pluralsform thead td {font-weight:bold; font-size:1.2em; padding-bottom:5px}
+.pluralsform td {padding-left:5px}
diff --git a/applications/admin/static/css/web2py.css b/applications/admin/static/css/web2py.css
new file mode 100644
index 00000000..cab92321
--- /dev/null
+++ b/applications/admin/static/css/web2py.css
@@ -0,0 +1,304 @@
+/** these MUST stay **/
+body { margin: 0; padding:0; border: 0; }
+a { text-decoration:none; white-space: nowrap;}
+a:hover {text-decoration: underline}
+a.button {text-decoration: none}
+h1,h2,h3,h4,h5,h6 {margin: 0.5em 0 0.25em 0; display: block; font-family: Helvetica;}
+ h1 { font-size: 4.00em;}
+ h2 { font-size: 3.00em;}
+ h3 { font-size: 2.00em;}
+ h4 { font-size: 1.50em;}
+ h5 { font-size: 1.25em;}
+ h6 { font-size: 1.12em;}
+right { float:right; text-align: right; }
+left { float:left; text-align: left; }
+center { width:100; text-align: center; vertical-align:middle;}
+th, label { font-weight: bold; white-space: nowrap; }
+td, th { text-align: left; padding: 2px 5px 2px 5px; }
+th { vertical-align: middle; border-right: 1px solid white;}
+td { vertical-align: top; }
+form table tr td label { text-align: left; }
+p, table, ol, ul { padding: 0.5em 0 0.5em 0 }
+p {text-align: justify }
+ol, ul { padding-left: 30px }
+li { margin-bottom: 0.5em; }
+span, input, select, textarea, button, label, a { display: inline }
+img { border: 0; }
+blockquote, blockquote p, p blockquote { font-style: italic; margin: 0.5em 30px 0.5em 30px; font-size: 0.9em}
+i, em { font-style: italic; }
+strong { font-weight: bold; }
+small { font-size: 0.8em; }
+textarea { width: 100%; }
+code { font-family: Courier;}
+video { width:400px; }
+audio { width:200px; }
+input[type=text], input[type=password], select { width: 300px; margin-right: 5px }
+ul { list-style-type: none; margin: 0px; padding: 0px; }
+.hidden {display:none;visibility:visible}
+/** end **/
+
+/* Sticky footer begin */
+html, body {
+ height: 100%;
+}
+.wrapper {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ margin: 0 auto -8em; /* set last value to footer height plus footer vertical padding */
+}
+
+.main {
+ padding: 20px 0 50px 0;
+}
+
+.footer, .push {
+ height: 6em;
+ padding: 1em 0;
+ clear: both;
+}
+
+.footer-content {position: relative; bottom: -4em; width: 100%;}
+
+.auth_navbar {
+ white-space: nowrap;
+}
+
+/* Sticky footer end */
+
+.footer {
+ border-top: 1px #DEDEDE solid;
+}
+.header {
+ // background: ;
+}
+
+
+fieldset { padding: 16px; border-top: 1px #DEDEDE solid;}
+fieldset legend {text-transform:uppercase; font-weight: bold; padding: 4px 16px 4px 16px; background: #f1f1f1;}
+
+/* fix ie problem with menu */
+.ie-lte7 .topbar .container {z-index: 2; }
+
+td.w2p_fw {padding-bottom: 1px;}
+td.w2p_fl, td.w2p_fw, td.w2p_fc { vertical-align:top; }
+td.w2p_fl { text-align:right; }
+td.w2p_fl, td.w2p_fw {padding-right: 7px;}
+td.w2p_fl, td.w2p_fc { padding-top: 4px; }
+
+/* tr#submit_record__row {border-top: 1px solid #E5E5E5;} */
+#submit_record__row td {padding-top: .5em;}
+
+/* Fix */
+#auth_user_remember__row label {display: inline;}
+#web2py_user_form td { vertical-align:top; }
+
+/*********** web2py specific ***********/
+div.flash {
+ font-weight: bold;
+ display: none;
+ position: fixed;
+ padding: 10px;
+ top: 48px;
+ right: 50px;
+ min-width: 280px;
+ opacity: 0.85;
+ margin: 0px 0px 10px 10px;
+ color: #fff;
+ vertical-align: middle;
+ cursor: pointer;
+ background: #000;
+ border: 2px solid #fff;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ z-index: 2;
+}
+div.flash {z-index:2000;}
+
+div.error_wrapper { display: block; }
+div.error {
+ background-color: red;
+ color: white;
+ padding: 3px;
+ display: inline-block;
+}
+
+.topbar {
+ padding: 10px 0;
+ width:100%;
+ color: #959595;
+ vertical-align: middle;
+ padding: auto;
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));
+ background-image: -moz-linear-gradient(top, #333333, #222222);
+ background-image: -ms-linear-gradient(top, #333333, #222222);
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));
+ background-image: -webkit-linear-gradient(top, #333333, #222222);
+ background-image: -o-linear-gradient(top, #333333, #222222);
+ background-image: linear-gradient(top, #333333, #222222);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+}
+
+.topbar a {
+ color: #e1e1e1;
+}
+
+#navbar {float: right; padding: 5px; /* same as superfish */}
+
+.right {
+ width:100%;
+ text-align: right;
+ float: right;
+}
+
+.statusbar {
+ background-color: #F5F5F5;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ padding: .5em 1em;
+ border: 1px solid #ddd;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+.breadcrumbs { float: left; }
+
+.copyright {float: left;}
+#poweredBy {float: right;}
+
+/* #MEDIA QUERIES SECTION */
+
+ /* All Mobile Sizes (devices and browser) */
+ @media only screen and (max-width: 767px) {
+/* removed because of bootswatch
+ .topbar {text-align: center;}
+ #navbar, #menu {float: none;}
+ #navbar {font-size: 1.2em; padding: .6em 0 1.2em;}
+ #menu {padding: 0 0 1.5em;}
+ #menu select {font-size: 1.2em; margin: 0; padding: 0;}
+
+ div.flash {top: 110px; right: 10px;}
+*/
+ }
+
+/*
+*Grid
+*
+* The default style for SQLFORM.grid even using jquery-iu or another ui framework
+* will look better with the declarations below
+* if needed to remove base.css consider keeping these following lines in some css file.
+*/
+// .web2py_table { border: 1px solid #ccc; }
+.web2py_paginator { }
+.web2py_grid {width: 100% }
+.web2py_grid table { width: 100% }
+.web2py_grid tbody td {
+ padding: 2px 5px 2px 5px;
+ vertical-align: middle;
+}
+
+.web2py_grid thead th, .web2py_grid tfoot td {
+ background-color:#EAEAEA;
+ padding: 10px 5px 10px 5px;
+}
+
+.web2py_grid tr.odd {background-color: #F9F9F9;}
+.web2py_grid tr:hover {background-color: #F5F5F5; }
+
+/*
+.web2py_breadcrumbs a {
+ line-height: 20px; margin-right: 5px; display: inline-block;
+ padding: 3px 5px 3px 5px;
+ font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
+ color: #3C3C3D;
+ text-shadow: 1px 1px 0 #FFFFFF;
+ white-space: nowrap; overflow: visible; cursor: pointer;
+ background:#ECECEC;
+ border: 1px solid #CACACA;
+ -webkit-border-radius: 2px; -moz-border-radius: 2px;
+ -webkit-background-clip: padding-box; border-radius: 2px;
+ outline: none; position: relative; zoom: 1; *display: inline;
+}
+*/
+
+.web2py_console form {
+ width:100%;
+}
+
+
+.web2py_search_actions{
+ float:left;
+ text-align:left;
+}
+
+.web2py_grid .row_buttons {
+ min-height:25px;
+ vertical-align: middle;
+}
+.web2py_grid .row_buttons a {
+ margin: 3px;
+}
+
+.web2py_search_actions {
+ width: 100%;
+}
+
+.web2py_grid .row_buttons a,
+.web2py_paginator ul li a,
+.web2py_search_actions a,
+.web2py_console input[type=submit],
+.web2py_console input[type=button],
+.web2py_console button {
+ line-height: 20px;
+ margin-right: 5px; display: inline-block;
+ padding: 3px 5px 3px 5px;
+}
+
+.web2py_counter {
+ margin-top: 5px;
+ margin-right:5px;
+ width:35%;
+ float:right;
+ text-align:right;
+}
+
+/*Fix firefox problem*/
+.web2py_table {clear: both; display: block;}
+
+.web2py_paginator {
+ padding: 5px;
+ text-align:right;
+ background-color: #f2f2f2;
+
+}
+.web2py_paginator ul {
+ list-style-type: none;
+ margin: 0px;
+ padding: 0px;
+}
+
+.web2py_paginator ul li {
+ display: inline;
+}
+
+.web2py_paginator .current {
+ font-weight: bold;
+}
+
+#w2p_query_panel {}
+
+.web2py_breadcrumbs ul {
+ list-style: none;
+ margin-bottom: 18px;
+}
+
+.web2py_breadcrumbs ul li {
+ display: inline-block;
+}
+
+.ie9 #query_panel {padding-bottom:2px;}
diff --git a/applications/admin/views/appadmin.html b/applications/admin/views/appadmin.html
index efbb3b0c..73c4ae47 100644
--- a/applications/admin/views/appadmin.html
+++ b/applications/admin/views/appadmin.html
@@ -63,7 +63,7 @@
{{=T("Import/Export")}}
[ {{=T("export as csv file")}} ]
{{if table:}}
- {{=FORM(str(T('or import from csv file'))+" ",INPUT(_type='file',_name='csvfile'),INPUT(_type='hidden',_value=table,_name='table'),INPUT(_type='submit',_value='import'))}}
+ {{=FORM(str(T('or import from csv file'))+" ",INPUT(_type='file',_name='csvfile'),INPUT(_type='hidden',_value=table,_name='table'),INPUT(_type='submit',_value=T('import')))}}
{{pass}}
diff --git a/applications/admin/views/default/design.html b/applications/admin/views/default/design.html
index c24bc5af..3664edbf 100644
--- a/applications/admin/views/default/design.html
+++ b/applications/admin/views/default/design.html
@@ -2,36 +2,43 @@
{{
def all(items):
return reduce(lambda a,b:a and b,items,True)
-def peekfile(path,file):
- return A(file.replace('\\\\','/'),_href=URL('peek', args=(app, path, file)))
-def editfile(path,file):
- return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit', args=(app, path, file)))
+def peekfile(path,file,vars={},title=None):
+ args=(path,file) if 'app' in vars else (app,path,file)
+ return A(file.replace('\\\\','/'),_title=title,_href=URL('peek', args=args, vars=vars))
+def editfile(path,file,vars={}):
+ args=(path,file) if 'app' in vars else (app,path,file)
+ return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit', args=args, vars=vars))
def testfile(path,file):
return A(TAG[''](IMG(_src=URL('static', 'images/test_icon.png'), _alt=T('test')), SPAN(T("Run tests in this file (to run all files, you may also use the button labelled 'test')"))), _class='icon test tooltip',_href=URL('test', args=(app, file)))
-def editlanguagefile(path,file):
- return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit_language', args=(app, path, file)))
-def file_upload_form(location):
+def editlanguagefile(path,file,vars={}):
+ return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit_language', args=(app, path, file), vars=vars))
+def editpluralsfile(path,file,vars={}):
+ return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit_plurals', args=(app, path, file), vars=vars))
+def file_upload_form(location, anchor=None):
form=FORM(T("upload file:")," ",
INPUT(_type="file",_name="file")," ",T("and rename it:")," ",
INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY),
INPUT(_type="hidden",_name="location",_value=location),
- INPUT(_type="hidden",_name="sender",_value=URL('design',args=app)),
+ INPUT(_type="hidden",_name="sender",_value=URL('design',args=app, anchor=anchor)),
INPUT(_type="submit",_value=T("upload")),_action=URL('upload_file'))
return form
-def file_create_form(location):
+def file_create_form(location, anchor=None):
form=FORM(T("create file with filename:")," ",
INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY),
INPUT(_type="hidden",_name="location",_value=location),
INPUT(_type="hidden",_name="sender",_value=URL('design',args=app)),
+ INPUT(_type="hidden",_name="id",_value=anchor),
INPUT(_type="submit",_value=T("Create")),_action=URL('create_file'))
return form
-def upload_plugin_form(app):
+def upload_plugin_form(app, anchor=None):
form=FORM(T("upload plugin file:")," ",
INPUT(_type="file",_name="pluginfile"),
+ INPUT(_type="hidden",_name="id",_value=anchor),
INPUT(_type="submit",_value=T("upload")))
return form
-def deletefile(arglist):
- return A(TAG[''](IMG(_src=URL('static', 'images/delete_icon.png')), SPAN(T('Delete this file (you will be asked to confirm deletion)'))), _class='icon delete tooltip', _href=URL('delete',args=arglist,vars=dict(sender=request.function+'/'+app)))
+def deletefile(arglist, vars={}):
+ vars.update({'sender':request.function+'/'+app})
+ return A(TAG[''](IMG(_src=URL('static', 'images/delete_icon.png')), SPAN(T('Delete this file (you will be asked to confirm deletion)'))), _class='icon delete tooltip', _href=URL('delete',args=arglist,vars=vars))
}}
{{block sectionclass}}design{{end}}
@@ -73,13 +80,14 @@ def deletefile(arglist):
{{for m in models:}}
- -
+ {{id="models__"+m.replace('.','__')}}
+
-
- {{=editfile('models',m)}}
- {{=deletefile([app, 'models', m])}}
+ {{=editfile('models',m, dict(id=id))}}
+ {{=deletefile([app, 'models', m], dict(id=id, id2='models'))}}
- {{=peekfile('models',m)}}
+ {{=peekfile('models',m, dict(id=id))}}
{{pass}}
- {{=file_create_form('%s/models/' % app)}}
+ {{=file_create_form('%s/models/' % app, 'models')}}
@@ -112,14 +120,15 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
{{pass}}
{{for c in controllers:}}
- -
+ {{id="controllers__"+c.replace('.','__')}}
+
-
- {{=editfile('controllers',c)}}
- {{=deletefile([app, 'controllers', c])}}
+ {{=editfile('controllers',c, dict(id=id))}}
+ {{=deletefile([app, 'controllers', c], dict(id=id, id2='controllers'))}}
{{=testfile('controllers',c)}}
- {{=peekfile('controllers',c)}}
+ {{=peekfile('controllers',c, dict(id=id))}}
{{pass}}
- {{=file_create_form('%s/controllers/' % app)}}
+ {{=file_create_form('%s/controllers/' % app, 'controllers')}}
@@ -143,13 +152,14 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
{{if not views:}}{{=T("There are no views")}}
{{pass}}
{{for c in views:}}
- -
+ {{id="views__"+c.replace('/','__').replace('.','__')}}
+
-
- {{=editfile('views',c)}}
- {{=deletefile([app, 'views', c])}}
+ {{=editfile('views',c, dict(id=id))}}
+ {{=deletefile([app, 'views', c], dict(id=id, id2='views'))}}
- {{=peekfile('views',c)}}
+ {{=peekfile('views',c, dict(id=id))}}
{{pass}}
- {{=file_create_form('%s/views/' % app)}}
+ {{=file_create_form('%s/views/' % app, 'views')}}
@@ -172,20 +182,60 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
{{=button(URL('update_languages/'+app), T('update all languages'))}}
{{if not languages:}}{{=T("There are no translators, only default language is supported")}}
{{pass}}
-
+
{{for file in languages:}}
- -
+ {{id="languages__"+file.replace('.','__')}}
+
+ |
{{=editlanguagefile('languages',file)}}
- {{=deletefile([app, 'languages', file])}}
+ {{=deletefile([app, 'languages', file], dict(id=id, id2='languages'))}}
- {{=peekfile('languages',file)}}
+ {{=peekfile('languages',file, dict(id=id))}}
-
+ |
+
+
+ (
+ {{=T("Plural-Forms:")}}
+ {{p=plural_rules[file]}}
+ {{if p[0] == 0:}}
+ {{=T("rules are not defined")}},
+
+ {{=button(URL('create_file', vars=dict(filename=p[2], location='gluon/contrib/rules/', sender=URL('design', args=app), id=id, app=app)), T('Create rules'))}}
+
+ {{else:}}
+ {{if p[0] == 1:}}
+ {{if p[3] == 'ok':}}
+ {{=B(T("are not used"))}},
+ {{else:}}
+ {{=B(T("rules parsed with errors"))}},
+ {{pass}}
+ {{else:}}
+ {{pfile='plural-%s.py'%p[1]}}
+ {{if pfile in plurals:}}
+
+ {{=editpluralsfile('languages',pfile,dict(nplurals=p[0]))}}
+
+
+ {{=peekfile('languages',pfile,dict(id=id))}},
+
+ {{else:}}
+ {{=T("are not used yet")}},
+ {{pass}}
+ {{pass}}
+ {{=T("rules:")}}
+
+ {{=peekfile('gluon/contrib/rules', p[2], dict(app=app, id=id), p[3] if p[3]!='ok' else None)}}
+
{{pass}}
-
- {{=file_create_form('%s/languages/' % app)}}{{=T('(something like "it-it")')}}
+ )
+ |
+
+ {{pass}}
+
+ {{=file_create_form('%s/languages/' % app, 'languages')}}{{=T('(something like "it-it")')}}
@@ -223,10 +273,10 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
if filename:
}}-
- {{=editfile('static',file)}} {{=deletefile([app,'static',file])}}
+ {{=editfile('static',file, dict(id="static"))}} {{=deletefile([app,'static',file], dict(id="static",id2="static"))}}
- {{=filename}}
+ {{=filename}}
{{
pass
@@ -234,8 +284,8 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
}}
{{pass}}
- {{=file_create_form('%s/static/' % app)}}
- {{=file_upload_form('%s/static/' % app)}}
+ {{=file_create_form('%s/static/' % app, 'static')}}
+ {{=file_upload_form('%s/static/' % app, 'static')}}
@@ -250,19 +300,22 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
{{if not modules:}}{{=T("There are no modules")}}
{{pass}}
{{for m in modules:}}
- -
+ {{id="modules__"+m.replace('/','__').replace('.','__')}}
+
-
- {{=editfile('modules',m)}}
- {{if m!='__init__.py':}}{{=deletefile([app, 'modules', m])}}{{pass}}
+ {{=editfile('modules',m,dict(id=id))}}
+ {{if m!='__init__.py':}}
+ {{=deletefile([app, 'modules', m], dict(id=id, id2='modules'))}}
+ {{pass}}
- {{=peekfile('modules',m)}}
+ {{=peekfile('modules',m, dict(id=id))}}
{{pass}}
- {{=file_create_form('%s/modules/' % app)}}
- {{=file_upload_form('%s/modules/' % app)}}
+ {{=file_create_form('%s/modules/' % app, 'modules')}}
+ {{=file_upload_form('%s/modules/' % app, 'modules')}}
@@ -280,15 +333,16 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
{{if plugins:}}
{{for plugin in plugins:}}
- -
- {{=A('plugin_%s' % plugin, _class='file', _href=URL('plugin', args=[app, plugin]))}}
+ {{id="plugins__"+plugin.replace('/','__').replace('.','__')}}
+
-
+ {{=A('plugin_%s' % plugin, _class='file', _href=URL('plugin', args=[app, plugin], vars=dict(id=id, id2='plugins')))}}
{{pass}}
{{else:}}
{{=T('There are no plugins')}}
{{pass}}
- {{=upload_plugin_form(app)}}
+ {{=upload_plugin_form(app, 'plugins')}}
@@ -299,11 +353,12 @@ jQuery(document).ready(function(){
if(code==13 && jQuery('#search').val()){
jQuery.getJSON('{{=URL('search',args=request.args)}}?keywords='+escape(jQuery('#search').val()),null,function(data, textStatus, xhr){
jQuery('.component_contents li, .formfield, .comptools').hide();
- files=data['files'];
+ files=data['files'];
+ message=data['message'];
for(var i=0; i
-{{if filetype=='html':}}
+{{if TEXT_EDITOR == 'edit_area' and filetype=='html':}}
{{=T('Key bindings for ZenCoding Plugin')}}
diff --git a/applications/admin/views/default/edit_plurals.html b/applications/admin/views/default/edit_plurals.html
new file mode 100644
index 00000000..64c77b00
--- /dev/null
+++ b/applications/admin/views/default/edit_plurals.html
@@ -0,0 +1,16 @@
+{{extend 'layout.html'}}
+
+
+{{block sectionclass}}edit_language{{end}}
+
+{{=T("Editing Plural Forms File")}} "{{=filename}}"
+
+ {{=form}}
+
+
diff --git a/applications/admin/views/default/peek.html b/applications/admin/views/default/peek.html
index d2baa18c..6d0b7af1 100644
--- a/applications/admin/views/default/peek.html
+++ b/applications/admin/views/default/peek.html
@@ -5,8 +5,8 @@
{{=T("Peeking at file")}} "{{=filename}}"
-{{=button(URL('design',args=request.args[0]), T('back'))}}
-{{=button(URL('edit',args=request.args), T('Edit'))}}
+{{=button(URL('design',args=request.vars.app if request.vars.app else request.args[0], anchor=request.vars.id), T('back'))}}
+{{=button(URL('edit',args=request.args, vars=request.vars), T('Edit'))}}
{{
diff --git a/applications/admin/views/default/plugin.html b/applications/admin/views/default/plugin.html
index 8e5c6181..aded9d40 100644
--- a/applications/admin/views/default/plugin.html
+++ b/applications/admin/views/default/plugin.html
@@ -50,8 +50,8 @@ def deletefile(arglist):
{{=button("#modules", T("modules"))}}
- {{=sp_button(URL('plugin',args=app), T("back"))}}
- {{=sp_button(URL('delete_plugin',args=request.args), T("delete plugin"))}}
+ {{=sp_button(URL('design',args=request.args, anchor=request.vars.id), T("back"))}}
+ {{=sp_button(URL('delete_plugin',args=request.args, vars=request.vars), T("delete plugin"))}}
{{=sp_button(URL('pack_plugin',args=request.args), T("pack plugin"))}}
diff --git a/applications/admin/views/default/site.html b/applications/admin/views/default/site.html
index 184b3a93..6a54cb5a 100644
--- a/applications/admin/views/default/site.html
+++ b/applications/admin/views/default/site.html
@@ -58,7 +58,7 @@
{{if is_manager():}}
-
{{="Version %s.%s.%s (%s) %s" % myversion}}
+
{{=T("Version %s.%s.%s (%s) %s", myversion)}}
{{if session.check_version:}}
{{=T('Checking for upgrades...')}}
@@ -69,7 +69,7 @@
{{pass}}
- Running on {{=request.env.server_software}}
+ {{=T("Running on %s", request.env.server_software)}}
{{=button(URL('default','reload_routes'), T('Reload routes'))}}
diff --git a/applications/admin/views/layout.html b/applications/admin/views/layout.html
index 8455ea22..79f0efa3 100644
--- a/applications/admin/views/layout.html
+++ b/applications/admin/views/layout.html
@@ -28,17 +28,17 @@