better languages.py, thanks Vladyslav
This commit is contained in:
@@ -1 +1 @@
|
||||
Version 2.0.8 (2012-09-11 12:59:42) stable
|
||||
Version 2.0.8 (2012-09-11 13:37:13) stable
|
||||
|
||||
@@ -22,10 +22,8 @@ except ImportError:
|
||||
have_git = False
|
||||
GIT_MISSING = 'requires python-git module, but not installed or incompatible version'
|
||||
|
||||
from gluon.languages import (regex_language, read_possible_languages,
|
||||
lang_sampling,
|
||||
read_dict, write_dict, read_plural_dict,
|
||||
write_plural_dict, PLURAL_RULES)
|
||||
from gluon.languages import (read_possible_languages, 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','git_push','git_pull']:
|
||||
@@ -812,7 +810,6 @@ def edit_language():
|
||||
|
||||
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
|
||||
@@ -949,30 +946,11 @@ def design():
|
||||
statics.sort()
|
||||
|
||||
# Get all languages
|
||||
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 = PLURAL_RULES
|
||||
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[4],plural[3])
|
||||
else:
|
||||
plural_rules[langfile]=(0,lang,'plural_rules-%s.py'%lang,'')
|
||||
|
||||
plurals = listdir(apath('%s/languages/' % app, r=request),
|
||||
'^plural-[\w-]+\.py$')
|
||||
languages=dict([(lang,info) 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
|
||||
|
||||
#Get crontab
|
||||
cronfolder = apath('%s/cron' % app, r=request)
|
||||
@@ -1000,8 +978,6 @@ def design():
|
||||
privates=filter_plugins(privates,plugins),
|
||||
statics=filter_plugins(statics,plugins),
|
||||
languages=languages,
|
||||
plurals=plurals,
|
||||
plural_rules=plural_rules,
|
||||
crontab=crontab,
|
||||
plugins=plugins)
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
'%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S',
|
||||
'(requires internet access)': '(потрібно мати доступ в інтернет)',
|
||||
'(something like "it-it")': '(щось схоже на "uk-ua")',
|
||||
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(не існує файлу **gluon/contrib/plural_rules/%s.py**)',
|
||||
'@markmin\x01Searching: **%s** %%{file}': 'Знайдено: **%s** %%{файл}',
|
||||
'Abort': 'Припинити',
|
||||
'About': 'Про',
|
||||
@@ -405,6 +406,7 @@
|
||||
'ticket': 'позначка',
|
||||
'Ticket': 'Позначка (Ticket)',
|
||||
'Ticket ID': 'Ід.позначки (Ticket ID)',
|
||||
'Ticket Missing': 'Позначка (ticket) відсутня',
|
||||
'tickets': 'позначки (tickets)',
|
||||
'Time in Cache (h:m:s)': 'Час в кеші (г:хв:сек)',
|
||||
'to previous version.': 'до попередньої версії.',
|
||||
@@ -412,6 +414,7 @@
|
||||
'To emulate a breakpoint programatically, write:': 'Для встановлення точки зупинки програмним чином напишіть:',
|
||||
'to use the debugger!': 'щоб активувати ладнач!',
|
||||
'toggle breakpoint': '+/- точку зупинки',
|
||||
'Toggle Fullscreen': 'Перемкнути на весь екран',
|
||||
'Traceback': 'Стек викликів (Traceback)',
|
||||
'Translation strings for the application': 'Пари рядків <оригінал>:<переклад> для вибраної мови',
|
||||
'try something like': 'спробуйте щось схоже на',
|
||||
|
||||
@@ -187,8 +187,9 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
||||
</div>
|
||||
{{if not languages:}}<p><strong>{{=T("There are no translators, only default language is supported")}}</strong></p>{{pass}}
|
||||
<table>
|
||||
{{for file in languages:}}
|
||||
{{id="languages__"+file.replace('.','__')}}
|
||||
{{for lang in sorted(languages):
|
||||
file = lang+'.py'
|
||||
id = "languages__"+file.replace('.','__')}}
|
||||
<tr id="{{=id}}">
|
||||
<td>
|
||||
<span class="filetools controls">
|
||||
@@ -203,24 +204,17 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
||||
|
||||
(
|
||||
{{=T("Plural-Forms:")}}
|
||||
{{p=plural_rules[file]}}
|
||||
{{if p[0] == 0:}}
|
||||
<b>{{=T("rules are not defined")}}</b>,
|
||||
<span class="controls comptools">
|
||||
{{=button(URL('create_file', vars=dict(filename=p[2], location='gluon/contrib/rules/', sender=URL('design', args=app), id=id, app=app, token=session.token)), T('Create rules'))}}
|
||||
</span>
|
||||
{{p=languages[lang][3:7]}}
|
||||
{{if p[2] == 'default':}}
|
||||
<span class='error'>{{=T("rules are not defined")}}</span> {{=T.M("(file **gluon/contrib/plural_rules/%s.py** is not found)",lang[:2])}}
|
||||
{{else:}}
|
||||
{{if p[0] == 1:}}
|
||||
{{if p[3] == 'ok':}}
|
||||
{{=B(T("are not used"))}},
|
||||
{{else:}}
|
||||
<span class='error'>{{=B(T("rules parsed with errors"))}}</span>,
|
||||
{{pass}}
|
||||
{{if p[3] == 1:}}
|
||||
{{=B(T("are not used"))}}
|
||||
{{else:}}
|
||||
{{pfile='plural-%s.py'%p[1]}}
|
||||
{{if pfile in plurals:}}
|
||||
{{pfile=p[0]}}
|
||||
{{if p[1]!=0:}}
|
||||
<span class="filetools controls">
|
||||
{{=editpluralsfile('languages',pfile,dict(nplurals=p[0]))}}
|
||||
{{=editpluralsfile('languages',pfile,dict(nplurals=p[3]))}}
|
||||
</span>
|
||||
<span class="file">
|
||||
{{=peekfile('languages',pfile,dict(id=id))}}
|
||||
@@ -235,6 +229,7 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
||||
</tr>
|
||||
{{pass}}
|
||||
</table>
|
||||
{{pass}}
|
||||
<div class="controls formfield">{{=file_create_form('%s/languages/' % app, 'languages')}}{{=T('(something like "it-it")')}}</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,65 +3,139 @@
|
||||
'!langcode!': 'cs-cz',
|
||||
'!langname!': 'Český',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" je voliteľný výraz ako "field1=\'newvalue\'". Nemôžete upravovať alebo zmazať výsledky JOINu',
|
||||
'%Y-%m-%d': '%d.%m.%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||
'%s %%{row} deleted': '%s zmazaných záznamů',
|
||||
'%s %%{row} updated': '%s upravených záznamů',
|
||||
'%s selected': '%s označených',
|
||||
'%Y-%m-%d': '%d.%m.%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'pro administrátorské rozhranie kliknite sem',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'appadmin je zakázaný bez zabezpečeného spojení',
|
||||
'Are you sure you want to delete this object?': 'Opravdu chceš odstranit tento objekt?',
|
||||
'Available Databases and Tables': 'Dostupné databáze a tabuľky',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Nemůže být prázdné',
|
||||
'Change password': 'Změna hesla',
|
||||
'Check to delete': 'Označit ke smazání',
|
||||
'Check to delete:': 'Check to delete:',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'Client IP',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Controller',
|
||||
'Copyright': 'Copyright',
|
||||
'Current request': 'Aktuální požadavek',
|
||||
'Current response': 'Aktuální odpověď',
|
||||
'Current session': 'Aktuální session',
|
||||
'customize me!': 'uprav mě!',
|
||||
'data uploaded': 'data nahrána',
|
||||
'Database': 'databáze',
|
||||
'Database %s select': 'databáze %s výber',
|
||||
'db': 'db',
|
||||
'DB Model': 'DB Model',
|
||||
'Database': 'Databáze',
|
||||
'Delete:': 'Smazat:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Popis',
|
||||
'design': 'návrh',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Dokumentáce',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'hotovo!',
|
||||
'Download': 'Download',
|
||||
'E-mail': 'E-mail',
|
||||
'Edit': 'Upravit',
|
||||
'Edit Profile': 'Upravit profil',
|
||||
'Edit current record': 'Upravit aktuální záznam',
|
||||
'Edit Profile': 'Upravit profil',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'enter a number between %(min)g and %(max)g': 'zadej číslo mezi %(min)g a %(max)g',
|
||||
'enter an integer between %(min)g and %(max)g': 'zadej celé číslo mezi %(min)g a %(max)g',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'exportovat do csv souboru',
|
||||
'FAQ': 'FAQ',
|
||||
'First name': 'Křestní jméno',
|
||||
'forgot username?': 'neznáš svúj nick?',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Group %(group_id)s created': 'Skupina %(group_id)s vytvořena',
|
||||
'Group ID': 'ID skupiny',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Ahoj světe',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Import/Export',
|
||||
'Index': 'Index',
|
||||
'insert new': 'vložit nový záznam ',
|
||||
'insert new %s': 'vložit nový záznam %s',
|
||||
'Internal State': 'Vnitřní stav',
|
||||
'Invalid Query': 'Neplatná dotaz',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid email': 'Neplatný email',
|
||||
'Invalid password': 'Nesprávné heslo',
|
||||
'Invalid Query': 'Neplatná dotaz',
|
||||
'invalid request': 'Neplatný požadavek',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Příjmení',
|
||||
'Layout': 'Layout',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live Chat': 'Live Chat',
|
||||
'Logged in': 'Přihlášení úspěšné',
|
||||
'Logged out': 'Odhlášení úspěšné',
|
||||
'login': 'prihlásit',
|
||||
'Login': 'Login',
|
||||
'logout': 'odhlásit',
|
||||
'Lost Password': 'Ztracené heslo?',
|
||||
'lost password?': 'neznáš heslo?',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu Model',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Jméno',
|
||||
'New Record': 'Nový záznam',
|
||||
'New password': 'Nové heslo',
|
||||
'New Record': 'Nový záznam',
|
||||
'new record inserted': 'nový záznam byl vložen',
|
||||
'next 100 rows': 'dalších 100 řádků',
|
||||
'No databases in this application': 'V této aplikáci nejsou databáze',
|
||||
'Object or table name': 'Objekt či tabulka',
|
||||
'Old password': 'Staré heslo',
|
||||
'Online examples': 'pro online příklady klikněte sem',
|
||||
'or import from csv file': 'a nebo naimportovat z csv souboru',
|
||||
'Origin': 'Púvod',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'password': 'heslo',
|
||||
'Password': 'Heslo',
|
||||
"Password fields don't match": 'Hesla se neshodují',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Powered by',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': 'předchádzajících 100 řádků',
|
||||
'profile': 'profil',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Dotaz:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Readme': 'Nápověda',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'záznam',
|
||||
'record does not exist': 'záznam neexistuje',
|
||||
'Record ID': 'ID záznamu',
|
||||
'Record id': 'id záznamu',
|
||||
'Register': 'Zaregistrovat se',
|
||||
'register': 'registrovat',
|
||||
'Registration identifier': 'Registrační identifikátor',
|
||||
'Registration key': 'Registrační kľíč',
|
||||
'Remember me (for 30 days)': 'Zapamatuj si mne (na 30 dní)',
|
||||
@@ -70,14 +144,28 @@
|
||||
'Role': 'Role',
|
||||
'Rows in Table': 'řádků v tabulce',
|
||||
'Rows selected': 'označených řádků',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'stav',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'CSS',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Odeslat',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Opravdu chceš smazat tento objekt?',
|
||||
'Table': 'tabulka',
|
||||
'Table name': 'Název tabulky',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"query" je podmínka jako "db.table1.field1==\'value\'". Něco jako "db.table1.field1==db.table2.field2" má za výsledek SQL JOIN.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'Výstup zo souboru je slovník, ktorý byl zobrazený ve view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'This is a copy of the scaffolding application': 'Toto je kopie skeletu aplikace',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Časové razítko',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'nedá sa zpracovat csv soubor',
|
||||
'Update:': 'Upravit:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Použijte (...)&(...) pro AND, (...)|(...) pro OR a ~(...) pro NOT na poskládaní komplexnejších dotazů.',
|
||||
'User %(id)s Logged-in': 'Uživatel %(id)s prihlásen',
|
||||
@@ -89,43 +177,13 @@
|
||||
'User ID': 'ID uživatele',
|
||||
'Username': 'Nick',
|
||||
'Verify Password': 'Zopakuj heslo',
|
||||
'Videos': 'Videos',
|
||||
'View': 'Zobrazit',
|
||||
'Welcome': 'Vítej',
|
||||
'Welcome to web2py': 'Vitejte ve web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Ktorý zavolal funkci %s v souboru %s',
|
||||
'You are successfully running web2py': 'Úspešně jste spustili web2py',
|
||||
'You can modify this application and adapt it to your needs': 'Můžete upravit tuto aplikáci a prispôsobit ji svojim potřebám',
|
||||
'You visited the url %s': 'Navštívili jste URL %s',
|
||||
'appadmin is disabled because insecure channel': 'appadmin je zakázaný bez zabezpečeného spojení',
|
||||
'cache': 'cache',
|
||||
'customize me!': 'uprav mě!',
|
||||
'data uploaded': 'data nahrána',
|
||||
'Database': 'databáze',
|
||||
'Database %s select': 'databáze %s výber',
|
||||
'db': 'db',
|
||||
'design': 'návrh',
|
||||
'done!': 'hotovo!',
|
||||
'enter a number between %(min)g and %(max)g': 'zadej číslo mezi %(min)g a %(max)g',
|
||||
'enter an integer between %(min)g and %(max)g': 'zadej celé číslo mezi %(min)g a %(max)g',
|
||||
'export as csv file': 'exportovat do csv souboru',
|
||||
'forgot username?': 'neznáš svúj nick?',
|
||||
'insert new': 'vložit nový záznam ',
|
||||
'insert new %s': 'vložit nový záznam %s',
|
||||
'invalid request': 'Neplatný požadavek',
|
||||
'login': 'prihlásit',
|
||||
'logout': 'odhlásit',
|
||||
'lost password?': 'neznáš heslo?',
|
||||
'new record inserted': 'nový záznam byl vložen',
|
||||
'next 100 rows': 'dalších 100 řádků',
|
||||
'or import from csv file': 'a nebo naimportovat z csv souboru',
|
||||
'password': 'heslo',
|
||||
'previous 100 rows': 'předchádzajících 100 řádků',
|
||||
'profile': 'profil',
|
||||
'Record': 'záznam',
|
||||
'record does not exist': 'záznam neexistuje',
|
||||
'Record id': 'id záznamu',
|
||||
'register': 'registrovat',
|
||||
'state': 'stav',
|
||||
'Table': 'tabulka',
|
||||
'unable to parse csv file': 'nedá sa zpracovat csv soubor',
|
||||
}
|
||||
|
||||
@@ -3,144 +3,28 @@
|
||||
'!langcode!': 'es',
|
||||
'!langname!': 'Español',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"actualice" es una expresión opcional como "campo1=\'nuevo_valor\'". No se puede actualizar o eliminar resultados de un JOIN',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'%s %%{row} deleted': '%s filas eliminadas',
|
||||
'%s %%{row} updated': '%s filas actualizadas',
|
||||
'%s selected': '%s seleccionado(s)',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'(something like "it-it")': '(algo como "it-it")',
|
||||
'A new version of web2py is available': 'Hay una nueva versión de web2py disponible',
|
||||
'A new version of web2py is available: %s': 'Hay una nueva versión de web2py disponible: %s',
|
||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENCION: Inicio de sesión requiere una conexión segura (HTTPS) o localhost.',
|
||||
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENCION: NO EJECUTE VARIAS PRUEBAS SIMULTANEAMENTE, NO SON THREAD SAFE.',
|
||||
'ATTENTION: you cannot edit the running application!': 'ATENCION: no puede modificar la aplicación que se ejecuta!',
|
||||
'about': 'acerca de',
|
||||
'About': 'Acerca de',
|
||||
'About application': 'Acerca de la aplicación',
|
||||
'Admin is disabled because insecure channel': 'Admin deshabilitado, el canal no es seguro',
|
||||
'Admin is disabled because unsecure channel': 'Admin deshabilitado, el canal no es seguro',
|
||||
'Administrative interface': 'Interfaz administrativa',
|
||||
'Administrator Password:': 'Contraseña del Administrador:',
|
||||
'Are you sure you want to delete file "%s"?': '¿Está seguro que desea eliminar el archivo "%s"?',
|
||||
'Are you sure you want to uninstall application "%s"': '¿Está seguro que desea desinstalar la aplicación "%s"',
|
||||
'Are you sure you want to uninstall application "%s"?': '¿Está seguro que desea desinstalar la aplicación "%s"?',
|
||||
'Authentication': 'Autenticación',
|
||||
'Available Databases and Tables': 'Bases de datos y tablas disponibles',
|
||||
'Cannot be empty': 'No puede estar vacío',
|
||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'No se puede compilar: hay errores en su aplicación. Depure, corrija errores y vuelva a intentarlo.',
|
||||
'Change Password': 'Cambie Contraseña',
|
||||
'Check to delete': 'Marque para eliminar',
|
||||
'Client IP': 'IP del Cliente',
|
||||
'Controller': 'Controlador',
|
||||
'Controllers': 'Controladores',
|
||||
'Copyright': 'Derechos de autor',
|
||||
'Create new application': 'Cree una nueva aplicación',
|
||||
'Current request': 'Solicitud en curso',
|
||||
'Current response': 'Respuesta en curso',
|
||||
'Current session': 'Sesión en curso',
|
||||
'DB Model': 'Modelo "db"',
|
||||
'DESIGN': 'DISEÑO',
|
||||
'Database': 'Base de datos',
|
||||
'Date and Time': 'Fecha y Hora',
|
||||
'Delete': 'Elimine',
|
||||
'Delete:': 'Elimine:',
|
||||
'Deploy on Google App Engine': 'Instale en Google App Engine',
|
||||
'Description': 'Descripción',
|
||||
'Design for': 'Diseño para',
|
||||
'Documentation': 'Documentación',
|
||||
'E-mail': 'Correo electrónico',
|
||||
'EDIT': 'EDITAR',
|
||||
'Edit': 'Editar',
|
||||
'Edit Profile': 'Editar Perfil',
|
||||
'Edit This App': 'Edite esta App',
|
||||
'Edit application': 'Editar aplicación',
|
||||
'Edit current record': 'Edite el registro actual',
|
||||
'Editing file': 'Editando archivo',
|
||||
'Editing file "%s"': 'Editando archivo "%s"',
|
||||
'Error logs for "%(app)s"': 'Bitácora de errores en "%(app)s"',
|
||||
'First name': 'Nombre',
|
||||
'Functions with no doctests will result in [passed] tests.': 'Funciones sin doctests equivalen a pruebas [aceptadas].',
|
||||
'Group ID': 'ID de Grupo',
|
||||
'Hello World': 'Hola Mundo',
|
||||
'Import/Export': 'Importar/Exportar',
|
||||
'Index': 'Indice',
|
||||
'Installed applications': 'Aplicaciones instaladas',
|
||||
'Internal State': 'Estado Interno',
|
||||
'Invalid Query': 'Consulta inválida',
|
||||
'Invalid action': 'Acción inválida',
|
||||
'Invalid email': 'Correo inválido',
|
||||
'Language files (static strings) updated': 'Archivos de lenguaje (cadenas estáticas) actualizados',
|
||||
'Languages': 'Lenguajes',
|
||||
'Last name': 'Apellido',
|
||||
'Last saved on:': 'Guardado en:',
|
||||
'Layout': 'Diseño de página',
|
||||
'License for': 'Licencia para',
|
||||
'Login': 'Inicio de sesión',
|
||||
'Login to the Administrative Interface': 'Inicio de sesión para la Interfaz Administrativa',
|
||||
'Logout': 'Fin de sesión',
|
||||
'Lost Password': 'Contraseña perdida',
|
||||
'Main Menu': 'Menú principal',
|
||||
'Menu Model': 'Modelo "menu"',
|
||||
'Models': 'Modelos',
|
||||
'Modules': 'Módulos',
|
||||
'NO': 'NO',
|
||||
'Name': 'Nombre',
|
||||
'New Record': 'Registro nuevo',
|
||||
'No databases in this application': 'No hay bases de datos en esta aplicación',
|
||||
'Online examples': 'Ejemplos en línea',
|
||||
'Origin': 'Origen',
|
||||
'Original/Translation': 'Original/Traducción',
|
||||
'Password': 'Contraseña',
|
||||
'Peeking at file': 'Visualizando archivo',
|
||||
'Powered by': 'Este sitio usa',
|
||||
'Query:': 'Consulta:',
|
||||
'Record ID': 'ID de Registro',
|
||||
'Register': 'Registrese',
|
||||
'Registration key': 'Contraseña de Registro',
|
||||
'Reset Password key': 'Reset Password key',
|
||||
'Resolve Conflict file': 'archivo Resolución de Conflicto',
|
||||
'Role': 'Rol',
|
||||
'Rows in Table': 'Filas en la tabla',
|
||||
'Rows selected': 'Filas seleccionadas',
|
||||
'Saved file hash:': 'Hash del archivo guardado:',
|
||||
'Static files': 'Archivos estáticos',
|
||||
'Stylesheet': 'Hoja de estilo',
|
||||
'Sure you want to delete this object?': '¿Está seguro que desea eliminar este objeto?',
|
||||
'Table name': 'Nombre de la tabla',
|
||||
'Testing application': 'Probando aplicación',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "consulta" es una condición como "db.tabla1.campo1==\'valor\'". Algo como "db.tabla1.campo1==db.tabla2.campo2" resulta en un JOIN SQL.',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'La salida del archivo es un diccionario escenificado por la vista %s',
|
||||
'There are no controllers': 'No hay controladores',
|
||||
'There are no models': 'No hay modelos',
|
||||
'There are no modules': 'No hay módulos',
|
||||
'There are no static files': 'No hay archivos estáticos',
|
||||
'There are no translators, only default language is supported': 'No hay traductores, sólo el lenguaje por defecto es soportado',
|
||||
'There are no views': 'No hay vistas',
|
||||
'This is a copy of the scaffolding application': 'Esta es una copia de la aplicación de andamiaje',
|
||||
'This is the %(filename)s template': 'Esta es la plantilla %(filename)s',
|
||||
'Ticket': 'Tiquete',
|
||||
'Timestamp': 'Timestamp',
|
||||
'Unable to check for upgrades': 'No es posible verificar la existencia de actualizaciones',
|
||||
'Unable to download': 'No es posible la descarga',
|
||||
'Unable to download app': 'No es posible descarga la aplicación',
|
||||
'Update:': 'Actualice:',
|
||||
'Upload existing application': 'Suba esta aplicación',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, y ~(...) para NOT, para crear consultas más complejas.',
|
||||
'User ID': 'ID de Usuario',
|
||||
'View': 'Vista',
|
||||
'Views': 'Vistas',
|
||||
'Welcome': 'Welcome',
|
||||
'Welcome %s': 'Bienvenido %s',
|
||||
'Welcome to web2py': 'Bienvenido a web2py',
|
||||
'Which called the function %s located in the file %s': 'La cual llamó la función %s localizada en el archivo %s',
|
||||
'YES': 'SI',
|
||||
'You are successfully running web2py': 'Usted está ejecutando web2py exitosamente',
|
||||
'You can modify this application and adapt it to your needs': 'Usted puede modificar esta aplicación y adaptarla a sus necesidades',
|
||||
'You visited the url %s': 'Usted visitó la url %s',
|
||||
'about': 'acerca de',
|
||||
'Access Control': 'Access Control',
|
||||
'additional code for your application': 'código adicional para su aplicación',
|
||||
'admin disabled because no admin password': ' por falta de contraseña',
|
||||
'admin disabled because not supported on google app engine': 'admin deshabilitado, no es soportado en GAE',
|
||||
'admin disabled because unable to access password file': 'admin deshabilitado, imposible acceder al archivo con la contraseña',
|
||||
'Admin is disabled because insecure channel': 'Admin deshabilitado, el canal no es seguro',
|
||||
'Admin is disabled because unsecure channel': 'Admin deshabilitado, el canal no es seguro',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'Interfaz administrativa',
|
||||
'Administrator Password:': 'Contraseña del Administrador:',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'and rename it (required):': 'y renombrela (requerido):',
|
||||
'and rename it:': ' y renombrelo:',
|
||||
'appadmin': 'appadmin',
|
||||
@@ -148,40 +32,98 @@
|
||||
'application "%s" uninstalled': 'aplicación "%s" desinstalada',
|
||||
'application compiled': 'aplicación compilada',
|
||||
'application is compiled and cannot be designed': 'la aplicación está compilada y no puede ser modificada',
|
||||
'Are you sure you want to delete file "%s"?': '¿Está seguro que desea eliminar el archivo "%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"': '¿Está seguro que desea desinstalar la aplicación "%s"',
|
||||
'Are you sure you want to uninstall application "%s"?': '¿Está seguro que desea desinstalar la aplicación "%s"?',
|
||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENCION: Inicio de sesión requiere una conexión segura (HTTPS) o localhost.',
|
||||
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENCION: NO EJECUTE VARIAS PRUEBAS SIMULTANEAMENTE, NO SON THREAD SAFE.',
|
||||
'ATTENTION: you cannot edit the running application!': 'ATENCION: no puede modificar la aplicación que se ejecuta!',
|
||||
'Authentication': 'Autenticación',
|
||||
'Available Databases and Tables': 'Bases de datos y tablas disponibles',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'cache, errors and sessions cleaned': 'cache, errores y sesiones eliminados',
|
||||
'Cannot be empty': 'No puede estar vacío',
|
||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'No se puede compilar: hay errores en su aplicación. Depure, corrija errores y vuelva a intentarlo.',
|
||||
'cannot create file': 'no es posible crear archivo',
|
||||
'cannot upload file "%(filename)s"': 'no es posible subir archivo "%(filename)s"',
|
||||
'Change Password': 'Cambie Contraseña',
|
||||
'change password': 'cambie contraseña',
|
||||
'check all': 'marcar todos',
|
||||
'Check to delete': 'Marque para eliminar',
|
||||
'clean': 'limpiar',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'click to check for upgrades': 'haga clic para buscar actualizaciones',
|
||||
'Client IP': 'IP del Cliente',
|
||||
'Community': 'Community',
|
||||
'compile': 'compilar',
|
||||
'compiled application removed': 'aplicación compilada removida',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Controlador',
|
||||
'Controllers': 'Controladores',
|
||||
'controllers': 'controladores',
|
||||
'Copyright': 'Derechos de autor',
|
||||
'create file with filename:': 'cree archivo con nombre:',
|
||||
'Create new application': 'Cree una nueva aplicación',
|
||||
'create new application:': 'nombre de la nueva aplicación:',
|
||||
'crontab': 'crontab',
|
||||
'Current request': 'Solicitud en curso',
|
||||
'Current response': 'Respuesta en curso',
|
||||
'Current session': 'Sesión en curso',
|
||||
'currently saved or': 'actualmente guardado o',
|
||||
'customize me!': 'Adaptame!',
|
||||
'data uploaded': 'datos subidos',
|
||||
'Database': 'base de datos',
|
||||
'Database %s select': 'selección en base de datos %s',
|
||||
'database administration': 'administración base de datos',
|
||||
'Date and Time': 'Fecha y Hora',
|
||||
'db': 'db',
|
||||
'DB Model': 'Modelo "db"',
|
||||
'defines tables': 'define tablas',
|
||||
'Delete': 'Elimine',
|
||||
'delete': 'eliminar',
|
||||
'delete all checked': 'eliminar marcados',
|
||||
'Delete:': 'Elimine:',
|
||||
'Demo': 'Demo',
|
||||
'Deploy on Google App Engine': 'Instale en Google App Engine',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Descripción',
|
||||
'DESIGN': 'DISEÑO',
|
||||
'design': 'modificar',
|
||||
'Design for': 'Diseño para',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentación',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'listo!',
|
||||
'Download': 'Download',
|
||||
'E-mail': 'Correo electrónico',
|
||||
'EDIT': 'EDITAR',
|
||||
'edit': 'editar',
|
||||
'Edit': 'Editar',
|
||||
'Edit application': 'Editar aplicación',
|
||||
'edit controller': 'editar controlador',
|
||||
'Edit current record': 'Edite el registro actual',
|
||||
'edit profile': 'editar perfil',
|
||||
'Edit Profile': 'Editar Perfil',
|
||||
'Edit This App': 'Edite esta App',
|
||||
'Editing file': 'Editando archivo',
|
||||
'Editing file "%s"': 'Editando archivo "%s"',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Error logs for "%(app)s"': 'Bitácora de errores en "%(app)s"',
|
||||
'Errors': 'Errors',
|
||||
'errors': 'errores',
|
||||
'export as csv file': 'exportar como archivo CSV',
|
||||
'exposes': 'expone',
|
||||
'extends': 'extiende',
|
||||
'failed to reload module': 'recarga del módulo ha fallado',
|
||||
'FAQ': 'FAQ',
|
||||
'file "%(filename)s" created': 'archivo "%(filename)s" creado',
|
||||
'file "%(filename)s" deleted': 'archivo "%(filename)s" eliminado',
|
||||
'file "%(filename)s" uploaded': 'archivo "%(filename)s" subido',
|
||||
@@ -191,70 +133,186 @@
|
||||
'file does not exist': 'archivo no existe',
|
||||
'file saved on %(time)s': 'archivo guardado %(time)s',
|
||||
'file saved on %s': 'archivo guardado %s',
|
||||
'First name': 'Nombre',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Functions with no doctests will result in [passed] tests.': 'Funciones sin doctests equivalen a pruebas [aceptadas].',
|
||||
'Group ID': 'ID de Grupo',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Hola Mundo',
|
||||
'help': 'ayuda',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'htmledit': 'htmledit',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Importar/Exportar',
|
||||
'includes': 'incluye',
|
||||
'Index': 'Indice',
|
||||
'insert new': 'inserte nuevo',
|
||||
'insert new %s': 'inserte nuevo %s',
|
||||
'Installed applications': 'Aplicaciones instaladas',
|
||||
'internal error': 'error interno',
|
||||
'Internal State': 'Estado Interno',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid action': 'Acción inválida',
|
||||
'Invalid email': 'Correo inválido',
|
||||
'invalid password': 'contraseña inválida',
|
||||
'Invalid Query': 'Consulta inválida',
|
||||
'invalid request': 'solicitud inválida',
|
||||
'invalid ticket': 'tiquete inválido',
|
||||
'Key': 'Key',
|
||||
'language file "%(filename)s" created/updated': 'archivo de lenguaje "%(filename)s" creado/actualizado',
|
||||
'Language files (static strings) updated': 'Archivos de lenguaje (cadenas estáticas) actualizados',
|
||||
'languages': 'lenguajes',
|
||||
'Languages': 'Lenguajes',
|
||||
'languages updated': 'lenguajes actualizados',
|
||||
'Last name': 'Apellido',
|
||||
'Last saved on:': 'Guardado en:',
|
||||
'Layout': 'Diseño de página',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'License for': 'Licencia para',
|
||||
'Live Chat': 'Live Chat',
|
||||
'loading...': 'cargando...',
|
||||
'login': 'inicio de sesión',
|
||||
'Login': 'Inicio de sesión',
|
||||
'Login to the Administrative Interface': 'Inicio de sesión para la Interfaz Administrativa',
|
||||
'logout': 'fin de sesión',
|
||||
'Logout': 'Fin de sesión',
|
||||
'Lost Password': 'Contraseña perdida',
|
||||
'lost password?': '¿olvido la contraseña?',
|
||||
'Main Menu': 'Menú principal',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Modelo "menu"',
|
||||
'merge': 'combinar',
|
||||
'Models': 'Modelos',
|
||||
'models': 'modelos',
|
||||
'Modules': 'Módulos',
|
||||
'modules': 'módulos',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Nombre',
|
||||
'new application "%s" created': 'nueva aplicación "%s" creada',
|
||||
'New Record': 'Registro nuevo',
|
||||
'new record inserted': 'nuevo registro insertado',
|
||||
'next 100 rows': '100 filas siguientes',
|
||||
'NO': 'NO',
|
||||
'No databases in this application': 'No hay bases de datos en esta aplicación',
|
||||
'Online examples': 'Ejemplos en línea',
|
||||
'or import from csv file': 'o importar desde archivo CSV',
|
||||
'or provide application url:': 'o provea URL de la aplicación:',
|
||||
'Origin': 'Origen',
|
||||
'Original/Translation': 'Original/Traducción',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'pack all': 'empaquetar todo',
|
||||
'pack compiled': 'empaquete compiladas',
|
||||
'Password': 'Contraseña',
|
||||
'Peeking at file': 'Visualizando archivo',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Este sitio usa',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': '100 filas anteriores',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Consulta:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'registro',
|
||||
'record does not exist': 'el registro no existe',
|
||||
'Record ID': 'ID de Registro',
|
||||
'Record id': 'id de registro',
|
||||
'Register': 'Registrese',
|
||||
'register': 'registrese',
|
||||
'Registration key': 'Contraseña de Registro',
|
||||
'remove compiled': 'eliminar compiladas',
|
||||
'Reset Password key': 'Reset Password key',
|
||||
'Resolve Conflict file': 'archivo Resolución de Conflicto',
|
||||
'restore': 'restaurar',
|
||||
'revert': 'revertir',
|
||||
'Role': 'Rol',
|
||||
'Rows in Table': 'Filas en la tabla',
|
||||
'Rows selected': 'Filas seleccionadas',
|
||||
'save': 'guardar',
|
||||
'Saved file hash:': 'Hash del archivo guardado:',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'session expired': 'sesión expirada',
|
||||
'shell': 'shell',
|
||||
'site': 'sitio',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'some files could not be removed': 'algunos archivos no pudieron ser removidos',
|
||||
'state': 'estado',
|
||||
'static': 'estáticos',
|
||||
'Static files': 'Archivos estáticos',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Hoja de estilo',
|
||||
'submit': 'submit',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': '¿Está seguro que desea eliminar este objeto?',
|
||||
'Table': 'tabla',
|
||||
'Table name': 'Nombre de la tabla',
|
||||
'test': 'probar',
|
||||
'Testing application': 'Probando aplicación',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "consulta" es una condición como "db.tabla1.campo1==\'valor\'". Algo como "db.tabla1.campo1==db.tabla2.campo2" resulta en un JOIN SQL.',
|
||||
'the application logic, each URL path is mapped in one exposed function in the controller': 'la lógica de la aplicación, cada ruta URL se mapea en una función expuesta en el controlador',
|
||||
'The Core': 'The Core',
|
||||
'the data representation, define database tables and sets': 'la representación de datos, define tablas y conjuntos de base de datos',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'La salida del archivo es un diccionario escenificado por la vista %s',
|
||||
'the presentations layer, views are also known as templates': 'la capa de presentación, las vistas también son llamadas plantillas',
|
||||
'The Views': 'The Views',
|
||||
'There are no controllers': 'No hay controladores',
|
||||
'There are no models': 'No hay modelos',
|
||||
'There are no modules': 'No hay módulos',
|
||||
'There are no static files': 'No hay archivos estáticos',
|
||||
'There are no translators, only default language is supported': 'No hay traductores, sólo el lenguaje por defecto es soportado',
|
||||
'There are no views': 'No hay vistas',
|
||||
'these files are served without processing, your images go here': 'estos archivos son servidos sin procesar, sus imágenes van aquí',
|
||||
'This App': 'This App',
|
||||
'This is a copy of the scaffolding application': 'Esta es una copia de la aplicación de andamiaje',
|
||||
'This is the %(filename)s template': 'Esta es la plantilla %(filename)s',
|
||||
'Ticket': 'Tiquete',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Timestamp',
|
||||
'to previous version.': 'a la versión previa.',
|
||||
'translation strings for the application': 'cadenas de caracteres de traducción para la aplicación',
|
||||
'try': 'intente',
|
||||
'try something like': 'intente algo como',
|
||||
'Twitter': 'Twitter',
|
||||
'Unable to check for upgrades': 'No es posible verificar la existencia de actualizaciones',
|
||||
'unable to create application "%s"': 'no es posible crear la aplicación "%s"',
|
||||
'unable to delete file "%(filename)s"': 'no es posible eliminar el archivo "%(filename)s"',
|
||||
'Unable to download': 'No es posible la descarga',
|
||||
'Unable to download app': 'No es posible descarga la aplicación',
|
||||
'unable to parse csv file': 'no es posible analizar el archivo CSV',
|
||||
'unable to uninstall "%s"': 'no es posible instalar "%s"',
|
||||
'uncheck all': 'desmarcar todos',
|
||||
'uninstall': 'desinstalar',
|
||||
'update': 'actualizar',
|
||||
'update all languages': 'actualizar todos los lenguajes',
|
||||
'Update:': 'Actualice:',
|
||||
'upload application:': 'subir aplicación:',
|
||||
'Upload existing application': 'Suba esta aplicación',
|
||||
'upload file:': 'suba archivo:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, y ~(...) para NOT, para crear consultas más complejas.',
|
||||
'User ID': 'ID de Usuario',
|
||||
'versioning': 'versiones',
|
||||
'Videos': 'Videos',
|
||||
'view': 'vista',
|
||||
'View': 'Vista',
|
||||
'Views': 'Vistas',
|
||||
'views': 'vistas',
|
||||
'web2py Recent Tweets': 'Tweets Recientes de web2py',
|
||||
'web2py is up to date': 'web2py está actualizado',
|
||||
'web2py Recent Tweets': 'Tweets Recientes de web2py',
|
||||
'Welcome': 'Welcome',
|
||||
'Welcome %s': 'Bienvenido %s',
|
||||
'Welcome to web2py': 'Bienvenido a web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'La cual llamó la función %s localizada en el archivo %s',
|
||||
'YES': 'SI',
|
||||
'You are successfully running web2py': 'Usted está ejecutando web2py exitosamente',
|
||||
'You can modify this application and adapt it to your needs': 'Usted puede modificar esta aplicación y adaptarla a sus necesidades',
|
||||
'You visited the url %s': 'Usted visitó la url %s',
|
||||
}
|
||||
|
||||
@@ -3,42 +3,67 @@
|
||||
'!langcode!': 'fr-ca',
|
||||
'!langname!': 'Français (Canadien)',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" est une expression optionnelle comme "champ1=\'nouvellevaleur\'". Vous ne pouvez mettre à jour ou supprimer les résultats d\'un JOIN',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'%s %%{row} deleted': '%s rangées supprimées',
|
||||
'%s %%{row} updated': '%s rangées mises à jour',
|
||||
'%s selected': '%s sélectionné',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'about': 'à propos',
|
||||
'About': 'À propos',
|
||||
'Access Control': "Contrôle d'accès",
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': "Interface d'administration",
|
||||
'Ajax Recipes': 'Recettes Ajax',
|
||||
'appadmin is disabled because insecure channel': "appadmin est désactivée parce que le canal n'est pas sécurisé",
|
||||
'Are you sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
|
||||
'Authentication': 'Authentification',
|
||||
'Available Databases and Tables': 'Bases de données et tables disponibles',
|
||||
'Buy this book': 'Acheter ce livre',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Ne peut pas être vide',
|
||||
'change password': 'changer le mot de passe',
|
||||
'Check to delete': 'Cliquez pour supprimer',
|
||||
'Check to delete:': 'Cliquez pour supprimer:',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'IP client',
|
||||
'Community': 'Communauté',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Contrôleur',
|
||||
'Copyright': "Droit d'auteur",
|
||||
'Current request': 'Demande actuelle',
|
||||
'Current response': 'Réponse actuelle',
|
||||
'Current session': 'Session en cours',
|
||||
'customize me!': 'personnalisez-moi!',
|
||||
'data uploaded': 'données téléchargées',
|
||||
'Database': 'base de données',
|
||||
'Database %s select': 'base de données %s select',
|
||||
'db': 'db',
|
||||
'DB Model': 'Modèle DB',
|
||||
'Database': 'Base de données',
|
||||
'Delete:': 'Supprimer:',
|
||||
'Demo': 'Démo',
|
||||
'Deployment Recipes': 'Recettes de déploiement ',
|
||||
'Description': 'Descriptif',
|
||||
'design': 'design',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'fait!',
|
||||
'Download': 'Téléchargement',
|
||||
'E-mail': 'Courriel',
|
||||
'Edit': 'Éditer',
|
||||
'Edit This App': 'Modifier cette application',
|
||||
'Edit current record': "Modifier l'enregistrement courant",
|
||||
'edit profile': 'modifier le profil',
|
||||
'Edit This App': 'Modifier cette application',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'enter an integer between %(min)g and %(max)g': 'entrer un entier compris entre %(min)g et %(max)g',
|
||||
'Errors': 'Erreurs',
|
||||
'export as csv file': 'exporter sous forme de fichier csv',
|
||||
'FAQ': 'faq',
|
||||
'First name': 'Prénom',
|
||||
'Forms and Validators': 'Formulaires et Validateurs',
|
||||
@@ -50,44 +75,73 @@
|
||||
'Groups': 'Groupes',
|
||||
'Hello World': 'Bonjour le monde',
|
||||
'Home': 'Accueil',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Importer/Exporter',
|
||||
'Index': 'Index',
|
||||
'insert new': 'insérer un nouveau',
|
||||
'insert new %s': 'insérer un nouveau %s',
|
||||
'Internal State': 'État interne',
|
||||
'Introduction': 'Présentation',
|
||||
'Invalid Query': 'Requête Invalide',
|
||||
'Invalid email': 'Courriel invalide',
|
||||
'Invalid Query': 'Requête Invalide',
|
||||
'invalid request': 'requête invalide',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Nom',
|
||||
'Layout': 'Mise en page',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'layouts',
|
||||
'Live chat': 'Clavardage en direct',
|
||||
'Live Chat': 'Live Chat',
|
||||
'Logged in': 'Connecté',
|
||||
'login': 'connectez-vous',
|
||||
'Login': 'Connectez-vous',
|
||||
'logout': 'déconnectez-vous',
|
||||
'lost password': 'mot de passe perdu',
|
||||
'Lost Password': 'Mot de passe perdu',
|
||||
'lost password?': 'mot de passe perdu?',
|
||||
'Main Menu': 'Menu principal',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu modèle',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Nom',
|
||||
'New Record': 'Nouvel enregistrement',
|
||||
'new record inserted': 'nouvel enregistrement inséré',
|
||||
'next 100 rows': '100 prochaines lignes',
|
||||
'No databases in this application': "Cette application n'a pas de bases de données",
|
||||
'Online examples': 'Exemples en ligne',
|
||||
'or import from csv file': "ou importer d'un fichier CSV",
|
||||
'Origin': 'Origine',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Autres recettes',
|
||||
'Overview': 'Présentation',
|
||||
'password': 'mot de passe',
|
||||
'Password': 'Mot de passe',
|
||||
"Password fields don't match": 'Les mots de passe ne correspondent pas',
|
||||
'please input your password again': "S'il vous plaît entrer votre mot de passe",
|
||||
'Plugins': 'Plugiciels',
|
||||
'Powered by': 'Alimenté par',
|
||||
'Preface': 'Préface',
|
||||
'previous 100 rows': '100 lignes précédentes',
|
||||
'profile': 'profile',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Requête:',
|
||||
'Quick Examples': 'Examples Rapides',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Readme': 'Lisez-moi',
|
||||
'Recipes': 'Recettes',
|
||||
'Record': 'enregistrement',
|
||||
'Record %(id)s created': 'Record %(id)s created',
|
||||
'Record %(id)s updated': 'Record %(id)s updated',
|
||||
'Record Created': 'Record Created',
|
||||
'record does not exist': "l'archive n'existe pas",
|
||||
'Record ID': "ID d'enregistrement",
|
||||
'Record id': "id d'enregistrement",
|
||||
'Record Updated': 'Record Updated',
|
||||
'Register': "S'inscrire",
|
||||
'register': "s'inscrire",
|
||||
'Registration key': "Clé d'enregistrement",
|
||||
'Registration successful': 'Inscription réussie',
|
||||
'Remember me (for 30 days)': 'Se souvenir de moi (pendant 30 jours)',
|
||||
@@ -99,25 +153,33 @@
|
||||
'Rows selected': 'Lignes sélectionnées',
|
||||
'Semantic': 'Sémantique',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'état',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Feuille de style',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Soumettre',
|
||||
'Support': 'Soutien',
|
||||
'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
|
||||
'Table': 'tableau',
|
||||
'Table name': 'Nom du tableau',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "query" est une condition comme "db.table1.champ1==\'valeur\'". Quelque chose comme "db.table1.champ1==db.table2.champ2" résulte en un JOIN SQL.',
|
||||
'The Core': 'Le noyau',
|
||||
'The Views': 'Les Vues',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'La sortie de ce fichier est un dictionnaire qui été restitué par la vue %s',
|
||||
'The Views': 'Les Vues',
|
||||
'This App': 'Cette Appli',
|
||||
'This is a copy of the scaffolding application': "Ceci est une copie de l'application échafaudage",
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Horodatage',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': "incapable d'analyser le fichier cvs",
|
||||
'Update:': 'Mise à jour:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Employez (...)&(...) pour AND, (...)|(...) pour OR, and ~(...) pour NOT pour construire des requêtes plus complexes.',
|
||||
'User %(id)s Logged-in': 'Utilisateur %(id)s connecté',
|
||||
'User %(id)s Registered': 'Utilisateur %(id)s enregistré',
|
||||
'User ID': 'ID utilisateur',
|
||||
'User Voice': 'User Voice',
|
||||
'value already in database or empty': 'valeur déjà dans la base ou vide',
|
||||
'Verify Password': 'Vérifiez le mot de passe',
|
||||
'Videos': 'Vidéos',
|
||||
'View': 'Présentation',
|
||||
@@ -125,44 +187,9 @@
|
||||
'Welcome': 'Bienvenu',
|
||||
'Welcome %s': 'Bienvenue %s',
|
||||
'Welcome to web2py': 'Bienvenue à web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Qui a appelé la fonction %s se trouvant dans le fichier %s',
|
||||
'You are successfully running web2py': 'Vous roulez avec succès web2py',
|
||||
'You can modify this application and adapt it to your needs': "Vous pouvez modifier cette application et l'adapter à vos besoins",
|
||||
'You visited the url %s': "Vous avez visité l'URL %s",
|
||||
'about': 'à propos',
|
||||
'appadmin is disabled because insecure channel': "appadmin est désactivée parce que le canal n'est pas sécurisé",
|
||||
'cache': 'cache',
|
||||
'change password': 'changer le mot de passe',
|
||||
'customize me!': 'personnalisez-moi!',
|
||||
'data uploaded': 'données téléchargées',
|
||||
'Database': 'base de données',
|
||||
'Database %s select': 'base de données %s select',
|
||||
'db': 'db',
|
||||
'design': 'design',
|
||||
'done!': 'fait!',
|
||||
'edit profile': 'modifier le profil',
|
||||
'enter an integer between %(min)g and %(max)g': 'entrer un entier compris entre %(min)g et %(max)g',
|
||||
'export as csv file': 'exporter sous forme de fichier csv',
|
||||
'insert new': 'insérer un nouveau',
|
||||
'insert new %s': 'insérer un nouveau %s',
|
||||
'invalid request': 'requête invalide',
|
||||
'login': 'connectez-vous',
|
||||
'logout': 'déconnectez-vous',
|
||||
'lost password': 'mot de passe perdu',
|
||||
'lost password?': 'mot de passe perdu?',
|
||||
'new record inserted': 'nouvel enregistrement inséré',
|
||||
'next 100 rows': '100 prochaines lignes',
|
||||
'or import from csv file': "ou importer d'un fichier CSV",
|
||||
'password': 'mot de passe',
|
||||
'please input your password again': "S'il vous plaît entrer votre mot de passe",
|
||||
'previous 100 rows': '100 lignes précédentes',
|
||||
'profile': 'profile',
|
||||
'Record': 'enregistrement',
|
||||
'record does not exist': "l'archive n'existe pas",
|
||||
'Record id': "id d'enregistrement",
|
||||
'register': "s'inscrire",
|
||||
'state': 'état',
|
||||
'Table': 'tableau',
|
||||
'unable to parse csv file': "incapable d'analyser le fichier cvs",
|
||||
'value already in database or empty': 'valeur déjà dans la base ou vide',
|
||||
}
|
||||
|
||||
@@ -19,10 +19,15 @@
|
||||
'Available Databases and Tables': 'Bases de données et tables disponibles',
|
||||
'Buy this book': 'Acheter ce livre',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Ne peut pas être vide',
|
||||
'change password': 'changer le mot de passe',
|
||||
'Check to delete': 'Cliquez pour supprimer',
|
||||
'Check to delete:': 'Cliquez pour supprimer:',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'IP client',
|
||||
'Community': 'Communauté',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
@@ -33,7 +38,6 @@
|
||||
'Current session': 'Session en cours',
|
||||
'customize me!': 'personnalisez-moi!',
|
||||
'data uploaded': 'données téléchargées',
|
||||
'Database': 'Base de données',
|
||||
'Database': 'base de données',
|
||||
'Database %s select': 'base de données %s select',
|
||||
'db': 'db',
|
||||
@@ -43,6 +47,9 @@
|
||||
'Deployment Recipes': 'Recettes de déploiement',
|
||||
'Description': 'Description',
|
||||
'design': 'design',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'fait!',
|
||||
@@ -66,6 +73,7 @@
|
||||
'Hello World': 'Bonjour le monde',
|
||||
'Home': 'Accueil',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Importer/Exporter',
|
||||
'Index': 'Index',
|
||||
'insert new': 'insérer un nouveau',
|
||||
@@ -75,20 +83,22 @@
|
||||
'Invalid email': 'E-mail invalide',
|
||||
'Invalid Query': 'Requête Invalide',
|
||||
'invalid request': 'requête invalide',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Nom',
|
||||
'Layout': 'Mise en page',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live chat': 'Chat live',
|
||||
'Live Chat': 'Live Chat',
|
||||
'Login': 'Connectez-vous',
|
||||
'login': 'connectez-vous',
|
||||
'Login': 'Connectez-vous',
|
||||
'logout': 'déconnectez-vous',
|
||||
'lost password': 'mot de passe perdu',
|
||||
'Lost Password': 'Mot de passe perdu',
|
||||
'lost password?': 'mot de passe perdu?',
|
||||
'Lost password?': 'Lost password?',
|
||||
'lost password?': 'mot de passe perdu?',
|
||||
'Main Menu': 'Menu principal',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu modèle',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Nom',
|
||||
@@ -112,12 +122,15 @@
|
||||
'Python': 'Python',
|
||||
'Query:': 'Requête:',
|
||||
'Quick Examples': 'Examples Rapides',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Readme': 'Lisez-moi',
|
||||
'Recipes': 'Recettes',
|
||||
'Record': 'enregistrement',
|
||||
'record does not exist': "l'archive n'existe pas",
|
||||
'Record id': "id d'enregistrement",
|
||||
'Record ID': "ID d'enregistrement",
|
||||
'Record id': "id d'enregistrement",
|
||||
'Register': "S'inscrire",
|
||||
'register': "s'inscrire",
|
||||
'Registration identifier': 'Registration identifier',
|
||||
@@ -131,8 +144,11 @@
|
||||
'Rows selected': 'Lignes sélectionnées',
|
||||
'Semantic': 'Sémantique',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'état',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Feuille de style',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Soumettre',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
|
||||
@@ -144,6 +160,7 @@
|
||||
'The Views': 'Les Vues',
|
||||
'This App': 'Cette Appli',
|
||||
'This is a copy of the scaffolding application': "Ceci est une copie de l'application échafaudage",
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Horodatage',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': "incapable d'analyser le fichier cvs",
|
||||
|
||||
@@ -3,85 +3,147 @@
|
||||
'!langcode!': 'hi-in',
|
||||
'!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 %%{row} deleted': '%s पंक्तियाँ मिटाएँ',
|
||||
'%s %%{row} updated': '%s पंक्तियाँ अद्यतन',
|
||||
'%s selected': '%s चुना हुआ',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'प्रशासनिक इंटरफेस के लिए यहाँ क्लिक करें',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'अप आडमिन (appadmin) अक्षम है क्योंकि असुरक्षित चैनल',
|
||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||
'Available Databases and Tables': 'उपलब्ध डेटाबेस और तालिका',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'खाली नहीं हो सकता',
|
||||
'Change Password': 'पासवर्ड बदलें',
|
||||
'change password': 'change password',
|
||||
'Check to delete': 'हटाने के लिए चुनें',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Controller',
|
||||
'Copyright': 'Copyright',
|
||||
'Current request': 'वर्तमान अनुरोध',
|
||||
'Current response': 'वर्तमान प्रतिक्रिया',
|
||||
'Current session': 'वर्तमान सेशन',
|
||||
'DB Model': 'DB Model',
|
||||
'Database': 'Database',
|
||||
'Delete:': 'मिटाना:',
|
||||
'Edit': 'Edit',
|
||||
'Edit Profile': 'प्रोफ़ाइल संपादित करें',
|
||||
'Edit This App': 'Edit This App',
|
||||
'Edit current record': 'वर्तमान रेकॉर्ड संपादित करें ',
|
||||
'Hello World': 'Hello World',
|
||||
'Hello from MyApp': 'Hello from MyApp',
|
||||
'Import/Export': 'आयात / निर्यात',
|
||||
'Index': 'Index',
|
||||
'Internal State': 'आंतरिक स्थिति',
|
||||
'Invalid Query': 'अमान्य प्रश्न',
|
||||
'Layout': 'Layout',
|
||||
'Login': 'लॉग इन',
|
||||
'Logout': 'लॉग आउट',
|
||||
'Lost Password': 'पासवर्ड खो गया',
|
||||
'Main Menu': 'Main Menu',
|
||||
'Menu Model': 'Menu Model',
|
||||
'New Record': 'नया रेकॉर्ड',
|
||||
'No databases in this application': 'इस अनुप्रयोग में कोई डेटाबेस नहीं हैं',
|
||||
'Online examples': 'ऑनलाइन उदाहरण के लिए यहाँ क्लिक करें',
|
||||
'Powered by': 'Powered by',
|
||||
'Query:': 'प्रश्न:',
|
||||
'Register': 'पंजीकृत (रजिस्टर) करना ',
|
||||
'Rows in Table': 'तालिका में पंक्तियाँ ',
|
||||
'Rows selected': 'चयनित (चुने गये) पंक्तियाँ ',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'Sure you want to delete this object?': 'सुनिश्चित हैं कि आप इस वस्तु को हटाना चाहते हैं?',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'Update:': 'अद्यतन करना:',
|
||||
'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.',
|
||||
'View': 'View',
|
||||
'Welcome %s': 'Welcome %s',
|
||||
'Welcome to web2py': 'वेब२पाइ (web2py) में आपका स्वागत है',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
'appadmin is disabled because insecure channel': 'अप आडमिन (appadmin) अक्षम है क्योंकि असुरक्षित चैनल',
|
||||
'cache': 'cache',
|
||||
'change password': 'change password',
|
||||
'customize me!': 'मुझे अनुकूलित (कस्टमाइज़) करें!',
|
||||
'data uploaded': 'डाटा अपलोड सम्पन्न ',
|
||||
'Database': 'डेटाबेस',
|
||||
'Database %s select': 'डेटाबेस %s चुनी हुई',
|
||||
'db': 'db',
|
||||
'DB Model': 'DB Model',
|
||||
'Delete:': 'मिटाना:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'design': 'रचना करें',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'हो गया!',
|
||||
'Download': 'Download',
|
||||
'Edit': 'Edit',
|
||||
'Edit current record': 'वर्तमान रेकॉर्ड संपादित करें ',
|
||||
'edit profile': 'edit profile',
|
||||
'Edit Profile': 'प्रोफ़ाइल संपादित करें',
|
||||
'Edit This App': 'Edit This App',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'csv फ़ाइल के रूप में निर्यात',
|
||||
'FAQ': 'FAQ',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Groups': 'Groups',
|
||||
'Hello from MyApp': 'Hello from MyApp',
|
||||
'Hello World': 'Hello World',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'आयात / निर्यात',
|
||||
'Index': 'Index',
|
||||
'insert new': 'नया डालें',
|
||||
'insert new %s': 'नया %s डालें',
|
||||
'Internal State': 'आंतरिक स्थिति',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid Query': 'अमान्य प्रश्न',
|
||||
'invalid request': 'अवैध अनुरोध',
|
||||
'Key': 'Key',
|
||||
'Layout': 'Layout',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live Chat': 'Live Chat',
|
||||
'login': 'login',
|
||||
'Login': 'लॉग इन',
|
||||
'logout': 'logout',
|
||||
'Logout': 'लॉग आउट',
|
||||
'Lost Password': 'पासवर्ड खो गया',
|
||||
'Main Menu': 'Main Menu',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu Model',
|
||||
'My Sites': 'My Sites',
|
||||
'New Record': 'नया रेकॉर्ड',
|
||||
'new record inserted': 'नया रेकॉर्ड डाला',
|
||||
'next 100 rows': 'अगले 100 पंक्तियाँ',
|
||||
'No databases in this application': 'इस अनुप्रयोग में कोई डेटाबेस नहीं हैं',
|
||||
'Online examples': 'ऑनलाइन उदाहरण के लिए यहाँ क्लिक करें',
|
||||
'or import from csv file': 'या csv फ़ाइल से आयात',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Powered by',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': 'पिछले 100 पंक्तियाँ',
|
||||
'Python': 'Python',
|
||||
'Query:': 'प्रश्न:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'Record',
|
||||
'record does not exist': 'रिकॉर्ड मौजूद नहीं है',
|
||||
'Record id': 'रिकॉर्ड पहचानकर्ता (आईडी)',
|
||||
'Register': 'पंजीकृत (रजिस्टर) करना ',
|
||||
'register': 'register',
|
||||
'Rows in Table': 'तालिका में पंक्तियाँ ',
|
||||
'Rows selected': 'चयनित (चुने गये) पंक्तियाँ ',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'स्थिति',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'submit': 'submit',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'सुनिश्चित हैं कि आप इस वस्तु को हटाना चाहते हैं?',
|
||||
'Table': 'तालिका',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'csv फ़ाइल पार्स करने में असमर्थ',
|
||||
'Update:': 'अद्यतन करना:',
|
||||
'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.',
|
||||
'Videos': 'Videos',
|
||||
'View': 'View',
|
||||
'Welcome %s': 'Welcome %s',
|
||||
'Welcome to web2py': 'वेब२पाइ (web2py) में आपका स्वागत है',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You are successfully running web2py': 'You are successfully running web2py',
|
||||
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
}
|
||||
|
||||
@@ -3,96 +3,160 @@
|
||||
'!langcode!': 'hu',
|
||||
'!langname!': 'Magyar',
|
||||
'"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 %%{row} deleted': '%s sorok törlődtek',
|
||||
'%s %%{row} updated': '%s sorok frissítődtek',
|
||||
'%s selected': '%s kiválasztott',
|
||||
'%Y-%m-%d': '%Y.%m.%d.',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y.%m.%d. %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'az adminisztrációs felületért kattints ide',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'az appadmin a biztonságtalan csatorna miatt letiltva',
|
||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||
'Available Databases and Tables': 'Elérhető adatbázisok és táblák',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'gyorsítótár',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Nem lehet üres',
|
||||
'change password': 'jelszó megváltoztatása',
|
||||
'Check to delete': 'Törléshez válaszd ki',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'Client IP',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Controller',
|
||||
'Copyright': 'Copyright',
|
||||
'Current request': 'Jelenlegi lekérdezés',
|
||||
'Current response': 'Jelenlegi válasz',
|
||||
'Current session': 'Jelenlegi folyamat',
|
||||
'DB Model': 'DB Model',
|
||||
'Database': 'Adatbázis',
|
||||
'Delete:': 'Töröl:',
|
||||
'Description': 'Description',
|
||||
'E-mail': 'E-mail',
|
||||
'Edit': 'Szerkeszt',
|
||||
'Edit This App': 'Alkalmazást szerkeszt',
|
||||
'Edit current record': 'Aktuális bejegyzés szerkesztése',
|
||||
'First name': 'First name',
|
||||
'Group ID': 'Group ID',
|
||||
'Hello World': 'Hello Világ',
|
||||
'Import/Export': 'Import/Export',
|
||||
'Index': 'Index',
|
||||
'Internal State': 'Internal State',
|
||||
'Invalid Query': 'Hibás lekérdezés',
|
||||
'Invalid email': 'Invalid email',
|
||||
'Last name': 'Last name',
|
||||
'Layout': 'Szerkezet',
|
||||
'Main Menu': 'Főmenü',
|
||||
'Menu Model': 'Menü model',
|
||||
'Name': 'Name',
|
||||
'New Record': 'Új bejegyzés',
|
||||
'No databases in this application': 'Nincs adatbázis ebben az alkalmazásban',
|
||||
'Online examples': 'online példákért kattints ide',
|
||||
'Origin': 'Origin',
|
||||
'Password': 'Password',
|
||||
'Powered by': 'Powered by',
|
||||
'Query:': 'Lekérdezés:',
|
||||
'Record ID': 'Record ID',
|
||||
'Registration key': 'Registration key',
|
||||
'Reset Password key': 'Reset Password key',
|
||||
'Role': 'Role',
|
||||
'Rows in Table': 'Sorok a táblában',
|
||||
'Rows selected': 'Kiválasztott sorok',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'Sure you want to delete this object?': 'Biztos törli ezt az objektumot?',
|
||||
'Table name': 'Table name',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'Timestamp': 'Timestamp',
|
||||
'Update:': 'Frissít:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
|
||||
'User ID': 'User ID',
|
||||
'View': 'Nézet',
|
||||
'Welcome %s': 'Welcome %s',
|
||||
'Welcome to web2py': 'Isten hozott a web2py-ban',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
'appadmin is disabled because insecure channel': 'az appadmin a biztonságtalan csatorna miatt letiltva',
|
||||
'cache': 'gyorsítótár',
|
||||
'change password': 'jelszó megváltoztatása',
|
||||
'customize me!': 'változtass meg!',
|
||||
'data uploaded': 'adat feltöltve',
|
||||
'Database': 'adatbázis',
|
||||
'Database %s select': 'adatbázis %s kiválasztás',
|
||||
'db': 'db',
|
||||
'DB Model': 'DB Model',
|
||||
'Delete:': 'Töröl:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Description',
|
||||
'design': 'design',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'kész!',
|
||||
'Download': 'Download',
|
||||
'E-mail': 'E-mail',
|
||||
'Edit': 'Szerkeszt',
|
||||
'Edit current record': 'Aktuális bejegyzés szerkesztése',
|
||||
'edit profile': 'profil szerkesztése',
|
||||
'Edit This App': 'Alkalmazást szerkeszt',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'exportál csv fájlba',
|
||||
'FAQ': 'FAQ',
|
||||
'First name': 'First name',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Group ID': 'Group ID',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Hello Világ',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Import/Export',
|
||||
'Index': 'Index',
|
||||
'insert new': 'új beillesztése',
|
||||
'insert new %s': 'új beillesztése %s',
|
||||
'Internal State': 'Internal State',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid email': 'Invalid email',
|
||||
'Invalid Query': 'Hibás lekérdezés',
|
||||
'invalid request': 'hibás kérés',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Last name',
|
||||
'Layout': 'Szerkezet',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live Chat': 'Live Chat',
|
||||
'login': 'belép',
|
||||
'logout': 'kilép',
|
||||
'lost password': 'elveszett jelszó',
|
||||
'Lost Password': 'Lost Password',
|
||||
'Main Menu': 'Főmenü',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menü model',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Name',
|
||||
'New Record': 'Új bejegyzés',
|
||||
'new record inserted': 'új bejegyzés felvéve',
|
||||
'next 100 rows': 'következő 100 sor',
|
||||
'No databases in this application': 'Nincs adatbázis ebben az alkalmazásban',
|
||||
'Online examples': 'online példákért kattints ide',
|
||||
'or import from csv file': 'vagy betöltés csv fájlból',
|
||||
'Origin': 'Origin',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'Password': 'Password',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Powered by',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': 'előző 100 sor',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Lekérdezés:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'bejegyzés',
|
||||
'record does not exist': 'bejegyzés nem létezik',
|
||||
'Record ID': 'Record ID',
|
||||
'Record id': 'bejegyzés id',
|
||||
'Register': 'Register',
|
||||
'register': 'regisztráció',
|
||||
'Registration key': 'Registration key',
|
||||
'Reset Password key': 'Reset Password key',
|
||||
'Role': 'Role',
|
||||
'Rows in Table': 'Sorok a táblában',
|
||||
'Rows selected': 'Kiválasztott sorok',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'állapot',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'submit': 'submit',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Biztos törli ezt az objektumot?',
|
||||
'Table': 'tábla',
|
||||
'Table name': 'Table name',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Timestamp',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'nem lehet a csv fájlt beolvasni',
|
||||
'Update:': 'Frissít:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.',
|
||||
'User ID': 'User ID',
|
||||
'Videos': 'Videos',
|
||||
'View': 'Nézet',
|
||||
'Welcome %s': 'Welcome %s',
|
||||
'Welcome to web2py': 'Isten hozott a web2py-ban',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You are successfully running web2py': 'You are successfully running web2py',
|
||||
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
'Available Databases and Tables': 'Database e tabelle disponibili',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Non può essere vuoto',
|
||||
'change password': 'Cambia password',
|
||||
'Check to delete': 'Seleziona per cancellare',
|
||||
@@ -49,6 +51,7 @@
|
||||
'Description': 'Descrizione',
|
||||
'design': 'progetta',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentazione',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
@@ -90,6 +93,7 @@
|
||||
'Invalid Query': 'Richiesta (query) non valida',
|
||||
'invalid request': 'richiesta non valida',
|
||||
'Is Active': 'Is Active',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Cognome',
|
||||
'Layout': 'Layout',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
@@ -136,6 +140,7 @@
|
||||
'Query:': 'Richiesta (query):',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'Record',
|
||||
@@ -154,7 +159,9 @@
|
||||
'Rows selected': 'Righe selezionate',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'stato',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Foglio di stile (stylesheet)',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Submit',
|
||||
@@ -168,6 +175,7 @@
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'This is a copy of the scaffolding application': "Questa è una copia dell'applicazione di base (scaffold)",
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Ora (timestamp)',
|
||||
'too short': 'too short',
|
||||
'Twitter': 'Twitter',
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
{
|
||||
'!langcode!': 'nl',
|
||||
'!langname!': 'Nederlands',
|
||||
'"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',
|
||||
'%(nrows)s records found': '%(nrows)s records gevonden',
|
||||
'%d days ago': '%d dagen geleden',
|
||||
'%d weeks ago': '%d weken gelden',
|
||||
@@ -95,7 +96,6 @@
|
||||
'customize me!': 'pas me aan!',
|
||||
'data uploaded': 'data geupload',
|
||||
'Database': 'Database',
|
||||
'Database': 'Database',
|
||||
'Database %s select': 'Database %s select',
|
||||
'database administration': 'database administratie',
|
||||
'Date and Time': 'Datum en Tijd',
|
||||
@@ -181,8 +181,8 @@
|
||||
'Introduction': 'Introductie',
|
||||
'Invalid action': 'Ongeldige actie',
|
||||
'Invalid email': 'Ongeldig emailadres',
|
||||
'Invalid password': 'Ongeldig wachtwoord',
|
||||
'invalid password': 'ongeldig wachtwoord',
|
||||
'Invalid password': 'Ongeldig wachtwoord',
|
||||
'Invalid Query': 'Ongeldige Query',
|
||||
'invalid request': 'ongeldige request',
|
||||
'invalid ticket': 'ongeldige ticket',
|
||||
@@ -262,8 +262,8 @@
|
||||
'Recipes': 'Recepten',
|
||||
'Record': 'Record',
|
||||
'record does not exist': 'record bestaat niet',
|
||||
'Record id': 'Record id',
|
||||
'Record ID': 'Record ID',
|
||||
'Record id': 'Record id',
|
||||
'register': 'registreer',
|
||||
'Register': 'Registreer',
|
||||
'Registration identifier': 'Registratie identifier',
|
||||
|
||||
@@ -3,107 +3,169 @@
|
||||
'!langcode!': 'pl',
|
||||
'!langname!': 'Polska',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Uaktualnij" jest dodatkowym wyrażeniem postaci "pole1=\'nowawartość\'". Nie możesz uaktualnić lub usunąć wyników z JOIN:',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'%s %%{row} deleted': 'Wierszy usuniętych: %s',
|
||||
'%s %%{row} updated': 'Wierszy uaktualnionych: %s',
|
||||
'%s selected': '%s wybranych',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'Kliknij aby przejść do panelu administracyjnego',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'administracja aplikacji wyłączona z powodu braku bezpiecznego połączenia',
|
||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||
'Authentication': 'Uwierzytelnienie',
|
||||
'Available Databases and Tables': 'Dostępne bazy danych i tabele',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Nie może być puste',
|
||||
'Change Password': 'Zmień hasło',
|
||||
'change password': 'change password',
|
||||
'Check to delete': 'Zaznacz aby usunąć',
|
||||
'Check to delete:': 'Zaznacz aby usunąć:',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'IP klienta',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Kontroler',
|
||||
'Copyright': 'Copyright',
|
||||
'Current request': 'Aktualne żądanie',
|
||||
'Current response': 'Aktualna odpowiedź',
|
||||
'Current session': 'Aktualna sesja',
|
||||
'DB Model': 'Model bazy danych',
|
||||
'Database': 'Baza danych',
|
||||
'Delete:': 'Usuń:',
|
||||
'Description': 'Opis',
|
||||
'E-mail': 'Adres e-mail',
|
||||
'Edit': 'Edycja',
|
||||
'Edit Profile': 'Edytuj profil',
|
||||
'Edit This App': 'Edytuj tę aplikację',
|
||||
'Edit current record': 'Edytuj obecny rekord',
|
||||
'First name': 'Imię',
|
||||
'Function disabled': 'Funkcja wyłączona',
|
||||
'Group ID': 'ID grupy',
|
||||
'Hello World': 'Witaj Świecie',
|
||||
'Import/Export': 'Importuj/eksportuj',
|
||||
'Index': 'Indeks',
|
||||
'Internal State': 'Stan wewnętrzny',
|
||||
'Invalid Query': 'Błędne zapytanie',
|
||||
'Invalid email': 'Błędny adres email',
|
||||
'Last name': 'Nazwisko',
|
||||
'Layout': 'Układ',
|
||||
'Login': 'Zaloguj',
|
||||
'Logout': 'Wyloguj',
|
||||
'Lost Password': 'Przypomnij hasło',
|
||||
'Main Menu': 'Menu główne',
|
||||
'Menu Model': 'Model menu',
|
||||
'Name': 'Nazwa',
|
||||
'New Record': 'Nowy rekord',
|
||||
'No databases in this application': 'Brak baz danych w tej aplikacji',
|
||||
'Online examples': 'Kliknij aby przejść do interaktywnych przykładów',
|
||||
'Origin': 'Źródło',
|
||||
'Password': 'Hasło',
|
||||
"Password fields don't match": 'Pola hasła nie są zgodne ze sobą',
|
||||
'Powered by': 'Zasilane przez',
|
||||
'Query:': 'Zapytanie:',
|
||||
'Record ID': 'ID rekordu',
|
||||
'Register': 'Zarejestruj',
|
||||
'Registration key': 'Klucz rejestracji',
|
||||
'Role': 'Rola',
|
||||
'Rows in Table': 'Wiersze w tabeli',
|
||||
'Rows selected': 'Wybrane wiersze',
|
||||
'Stylesheet': 'Arkusz stylów',
|
||||
'Submit': 'Wyślij',
|
||||
'Sure you want to delete this object?': 'Czy na pewno chcesz usunąć ten obiekt?',
|
||||
'Table name': 'Nazwa tabeli',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Zapytanie" jest warunkiem postaci "db.tabela1.pole1==\'wartość\'". Takie coś jak "db.tabela1.pole1==db.tabela2.pole2" oznacza SQL JOIN.',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'Timestamp': 'Znacznik czasu',
|
||||
'Update:': 'Uaktualnij:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Użyj (...)&(...) jako AND, (...)|(...) jako OR oraz ~(...) jako NOT do tworzenia bardziej skomplikowanych zapytań.',
|
||||
'User %(id)s Registered': 'Użytkownik %(id)s został zarejestrowany',
|
||||
'User ID': 'ID użytkownika',
|
||||
'Verify Password': 'Potwierdź hasło',
|
||||
'View': 'Widok',
|
||||
'Welcome %s': 'Welcome %s',
|
||||
'Welcome to web2py': 'Witaj w web2py',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
'appadmin is disabled because insecure channel': 'administracja aplikacji wyłączona z powodu braku bezpiecznego połączenia',
|
||||
'cache': 'cache',
|
||||
'change password': 'change password',
|
||||
'customize me!': 'dostosuj mnie!',
|
||||
'data uploaded': 'dane wysłane',
|
||||
'Database': 'baza danych',
|
||||
'Database %s select': 'wybór z bazy danych %s',
|
||||
'db': 'baza danych',
|
||||
'DB Model': 'Model bazy danych',
|
||||
'Delete:': 'Usuń:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Opis',
|
||||
'design': 'projektuj',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'zrobione!',
|
||||
'Download': 'Download',
|
||||
'E-mail': 'Adres e-mail',
|
||||
'Edit': 'Edycja',
|
||||
'Edit current record': 'Edytuj obecny rekord',
|
||||
'edit profile': 'edit profile',
|
||||
'Edit Profile': 'Edytuj profil',
|
||||
'Edit This App': 'Edytuj tę aplikację',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'eksportuj jako plik csv',
|
||||
'FAQ': 'FAQ',
|
||||
'First name': 'Imię',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Function disabled': 'Funkcja wyłączona',
|
||||
'Group ID': 'ID grupy',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Witaj Świecie',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Importuj/eksportuj',
|
||||
'Index': 'Indeks',
|
||||
'insert new': 'wstaw nowy rekord tabeli',
|
||||
'insert new %s': 'wstaw nowy rekord do tabeli %s',
|
||||
'Internal State': 'Stan wewnętrzny',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid email': 'Błędny adres email',
|
||||
'Invalid Query': 'Błędne zapytanie',
|
||||
'invalid request': 'Błędne żądanie',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Nazwisko',
|
||||
'Layout': 'Układ',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live Chat': 'Live Chat',
|
||||
'login': 'login',
|
||||
'Login': 'Zaloguj',
|
||||
'logout': 'logout',
|
||||
'Logout': 'Wyloguj',
|
||||
'Lost Password': 'Przypomnij hasło',
|
||||
'Main Menu': 'Menu główne',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Model menu',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Nazwa',
|
||||
'New Record': 'Nowy rekord',
|
||||
'new record inserted': 'nowy rekord został wstawiony',
|
||||
'next 100 rows': 'następne 100 wierszy',
|
||||
'No databases in this application': 'Brak baz danych w tej aplikacji',
|
||||
'Online examples': 'Kliknij aby przejść do interaktywnych przykładów',
|
||||
'or import from csv file': 'lub zaimportuj z pliku csv',
|
||||
'Origin': 'Źródło',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'Password': 'Hasło',
|
||||
"Password fields don't match": 'Pola hasła nie są zgodne ze sobą',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Zasilane przez',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': 'poprzednie 100 wierszy',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Zapytanie:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'rekord',
|
||||
'record does not exist': 'rekord nie istnieje',
|
||||
'Record ID': 'ID rekordu',
|
||||
'Record id': 'id rekordu',
|
||||
'Register': 'Zarejestruj',
|
||||
'register': 'register',
|
||||
'Registration key': 'Klucz rejestracji',
|
||||
'Role': 'Rola',
|
||||
'Rows in Table': 'Wiersze w tabeli',
|
||||
'Rows selected': 'Wybrane wiersze',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'stan',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Arkusz stylów',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Wyślij',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Czy na pewno chcesz usunąć ten obiekt?',
|
||||
'Table': 'tabela',
|
||||
'Table name': 'Nazwa tabeli',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Zapytanie" jest warunkiem postaci "db.tabela1.pole1==\'wartość\'". Takie coś jak "db.tabela1.pole1==db.tabela2.pole2" oznacza SQL JOIN.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Znacznik czasu',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'nie można sparsować pliku csv',
|
||||
'Update:': 'Uaktualnij:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Użyj (...)&(...) jako AND, (...)|(...) jako OR oraz ~(...) jako NOT do tworzenia bardziej skomplikowanych zapytań.',
|
||||
'User %(id)s Registered': 'Użytkownik %(id)s został zarejestrowany',
|
||||
'User ID': 'ID użytkownika',
|
||||
'Verify Password': 'Potwierdź hasło',
|
||||
'Videos': 'Videos',
|
||||
'View': 'Widok',
|
||||
'Welcome %s': 'Welcome %s',
|
||||
'Welcome to web2py': 'Witaj w web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You are successfully running web2py': 'You are successfully running web2py',
|
||||
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
}
|
||||
|
||||
@@ -3,39 +3,63 @@
|
||||
'!langcode!': 'pt-br',
|
||||
'!langname!': 'Português (do Brasil)',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" é uma expressão opcional como "campo1=\'novovalor\'". Você não pode atualizar ou apagar os resultados de um JOIN',
|
||||
'%Y-%m-%d': '%d-%m-%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
|
||||
'%s %%{row} deleted': '%s linhas apagadas',
|
||||
'%s %%{row} updated': '%s linhas atualizadas',
|
||||
'%s selected': '%s selecionado',
|
||||
'%Y-%m-%d': '%d-%m-%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'Interface administrativa',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'Administração desativada devido ao canal inseguro',
|
||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||
'Available Databases and Tables': 'Bancos de dados e tabelas disponíveis',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Não pode ser vazio',
|
||||
'change password': 'modificar senha',
|
||||
'Check to delete': 'Marque para apagar',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'Client IP',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Controlador',
|
||||
'Copyright': 'Copyright',
|
||||
'Current request': 'Requisição atual',
|
||||
'Current response': 'Resposta atual',
|
||||
'Current session': 'Sessão atual',
|
||||
'customize me!': 'Personalize-me!',
|
||||
'data uploaded': 'dados enviados',
|
||||
'Database': 'banco de dados',
|
||||
'Database %s select': 'Selecionar banco de dados %s',
|
||||
'db': 'bd',
|
||||
'DB Model': 'Modelo BD',
|
||||
'Database': 'Banco de dados',
|
||||
'Delete:': 'Apagar:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Description',
|
||||
'design': 'design',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'concluído!',
|
||||
'Download': 'Download',
|
||||
'E-mail': 'E-mail',
|
||||
'Edit': 'Editar',
|
||||
'Edit This App': 'Edit This App',
|
||||
'Edit current record': 'Editar o registro atual',
|
||||
'edit profile': 'editar perfil',
|
||||
'Edit This App': 'Edit This App',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'exportar como um arquivo csv',
|
||||
'FAQ': 'FAQ',
|
||||
'First name': 'First name',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
@@ -44,37 +68,62 @@
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Olá Mundo',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Importar/Exportar',
|
||||
'Index': 'Início',
|
||||
'insert new': 'inserir novo',
|
||||
'insert new %s': 'inserir novo %s',
|
||||
'Internal State': 'Estado Interno',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid Query': 'Consulta Inválida',
|
||||
'Invalid email': 'Invalid email',
|
||||
'Invalid Query': 'Consulta Inválida',
|
||||
'invalid request': 'requisição inválida',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Last name',
|
||||
'Layout': 'Layout',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live chat': 'Live chat',
|
||||
'Live Chat': 'Live Chat',
|
||||
'login': 'Entrar',
|
||||
'Login': 'Autentique-se',
|
||||
'logout': 'Sair',
|
||||
'Lost Password': 'Esqueceu sua senha?',
|
||||
'lost password?': 'lost password?',
|
||||
'Main Menu': 'Menu Principal',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Modelo de Menu',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Name',
|
||||
'New Record': 'Novo Registro',
|
||||
'new record inserted': 'novo registro inserido',
|
||||
'next 100 rows': 'próximas 100 linhas',
|
||||
'No databases in this application': 'Sem bancos de dados nesta aplicação',
|
||||
'Online examples': 'Alguns exemplos',
|
||||
'or import from csv file': 'ou importar de um arquivo csv',
|
||||
'Origin': 'Origin',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'Password': 'Password',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Powered by',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': '100 linhas anteriores',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Consulta:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'registro',
|
||||
'record does not exist': 'registro não existe',
|
||||
'Record ID': 'Record ID',
|
||||
'Record id': 'id do registro',
|
||||
'Register': 'Registre-se',
|
||||
'register': 'Registre-se',
|
||||
'Registration key': 'Registration key',
|
||||
'Reset Password key': 'Reset Password key',
|
||||
'Resources': 'Resources',
|
||||
@@ -83,18 +132,25 @@
|
||||
'Rows selected': 'Linhas selecionadas',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'estado',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'submit': 'submit',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Está certo(a) que deseja apagar esse objeto ?',
|
||||
'Table': 'tabela',
|
||||
'Table name': 'Table name',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Uma "consulta" é uma condição como "db.tabela1.campo1==\'valor\'". Expressões como "db.tabela1.campo1==db.tabela2.campo2" resultam em um JOIN SQL.',
|
||||
'The Core': 'The Core',
|
||||
'The Views': 'The Views',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'This is a copy of the scaffolding application': 'This is a copy of the scaffolding application',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Timestamp',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'não foi possível analisar arquivo csv',
|
||||
'Update:': 'Atualizar:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, e ~(...) para NOT para construir consultas mais complexas.',
|
||||
'User ID': 'User ID',
|
||||
@@ -105,38 +161,10 @@
|
||||
'Welcome': 'Welcome',
|
||||
'Welcome %s': 'Vem vindo %s',
|
||||
'Welcome to web2py': 'Bem vindo ao web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You are successfully running web2py': 'You are successfully running web2py',
|
||||
'You are successfully running web2py.': 'You are successfully running web2py.',
|
||||
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
'appadmin is disabled because insecure channel': 'Administração desativada devido ao canal inseguro',
|
||||
'cache': 'cache',
|
||||
'change password': 'modificar senha',
|
||||
'customize me!': 'Personalize-me!',
|
||||
'data uploaded': 'dados enviados',
|
||||
'Database': 'banco de dados',
|
||||
'Database %s select': 'Selecionar banco de dados %s',
|
||||
'db': 'bd',
|
||||
'design': 'design',
|
||||
'done!': 'concluído!',
|
||||
'edit profile': 'editar perfil',
|
||||
'export as csv file': 'exportar como um arquivo csv',
|
||||
'insert new': 'inserir novo',
|
||||
'insert new %s': 'inserir novo %s',
|
||||
'invalid request': 'requisição inválida',
|
||||
'login': 'Entrar',
|
||||
'logout': 'Sair',
|
||||
'lost password?': 'lost password?',
|
||||
'new record inserted': 'novo registro inserido',
|
||||
'next 100 rows': 'próximas 100 linhas',
|
||||
'or import from csv file': 'ou importar de um arquivo csv',
|
||||
'previous 100 rows': '100 linhas anteriores',
|
||||
'Record': 'registro',
|
||||
'record does not exist': 'registro não existe',
|
||||
'Record id': 'id do registro',
|
||||
'register': 'Registre-se',
|
||||
'state': 'estado',
|
||||
'Table': 'tabela',
|
||||
'unable to parse csv file': 'não foi possível analisar arquivo csv',
|
||||
}
|
||||
|
||||
@@ -3,119 +3,182 @@
|
||||
'!langcode!': 'pt',
|
||||
'!langname!': 'Português',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" é uma expressão opcional como "field1=\'newvalue\'". Não pode actualizar ou eliminar os resultados de um JOIN',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'%s %%{row} deleted': '%s linhas eliminadas',
|
||||
'%s %%{row} updated': '%s linhas actualizadas',
|
||||
'%s selected': '%s seleccionado(s)',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'Painel administrativo',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'appadmin está desactivada pois o canal é inseguro',
|
||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||
'Author Reference Auth User': 'Author Reference Auth User',
|
||||
'Author Reference Auth User.username': 'Author Reference Auth User.username',
|
||||
'Available Databases and Tables': 'bases de dados e tabelas disponíveis',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'não pode ser vazio',
|
||||
'Category Create': 'Category Create',
|
||||
'Category Select': 'Category Select',
|
||||
'change password': 'alterar palavra-chave',
|
||||
'Check to delete': 'seleccione para eliminar',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Comment Create': 'Comment Create',
|
||||
'Comment Select': 'Comment Select',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Content': 'Content',
|
||||
'Controller': 'Controlador',
|
||||
'Copyright': 'Direitos de cópia',
|
||||
'create new category': 'create new category',
|
||||
'create new comment': 'create new comment',
|
||||
'create new post': 'create new post',
|
||||
'Created By': 'Created By',
|
||||
'Created On': 'Created On',
|
||||
'Current request': 'pedido currente',
|
||||
'Current response': 'resposta currente',
|
||||
'Current session': 'sessão currente',
|
||||
'DB Model': 'Modelo de BD',
|
||||
'Database': 'Base de dados',
|
||||
'Delete:': 'Eliminar:',
|
||||
'Edit': 'Editar',
|
||||
'Edit This App': 'Edite esta aplicação',
|
||||
'Edit current record': 'Edição de registo currente',
|
||||
'Email': 'Email',
|
||||
'First Name': 'First Name',
|
||||
'For %s #%s': 'For %s #%s',
|
||||
'Hello World': 'Olá Mundo',
|
||||
'Import/Export': 'Importar/Exportar',
|
||||
'Index': 'Índice',
|
||||
'Internal State': 'Estado interno',
|
||||
'Invalid Query': 'Consulta Inválida',
|
||||
'Last Name': 'Last Name',
|
||||
'Layout': 'Esboço',
|
||||
'Main Menu': 'Menu Principal',
|
||||
'Menu Model': 'Menu do Modelo',
|
||||
'Modified By': 'Modified By',
|
||||
'Modified On': 'Modified On',
|
||||
'Name': 'Name',
|
||||
'New Record': 'Novo Registo',
|
||||
'No Data': 'No Data',
|
||||
'No databases in this application': 'Não há bases de dados nesta aplicação',
|
||||
'Online examples': 'Exemplos online',
|
||||
'Password': 'Password',
|
||||
'Post Create': 'Post Create',
|
||||
'Post Select': 'Post Select',
|
||||
'Powered by': 'Suportado por',
|
||||
'Query:': 'Interrogação:',
|
||||
'Replyto Reference Post': 'Replyto Reference Post',
|
||||
'Rows in Table': 'Linhas numa tabela',
|
||||
'Rows selected': 'Linhas seleccionadas',
|
||||
'Stylesheet': 'Folha de estilo',
|
||||
'Sure you want to delete this object?': 'Tem a certeza que deseja eliminar este objecto?',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'A "query" é uma condição do tipo "db.table1.field1==\'value\'". Algo como "db.table1.field1==db.table2.field2" resultaria num SQL JOIN.',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'Title': 'Title',
|
||||
'Update:': 'Actualização:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Utilize (...)&(...) para AND, (...)|(...) para OR, e ~(...) para NOT para construir interrogações mais complexas.',
|
||||
'Username': 'Username',
|
||||
'View': 'Vista',
|
||||
'Welcome %s': 'Bem-vindo(a) %s',
|
||||
'Welcome to Gluonization': 'Bem vindo ao Web2py',
|
||||
'Welcome to web2py': 'Bem-vindo(a) ao web2py',
|
||||
'When': 'When',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
'appadmin is disabled because insecure channel': 'appadmin está desactivada pois o canal é inseguro',
|
||||
'cache': 'cache',
|
||||
'change password': 'alterar palavra-chave',
|
||||
'create new category': 'create new category',
|
||||
'create new comment': 'create new comment',
|
||||
'create new post': 'create new post',
|
||||
'customize me!': 'Personaliza-me!',
|
||||
'data uploaded': 'informação enviada',
|
||||
'Database': 'base de dados',
|
||||
'Database %s select': 'selecção de base de dados %s',
|
||||
'db': 'bd',
|
||||
'DB Model': 'Modelo de BD',
|
||||
'Delete:': 'Eliminar:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'design': 'design',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'concluído!',
|
||||
'Download': 'Download',
|
||||
'Edit': 'Editar',
|
||||
'edit category': 'edit category',
|
||||
'edit comment': 'edit comment',
|
||||
'Edit current record': 'Edição de registo currente',
|
||||
'edit post': 'edit post',
|
||||
'edit profile': 'Editar perfil',
|
||||
'Edit This App': 'Edite esta aplicação',
|
||||
'Email': 'Email',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'exportar como ficheiro csv',
|
||||
'FAQ': 'FAQ',
|
||||
'First Name': 'First Name',
|
||||
'For %s #%s': 'For %s #%s',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Olá Mundo',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Importar/Exportar',
|
||||
'Index': 'Índice',
|
||||
'insert new': 'inserir novo',
|
||||
'insert new %s': 'inserir novo %s',
|
||||
'Internal State': 'Estado interno',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid Query': 'Consulta Inválida',
|
||||
'invalid request': 'Pedido Inválido',
|
||||
'Key': 'Key',
|
||||
'Last Name': 'Last Name',
|
||||
'Layout': 'Esboço',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live Chat': 'Live Chat',
|
||||
'login': 'login',
|
||||
'logout': 'logout',
|
||||
'Lost Password': 'Lost Password',
|
||||
'Main Menu': 'Menu Principal',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu do Modelo',
|
||||
'Modified By': 'Modified By',
|
||||
'Modified On': 'Modified On',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Name',
|
||||
'New Record': 'Novo Registo',
|
||||
'new record inserted': 'novo registo inserido',
|
||||
'next 100 rows': 'próximas 100 linhas',
|
||||
'No Data': 'No Data',
|
||||
'No databases in this application': 'Não há bases de dados nesta aplicação',
|
||||
'Online examples': 'Exemplos online',
|
||||
'or import from csv file': 'ou importe a partir de ficheiro csv',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'Password': 'Password',
|
||||
'Plugins': 'Plugins',
|
||||
'Post Create': 'Post Create',
|
||||
'Post Select': 'Post Select',
|
||||
'Powered by': 'Suportado por',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': '100 linhas anteriores',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Interrogação:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'registo',
|
||||
'record does not exist': 'registo inexistente',
|
||||
'Record id': 'id de registo',
|
||||
'Register': 'Register',
|
||||
'register': 'register',
|
||||
'Replyto Reference Post': 'Replyto Reference Post',
|
||||
'Rows in Table': 'Linhas numa tabela',
|
||||
'Rows selected': 'Linhas seleccionadas',
|
||||
'search category': 'search category',
|
||||
'search comment': 'search comment',
|
||||
'search post': 'search post',
|
||||
'select category': 'select category',
|
||||
'select comment': 'select comment',
|
||||
'select post': 'select post',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'show category': 'show category',
|
||||
'show comment': 'show comment',
|
||||
'show post': 'show post',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'estado',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Folha de estilo',
|
||||
'submit': 'submit',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Tem a certeza que deseja eliminar este objecto?',
|
||||
'Table': 'tabela',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'A "query" é uma condição do tipo "db.table1.field1==\'value\'". Algo como "db.table1.field1==db.table2.field2" resultaria num SQL JOIN.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Title': 'Title',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'não foi possível carregar ficheiro csv',
|
||||
'Update:': 'Actualização:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Utilize (...)&(...) para AND, (...)|(...) para OR, e ~(...) para NOT para construir interrogações mais complexas.',
|
||||
'Username': 'Username',
|
||||
'Videos': 'Videos',
|
||||
'View': 'Vista',
|
||||
'Welcome %s': 'Bem-vindo(a) %s',
|
||||
'Welcome to Gluonization': 'Bem vindo ao Web2py',
|
||||
'Welcome to web2py': 'Bem-vindo(a) ao web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'When': 'When',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'You are successfully running web2py': 'You are successfully running web2py',
|
||||
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
'Available Databases and Tables': 'Baze de date și tabele disponibile',
|
||||
'Back': 'Înapoi',
|
||||
'Buy this book': 'Cumpără această carte',
|
||||
'Cache': 'Cache',
|
||||
'cache': 'cache',
|
||||
'Cache Keys': 'Chei cache',
|
||||
'cache, errors and sessions cleaned': 'cache, erori și sesiuni golite',
|
||||
@@ -70,6 +71,9 @@
|
||||
'Check to delete': 'Coșați pentru a șterge',
|
||||
'clean': 'golire',
|
||||
'Clear': 'Golește',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'click to check for upgrades': 'Clic pentru a verifica dacă există upgrade-uri',
|
||||
'Client IP': 'IP client',
|
||||
'Community': 'Comunitate',
|
||||
@@ -91,7 +95,6 @@
|
||||
'currently saved or': 'în prezent salvat sau',
|
||||
'customize me!': 'Personalizează-mă!',
|
||||
'data uploaded': 'date încărcate',
|
||||
'Database': 'Baza de date',
|
||||
'Database': 'bază de date',
|
||||
'Database %s select': 'selectare bază de date %s',
|
||||
'database administration': 'administrare bază de date',
|
||||
@@ -110,7 +113,9 @@
|
||||
'design': 'design',
|
||||
'DESIGN': 'DESIGN',
|
||||
'Design for': 'Design pentru',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Chei cache de disc',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentație',
|
||||
"Don't know what to do?": 'Nu știți ce să faceți?',
|
||||
'done!': 'gata!',
|
||||
@@ -164,6 +169,7 @@
|
||||
'Home': 'Acasă',
|
||||
'How did you get here?': 'Cum ați ajuns aici?',
|
||||
'htmledit': 'editare html',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Import/Export',
|
||||
'includes': 'include',
|
||||
'Index': 'Index',
|
||||
@@ -180,6 +186,7 @@
|
||||
'Invalid Query': 'Interogare invalidă',
|
||||
'invalid request': 'cerere invalidă',
|
||||
'invalid ticket': 'tichet invalid',
|
||||
'Key': 'Key',
|
||||
'language file "%(filename)s" created/updated': 'fișier de limbă "%(filename)s" creat/actualizat',
|
||||
'Language files (static strings) updated': 'Fișierele de limbă (șirurile statice de caractere) actualizate',
|
||||
'languages': 'limbi',
|
||||
@@ -203,6 +210,7 @@
|
||||
'Lost Password': 'Parolă pierdută',
|
||||
'Lost password?': 'Parolă pierdută?',
|
||||
'Main Menu': 'Meniu principal',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Model meniu',
|
||||
'merge': 'unește',
|
||||
'Models': 'Modele',
|
||||
@@ -245,12 +253,14 @@
|
||||
'Query': 'Interogare',
|
||||
'Query:': 'Interogare:',
|
||||
'Quick Examples': 'Exemple rapide',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'Chei cache RAM',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Rețete',
|
||||
'Record': 'înregistrare',
|
||||
'record does not exist': 'înregistrare inexistentă',
|
||||
'Record id': 'id înregistrare',
|
||||
'Record ID': 'ID înregistrare',
|
||||
'Record id': 'id înregistrare',
|
||||
'register': 'înregistrare',
|
||||
'Register': 'Înregistrare',
|
||||
'Registration identifier': 'Identificator de autentificare',
|
||||
@@ -275,13 +285,16 @@
|
||||
'session expired': 'sesiune expirată',
|
||||
'shell': 'line de commandă',
|
||||
'site': 'site',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'some files could not be removed': 'anumite fișiere n-au putut fi șterse',
|
||||
'starts with': 'începe cu',
|
||||
'state': 'stare',
|
||||
'static': 'static',
|
||||
'Static files': 'Fișiere statice',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Foaie de stiluri',
|
||||
'Submit': 'Înregistrează',
|
||||
'submit': 'submit',
|
||||
'Support': 'Suport',
|
||||
'Sure you want to delete this object?': 'Sigur ștergeți acest obiect?',
|
||||
'Table': 'tabel',
|
||||
@@ -306,6 +319,7 @@
|
||||
'This is a copy of the scaffolding application': 'Aceasta este o copie a aplicației schelet',
|
||||
'This is the %(filename)s template': 'Aceasta este șablonul fișierului %(filename)s',
|
||||
'Ticket': 'Tichet',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Moment în timp (timestamp)',
|
||||
'to previous version.': 'la versiunea anterioară.',
|
||||
'too short': 'prea scurt',
|
||||
|
||||
@@ -27,14 +27,20 @@
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'административный интерфейс',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'appadmin is disabled because insecure channel',
|
||||
'Are you sure you want to delete this object?': 'Вы уверены, что хотите удалить этот объект?',
|
||||
'Available Databases and Tables': 'Базы данных и таблицы',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Пустое значение недопустимо',
|
||||
'Change Password': 'Смените пароль',
|
||||
'Check to delete': 'Удалить',
|
||||
'Check to delete:': 'Удалить:',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': 'Client IP',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
@@ -45,7 +51,6 @@
|
||||
'Current session': 'Текущая сессия',
|
||||
'customize me!': 'настройте внешний вид!',
|
||||
'data uploaded': 'данные загружены',
|
||||
'Database': 'база данных',
|
||||
'Database': 'Database',
|
||||
'Database %s select': 'выбор базы данных %s',
|
||||
'db': 'БД',
|
||||
@@ -55,6 +60,9 @@
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Описание',
|
||||
'design': 'дизайн',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'готово!',
|
||||
@@ -86,6 +94,7 @@
|
||||
'Invalid password': 'Неверный пароль',
|
||||
'Invalid Query': 'Неверный запрос',
|
||||
'invalid request': 'неверный запрос',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Фамилия',
|
||||
'Layout': 'Layout',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
@@ -99,6 +108,7 @@
|
||||
'Logout': 'Выход',
|
||||
'Lost Password': 'Забыли пароль?',
|
||||
'Lost password?': 'Lost password?',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu Model',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Name',
|
||||
@@ -116,8 +126,8 @@
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'password': 'пароль',
|
||||
'Password': 'Пароль',
|
||||
'password': 'пароль',
|
||||
"Password fields don't match": 'Пароли не совпадают',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Powered by',
|
||||
@@ -127,10 +137,14 @@
|
||||
'Python': 'Python',
|
||||
'Query:': 'Запрос:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'Record',
|
||||
'record does not exist': 'запись не найдена',
|
||||
'Record id': 'id записи',
|
||||
'Record ID': 'ID записи',
|
||||
'Record id': 'id записи',
|
||||
'Register': 'Зарегистрироваться',
|
||||
'Registration identifier': 'Registration identifier',
|
||||
'Registration key': 'Ключ регистрации',
|
||||
@@ -141,8 +155,11 @@
|
||||
'Rows selected': 'Выделено строк',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'состояние',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Отправить',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Подтвердите удаление объекта',
|
||||
@@ -153,6 +170,7 @@
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Отметка времени',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'нечитаемый csv-файл',
|
||||
|
||||
@@ -3,69 +3,154 @@
|
||||
'!langcode!': 'sk',
|
||||
'!langname!': 'Slovenský',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" je voliteľný výraz ako "field1=\'newvalue\'". Nemôžete upravovať alebo zmazať výsledky JOINu',
|
||||
'%Y-%m-%d': '%d.%m.%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||
'%s %%{row} deleted': '%s zmazaných záznamov',
|
||||
'%s %%{row} updated': '%s upravených záznamov',
|
||||
'%s selected': '%s označených',
|
||||
'%Y-%m-%d': '%d.%m.%Y',
|
||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': 'pre administrátorské rozhranie kliknite sem',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': 'appadmin je zakázaný bez zabezpečeného spojenia',
|
||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||
'Available Databases and Tables': 'Dostupné databázy a tabuľky',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': 'cache',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': 'Nemôže byť prázdne',
|
||||
'Check to delete': 'Označiť na zmazanie',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': 'Controller',
|
||||
'Copyright': 'Copyright',
|
||||
'Current request': 'Aktuálna požiadavka',
|
||||
'Current response': 'Aktuálna odpoveď',
|
||||
'Current session': 'Aktuálne sedenie',
|
||||
'customize me!': 'prispôsob ma!',
|
||||
'data uploaded': 'údaje naplnené',
|
||||
'Database': 'databáza',
|
||||
'Database %s select': 'databáza %s výber',
|
||||
'db': 'db',
|
||||
'DB Model': 'DB Model',
|
||||
'Database': 'Databáza',
|
||||
'Delete:': 'Zmazať:',
|
||||
'Demo': 'Demo',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': 'Popis',
|
||||
'design': 'návrh',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Dokumentácia',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': 'hotovo!',
|
||||
'Download': 'Download',
|
||||
'Edit': 'Upraviť',
|
||||
'Edit Profile': 'Upraviť profil',
|
||||
'Edit current record': 'Upraviť aktuálny záznam',
|
||||
'Edit Profile': 'Upraviť profil',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': 'exportovať do csv súboru',
|
||||
'FAQ': 'FAQ',
|
||||
'First name': 'Krstné meno',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Group ID': 'ID skupiny',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': 'Ahoj svet',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': 'Import/Export',
|
||||
'Index': 'Index',
|
||||
'insert new': 'vložiť nový záznam ',
|
||||
'insert new %s': 'vložiť nový záznam %s',
|
||||
'Internal State': 'Vnútorný stav',
|
||||
'Invalid Query': 'Neplatná otázka',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid email': 'Neplatný email',
|
||||
'Invalid password': 'Nesprávne heslo',
|
||||
'Invalid Query': 'Neplatná otázka',
|
||||
'invalid request': 'Neplatná požiadavka',
|
||||
'Key': 'Key',
|
||||
'Last name': 'Priezvisko',
|
||||
'Layout': 'Layout',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'Live Chat': 'Live Chat',
|
||||
'Logged in': 'Prihlásený',
|
||||
'Logged out': 'Odhlásený',
|
||||
'login': 'prihlásiť',
|
||||
'logout': 'odhlásiť',
|
||||
'Lost Password': 'Stratené heslo?',
|
||||
'lost password?': 'stratené heslo?',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': 'Menu Model',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': 'Meno',
|
||||
'New Record': 'Nový záznam',
|
||||
'New password': 'Nové heslo',
|
||||
'New Record': 'Nový záznam',
|
||||
'new record inserted': 'nový záznam bol vložený',
|
||||
'next 100 rows': 'ďalších 100 riadkov',
|
||||
'No databases in this application': 'V tejto aplikácii nie sú databázy',
|
||||
'Old password': 'Staré heslo',
|
||||
'Online examples': 'pre online príklady kliknite sem',
|
||||
'or import from csv file': 'alebo naimportovať z csv súboru',
|
||||
'Origin': 'Pôvod',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'password': 'heslo',
|
||||
'Password': 'Heslo',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': 'Powered by',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': 'predchádzajúcich 100 riadkov',
|
||||
'Python': 'Python',
|
||||
'Query:': 'Otázka:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': 'záznam',
|
||||
'record does not exist': 'záznam neexistuje',
|
||||
'Record ID': 'ID záznamu',
|
||||
'Record id': 'id záznamu',
|
||||
'Register': 'Zaregistrovať sa',
|
||||
'register': 'registrovať',
|
||||
'Registration key': 'Registračný kľúč',
|
||||
'Remember me (for 30 days)': 'Zapamätaj si ma (na 30 dní)',
|
||||
'Reset Password key': 'Nastaviť registračný kľúč',
|
||||
'Role': 'Rola',
|
||||
'Rows in Table': 'riadkov v tabuľke',
|
||||
'Rows selected': 'označených riadkov',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': 'stav',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': 'Stylesheet',
|
||||
'submit': 'submit',
|
||||
'Submit': 'Odoslať',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': 'Ste si istí, že chcete zmazať tento objekt?',
|
||||
'Table': 'tabuľka',
|
||||
'Table name': 'Názov tabuľky',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"query" je podmienka ako "db.table1.field1==\'value\'". Niečo ako "db.table1.field1==db.table2.field2" má za výsledok SQL JOIN.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'Výstup zo súboru je slovník, ktorý bol zobrazený vo view %s',
|
||||
'The Views': 'The Views',
|
||||
'This App': 'This App',
|
||||
'This is a copy of the scaffolding application': 'Toto je kópia skeletu aplikácie',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': 'Časová pečiatka',
|
||||
'Twitter': 'Twitter',
|
||||
'unable to parse csv file': 'nedá sa načítať csv súbor',
|
||||
'Update:': 'Upraviť:',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Použite (...)&(...) pre AND, (...)|(...) pre OR a ~(...) pre NOT na poskladanie komplexnejších otázok.',
|
||||
'User %(id)s Logged-in': 'Používateľ %(id)s prihlásený',
|
||||
@@ -75,38 +160,12 @@
|
||||
'User %(id)s Registered': 'Používateľ %(id)s sa zaregistroval',
|
||||
'User ID': 'ID používateľa',
|
||||
'Verify Password': 'Zopakujte heslo',
|
||||
'Videos': 'Videos',
|
||||
'View': 'Zobraziť',
|
||||
'Welcome to web2py': 'Vitajte vo web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Ktorý zavolal funkciu %s nachádzajúci sa v súbore %s',
|
||||
'You are successfully running web2py': 'Úspešne ste spustili web2py',
|
||||
'You can modify this application and adapt it to your needs': 'Môžete upraviť túto aplikáciu a prispôsobiť ju svojim potrebám',
|
||||
'You visited the url %s': 'Navštívili ste URL %s',
|
||||
'appadmin is disabled because insecure channel': 'appadmin je zakázaný bez zabezpečeného spojenia',
|
||||
'cache': 'cache',
|
||||
'customize me!': 'prispôsob ma!',
|
||||
'data uploaded': 'údaje naplnené',
|
||||
'Database': 'databáza',
|
||||
'Database %s select': 'databáza %s výber',
|
||||
'db': 'db',
|
||||
'design': 'návrh',
|
||||
'done!': 'hotovo!',
|
||||
'export as csv file': 'exportovať do csv súboru',
|
||||
'insert new': 'vložiť nový záznam ',
|
||||
'insert new %s': 'vložiť nový záznam %s',
|
||||
'invalid request': 'Neplatná požiadavka',
|
||||
'login': 'prihlásiť',
|
||||
'logout': 'odhlásiť',
|
||||
'lost password?': 'stratené heslo?',
|
||||
'new record inserted': 'nový záznam bol vložený',
|
||||
'next 100 rows': 'ďalších 100 riadkov',
|
||||
'or import from csv file': 'alebo naimportovať z csv súboru',
|
||||
'password': 'heslo',
|
||||
'previous 100 rows': 'predchádzajúcich 100 riadkov',
|
||||
'Record': 'záznam',
|
||||
'record does not exist': 'záznam neexistuje',
|
||||
'Record id': 'id záznamu',
|
||||
'register': 'registrovať',
|
||||
'state': 'stav',
|
||||
'Table': 'tabuľka',
|
||||
'unable to parse csv file': 'nedá sa načítať csv súbor',
|
||||
}
|
||||
|
||||
@@ -53,12 +53,13 @@
|
||||
'Components and Plugins': 'Компоненти та втулки',
|
||||
'Controller': 'Контролер',
|
||||
'Copyright': 'Правовласник',
|
||||
'Created By': 'Створив(ла)',
|
||||
'Created On': 'Створено в',
|
||||
'Current request': 'Поточний запит (current request)',
|
||||
'Current response': 'Поточна відповідь (current response)',
|
||||
'Current session': 'Поточна сесія (current session)',
|
||||
'customize me!': 'причепуріть мене!',
|
||||
'data uploaded': 'дані завантажено',
|
||||
'Database': 'база даних',
|
||||
'Database': 'База даних',
|
||||
'Database %s select': 'Вибірка з бази даних %s',
|
||||
'db': 'база даних',
|
||||
@@ -108,6 +109,7 @@
|
||||
'Invalid password': 'Невірний пароль',
|
||||
'Invalid Query': 'Помилковий запит',
|
||||
'invalid request': 'хибний запит',
|
||||
'Is Active': 'Активна',
|
||||
'Key': 'Ключ',
|
||||
'Last name': 'Прізвище',
|
||||
'Layout': 'Макет (Layout)',
|
||||
@@ -122,6 +124,8 @@
|
||||
'Lost password?': 'Забули пароль?',
|
||||
'Manage Cache': 'Управління кешем',
|
||||
'Menu Model': 'Модель меню',
|
||||
'Modified By': 'Зміни провадив(ла)',
|
||||
'Modified On': 'Змінено в',
|
||||
'My Sites': 'Сайт (усі додатки)',
|
||||
'Name': "Ім'я",
|
||||
'New password': 'Новий пароль',
|
||||
@@ -160,8 +164,8 @@
|
||||
'Record': 'запис',
|
||||
'Record %(id)s updated': 'Запис %(id)s змінено',
|
||||
'record does not exist': 'запису не існує',
|
||||
'Record id': 'ід. запису',
|
||||
'Record ID': 'Ід.запису',
|
||||
'Record id': 'ід. запису',
|
||||
'Record Updated': 'Запис змінено',
|
||||
'Register': 'Реєстрація',
|
||||
'Registration identifier': 'Реєстраційний ідентифікатор',
|
||||
@@ -180,7 +184,7 @@
|
||||
'state': 'стан',
|
||||
'Statistics': 'Статистика',
|
||||
'Stylesheet': 'CSS-стилі',
|
||||
'submit': 'submit',
|
||||
'submit': 'застосувати',
|
||||
'Submit': 'Застосувати',
|
||||
'Support': 'Підтримка',
|
||||
'Table': 'Таблиця',
|
||||
|
||||
@@ -3,34 +3,50 @@
|
||||
'!langcode!': 'zh-cn',
|
||||
'!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 %%{row} deleted': '已刪除 %s 筆',
|
||||
'%s %%{row} updated': '已更新 %s 筆',
|
||||
'%s selected': '%s 已選擇',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'(something like "it-it")': '(格式類似 "zh-tw")',
|
||||
'A new version of web2py is available': '新版的 web2py 已發行',
|
||||
'A new version of web2py is available: %s': '新版的 web2py 已發行: %s',
|
||||
'about': '關於',
|
||||
'About': '關於',
|
||||
'About application': '關於本應用程式',
|
||||
'Access Control': 'Access Control',
|
||||
'Admin is disabled because insecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
|
||||
'Admin is disabled because unsecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
'Administrative interface': '點此處進入管理介面',
|
||||
'Administrator Password:': '管理員密碼:',
|
||||
'Ajax Recipes': 'Ajax Recipes',
|
||||
'appadmin is disabled because insecure channel': '因為來自非安全通道,管理介面關閉',
|
||||
'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"',
|
||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 登入管理帳號需要安全連線(HTTPS)或是在本機連線(localhost).',
|
||||
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: 因為在測試模式不保證多執行緒安全性,也就是說不可以同時執行多個測試案例',
|
||||
'ATTENTION: you cannot edit the running application!': '注意:不可編輯正在執行的應用程式!',
|
||||
'About': '關於',
|
||||
'About application': '關於本應用程式',
|
||||
'Admin is disabled because insecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
|
||||
'Admin is disabled because unsecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
|
||||
'Administrative interface': '點此處進入管理介面',
|
||||
'Administrator Password:': '管理員密碼:',
|
||||
'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"',
|
||||
'Authentication': '驗證',
|
||||
'Available Databases and Tables': '可提供的資料庫和資料表',
|
||||
'Buy this book': 'Buy this book',
|
||||
'cache': '快取記憶體',
|
||||
'Cache': 'Cache',
|
||||
'Cache Keys': 'Cache Keys',
|
||||
'Cannot be empty': '不可空白',
|
||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': '無法編譯:應用程式中含有錯誤,請除錯後再試一次.',
|
||||
'Change Password': '變更密碼',
|
||||
'change password': '變更密碼',
|
||||
'Check to delete': '打勾代表刪除',
|
||||
'Check to delete:': '點選以示刪除:',
|
||||
'Clear CACHE?': 'Clear CACHE?',
|
||||
'Clear DISK': 'Clear DISK',
|
||||
'Clear RAM': 'Clear RAM',
|
||||
'Client IP': '客戶端網址(IP)',
|
||||
'Community': 'Community',
|
||||
'Components and Plugins': 'Components and Plugins',
|
||||
'Controller': '控件',
|
||||
'Controllers': '控件',
|
||||
'Copyright': '版權所有',
|
||||
@@ -38,64 +54,120 @@
|
||||
'Current request': '目前網路資料要求(request)',
|
||||
'Current response': '目前網路資料回應(response)',
|
||||
'Current session': '目前網路連線資訊(session)',
|
||||
'DB Model': '資料庫模組',
|
||||
'DESIGN': '設計',
|
||||
'customize me!': '請調整我!',
|
||||
'data uploaded': '資料已上傳',
|
||||
'Database': '資料庫',
|
||||
'Database %s select': '已選擇 %s 資料庫',
|
||||
'Date and Time': '日期和時間',
|
||||
'db': 'db',
|
||||
'DB Model': '資料庫模組',
|
||||
'Delete': '刪除',
|
||||
'Delete:': '刪除:',
|
||||
'Demo': 'Demo',
|
||||
'Deploy on Google App Engine': '配置到 Google App Engine',
|
||||
'Deployment Recipes': 'Deployment Recipes',
|
||||
'Description': '描述',
|
||||
'DESIGN': '設計',
|
||||
'design': '設計',
|
||||
'Design for': '設計為了',
|
||||
'DISK': 'DISK',
|
||||
'Disk Cache Keys': 'Disk Cache Keys',
|
||||
'Disk Cleared': 'Disk Cleared',
|
||||
'Documentation': 'Documentation',
|
||||
"Don't know what to do?": "Don't know what to do?",
|
||||
'done!': '完成!',
|
||||
'Download': 'Download',
|
||||
'E-mail': '電子郵件',
|
||||
'EDIT': '編輯',
|
||||
'Edit': '編輯',
|
||||
'Edit Profile': '編輯設定檔',
|
||||
'Edit This App': '編輯本應用程式',
|
||||
'Edit application': '編輯應用程式',
|
||||
'Edit current record': '編輯當前紀錄',
|
||||
'edit profile': '編輯設定檔',
|
||||
'Edit Profile': '編輯設定檔',
|
||||
'Edit This App': '編輯本應用程式',
|
||||
'Editing file': '編輯檔案',
|
||||
'Editing file "%s"': '編輯檔案"%s"',
|
||||
'Email and SMS': 'Email and SMS',
|
||||
'Error logs for "%(app)s"': '"%(app)s"的錯誤紀錄',
|
||||
'Errors': 'Errors',
|
||||
'export as csv file': '以逗號分隔檔(csv)格式匯出',
|
||||
'FAQ': 'FAQ',
|
||||
'First name': '名',
|
||||
'Forms and Validators': 'Forms and Validators',
|
||||
'Free Applications': 'Free Applications',
|
||||
'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函式會顯示 [passed].',
|
||||
'Group ID': '群組編號',
|
||||
'Groups': 'Groups',
|
||||
'Hello World': '嗨! 世界',
|
||||
'Home': 'Home',
|
||||
'How did you get here?': 'How did you get here?',
|
||||
'import': 'import',
|
||||
'Import/Export': '匯入/匯出',
|
||||
'Index': '索引',
|
||||
'insert new': '插入新資料',
|
||||
'insert new %s': '插入新資料 %s',
|
||||
'Installed applications': '已安裝應用程式',
|
||||
'Internal State': '內部狀態',
|
||||
'Invalid Query': '不合法的查詢',
|
||||
'Introduction': 'Introduction',
|
||||
'Invalid action': '不合法的動作(action)',
|
||||
'Invalid email': '不合法的電子郵件',
|
||||
'Invalid Query': '不合法的查詢',
|
||||
'invalid request': '不合法的網路要求(request)',
|
||||
'Key': 'Key',
|
||||
'Language files (static strings) updated': '語言檔已更新',
|
||||
'Languages': '各國語言',
|
||||
'Last name': '姓',
|
||||
'Last saved on:': '最後儲存時間:',
|
||||
'Layout': '網頁配置',
|
||||
'Layout Plugins': 'Layout Plugins',
|
||||
'Layouts': 'Layouts',
|
||||
'License for': '軟體版權為',
|
||||
'Live Chat': 'Live Chat',
|
||||
'login': '登入',
|
||||
'Login': '登入',
|
||||
'Login to the Administrative Interface': '登入到管理員介面',
|
||||
'logout': '登出',
|
||||
'Logout': '登出',
|
||||
'Lost Password': '密碼遺忘',
|
||||
'Main Menu': '主選單',
|
||||
'Manage Cache': 'Manage Cache',
|
||||
'Menu Model': '選單模組(menu)',
|
||||
'Models': '資料模組',
|
||||
'Modules': '程式模組',
|
||||
'NO': '否',
|
||||
'My Sites': 'My Sites',
|
||||
'Name': '名字',
|
||||
'New Record': '新紀錄',
|
||||
'new record inserted': '已插入新紀錄',
|
||||
'next 100 rows': '往後 100 筆',
|
||||
'NO': '否',
|
||||
'No databases in this application': '這應用程式不含資料庫',
|
||||
'Online examples': '點此處進入線上範例',
|
||||
'or import from csv file': '或是從逗號分隔檔(CSV)匯入',
|
||||
'Origin': '原文',
|
||||
'Original/Translation': '原文/翻譯',
|
||||
'Other Plugins': 'Other Plugins',
|
||||
'Other Recipes': 'Other Recipes',
|
||||
'Overview': 'Overview',
|
||||
'Password': '密碼',
|
||||
"Password fields don't match": '密碼欄不匹配',
|
||||
'Peeking at file': '選擇檔案',
|
||||
'Plugins': 'Plugins',
|
||||
'Powered by': '基於以下技術構建:',
|
||||
'Preface': 'Preface',
|
||||
'previous 100 rows': '往前 100 筆',
|
||||
'Python': 'Python',
|
||||
'Query:': '查詢:',
|
||||
'Quick Examples': 'Quick Examples',
|
||||
'RAM': 'RAM',
|
||||
'RAM Cache Keys': 'RAM Cache Keys',
|
||||
'Ram Cleared': 'Ram Cleared',
|
||||
'Recipes': 'Recipes',
|
||||
'Record': '紀錄',
|
||||
'record does not exist': '紀錄不存在',
|
||||
'Record ID': '紀錄編號',
|
||||
'Record id': '紀錄編號',
|
||||
'Register': '註冊',
|
||||
'register': '註冊',
|
||||
'Registration key': '註冊金鑰',
|
||||
'Remember me (for 30 days)': '記住我(30 天)',
|
||||
'Reset Password key': '重設密碼',
|
||||
@@ -104,26 +176,40 @@
|
||||
'Rows in Table': '在資料表裏的資料',
|
||||
'Rows selected': '筆資料被選擇',
|
||||
'Saved file hash:': '檔案雜湊值已紀錄:',
|
||||
'Semantic': 'Semantic',
|
||||
'Services': 'Services',
|
||||
'Size of cache:': 'Size of cache:',
|
||||
'state': '狀態',
|
||||
'Static files': '靜態檔案',
|
||||
'Statistics': 'Statistics',
|
||||
'Stylesheet': '網頁風格檔',
|
||||
'submit': 'submit',
|
||||
'Submit': '傳送',
|
||||
'Support': 'Support',
|
||||
'Sure you want to delete this object?': '確定要刪除此物件?',
|
||||
'Table': '資料表',
|
||||
'Table name': '資料表名稱',
|
||||
'Testing application': '測試中的應用程式',
|
||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"查詢"是一個像 "db.表1.欄位1==\'值\'" 的條件式. 以"db.表1.欄位1==db.表2.欄位2"方式則相當於執行 JOIN SQL.',
|
||||
'The Core': 'The Core',
|
||||
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||
'The Views': 'The Views',
|
||||
'There are no controllers': '沒有控件(controllers)',
|
||||
'There are no models': '沒有資料庫模組(models)',
|
||||
'There are no modules': '沒有程式模組(modules)',
|
||||
'There are no static files': '沒有靜態檔案',
|
||||
'There are no translators, only default language is supported': '沒有翻譯檔,只支援原始語言',
|
||||
'There are no views': '沒有視圖',
|
||||
'This App': 'This App',
|
||||
'This is the %(filename)s template': '這是%(filename)s檔案的樣板(template)',
|
||||
'Ticket': '問題單',
|
||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||
'Timestamp': '時間標記',
|
||||
'Twitter': 'Twitter',
|
||||
'Unable to check for upgrades': '無法做升級檢查',
|
||||
'Unable to download': '無法下載',
|
||||
'Unable to download app': '無法下載應用程式',
|
||||
'unable to parse csv file': '無法解析逗號分隔檔(csv)',
|
||||
'Update:': '更新:',
|
||||
'Upload existing application': '更新存在的應用程式',
|
||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式來組合更複雜的條件式, (...)&(...) 代表同時存在的條件, (...)|(...) 代表擇一的條件, ~(...)則代表反向條件.',
|
||||
@@ -131,40 +217,15 @@
|
||||
'User %(id)s Registered': '使用者 %(id)s 已註冊',
|
||||
'User ID': '使用者編號',
|
||||
'Verify Password': '驗證密碼',
|
||||
'Videos': 'Videos',
|
||||
'View': '視圖',
|
||||
'Views': '視圖',
|
||||
'Welcome %s': '歡迎 %s',
|
||||
'Welcome to web2py': '歡迎使用 web2py',
|
||||
'Welcome to web2py!': 'Welcome to web2py!',
|
||||
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||
'YES': '是',
|
||||
'You are successfully running web2py': 'You are successfully running web2py',
|
||||
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||
'You visited the url %s': 'You visited the url %s',
|
||||
'about': '關於',
|
||||
'appadmin is disabled because insecure channel': '因為來自非安全通道,管理介面關閉',
|
||||
'cache': '快取記憶體',
|
||||
'change password': '變更密碼',
|
||||
'customize me!': '請調整我!',
|
||||
'data uploaded': '資料已上傳',
|
||||
'Database': '資料庫',
|
||||
'Database %s select': '已選擇 %s 資料庫',
|
||||
'db': 'db',
|
||||
'design': '設計',
|
||||
'done!': '完成!',
|
||||
'edit profile': '編輯設定檔',
|
||||
'export as csv file': '以逗號分隔檔(csv)格式匯出',
|
||||
'insert new': '插入新資料',
|
||||
'insert new %s': '插入新資料 %s',
|
||||
'invalid request': '不合法的網路要求(request)',
|
||||
'login': '登入',
|
||||
'logout': '登出',
|
||||
'new record inserted': '已插入新紀錄',
|
||||
'next 100 rows': '往後 100 筆',
|
||||
'or import from csv file': '或是從逗號分隔檔(CSV)匯入',
|
||||
'previous 100 rows': '往前 100 筆',
|
||||
'Record': '紀錄',
|
||||
'record does not exist': '紀錄不存在',
|
||||
'Record id': '紀錄編號',
|
||||
'register': '註冊',
|
||||
'state': '狀態',
|
||||
'Table': '資料表',
|
||||
'unable to parse csv file': '無法解析逗號分隔檔(csv)',
|
||||
}
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ Functions required to execute app components
|
||||
FOR INTERNAL USE ONLY
|
||||
"""
|
||||
|
||||
import os
|
||||
from os import stat
|
||||
import thread
|
||||
import logging
|
||||
from fileutils import read_file
|
||||
@@ -35,7 +35,7 @@ def getcfs(key, filename, filter=None):
|
||||
This is used on Google App Engine since pyc files cannot be saved.
|
||||
"""
|
||||
try:
|
||||
t = os.stat(filename).st_mtime
|
||||
t = stat(filename).st_mtime
|
||||
except OSError:
|
||||
return filter() if callable(filter) else ''
|
||||
cfs_lock.acquire()
|
||||
|
||||
+295
-246
@@ -29,15 +29,16 @@ from string import maketrans
|
||||
|
||||
__all__ = ['translator', 'findT', 'update_all_languages']
|
||||
|
||||
ospath = os.path
|
||||
ostat = os.stat
|
||||
osep = os.sep
|
||||
oslistdir = os.listdir
|
||||
pjoin = os.path.join
|
||||
pexists = os.path.exists
|
||||
pdirname = os.path.dirname
|
||||
isdir = os.path.isdir
|
||||
is_gae = settings.global_settings.web2py_runtime_gae
|
||||
|
||||
DEFAULT_LANGUAGE = 'en'
|
||||
DEFAULT_LANGUAGE_NAME = 'English'
|
||||
|
||||
# DEFAULT PLURAL-FORMS RULES:
|
||||
# language doesn't use plural forms
|
||||
@@ -45,23 +46,7 @@ DEFAULT_NPLURALS = 1
|
||||
# only one singular/plural form is used
|
||||
DEFAULT_GET_PLURAL_ID = lambda n: 0
|
||||
# word is unchangeable
|
||||
DEFAULT_CONSTRUCTOR_PLURAL_FORM = lambda word, plural_id: word
|
||||
|
||||
def safe_eval(text):
|
||||
if text.strip():
|
||||
try:
|
||||
import ast
|
||||
return ast.literal_eval(text)
|
||||
except ImportError:
|
||||
return eval(text,{},{})
|
||||
return None
|
||||
|
||||
# used as default filter in translator.M()
|
||||
def markmin_aux(m):
|
||||
return '{%s}' % markmin_escape(m.group('s'))
|
||||
def markmin(s):
|
||||
return render(regex_param.sub(markmin_aux,s),
|
||||
sep='br', autolinks=None, id_prefix='')
|
||||
DEFAULT_CONSTRUCT_PLURAL_FORM = lambda word, plural_id: word
|
||||
|
||||
NUMBERS = (int,long,float)
|
||||
|
||||
@@ -75,14 +60,30 @@ regex_translate = re.compile(PY_STRING_LITERAL_RE, re.DOTALL)
|
||||
regex_param=re.compile(r'{(?P<s>.+?)}')
|
||||
|
||||
# pattern for a valid accept_language
|
||||
|
||||
regex_language = \
|
||||
re.compile('^([a-zA-Z]{2})(\-[a-zA-Z]{2})?(\-[a-zA-Z]+)?$')
|
||||
regex_langfile = re.compile('^[a-zA-Z]{2}(-[a-zA-Z]{2})?\.py$')
|
||||
re.compile('([a-z]{2}(?:\-[a-z]{2})?(?:\-[a-z]{2})?)(?:[,;]|$)')
|
||||
regex_langfile = re.compile('^[a-z]{2}(-[a-z]{2})?\.py$')
|
||||
regex_backslash = re.compile(r"\\([\\{}%])")
|
||||
regex_plural = re.compile('%({.+?})')
|
||||
regex_plural_dict = re.compile('^{(?P<w>[^()[\]][^()[\]]*?)\((?P<n>[^()\[\]]+)\)}$') # %%{word(varname or number)}
|
||||
regex_plural_tuple = re.compile('^{(?P<w>[^[\]()]+)(?:\[(?P<i>\d+)\])?}$') # %%{word[index]} or %%{word}
|
||||
regex_plural_file = re.compile('^plural-[a-zA-Z]{2}(-[a-zA-Z]{2})?\.py$')
|
||||
|
||||
def safe_eval(text):
|
||||
if text.strip():
|
||||
try:
|
||||
import ast
|
||||
return ast.literal_eval(text)
|
||||
except ImportError:
|
||||
return eval(text,{},{})
|
||||
return None
|
||||
|
||||
# used as default filter in translator.M()
|
||||
def markmin(s):
|
||||
def markmin_aux(m):
|
||||
return '{%s}' % markmin_escape(m.group('s'))
|
||||
return render(regex_param.sub(markmin_aux,s),
|
||||
sep='br', autolinks=None, id_prefix='')
|
||||
|
||||
# UTF8 helper functions
|
||||
def upper_fun(s):
|
||||
@@ -90,7 +91,7 @@ def upper_fun(s):
|
||||
def title_fun(s):
|
||||
return unicode(s,'utf-8').title().encode('utf-8')
|
||||
def cap_fun(s):
|
||||
return lambda s: unicode(s,'utf-8').capitalize().encode('utf-8')
|
||||
return unicode(s,'utf-8').capitalize().encode('utf-8')
|
||||
ttab_in = maketrans("\\%{}", '\x1c\x1d\x1e\x1f')
|
||||
ttab_out = maketrans('\x1c\x1d\x1e\x1f', "\\%{}")
|
||||
|
||||
@@ -132,38 +133,6 @@ def clear_cache(filename):
|
||||
finally:
|
||||
lock.release()
|
||||
|
||||
def lang_sampling(lang_tuple, langlist):
|
||||
"""
|
||||
search *lang_tuple* in *langlist*
|
||||
|
||||
Args:
|
||||
lang_tuple (tuple of strings): ('aa'[[,'-bb'],'-cc'])
|
||||
langlist (list of strings): [available languages]
|
||||
|
||||
Returns:
|
||||
language from langlist or None
|
||||
"""
|
||||
# step 1:
|
||||
# compare "aa-bb-cc" | "aa-bb" | "aa" from lang_tuple
|
||||
# with strings from langlist. Return appropriate string
|
||||
# from langlist:
|
||||
tries = range(len(lang_tuple),0,-1)
|
||||
for i in tries:
|
||||
language="".join(lang_tuple[:i])
|
||||
if language in langlist:
|
||||
return language
|
||||
# step 2 (if not found in step 1):
|
||||
# compare "aa-bb-cc" | "aa-bb" | "aa" from lang_tuple
|
||||
# with left part of a string from langlist. Return
|
||||
# appropriate string from langlist
|
||||
for i in tries:
|
||||
lang="".join(lang_tuple[:i])
|
||||
for language in langlist:
|
||||
if language.startswith(lang):
|
||||
return language
|
||||
return None
|
||||
|
||||
|
||||
def read_dict_aux(filename):
|
||||
lang_text = portalocker.read_locked(filename).replace('\r\n', '\n')
|
||||
clear_cache(filename)
|
||||
@@ -175,57 +144,24 @@ def read_dict_aux(filename):
|
||||
return {'__corrupted__':status}
|
||||
|
||||
def read_dict(filename):
|
||||
"""
|
||||
return dictionary with translation messages
|
||||
""" return dictionary with translation messages
|
||||
"""
|
||||
return getcfs('lang:'+filename, filename,
|
||||
lambda: read_dict_aux(filename))
|
||||
|
||||
|
||||
def get_lang_info(lang, langdir):
|
||||
"""
|
||||
retrieve lang information from *langdir*/*lang*.py file.
|
||||
Read few strings from lang.py file until keys !langname!,
|
||||
!langcode! or keys greater then '!*' were found
|
||||
|
||||
args:
|
||||
lang (str): lang-code or 'default'
|
||||
langdir (str): path to 'languages' directory in web2py app dir
|
||||
|
||||
returns:
|
||||
tuple(langcode, langname, langfile_mtime)
|
||||
e.g.: ('en', 'English', 1338549043.0)
|
||||
"""
|
||||
filename = ospath.join(langdir, lang+'.py')
|
||||
d = read_dict(filename)
|
||||
langcode = d.get('!langcode!',DEFAULT_LANGUAGE)
|
||||
langname = d.get('!langname!',langcode)
|
||||
return (langcode, langname or langcode, ostat(filename).st_mtime)
|
||||
|
||||
def read_possible_languages(appdir):
|
||||
langs = {}
|
||||
# scan languages directory for langfiles:
|
||||
langdir = ospath.join(appdir,'languages')
|
||||
for filename in os.listdir(langdir):
|
||||
if regex_langfile.match(filename) or filename=='default.py':
|
||||
lang = filename[:-3]
|
||||
langs[lang] = get_lang_info(lang, langdir)
|
||||
if not 'en' in langs:
|
||||
# if default.py is not found, add default value:
|
||||
langs['en'] = ('en', 'English', 0)
|
||||
return langs
|
||||
|
||||
def read_possible_plurals():
|
||||
def read_possible_plural_rules():
|
||||
"""
|
||||
create list of all possible plural rules files
|
||||
result is cached to increase speed
|
||||
result is cached in PLURAL_RULES dictionary to increase speed
|
||||
"""
|
||||
plurals = {}
|
||||
try:
|
||||
import contrib.plural_rules as package
|
||||
import gluon.contrib.plural_rules as package
|
||||
plurals = {}
|
||||
for importer, modname, ispkg in pkgutil.iter_modules(package.__path__):
|
||||
if len(modname)==2:
|
||||
module = __import__(package.__name__+'.'+modname)
|
||||
module = __import__(package.__name__+'.'+modname,
|
||||
fromlist=[modname])
|
||||
lang = modname
|
||||
pname = modname+'.py'
|
||||
nplurals = getattr(module,'nplurals', DEFAULT_NPLURALS)
|
||||
@@ -234,19 +170,84 @@ def read_possible_plurals():
|
||||
DEFAULT_GET_PLURAL_ID)
|
||||
construct_plural_form = getattr(
|
||||
module,'construct_plural_form',
|
||||
DEFAULT_CONSTRUCTOR_PLURAL_FORM)
|
||||
DEFAULT_CONSTRUCT_PLURAL_FORM)
|
||||
plurals[lang] = (lang, nplurals, get_plural_id,
|
||||
construct_plural_form, pname)
|
||||
except ImportError:
|
||||
logging.warn('Unable to import plural rules')
|
||||
plurals['default'] = ('default',
|
||||
DEFAULT_NPLURALS,
|
||||
DEFAULT_GET_PLURAL_ID,
|
||||
DEFAULT_CONSTRUCTOR_PLURAL_FORM,
|
||||
None)
|
||||
construct_plural_form)
|
||||
except ImportError, e:
|
||||
logging.warn('Unable to import plural rules: %s' % e)
|
||||
return plurals
|
||||
|
||||
PLURAL_RULES = read_possible_plurals()
|
||||
PLURAL_RULES = read_possible_plural_rules()
|
||||
|
||||
def read_possible_languages_aux(langdir):
|
||||
def get_lang_struct(lang, langcode, langname, langfile_mtime):
|
||||
if lang == 'default':
|
||||
real_lang = langcode.lower()
|
||||
else:
|
||||
real_lang = lang
|
||||
(prules_langcode,
|
||||
nplurals,
|
||||
get_plural_id,
|
||||
construct_plural_form
|
||||
) = PLURAL_RULES.get(real_lang[:2],('default',
|
||||
DEFAULT_NPLURALS,
|
||||
DEFAULT_GET_PLURAL_ID,
|
||||
DEFAULT_CONSTRUCT_PLURAL_FORM))
|
||||
if prules_langcode != 'default':
|
||||
(pluraldict_fname,
|
||||
pluraldict_mtime) = plurals.get(real_lang,
|
||||
plurals.get(real_lang[:2],
|
||||
('plural-%s.py'%real_lang,0)))
|
||||
else:
|
||||
pluraldict_fname = None
|
||||
pluraldict_mtime = 0
|
||||
return (langcode, # language code from !langcode!
|
||||
langname, # language name in national spelling from !langname!
|
||||
langfile_mtime, # m_time of language file
|
||||
pluraldict_fname,# name of plural dictionary file or None (when default.py is not exist)
|
||||
pluraldict_mtime,# m_time of plural dictionary file or 0 if file is not exist
|
||||
prules_langcode, # code of plural rules language or 'default'
|
||||
nplurals, # nplurals for current language
|
||||
get_plural_id, # get_plural_id() for current language
|
||||
construct_plural_form) # construct_plural_form() for current language
|
||||
|
||||
plurals = {}
|
||||
flist = oslistdir(langdir)
|
||||
# scan languages directory for plural dict files:
|
||||
for pname in flist:
|
||||
if regex_plural_file.match(pname):
|
||||
plurals[pname[7:-3]] = (pname,
|
||||
ostat(pjoin(langdir,pname)).st_mtime)
|
||||
langs = {}
|
||||
# scan languages directory for langfiles:
|
||||
for fname in flist:
|
||||
if regex_langfile.match(fname) or fname == 'default.py':
|
||||
fname_with_path = pjoin(langdir,fname)
|
||||
d = read_dict(fname_with_path)
|
||||
lang = fname[:-3]
|
||||
langcode = d.get('!langcode!', lang if lang != 'default'
|
||||
else DEFAULT_LANGUAGE)
|
||||
langname = d.get('!langname!',langcode)
|
||||
langfile_mtime = ostat(fname_with_path).st_mtime
|
||||
langs[lang] = get_lang_struct(lang, langcode,
|
||||
langname, langfile_mtime)
|
||||
if 'default' not in langs:
|
||||
# if default.py is not found,
|
||||
# add DEFAULT_LANGUAGE as default language:
|
||||
langs['default'] = get_lang_struct('default', DEFAULT_LANGUAGE,
|
||||
DEFAULT_LANGUAGE_NAME, 0)
|
||||
deflang = langs['default']
|
||||
deflangcode = deflang[0]
|
||||
if deflangcode not in langs:
|
||||
# create language from default.py:
|
||||
langs[deflangcode] = deflang[:2]+(0,)+deflang[3:]
|
||||
|
||||
return langs
|
||||
|
||||
def read_possible_languages(appdir):
|
||||
langdir = pjoin(appdir,'languages')
|
||||
return getcfs('langs:'+langdir, langdir,
|
||||
lambda: read_possible_languages_aux(langdir))
|
||||
|
||||
def read_plural_dict_aux(filename):
|
||||
lang_text = portalocker.read_locked(filename).replace('\r\n', '\n')
|
||||
@@ -401,42 +402,81 @@ class translator(object):
|
||||
T(\"Hello World\") # translates \"Hello World\" using the selected file
|
||||
|
||||
notice 1: there is no need to force since, by default, T uses
|
||||
http_accept_language to determine a translation file.
|
||||
http_accept_language to determine a translation file.
|
||||
notice 2:
|
||||
en and en-en are considered different languages!
|
||||
notice 3:
|
||||
if language xx-yy is not found force() probes other similar
|
||||
languages using such algorithm:
|
||||
languages using such algorithm:
|
||||
xx-yy.py -> xx.py -> xx-yy*.py -> xx*.py
|
||||
"""
|
||||
|
||||
def __init__(self, request):
|
||||
self.request = request
|
||||
self.folder = request.folder
|
||||
self.langpath = ospath.join(self.folder,'languages')
|
||||
self.filenames = set(os.listdir(self.langpath))
|
||||
self.langpath = pjoin(self.folder, 'languages')
|
||||
self.http_accept_language = request.env.http_accept_language
|
||||
# self.cache # filled in self.force()
|
||||
# self.accepted_language = None # filled in self.force()
|
||||
# self.language_file = None # filled in self.force()
|
||||
# self.plural_language = None # filled in self.force()
|
||||
# self.nplurals = None # filled in self.force()
|
||||
# self.get_plural_id = None # filled in self.force()
|
||||
# self.construct_plural_form = None # filled in self.force()
|
||||
# self.plural_rules_file = None # filled in self.force()
|
||||
# self.plural_file = None # filled in self.force()
|
||||
# self.plural_dict = None # filled in self.force()
|
||||
# self.plural_status = None # filled in self.force()
|
||||
self.requested_languages = \
|
||||
self.force(self.http_accept_language)
|
||||
# filled in self.force():
|
||||
#------------------------
|
||||
# self.cache
|
||||
# self.accepted_language
|
||||
# self.language_file
|
||||
# self.plural_language
|
||||
# self.nplurals
|
||||
# self.get_plural_id
|
||||
# self.construct_plural_form
|
||||
# self.plural_file
|
||||
# self.plural_dict
|
||||
# self.requested_languages
|
||||
#----------------------------------------
|
||||
# filled in self.set_current_languages():
|
||||
#----------------------------------------
|
||||
# self.default_language_file
|
||||
# self.default_t
|
||||
# self.current_languages
|
||||
self.set_current_languages()
|
||||
self.lazy = True
|
||||
self.otherTs = {}
|
||||
self.filter = markmin
|
||||
self.ftag = 'markmin'
|
||||
|
||||
def get_possible_languages_info(self, lang=None):
|
||||
"""
|
||||
return info for selected language or dictionary with all
|
||||
possible languages info from APP/languages/*.py
|
||||
args:
|
||||
*lang* (str): language
|
||||
returns:
|
||||
if *lang* is defined:
|
||||
return tuple(langcode, langname, langfile_mtime,
|
||||
pluraldict_fname, pluraldict_mtime,
|
||||
prules_langcode, nplurals,
|
||||
get_plural_id, construct_plural_form)
|
||||
or None
|
||||
|
||||
if *lang* is NOT defined:
|
||||
returns dictionary with all possible languages:
|
||||
{ langcode(from filename):
|
||||
( langcode, # language code from !langcode!
|
||||
langname, # language name in national spelling from !langname!
|
||||
langfile_mtime, # m_time of language file
|
||||
pluraldict_fname,# name of plural dictionary file or None (when default.py is not exist)
|
||||
pluraldict_mtime,# m_time of plural dictionary file or 0 if file is not exist
|
||||
prules_langcode, # code of plural rules language or 'default'
|
||||
nplurals, # nplurals for current language
|
||||
get_plural_id, # get_plural_id() for current language
|
||||
construct_plural_form) # construct_plural_form() for current language
|
||||
}
|
||||
"""
|
||||
info = read_possible_languages(self.folder)
|
||||
if lang: info = info.get(lang)
|
||||
return info
|
||||
|
||||
def get_possible_languages(self):
|
||||
return [lang[:-3] for lang in self.filenames \
|
||||
if regex_langfile.match(lang)]
|
||||
""" get list of all possible languages for current applications """
|
||||
return list(set(self.current_languages +
|
||||
[lang for lang in read_possible_languages(self.folder).iterkeys()
|
||||
if lang != 'default']))
|
||||
|
||||
def set_current_languages(self, *languages):
|
||||
"""
|
||||
@@ -447,38 +487,30 @@ class translator(object):
|
||||
if len(languages) == 1 and isinstance(
|
||||
languages[0], (tuple, list)):
|
||||
languages = languages[0]
|
||||
self.current_languages = languages
|
||||
if not languages or languages[0] is None:
|
||||
# set default language from default.py/DEFAULT_LANGUAGE
|
||||
pl_info = self.get_possible_languages_info('default')
|
||||
if pl_info[2]==0: # langfile_mtime
|
||||
# if languages/default.py is not found
|
||||
self.default_language_file = self.langpath
|
||||
self.default_t = {}
|
||||
self.current_languages = [DEFAULT_LANGUAGE]
|
||||
else:
|
||||
self.default_language_file = pjoin(self.langpath,
|
||||
'default.py')
|
||||
self.default_t = read_dict(self.default_language_file)
|
||||
self.current_languages = [pl_info[0]] # !langcode!
|
||||
else:
|
||||
self.current_languages = list(languages)
|
||||
self.force(self.http_accept_language)
|
||||
|
||||
def set_plural(self, language):
|
||||
"""
|
||||
initialize plural forms subsystem
|
||||
invoked from self.force()
|
||||
"""
|
||||
lang = language[:2]
|
||||
(self.plural_language,
|
||||
self.nplurals,
|
||||
self.get_plural_id,
|
||||
self.construct_plural_form,
|
||||
self.plural_filename
|
||||
) = PLURAL_RULES.get(language,PLURAL_RULES['default'])
|
||||
for lang in (language, language[:5], language[:2]):
|
||||
filename = 'plural-%s.py' % lang
|
||||
if filename in self.filenames:
|
||||
self.plural_file = ospath.join(self.langpath,filename)
|
||||
self.plural_dict = read_plural_dict(self.plural_file)
|
||||
break
|
||||
else:
|
||||
self.plural_file = None
|
||||
self.plural_dict = {}
|
||||
|
||||
|
||||
def plural(self, word, n):
|
||||
"""
|
||||
get plural form of word for number *n*
|
||||
NOTE: *word* MUST be defined in current language
|
||||
""" get plural form of word for number *n*
|
||||
NOTE: *word" MUST be defined in current language
|
||||
(T.accepted_language)
|
||||
|
||||
invoked from T()/M() in %%{} tag
|
||||
invoked from T()/T.M() in %%{} tag
|
||||
args:
|
||||
word (str): word in singular
|
||||
n (numeric): number plural form created for
|
||||
@@ -486,51 +518,34 @@ class translator(object):
|
||||
returns:
|
||||
(str): word in appropriate singular/plural form
|
||||
"""
|
||||
nplurals = self.nplurals
|
||||
if int(n)==1:
|
||||
if int(n) == 1:
|
||||
return word
|
||||
elif word:
|
||||
id = self.get_plural_id(abs(int(n)))
|
||||
# id = 0 first plural form
|
||||
# id = 1 second plural form
|
||||
# id = 0 singular form
|
||||
# id = 1 first plural form
|
||||
# id = 2 second plural form
|
||||
# etc.
|
||||
forms = self.plural_dict.get(word, [])
|
||||
if len(forms)>=id:
|
||||
# have this plural form
|
||||
return forms[id-1]
|
||||
else:
|
||||
# guessing this plural form
|
||||
forms += ['']*(nplurals-len(forms)-1)
|
||||
form = self.construct_plural_form(word, id)
|
||||
forms[id-1] = form
|
||||
self.plural_dict[word] = forms
|
||||
if self.plural_file and not is_gae:
|
||||
write_plural_dict(self.plural_file,
|
||||
self.plural_dict)
|
||||
return form
|
||||
|
||||
def get_possible_languages_info(self, lang=None):
|
||||
"""
|
||||
return info for selected language or dictionary with all
|
||||
possible languages info from APP/languages/*.py
|
||||
args:
|
||||
*lang* (str): language
|
||||
returns:
|
||||
if *lang* is defined:
|
||||
return tuple(langcode, langname, langfile_mtime) or None
|
||||
|
||||
if *lang* is NOT defined:
|
||||
returns dictionary with all possible languages:
|
||||
{ langcode(from filename): ( langcode(from !langcode! key),
|
||||
langname(from !langname! key),
|
||||
langfile_mtime ) }
|
||||
"""
|
||||
info = read_possible_languages(self.folder)
|
||||
if lang: info = info.get(lang)
|
||||
return info
|
||||
if id != 0:
|
||||
forms = self.plural_dict.get(word, [])
|
||||
if len(forms)>=id:
|
||||
# have this plural form:
|
||||
return forms[id-1]
|
||||
else:
|
||||
# guessing this plural form
|
||||
forms += ['']*(self.nplurals-len(forms)-1)
|
||||
form = self.construct_plural_form(word, id)
|
||||
forms[id-1] = form
|
||||
self.plural_dict[word] = forms
|
||||
if self.plural_file and not is_gae:
|
||||
write_plural_dict(self.plural_file,
|
||||
self.plural_dict)
|
||||
return form
|
||||
return word
|
||||
|
||||
def force(self, *languages):
|
||||
"""
|
||||
|
||||
select language(s) for translation
|
||||
|
||||
if a list of languages is passed as a parameter,
|
||||
@@ -541,41 +556,76 @@ class translator(object):
|
||||
default language will be selected if none
|
||||
of them matches possible_languages.
|
||||
"""
|
||||
pl_info = read_possible_languages(self.folder)
|
||||
def set_plural(language):
|
||||
"""
|
||||
initialize plural forms subsystem
|
||||
"""
|
||||
lang_info = pl_info.get(language)
|
||||
if lang_info:
|
||||
(pname,
|
||||
pmtime,
|
||||
self.plural_language,
|
||||
self.nplurals,
|
||||
self.get_plural_id,
|
||||
self.construct_plural_form
|
||||
) = lang_info[3:]
|
||||
pdict = {}
|
||||
if pname:
|
||||
pname = pjoin(self.langpath, pname)
|
||||
if pmtime != 0:
|
||||
pdict = read_plural_dict(pname)
|
||||
self.plural_file = pname
|
||||
self.plural_dict = pdict
|
||||
else:
|
||||
self.plural_language = 'default'
|
||||
self.nplurals = DEFAULT_NPLURALS
|
||||
self.get_plural_id = DEFAULT_GET_PLURAL_ID
|
||||
self.construct_plural_form = DEFAULT_CONSTRUCT_PLURAL_FORM
|
||||
self.plural_file = None
|
||||
self.plural_dict = {}
|
||||
language = ''
|
||||
if isinstance(languages,str):
|
||||
languages = regex_language.findall(languages.lower())
|
||||
if len(languages)==1 and isinstance(languages[0],str):
|
||||
languages = regex_language.findall(languages[0].lower())
|
||||
elif not languages or languages[0] is None:
|
||||
languages = []
|
||||
for lang in languages:
|
||||
if lang+'.py' in self.filenames:
|
||||
language = lang
|
||||
langfile = language+'.py'
|
||||
break
|
||||
elif len(lang)>5 and lang[:5]+'.py' in self.filenames:
|
||||
language = lang[:5]
|
||||
langfile = language+'.py'
|
||||
break
|
||||
elif len(lang)>2 and lang[:2]+'.py' in self.filenames:
|
||||
language = lang[:2]
|
||||
langfile = language+'.py'
|
||||
break
|
||||
else:
|
||||
if 'default.py' in self.filenames:
|
||||
language = DEFAULT_LANGUAGE
|
||||
langfile = 'default.py'
|
||||
else:
|
||||
language = DEFAULT_LANGUAGE
|
||||
langfile = None
|
||||
self.accepted_language = language
|
||||
if langfile:
|
||||
self.language_file = ospath.join(self.langpath,langfile)
|
||||
self.t = read_dict(self.language_file)
|
||||
else:
|
||||
self.language_file = None
|
||||
self.t = {}
|
||||
self.cache = global_language_cache.setdefault(
|
||||
self.language_file,({},allocate_lock()))
|
||||
self.set_plural(language)
|
||||
self.requested_languages = languages = tuple(languages)
|
||||
if languages:
|
||||
all_languages = set(lang for lang in pl_info.iterkeys()
|
||||
if lang != 'default') \
|
||||
| set(self.current_languages)
|
||||
for lang in languages:
|
||||
# compare "aa-bb" | "aa" from *language* parameter
|
||||
# with strings from langlist using such alghorythm:
|
||||
# xx-yy.py -> xx.py -> xx*.py
|
||||
lang5 = lang[:5]
|
||||
if lang5 in all_languages:
|
||||
language = lang5
|
||||
else:
|
||||
lang2 = lang[:2]
|
||||
if len(lang5)>2 and lang2 in all_languages:
|
||||
language = lang2
|
||||
else:
|
||||
for l in all_languages:
|
||||
if l[:2]==lang2:
|
||||
language = l
|
||||
if language:
|
||||
if language in self.current_languages:
|
||||
break
|
||||
self.language_file = pjoin(self.langpath, language+'.py')
|
||||
self.t = read_dict(self.language_file)
|
||||
self.cache = global_language_cache.setdefault(
|
||||
self.language_file,
|
||||
({},allocate_lock()))
|
||||
set_plural(language)
|
||||
self.accepted_language = language
|
||||
return languages
|
||||
self.accepted_language = language or self.current_languages[0]
|
||||
self.language_file = self.default_language_file
|
||||
self.cache = global_language_cache.setdefault(self.language_file,
|
||||
({}, allocate_lock()))
|
||||
self.t = self.default_t
|
||||
set_plural(self.accepted_language)
|
||||
return languages
|
||||
|
||||
def __call__(self, message, symbols={}, language=None, lazy=None):
|
||||
@@ -661,20 +711,18 @@ class translator(object):
|
||||
"""
|
||||
key = prefix+message
|
||||
mt = self.t.get(key, None)
|
||||
if mt is None:
|
||||
# we did not find a translation
|
||||
if message.find('##')>0 and not '\n' in message:
|
||||
# remove comments
|
||||
message = message.rsplit('##', 1)[0]
|
||||
# guess translation same as original
|
||||
self.t[key] = mt = message
|
||||
# update language file for later translation
|
||||
if self.language_file and not is_gae:
|
||||
write_dict(self.language_file, self.t)
|
||||
# fix backslash escaping
|
||||
mt = regex_backslash.sub(
|
||||
lambda m: m.group(1).translate(ttab_in), mt)
|
||||
return mt
|
||||
if mt is not None: return mt
|
||||
# we did not find a translation
|
||||
if message.find('##')>0 and not '\n' in message:
|
||||
# remove comments
|
||||
message = message.rsplit('##', 1)[0]
|
||||
# guess translation same as original
|
||||
self.t[key] = mt = self.default_t.get(key, message)
|
||||
# update language file for latter translation
|
||||
if self.language_file != self.default_language_file and not is_gae:
|
||||
write_dict(self.language_file, self.t)
|
||||
return regex_backslash.sub(
|
||||
lambda m: m.group(1).translate(ttab_in), mt)
|
||||
|
||||
def params_substitution(self, message, symbols):
|
||||
"""
|
||||
@@ -796,16 +844,16 @@ class translator(object):
|
||||
message = self.params_substitution(message, symbols)
|
||||
return message.translate(ttab_out)
|
||||
|
||||
def findT(path, language='en'):
|
||||
def findT(path, language=DEFAULT_LANGUAGE):
|
||||
"""
|
||||
must be run by the admin app
|
||||
"""
|
||||
lang_file = ospath.join(path, 'languages', language + '.py')
|
||||
lang_file = pjoin(path, 'languages', language + '.py')
|
||||
sentences = read_dict(lang_file)
|
||||
mp = ospath.join(path, 'models')
|
||||
cp = ospath.join(path, 'controllers')
|
||||
vp = ospath.join(path, 'views')
|
||||
mop = ospath.join(path, 'modules')
|
||||
mp = pjoin(path, 'models')
|
||||
cp = pjoin(path, 'controllers')
|
||||
vp = pjoin(path, 'views')
|
||||
mop = pjoin(path, 'modules')
|
||||
for filename in \
|
||||
listdir(mp, '^.+\.py$', 0)+listdir(cp, '^.+\.py$', 0)\
|
||||
+listdir(vp, '^.+\.html$', 0)+listdir(mop, '^.+\.py$', 0):
|
||||
@@ -827,10 +875,10 @@ def findT(path, language='en'):
|
||||
sentences[message] = message
|
||||
if not '!langcode!' in sentences:
|
||||
sentences['!langcode!'] = (
|
||||
'en' if language in ('default', 'en') else language)
|
||||
DEFAULT_LANGUAGE if language in ('default', DEFAULT_LANGUAGE) else language)
|
||||
if not '!langname!' in sentences:
|
||||
sentences['!langname!'] = (
|
||||
'English' if language in ('default', 'en')
|
||||
DEFAULT_LANGUAGE_NAME if language in ('default', DEFAULT_LANGUAGE)
|
||||
else sentences['!langcode!'])
|
||||
write_dict(lang_file, sentences)
|
||||
|
||||
@@ -843,9 +891,10 @@ copy_reg.pickle(lazyT, lazyT_pickle, lazyT_unpickle)
|
||||
|
||||
|
||||
def update_all_languages(application_path):
|
||||
path = ospath.join(application_path, 'languages/')
|
||||
for language in listdir(path, regex_langfile):
|
||||
findT(application_path, language[:-3])
|
||||
path = pjoin(application_path, 'languages/')
|
||||
for language in oslistdir(path):
|
||||
if regex_langfile.match(language):
|
||||
findT(application_path, language[:-3])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user