better languages.py, thanks Vladyslav

This commit is contained in:
mdipierro
2012-09-11 13:37:16 -05:00
parent 49c82bcd65
commit 9182e7a882
22 changed files with 1474 additions and 848 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.0.8 (2012-09-11 12:59:42) stable Version 2.0.8 (2012-09-11 13:37:13) stable
+7 -31
View File
@@ -22,10 +22,8 @@ except ImportError:
have_git = False have_git = False
GIT_MISSING = 'requires python-git module, but not installed or incompatible version' GIT_MISSING = 'requires python-git module, but not installed or incompatible version'
from gluon.languages import (regex_language, read_possible_languages, from gluon.languages import (read_possible_languages, read_dict, write_dict,
lang_sampling, read_plural_dict, write_plural_dict)
read_dict, write_dict, read_plural_dict,
write_plural_dict, PLURAL_RULES)
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']: 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(): def edit_plurals():
""" Edit plurals file """ """ Edit plurals file """
#import ipdb; ipdb.set_trace()
app = get_app() app = get_app()
filename = '/'.join(request.args) filename = '/'.join(request.args)
plurals = read_plural_dict(apath(filename, r=request)) # plural forms dictionary plurals = read_plural_dict(apath(filename, r=request)) # plural forms dictionary
@@ -949,30 +946,11 @@ def design():
statics.sort() statics.sort()
# Get all languages # Get all languages
all_languages=dict([(lang+'.py',info[0]) for lang,info languages=dict([(lang,info) for lang,info
in read_possible_languages(apath(app, r=request)).iteritems() in read_possible_languages(
if info[2]!=0]) # info[2] is langfile_mtime: apath(app, r=request)).iteritems()
# get only existed files if info[2]!=0]) # info[2] is langfile_mtime:
languages = sorted(all_languages) # get only existed files
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$')
#Get crontab #Get crontab
cronfolder = apath('%s/cron' % app, r=request) cronfolder = apath('%s/cron' % app, r=request)
@@ -1000,8 +978,6 @@ def design():
privates=filter_plugins(privates,plugins), privates=filter_plugins(privates,plugins),
statics=filter_plugins(statics,plugins), statics=filter_plugins(statics,plugins),
languages=languages, languages=languages,
plurals=plurals,
plural_rules=plural_rules,
crontab=crontab, crontab=crontab,
plugins=plugins) plugins=plugins)
+3
View File
@@ -14,6 +14,7 @@
'%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S', '%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S',
'(requires internet access)': '(потрібно мати доступ в інтернет)', '(requires internet access)': '(потрібно мати доступ в інтернет)',
'(something like "it-it")': '(щось схоже на "uk-ua")', '(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** %%{файл}', '@markmin\x01Searching: **%s** %%{file}': 'Знайдено: **%s** %%{файл}',
'Abort': 'Припинити', 'Abort': 'Припинити',
'About': 'Про', 'About': 'Про',
@@ -405,6 +406,7 @@
'ticket': 'позначка', 'ticket': 'позначка',
'Ticket': 'Позначка (Ticket)', 'Ticket': 'Позначка (Ticket)',
'Ticket ID': 'Ід.позначки (Ticket ID)', 'Ticket ID': 'Ід.позначки (Ticket ID)',
'Ticket Missing': 'Позначка (ticket) відсутня',
'tickets': 'позначки (tickets)', 'tickets': 'позначки (tickets)',
'Time in Cache (h:m:s)': 'Час в кеші (г:хв:сек)', 'Time in Cache (h:m:s)': 'Час в кеші (г:хв:сек)',
'to previous version.': 'до попередньої версії.', 'to previous version.': 'до попередньої версії.',
@@ -412,6 +414,7 @@
'To emulate a breakpoint programatically, write:': 'Для встановлення точки зупинки програмним чином напишіть:', 'To emulate a breakpoint programatically, write:': 'Для встановлення точки зупинки програмним чином напишіть:',
'to use the debugger!': 'щоб активувати ладнач!', 'to use the debugger!': 'щоб активувати ладнач!',
'toggle breakpoint': '+/- точку зупинки', 'toggle breakpoint': '+/- точку зупинки',
'Toggle Fullscreen': 'Перемкнути на весь екран',
'Traceback': 'Стек викликів (Traceback)', 'Traceback': 'Стек викликів (Traceback)',
'Translation strings for the application': 'Пари рядків <оригінал>:<переклад> для вибраної мови', 'Translation strings for the application': 'Пари рядків <оригінал>:<переклад> для вибраної мови',
'try something like': 'спробуйте щось схоже на', 'try something like': 'спробуйте щось схоже на',
+12 -17
View File
@@ -187,8 +187,9 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
</div> </div>
{{if not languages:}}<p><strong>{{=T("There are no translators, only default language is supported")}}</strong></p>{{pass}} {{if not languages:}}<p><strong>{{=T("There are no translators, only default language is supported")}}</strong></p>{{pass}}
<table> <table>
{{for file in languages:}} {{for lang in sorted(languages):
{{id="languages__"+file.replace('.','__')}} file = lang+'.py'
id = "languages__"+file.replace('.','__')}}
<tr id="{{=id}}"> <tr id="{{=id}}">
<td> <td>
<span class="filetools controls"> <span class="filetools controls">
@@ -203,24 +204,17 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
&nbsp; &nbsp;
( (
{{=T("Plural-Forms:")}} {{=T("Plural-Forms:")}}
{{p=plural_rules[file]}} {{p=languages[lang][3:7]}}
{{if p[0] == 0:}} {{if p[2] == 'default':}}
<b>{{=T("rules are not defined")}}</b>, <span class='error'>{{=T("rules are not defined")}}</span> {{=T.M("(file **gluon/contrib/plural_rules/%s.py** is not found)",lang[:2])}}
<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>
{{else:}} {{else:}}
{{if p[0] == 1:}} {{if p[3] == 1:}}
{{if p[3] == 'ok':}} {{=B(T("are not used"))}}
{{=B(T("are not used"))}},
{{else:}}
<span class='error'>{{=B(T("rules parsed with errors"))}}</span>,
{{pass}}
{{else:}} {{else:}}
{{pfile='plural-%s.py'%p[1]}} {{pfile=p[0]}}
{{if pfile in plurals:}} {{if p[1]!=0:}}
<span class="filetools controls"> <span class="filetools controls">
{{=editpluralsfile('languages',pfile,dict(nplurals=p[0]))}} {{=editpluralsfile('languages',pfile,dict(nplurals=p[3]))}}
</span> </span>
<span class="file"> <span class="file">
{{=peekfile('languages',pfile,dict(id=id))}} {{=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> </tr>
{{pass}} {{pass}}
</table> </table>
{{pass}}
<div class="controls formfield">{{=file_create_form('%s/languages/' % app, 'languages')}}{{=T('(something like "it-it")')}}</div> <div class="controls formfield">{{=file_create_form('%s/languages/' % app, 'languages')}}{{=T('(something like "it-it")')}}</div>
</div> </div>
+96 -38
View File
@@ -3,65 +3,139 @@
'!langcode!': 'cs-cz', '!langcode!': 'cs-cz',
'!langname!': 'Český', '!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', '"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} deleted': '%s zmazaných záznamů',
'%s %%{row} updated': '%s upravených záznamů', '%s %%{row} updated': '%s upravených záznamů',
'%s selected': '%s označených', '%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', '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?', 'Are you sure you want to delete this object?': 'Opravdu chceš odstranit tento objekt?',
'Available Databases and Tables': 'Dostupné databáze a tabuľky', '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é', 'Cannot be empty': 'Nemůže být prázdné',
'Change password': 'Změna hesla', 'Change password': 'Změna hesla',
'Check to delete': 'Označit ke smazání', 'Check to delete': 'Označit ke smazání',
'Check to delete:': 'Check to delete:', 'Check to delete:': 'Check to delete:',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Client IP': 'Client IP', 'Client IP': 'Client IP',
'Community': 'Community',
'Components and Plugins': 'Components and Plugins',
'Controller': 'Controller', 'Controller': 'Controller',
'Copyright': 'Copyright', 'Copyright': 'Copyright',
'Current request': 'Aktuální požadavek', 'Current request': 'Aktuální požadavek',
'Current response': 'Aktuální odpověď', 'Current response': 'Aktuální odpověď',
'Current session': 'Aktuální session', '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', 'DB Model': 'DB Model',
'Database': 'Databáze',
'Delete:': 'Smazat:', 'Delete:': 'Smazat:',
'Demo': 'Demo',
'Deployment Recipes': 'Deployment Recipes',
'Description': 'Popis', 'Description': 'Popis',
'design': 'návrh',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Dokumentáce', 'Documentation': 'Dokumentáce',
"Don't know what to do?": "Don't know what to do?",
'done!': 'hotovo!',
'Download': 'Download',
'E-mail': 'E-mail', 'E-mail': 'E-mail',
'Edit': 'Upravit', 'Edit': 'Upravit',
'Edit Profile': 'Upravit profil',
'Edit current record': 'Upravit aktuální záznam', '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', '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 %(group_id)s created': 'Skupina %(group_id)s vytvořena',
'Group ID': 'ID skupiny', 'Group ID': 'ID skupiny',
'Groups': 'Groups',
'Hello World': 'Ahoj světe', 'Hello World': 'Ahoj světe',
'Home': 'Home',
'How did you get here?': 'How did you get here?',
'import': 'import',
'Import/Export': 'Import/Export', 'Import/Export': 'Import/Export',
'Index': 'Index', 'Index': 'Index',
'insert new': 'vložit nový záznam ',
'insert new %s': 'vložit nový záznam %s',
'Internal State': 'Vnitřní stav', 'Internal State': 'Vnitřní stav',
'Invalid Query': 'Neplatná dotaz', 'Introduction': 'Introduction',
'Invalid email': 'Neplatný email', 'Invalid email': 'Neplatný email',
'Invalid password': 'Nesprávné heslo', 'Invalid password': 'Nesprávné heslo',
'Invalid Query': 'Neplatná dotaz',
'invalid request': 'Neplatný požadavek',
'Key': 'Key',
'Last name': 'Příjmení', 'Last name': 'Příjmení',
'Layout': 'Layout', 'Layout': 'Layout',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'Layouts',
'Live Chat': 'Live Chat',
'Logged in': 'Přihlášení úspěšné', 'Logged in': 'Přihlášení úspěšné',
'Logged out': 'Odhlášení úspěšné', 'Logged out': 'Odhlášení úspěšné',
'login': 'prihlásit',
'Login': 'Login', 'Login': 'Login',
'logout': 'odhlásit',
'Lost Password': 'Ztracené heslo?', 'Lost Password': 'Ztracené heslo?',
'lost password?': 'neznáš heslo?',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Menu Model', 'Menu Model': 'Menu Model',
'My Sites': 'My Sites',
'Name': 'Jméno', 'Name': 'Jméno',
'New Record': 'Nový záznam',
'New password': 'Nové heslo', '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', 'No databases in this application': 'V této aplikáci nejsou databáze',
'Object or table name': 'Objekt či tabulka', 'Object or table name': 'Objekt či tabulka',
'Old password': 'Staré heslo', 'Old password': 'Staré heslo',
'Online examples': 'pro online příklady klikněte sem', 'Online examples': 'pro online příklady klikněte sem',
'or import from csv file': 'a nebo naimportovat z csv souboru',
'Origin': 'Púvod', 'Origin': 'Púvod',
'Other Plugins': 'Other Plugins',
'Other Recipes': 'Other Recipes',
'Overview': 'Overview',
'password': 'heslo',
'Password': 'Heslo', 'Password': 'Heslo',
"Password fields don't match": 'Hesla se neshodují', "Password fields don't match": 'Hesla se neshodují',
'Plugins': 'Plugins',
'Powered by': 'Powered by', 'Powered by': 'Powered by',
'Preface': 'Preface',
'previous 100 rows': 'předchádzajících 100 řádků',
'profile': 'profil',
'Python': 'Python',
'Query:': 'Dotaz:', 'Query:': 'Dotaz:',
'Quick Examples': 'Quick Examples',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Readme': 'Nápověda', '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',
'Record id': 'id záznamu',
'Register': 'Zaregistrovat se', 'Register': 'Zaregistrovat se',
'register': 'registrovat',
'Registration identifier': 'Registrační identifikátor', 'Registration identifier': 'Registrační identifikátor',
'Registration key': 'Registrační kľíč', 'Registration key': 'Registrační kľíč',
'Remember me (for 30 days)': 'Zapamatuj si mne (na 30 dní)', 'Remember me (for 30 days)': 'Zapamatuj si mne (na 30 dní)',
@@ -70,14 +144,28 @@
'Role': 'Role', 'Role': 'Role',
'Rows in Table': 'řádků v tabulce', 'Rows in Table': 'řádků v tabulce',
'Rows selected': 'označených řádků', 'Rows selected': 'označených řádků',
'Semantic': 'Semantic',
'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'stav',
'Statistics': 'Statistics',
'Stylesheet': 'CSS', 'Stylesheet': 'CSS',
'submit': 'submit',
'Submit': 'Odeslat', 'Submit': 'Odeslat',
'Support': 'Support',
'Sure you want to delete this object?': 'Opravdu chceš smazat tento objekt?', 'Sure you want to delete this object?': 'Opravdu chceš smazat tento objekt?',
'Table': 'tabulka',
'Table name': 'Název tabulky', '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 "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 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', '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', 'Timestamp': 'Časové razítko',
'Twitter': 'Twitter',
'unable to parse csv file': 'nedá sa zpracovat csv soubor',
'Update:': 'Upravit:', '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ů.', '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', 'User %(id)s Logged-in': 'Uživatel %(id)s prihlásen',
@@ -89,43 +177,13 @@
'User ID': 'ID uživatele', 'User ID': 'ID uživatele',
'Username': 'Nick', 'Username': 'Nick',
'Verify Password': 'Zopakuj heslo', 'Verify Password': 'Zopakuj heslo',
'Videos': 'Videos',
'View': 'Zobrazit', 'View': 'Zobrazit',
'Welcome': 'Vítej', 'Welcome': 'Vítej',
'Welcome to web2py': 'Vitejte ve web2py', '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', '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 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 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', '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',
} }
+185 -127
View File
@@ -3,144 +3,28 @@
'!langcode!': 'es', '!langcode!': 'es',
'!langname!': 'Español', '!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', '"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} deleted': '%s filas eliminadas',
'%s %%{row} updated': '%s filas actualizadas', '%s %%{row} updated': '%s filas actualizadas',
'%s selected': '%s seleccionado(s)', '%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")', '(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': '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', '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.', 'about': 'acerca de',
'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', 'About application': 'Acerca de la aplicación',
'Admin is disabled because insecure channel': 'Admin deshabilitado, el canal no es seguro', 'Access Control': 'Access Control',
'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',
'additional code for your application': 'código adicional para su aplicación', 'additional code for your application': 'código adicional para su aplicación',
'admin disabled because no admin password': ' por falta de contraseña', '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 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 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 (required):': 'y renombrela (requerido):',
'and rename it:': ' y renombrelo:', 'and rename it:': ' y renombrelo:',
'appadmin': 'appadmin', 'appadmin': 'appadmin',
@@ -148,40 +32,98 @@
'application "%s" uninstalled': 'aplicación "%s" desinstalada', 'application "%s" uninstalled': 'aplicación "%s" desinstalada',
'application compiled': 'aplicación compilada', 'application compiled': 'aplicación compilada',
'application is compiled and cannot be designed': 'la aplicación está compilada y no puede ser modificada', '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': 'Cache',
'Cache Keys': 'Cache Keys',
'cache, errors and sessions cleaned': 'cache, errores y sesiones eliminados', '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 create file': 'no es posible crear archivo',
'cannot upload file "%(filename)s"': 'no es posible subir archivo "%(filename)s"', 'cannot upload file "%(filename)s"': 'no es posible subir archivo "%(filename)s"',
'Change Password': 'Cambie Contraseña',
'change password': 'cambie contraseña', 'change password': 'cambie contraseña',
'check all': 'marcar todos', 'check all': 'marcar todos',
'Check to delete': 'Marque para eliminar',
'clean': 'limpiar', 'clean': 'limpiar',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'click to check for upgrades': 'haga clic para buscar actualizaciones', 'click to check for upgrades': 'haga clic para buscar actualizaciones',
'Client IP': 'IP del Cliente',
'Community': 'Community',
'compile': 'compilar', 'compile': 'compilar',
'compiled application removed': 'aplicación compilada removida', 'compiled application removed': 'aplicación compilada removida',
'Components and Plugins': 'Components and Plugins',
'Controller': 'Controlador',
'Controllers': 'Controladores',
'controllers': 'controladores', 'controllers': 'controladores',
'Copyright': 'Derechos de autor',
'create file with filename:': 'cree archivo con nombre:', '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:', 'create new application:': 'nombre de la nueva aplicación:',
'crontab': 'crontab', 'crontab': 'crontab',
'Current request': 'Solicitud en curso',
'Current response': 'Respuesta en curso',
'Current session': 'Sesión en curso',
'currently saved or': 'actualmente guardado o', 'currently saved or': 'actualmente guardado o',
'customize me!': 'Adaptame!', 'customize me!': 'Adaptame!',
'data uploaded': 'datos subidos', 'data uploaded': 'datos subidos',
'Database': 'base de datos', 'Database': 'base de datos',
'Database %s select': 'selección en base de datos %s', 'Database %s select': 'selección en base de datos %s',
'database administration': 'administración base de datos', 'database administration': 'administración base de datos',
'Date and Time': 'Fecha y Hora',
'db': 'db', 'db': 'db',
'DB Model': 'Modelo "db"',
'defines tables': 'define tablas', 'defines tables': 'define tablas',
'Delete': 'Elimine',
'delete': 'eliminar', 'delete': 'eliminar',
'delete all checked': 'eliminar marcados', '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': '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!', 'done!': 'listo!',
'Download': 'Download',
'E-mail': 'Correo electrónico',
'EDIT': 'EDITAR',
'edit': 'editar', 'edit': 'editar',
'Edit': 'Editar',
'Edit application': 'Editar aplicación',
'edit controller': 'editar controlador', 'edit controller': 'editar controlador',
'Edit current record': 'Edite el registro actual',
'edit profile': 'editar perfil', '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', 'errors': 'errores',
'export as csv file': 'exportar como archivo CSV', 'export as csv file': 'exportar como archivo CSV',
'exposes': 'expone', 'exposes': 'expone',
'extends': 'extiende', 'extends': 'extiende',
'failed to reload module': 'recarga del módulo ha fallado', 'failed to reload module': 'recarga del módulo ha fallado',
'FAQ': 'FAQ',
'file "%(filename)s" created': 'archivo "%(filename)s" creado', 'file "%(filename)s" created': 'archivo "%(filename)s" creado',
'file "%(filename)s" deleted': 'archivo "%(filename)s" eliminado', 'file "%(filename)s" deleted': 'archivo "%(filename)s" eliminado',
'file "%(filename)s" uploaded': 'archivo "%(filename)s" subido', 'file "%(filename)s" uploaded': 'archivo "%(filename)s" subido',
@@ -191,70 +133,186 @@
'file does not exist': 'archivo no existe', 'file does not exist': 'archivo no existe',
'file saved on %(time)s': 'archivo guardado %(time)s', 'file saved on %(time)s': 'archivo guardado %(time)s',
'file saved on %s': 'archivo guardado %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', 'help': 'ayuda',
'Home': 'Home',
'How did you get here?': 'How did you get here?',
'htmledit': 'htmledit', 'htmledit': 'htmledit',
'import': 'import',
'Import/Export': 'Importar/Exportar',
'includes': 'incluye', 'includes': 'incluye',
'Index': 'Indice',
'insert new': 'inserte nuevo', 'insert new': 'inserte nuevo',
'insert new %s': 'inserte nuevo %s', 'insert new %s': 'inserte nuevo %s',
'Installed applications': 'Aplicaciones instaladas',
'internal error': 'error interno', '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 password': 'contraseña inválida',
'Invalid Query': 'Consulta inválida',
'invalid request': 'solicitud inválida', 'invalid request': 'solicitud inválida',
'invalid ticket': 'tiquete inválido', 'invalid ticket': 'tiquete inválido',
'Key': 'Key',
'language file "%(filename)s" created/updated': 'archivo de lenguaje "%(filename)s" creado/actualizado', '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': 'Lenguajes',
'languages updated': 'lenguajes actualizados', '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...', 'loading...': 'cargando...',
'login': 'inicio de sesión', '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',
'Logout': 'Fin de sesión',
'Lost Password': 'Contraseña perdida',
'lost password?': '¿olvido la contraseña?', 'lost password?': '¿olvido la contraseña?',
'Main Menu': 'Menú principal',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Modelo "menu"',
'merge': 'combinar', 'merge': 'combinar',
'Models': 'Modelos',
'models': 'modelos', 'models': 'modelos',
'Modules': 'Módulos',
'modules': 'módulos', 'modules': 'módulos',
'My Sites': 'My Sites',
'Name': 'Nombre',
'new application "%s" created': 'nueva aplicación "%s" creada', 'new application "%s" created': 'nueva aplicación "%s" creada',
'New Record': 'Registro nuevo',
'new record inserted': 'nuevo registro insertado', 'new record inserted': 'nuevo registro insertado',
'next 100 rows': '100 filas siguientes', '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 import from csv file': 'o importar desde archivo CSV',
'or provide application url:': 'o provea URL de la aplicación:', 'or provide application url:': 'o provea URL de la aplicación:',
'Origin': 'Origen',
'Original/Translation': 'Original/Traducción',
'Other Plugins': 'Other Plugins',
'Other Recipes': 'Other Recipes',
'Overview': 'Overview',
'pack all': 'empaquetar todo', 'pack all': 'empaquetar todo',
'pack compiled': 'empaquete compiladas', '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', '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': 'registro',
'record does not exist': 'el registro no existe', 'record does not exist': 'el registro no existe',
'Record ID': 'ID de Registro',
'Record id': 'id de registro', 'Record id': 'id de registro',
'Register': 'Registrese',
'register': 'registrese', 'register': 'registrese',
'Registration key': 'Contraseña de Registro',
'remove compiled': 'eliminar compiladas', 'remove compiled': 'eliminar compiladas',
'Reset Password key': 'Reset Password key',
'Resolve Conflict file': 'archivo Resolución de Conflicto',
'restore': 'restaurar', 'restore': 'restaurar',
'revert': 'revertir', 'revert': 'revertir',
'Role': 'Rol',
'Rows in Table': 'Filas en la tabla',
'Rows selected': 'Filas seleccionadas',
'save': 'guardar', 'save': 'guardar',
'Saved file hash:': 'Hash del archivo guardado:',
'Semantic': 'Semantic',
'Services': 'Services',
'session expired': 'sesión expirada', 'session expired': 'sesión expirada',
'shell': 'shell', 'shell': 'shell',
'site': 'sitio', 'site': 'sitio',
'Size of cache:': 'Size of cache:',
'some files could not be removed': 'algunos archivos no pudieron ser removidos', 'some files could not be removed': 'algunos archivos no pudieron ser removidos',
'state': 'estado', 'state': 'estado',
'static': 'estáticos', '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': 'tabla',
'Table name': 'Nombre de la tabla',
'test': 'probar', '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 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 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 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í', '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.', 'to previous version.': 'a la versión previa.',
'translation strings for the application': 'cadenas de caracteres de traducción para la aplicación', 'translation strings for the application': 'cadenas de caracteres de traducción para la aplicación',
'try': 'intente', 'try': 'intente',
'try something like': 'intente algo como', '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 create application "%s"': 'no es posible crear la aplicación "%s"',
'unable to delete file "%(filename)s"': 'no es posible eliminar el archivo "%(filename)s"', 'unable to delete file "%(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 parse csv file': 'no es posible analizar el archivo CSV',
'unable to uninstall "%s"': 'no es posible instalar "%s"', 'unable to uninstall "%s"': 'no es posible instalar "%s"',
'uncheck all': 'desmarcar todos', 'uncheck all': 'desmarcar todos',
'uninstall': 'desinstalar', 'uninstall': 'desinstalar',
'update': 'actualizar', 'update': 'actualizar',
'update all languages': 'actualizar todos los lenguajes', 'update all languages': 'actualizar todos los lenguajes',
'Update:': 'Actualice:',
'upload application:': 'subir aplicación:', 'upload application:': 'subir aplicación:',
'Upload existing application': 'Suba esta aplicación',
'upload file:': 'suba archivo:', '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', 'versioning': 'versiones',
'Videos': 'Videos',
'view': 'vista', 'view': 'vista',
'View': 'Vista',
'Views': 'Vistas',
'views': 'vistas', 'views': 'vistas',
'web2py Recent Tweets': 'Tweets Recientes de web2py',
'web2py is up to date': 'web2py está actualizado', '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',
} }
+69 -42
View File
@@ -3,42 +3,67 @@
'!langcode!': 'fr-ca', '!langcode!': 'fr-ca',
'!langname!': 'Français (Canadien)', '!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', '"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} deleted': '%s rangées supprimées',
'%s %%{row} updated': '%s rangées mises à jour', '%s %%{row} updated': '%s rangées mises à jour',
'%s selected': '%s sélectionné', '%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', 'About': 'À propos',
'Access Control': "Contrôle d'accès", 'Access Control': "Contrôle d'accès",
'Administrative Interface': 'Administrative Interface',
'Administrative interface': "Interface d'administration", 'Administrative interface': "Interface d'administration",
'Ajax Recipes': 'Recettes Ajax', '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?', 'Are you sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
'Authentication': 'Authentification', 'Authentication': 'Authentification',
'Available Databases and Tables': 'Bases de données et tables disponibles', 'Available Databases and Tables': 'Bases de données et tables disponibles',
'Buy this book': 'Acheter ce livre', 'Buy this book': 'Acheter ce livre',
'cache': 'cache',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': 'Ne peut pas être vide', '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',
'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', 'Client IP': 'IP client',
'Community': 'Communauté', 'Community': 'Communauté',
'Components and Plugins': 'Components and Plugins',
'Controller': 'Contrôleur', 'Controller': 'Contrôleur',
'Copyright': "Droit d'auteur", 'Copyright': "Droit d'auteur",
'Current request': 'Demande actuelle', 'Current request': 'Demande actuelle',
'Current response': 'Réponse actuelle', 'Current response': 'Réponse actuelle',
'Current session': 'Session en cours', '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', 'DB Model': 'Modèle DB',
'Database': 'Base de données',
'Delete:': 'Supprimer:', 'Delete:': 'Supprimer:',
'Demo': 'Démo', 'Demo': 'Démo',
'Deployment Recipes': 'Recettes de déploiement ', 'Deployment Recipes': 'Recettes de déploiement ',
'Description': 'Descriptif', 'Description': 'Descriptif',
'design': 'design',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Documentation', 'Documentation': 'Documentation',
"Don't know what to do?": "Don't know what to do?",
'done!': 'fait!',
'Download': 'Téléchargement', 'Download': 'Téléchargement',
'E-mail': 'Courriel', 'E-mail': 'Courriel',
'Edit': 'Éditer', 'Edit': 'Éditer',
'Edit This App': 'Modifier cette application',
'Edit current record': "Modifier l'enregistrement courant", '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', 'Errors': 'Erreurs',
'export as csv file': 'exporter sous forme de fichier csv',
'FAQ': 'faq', 'FAQ': 'faq',
'First name': 'Prénom', 'First name': 'Prénom',
'Forms and Validators': 'Formulaires et Validateurs', 'Forms and Validators': 'Formulaires et Validateurs',
@@ -50,44 +75,73 @@
'Groups': 'Groupes', 'Groups': 'Groupes',
'Hello World': 'Bonjour le monde', 'Hello World': 'Bonjour le monde',
'Home': 'Accueil', 'Home': 'Accueil',
'How did you get here?': 'How did you get here?',
'import': 'import',
'Import/Export': 'Importer/Exporter', 'Import/Export': 'Importer/Exporter',
'Index': 'Index', 'Index': 'Index',
'insert new': 'insérer un nouveau',
'insert new %s': 'insérer un nouveau %s',
'Internal State': 'État interne', 'Internal State': 'État interne',
'Introduction': 'Présentation', 'Introduction': 'Présentation',
'Invalid Query': 'Requête Invalide',
'Invalid email': 'Courriel invalide', 'Invalid email': 'Courriel invalide',
'Invalid Query': 'Requête Invalide',
'invalid request': 'requête invalide',
'Key': 'Key',
'Last name': 'Nom', 'Last name': 'Nom',
'Layout': 'Mise en page', 'Layout': 'Mise en page',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'layouts', 'Layouts': 'layouts',
'Live chat': 'Clavardage en direct', 'Live chat': 'Clavardage en direct',
'Live Chat': 'Live Chat',
'Logged in': 'Connecté', 'Logged in': 'Connecté',
'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?': 'mot de passe perdu?',
'Main Menu': 'Menu principal', 'Main Menu': 'Menu principal',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Menu modèle', 'Menu Model': 'Menu modèle',
'My Sites': 'My Sites',
'Name': 'Nom', 'Name': 'Nom',
'New Record': 'Nouvel enregistrement', '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", 'No databases in this application': "Cette application n'a pas de bases de données",
'Online examples': 'Exemples en ligne', 'Online examples': 'Exemples en ligne',
'or import from csv file': "ou importer d'un fichier CSV",
'Origin': 'Origine', 'Origin': 'Origine',
'Other Plugins': 'Other Plugins',
'Other Recipes': 'Autres recettes', 'Other Recipes': 'Autres recettes',
'Overview': 'Présentation', 'Overview': 'Présentation',
'password': 'mot de passe',
'Password': 'Mot de passe', 'Password': 'Mot de passe',
"Password fields don't match": 'Les mots de passe ne correspondent pas', "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', 'Plugins': 'Plugiciels',
'Powered by': 'Alimenté par', 'Powered by': 'Alimenté par',
'Preface': 'Préface', 'Preface': 'Préface',
'previous 100 rows': '100 lignes précédentes',
'profile': 'profile',
'Python': 'Python', 'Python': 'Python',
'Query:': 'Requête:', 'Query:': 'Requête:',
'Quick Examples': 'Examples Rapides', 'Quick Examples': 'Examples Rapides',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Readme': 'Lisez-moi', 'Readme': 'Lisez-moi',
'Recipes': 'Recettes', 'Recipes': 'Recettes',
'Record': 'enregistrement',
'Record %(id)s created': 'Record %(id)s created', 'Record %(id)s created': 'Record %(id)s created',
'Record %(id)s updated': 'Record %(id)s updated', 'Record %(id)s updated': 'Record %(id)s updated',
'Record Created': 'Record Created', 'Record Created': 'Record Created',
'record does not exist': "l'archive n'existe pas",
'Record ID': "ID d'enregistrement", 'Record ID': "ID d'enregistrement",
'Record id': "id d'enregistrement",
'Record Updated': 'Record Updated', 'Record Updated': 'Record Updated',
'Register': "S'inscrire", 'Register': "S'inscrire",
'register': "s'inscrire",
'Registration key': "Clé d'enregistrement", 'Registration key': "Clé d'enregistrement",
'Registration successful': 'Inscription réussie', 'Registration successful': 'Inscription réussie',
'Remember me (for 30 days)': 'Se souvenir de moi (pendant 30 jours)', 'Remember me (for 30 days)': 'Se souvenir de moi (pendant 30 jours)',
@@ -99,25 +153,33 @@
'Rows selected': 'Lignes sélectionnées', 'Rows selected': 'Lignes sélectionnées',
'Semantic': 'Sémantique', 'Semantic': 'Sémantique',
'Services': 'Services', 'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'état',
'Statistics': 'Statistics',
'Stylesheet': 'Feuille de style', 'Stylesheet': 'Feuille de style',
'submit': 'submit',
'Submit': 'Soumettre', 'Submit': 'Soumettre',
'Support': 'Soutien', 'Support': 'Soutien',
'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?', 'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
'Table': 'tableau',
'Table name': 'Nom du 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 "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 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 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 App': 'Cette Appli',
'This is a copy of the scaffolding application': "Ceci est une copie de l'application échafaudage", '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', 'Timestamp': 'Horodatage',
'Twitter': 'Twitter', 'Twitter': 'Twitter',
'unable to parse csv file': "incapable d'analyser le fichier cvs",
'Update:': 'Mise à jour:', '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.', '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 Logged-in': 'Utilisateur %(id)s connecté',
'User %(id)s Registered': 'Utilisateur %(id)s enregistré', 'User %(id)s Registered': 'Utilisateur %(id)s enregistré',
'User ID': 'ID utilisateur', 'User ID': 'ID utilisateur',
'User Voice': 'User Voice', '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', 'Verify Password': 'Vérifiez le mot de passe',
'Videos': 'Vidéos', 'Videos': 'Vidéos',
'View': 'Présentation', 'View': 'Présentation',
@@ -125,44 +187,9 @@
'Welcome': 'Bienvenu', 'Welcome': 'Bienvenu',
'Welcome %s': 'Bienvenue %s', 'Welcome %s': 'Bienvenue %s',
'Welcome to web2py': 'Bienvenue à web2py', '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', '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 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 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", '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',
} }
+21 -4
View File
@@ -19,10 +19,15 @@
'Available Databases and Tables': 'Bases de données et tables disponibles', 'Available Databases and Tables': 'Bases de données et tables disponibles',
'Buy this book': 'Acheter ce livre', 'Buy this book': 'Acheter ce livre',
'cache': 'cache', 'cache': 'cache',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': 'Ne peut pas être vide', 'Cannot be empty': 'Ne peut pas être vide',
'change password': 'changer le mot de passe', 'change password': 'changer le mot de passe',
'Check to delete': 'Cliquez pour supprimer', 'Check to delete': 'Cliquez pour supprimer',
'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', 'Client IP': 'IP client',
'Community': 'Communauté', 'Community': 'Communauté',
'Components and Plugins': 'Components and Plugins', 'Components and Plugins': 'Components and Plugins',
@@ -33,7 +38,6 @@
'Current session': 'Session en cours', 'Current session': 'Session en cours',
'customize me!': 'personnalisez-moi!', 'customize me!': 'personnalisez-moi!',
'data uploaded': 'données téléchargées', 'data uploaded': 'données téléchargées',
'Database': 'Base de données',
'Database': 'base de données', 'Database': 'base de données',
'Database %s select': 'base de données %s select', 'Database %s select': 'base de données %s select',
'db': 'db', 'db': 'db',
@@ -43,6 +47,9 @@
'Deployment Recipes': 'Recettes de déploiement', 'Deployment Recipes': 'Recettes de déploiement',
'Description': 'Description', 'Description': 'Description',
'design': 'design', 'design': 'design',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Documentation', 'Documentation': 'Documentation',
"Don't know what to do?": "Don't know what to do?", "Don't know what to do?": "Don't know what to do?",
'done!': 'fait!', 'done!': 'fait!',
@@ -66,6 +73,7 @@
'Hello World': 'Bonjour le monde', 'Hello World': 'Bonjour le monde',
'Home': 'Accueil', 'Home': 'Accueil',
'How did you get here?': 'How did you get here?', 'How did you get here?': 'How did you get here?',
'import': 'import',
'Import/Export': 'Importer/Exporter', 'Import/Export': 'Importer/Exporter',
'Index': 'Index', 'Index': 'Index',
'insert new': 'insérer un nouveau', 'insert new': 'insérer un nouveau',
@@ -75,20 +83,22 @@
'Invalid email': 'E-mail invalide', 'Invalid email': 'E-mail invalide',
'Invalid Query': 'Requête Invalide', 'Invalid Query': 'Requête Invalide',
'invalid request': 'requête invalide', 'invalid request': 'requête invalide',
'Key': 'Key',
'Last name': 'Nom', 'Last name': 'Nom',
'Layout': 'Mise en page', 'Layout': 'Mise en page',
'Layout Plugins': 'Layout Plugins', 'Layout Plugins': 'Layout Plugins',
'Layouts': 'Layouts', 'Layouts': 'Layouts',
'Live chat': 'Chat live', 'Live chat': 'Chat live',
'Live Chat': 'Live Chat', 'Live Chat': 'Live Chat',
'Login': 'Connectez-vous',
'login': 'connectez-vous', 'login': 'connectez-vous',
'Login': 'Connectez-vous',
'logout': 'dé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': 'Mot de passe perdu',
'lost password?': 'mot de passe perdu?',
'Lost password?': 'Lost password?', 'Lost password?': 'Lost password?',
'lost password?': 'mot de passe perdu?',
'Main Menu': 'Menu principal', 'Main Menu': 'Menu principal',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Menu modèle', 'Menu Model': 'Menu modèle',
'My Sites': 'My Sites', 'My Sites': 'My Sites',
'Name': 'Nom', 'Name': 'Nom',
@@ -112,12 +122,15 @@
'Python': 'Python', 'Python': 'Python',
'Query:': 'Requête:', 'Query:': 'Requête:',
'Quick Examples': 'Examples Rapides', 'Quick Examples': 'Examples Rapides',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Readme': 'Lisez-moi', 'Readme': 'Lisez-moi',
'Recipes': 'Recettes', 'Recipes': 'Recettes',
'Record': 'enregistrement', 'Record': 'enregistrement',
'record does not exist': "l'archive n'existe pas", 'record does not exist': "l'archive n'existe pas",
'Record id': "id d'enregistrement",
'Record ID': "ID d'enregistrement", 'Record ID': "ID d'enregistrement",
'Record id': "id d'enregistrement",
'Register': "S'inscrire", 'Register': "S'inscrire",
'register': "s'inscrire", 'register': "s'inscrire",
'Registration identifier': 'Registration identifier', 'Registration identifier': 'Registration identifier',
@@ -131,8 +144,11 @@
'Rows selected': 'Lignes sélectionnées', 'Rows selected': 'Lignes sélectionnées',
'Semantic': 'Sémantique', 'Semantic': 'Sémantique',
'Services': 'Services', 'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'état', 'state': 'état',
'Statistics': 'Statistics',
'Stylesheet': 'Feuille de style', 'Stylesheet': 'Feuille de style',
'submit': 'submit',
'Submit': 'Soumettre', 'Submit': 'Soumettre',
'Support': 'Support', 'Support': 'Support',
'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?', 'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
@@ -144,6 +160,7 @@
'The Views': 'Les Vues', 'The Views': 'Les Vues',
'This App': 'Cette Appli', 'This App': 'Cette Appli',
'This is a copy of the scaffolding application': "Ceci est une copie de l'application échafaudage", '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', 'Timestamp': 'Horodatage',
'Twitter': 'Twitter', 'Twitter': 'Twitter',
'unable to parse csv file': "incapable d'analyser le fichier cvs", 'unable to parse csv file': "incapable d'analyser le fichier cvs",
+105 -43
View File
@@ -3,85 +3,147 @@
'!langcode!': 'hi-in', '!langcode!': 'hi-in',
'!langname!': 'हिन्दी', '!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', '"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} deleted': '%s पंक्तियाँ मिटाएँ',
'%s %%{row} updated': '%s पंक्तियाँ अद्यतन', '%s %%{row} updated': '%s पंक्तियाँ अद्यतन',
'%s selected': '%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': 'प्रशासनिक इंटरफेस के लिए यहाँ क्लिक करें', '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': 'उपलब्ध डेटाबेस और तालिका', 'Available Databases and Tables': 'उपलब्ध डेटाबेस और तालिका',
'Buy this book': 'Buy this book',
'cache': 'cache',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': 'खाली नहीं हो सकता', 'Cannot be empty': 'खाली नहीं हो सकता',
'Change Password': 'पासवर्ड बदलें', 'Change Password': 'पासवर्ड बदलें',
'change password': 'change password',
'Check to delete': 'हटाने के लिए चुनें', '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', 'Controller': 'Controller',
'Copyright': 'Copyright', 'Copyright': 'Copyright',
'Current request': 'वर्तमान अनुरोध', 'Current request': 'वर्तमान अनुरोध',
'Current response': 'वर्तमान प्रतिक्रिया', 'Current response': 'वर्तमान प्रतिक्रिया',
'Current session': 'वर्तमान सेशन', '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!': 'मुझे अनुकूलित (कस्टमाइज़) करें!', 'customize me!': 'मुझे अनुकूलित (कस्टमाइज़) करें!',
'data uploaded': 'डाटा अपलोड सम्पन्न ', 'data uploaded': 'डाटा अपलोड सम्पन्न ',
'Database': 'डेटाबेस', 'Database': 'डेटाबेस',
'Database %s select': 'डेटाबेस %s चुनी हुई', 'Database %s select': 'डेटाबेस %s चुनी हुई',
'db': 'db', 'db': 'db',
'DB Model': 'DB Model',
'Delete:': 'मिटाना:',
'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!': 'हो गया!', 'done!': 'हो गया!',
'Download': 'Download',
'Edit': 'Edit',
'Edit current record': 'वर्तमान रेकॉर्ड संपादित करें ',
'edit profile': 'edit profile', '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 फ़ाइल के रूप में निर्यात', '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': 'नया डालें',
'insert new %s': 'नया %s डालें', 'insert new %s': 'नया %s डालें',
'Internal State': 'आंतरिक स्थिति',
'Introduction': 'Introduction',
'Invalid Query': 'अमान्य प्रश्न',
'invalid request': 'अवैध अनुरोध', 'invalid request': 'अवैध अनुरोध',
'Key': 'Key',
'Layout': 'Layout',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'Layouts',
'Live Chat': 'Live Chat',
'login': 'login', 'login': 'login',
'Login': 'लॉग इन',
'logout': 'logout', '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': 'नया रेकॉर्ड डाला', 'new record inserted': 'नया रेकॉर्ड डाला',
'next 100 rows': 'अगले 100 पंक्तियाँ', 'next 100 rows': 'अगले 100 पंक्तियाँ',
'No databases in this application': 'इस अनुप्रयोग में कोई डेटाबेस नहीं हैं',
'Online examples': 'ऑनलाइन उदाहरण के लिए यहाँ क्लिक करें',
'or import from csv file': 'या csv फ़ाइल से आयात', '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 पंक्तियाँ', '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': 'Record',
'record does not exist': 'रिकॉर्ड मौजूद नहीं है', 'record does not exist': 'रिकॉर्ड मौजूद नहीं है',
'Record id': 'रिकॉर्ड पहचानकर्ता (आईडी)', 'Record id': 'रिकॉर्ड पहचानकर्ता (आईडी)',
'Register': 'पंजीकृत (रजिस्टर) करना ',
'register': 'register', 'register': 'register',
'Rows in Table': 'तालिका में पंक्तियाँ ',
'Rows selected': 'चयनित (चुने गये) पंक्तियाँ ',
'Semantic': 'Semantic',
'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'स्थिति', 'state': 'स्थिति',
'Statistics': 'Statistics',
'Stylesheet': 'Stylesheet',
'submit': 'submit',
'Support': 'Support',
'Sure you want to delete this object?': 'सुनिश्चित हैं कि आप इस वस्तु को हटाना चाहते हैं?',
'Table': 'तालिका', '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 फ़ाइल पार्स करने में असमर्थ', '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',
} }
+117 -53
View File
@@ -3,96 +3,160 @@
'!langcode!': 'hu', '!langcode!': 'hu',
'!langname!': 'Magyar', '!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', '"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} deleted': '%s sorok törlődtek',
'%s %%{row} updated': '%s sorok frissítődtek', '%s %%{row} updated': '%s sorok frissítődtek',
'%s selected': '%s kiválasztott', '%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', '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', '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', 'Cannot be empty': 'Nem lehet üres',
'change password': 'jelszó megváltoztatása',
'Check to delete': 'Törléshez válaszd ki', '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', 'Client IP': 'Client IP',
'Community': 'Community',
'Components and Plugins': 'Components and Plugins',
'Controller': 'Controller', 'Controller': 'Controller',
'Copyright': 'Copyright', 'Copyright': 'Copyright',
'Current request': 'Jelenlegi lekérdezés', 'Current request': 'Jelenlegi lekérdezés',
'Current response': 'Jelenlegi válasz', 'Current response': 'Jelenlegi válasz',
'Current session': 'Jelenlegi folyamat', '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!', 'customize me!': 'változtass meg!',
'data uploaded': 'adat feltöltve', 'data uploaded': 'adat feltöltve',
'Database': 'adatbázis', 'Database': 'adatbázis',
'Database %s select': 'adatbázis %s kiválasztás', 'Database %s select': 'adatbázis %s kiválasztás',
'db': 'db', 'db': 'db',
'DB Model': 'DB Model',
'Delete:': 'Töröl:',
'Demo': 'Demo',
'Deployment Recipes': 'Deployment Recipes',
'Description': 'Description',
'design': 'design', '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!', '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 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', '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': 'új beillesztése',
'insert new %s': 'új beillesztése %s', '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', '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', 'login': 'belép',
'logout': 'kilép', 'logout': 'kilép',
'lost password': 'elveszett jelszó', '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', 'new record inserted': 'új bejegyzés felvéve',
'next 100 rows': 'következő 100 sor', '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', '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', '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': 'bejegyzés',
'record does not exist': 'bejegyzés nem létezik', 'record does not exist': 'bejegyzés nem létezik',
'Record ID': 'Record ID',
'Record id': 'bejegyzés id', 'Record id': 'bejegyzés id',
'Register': 'Register',
'register': 'regisztráció', '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', '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': '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', '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',
} }
+8
View File
@@ -20,6 +20,8 @@
'Available Databases and Tables': 'Database e tabelle disponibili', 'Available Databases and Tables': 'Database e tabelle disponibili',
'Buy this book': 'Buy this book', 'Buy this book': 'Buy this book',
'cache': 'cache', 'cache': 'cache',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': 'Non può essere vuoto', 'Cannot be empty': 'Non può essere vuoto',
'change password': 'Cambia password', 'change password': 'Cambia password',
'Check to delete': 'Seleziona per cancellare', 'Check to delete': 'Seleziona per cancellare',
@@ -49,6 +51,7 @@
'Description': 'Descrizione', 'Description': 'Descrizione',
'design': 'progetta', 'design': 'progetta',
'DISK': 'DISK', 'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared', 'Disk Cleared': 'Disk Cleared',
'Documentation': 'Documentazione', 'Documentation': 'Documentazione',
"Don't know what to do?": "Don't know what to do?", "Don't know what to do?": "Don't know what to do?",
@@ -90,6 +93,7 @@
'Invalid Query': 'Richiesta (query) non valida', 'Invalid Query': 'Richiesta (query) non valida',
'invalid request': 'richiesta non valida', 'invalid request': 'richiesta non valida',
'Is Active': 'Is Active', 'Is Active': 'Is Active',
'Key': 'Key',
'Last name': 'Cognome', 'Last name': 'Cognome',
'Layout': 'Layout', 'Layout': 'Layout',
'Layout Plugins': 'Layout Plugins', 'Layout Plugins': 'Layout Plugins',
@@ -136,6 +140,7 @@
'Query:': 'Richiesta (query):', 'Query:': 'Richiesta (query):',
'Quick Examples': 'Quick Examples', 'Quick Examples': 'Quick Examples',
'RAM': 'RAM', 'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared', 'Ram Cleared': 'Ram Cleared',
'Recipes': 'Recipes', 'Recipes': 'Recipes',
'Record': 'Record', 'Record': 'Record',
@@ -154,7 +159,9 @@
'Rows selected': 'Righe selezionate', 'Rows selected': 'Righe selezionate',
'Semantic': 'Semantic', 'Semantic': 'Semantic',
'Services': 'Services', 'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'stato', 'state': 'stato',
'Statistics': 'Statistics',
'Stylesheet': 'Foglio di stile (stylesheet)', 'Stylesheet': 'Foglio di stile (stylesheet)',
'submit': 'submit', 'submit': 'submit',
'Submit': 'Submit', 'Submit': 'Submit',
@@ -168,6 +175,7 @@
'The Views': 'The Views', 'The Views': 'The Views',
'This App': 'This App', 'This App': 'This App',
'This is a copy of the scaffolding application': "Questa è una copia dell'applicazione di base (scaffold)", '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)', 'Timestamp': 'Ora (timestamp)',
'too short': 'too short', 'too short': 'too short',
'Twitter': 'Twitter', 'Twitter': 'Twitter',
+3 -3
View File
@@ -2,6 +2,7 @@
{ {
'!langcode!': 'nl', '!langcode!': 'nl',
'!langname!': 'Nederlands', '!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', '%(nrows)s records found': '%(nrows)s records gevonden',
'%d days ago': '%d dagen geleden', '%d days ago': '%d dagen geleden',
'%d weeks ago': '%d weken gelden', '%d weeks ago': '%d weken gelden',
@@ -95,7 +96,6 @@
'customize me!': 'pas me aan!', 'customize me!': 'pas me aan!',
'data uploaded': 'data geupload', 'data uploaded': 'data geupload',
'Database': 'Database', 'Database': 'Database',
'Database': 'Database',
'Database %s select': 'Database %s select', 'Database %s select': 'Database %s select',
'database administration': 'database administratie', 'database administration': 'database administratie',
'Date and Time': 'Datum en Tijd', 'Date and Time': 'Datum en Tijd',
@@ -181,8 +181,8 @@
'Introduction': 'Introductie', 'Introduction': 'Introductie',
'Invalid action': 'Ongeldige actie', 'Invalid action': 'Ongeldige actie',
'Invalid email': 'Ongeldig emailadres', 'Invalid email': 'Ongeldig emailadres',
'Invalid password': 'Ongeldig wachtwoord',
'invalid password': 'ongeldig wachtwoord', 'invalid password': 'ongeldig wachtwoord',
'Invalid password': 'Ongeldig wachtwoord',
'Invalid Query': 'Ongeldige Query', 'Invalid Query': 'Ongeldige Query',
'invalid request': 'ongeldige request', 'invalid request': 'ongeldige request',
'invalid ticket': 'ongeldige ticket', 'invalid ticket': 'ongeldige ticket',
@@ -262,8 +262,8 @@
'Recipes': 'Recepten', 'Recipes': 'Recepten',
'Record': 'Record', 'Record': 'Record',
'record does not exist': 'record bestaat niet', 'record does not exist': 'record bestaat niet',
'Record id': 'Record id',
'Record ID': 'Record ID', 'Record ID': 'Record ID',
'Record id': 'Record id',
'register': 'registreer', 'register': 'registreer',
'Register': 'Registreer', 'Register': 'Registreer',
'Registration identifier': 'Registratie identifier', 'Registration identifier': 'Registratie identifier',
+124 -62
View File
@@ -3,107 +3,169 @@
'!langcode!': 'pl', '!langcode!': 'pl',
'!langname!': 'Polska', '!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:', '"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} deleted': 'Wierszy usuniętych: %s',
'%s %%{row} updated': 'Wierszy uaktualnionych: %s', '%s %%{row} updated': 'Wierszy uaktualnionych: %s',
'%s selected': '%s wybranych', '%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', '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', 'Authentication': 'Uwierzytelnienie',
'Available Databases and Tables': 'Dostępne bazy danych i tabele', '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', 'Cannot be empty': 'Nie może być puste',
'Change Password': 'Zmień hasło', 'Change Password': 'Zmień hasło',
'change password': 'change password',
'Check to delete': 'Zaznacz aby usunąć', 'Check to delete': 'Zaznacz aby usunąć',
'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', 'Client IP': 'IP klienta',
'Community': 'Community',
'Components and Plugins': 'Components and Plugins',
'Controller': 'Kontroler', 'Controller': 'Kontroler',
'Copyright': 'Copyright', 'Copyright': 'Copyright',
'Current request': 'Aktualne żądanie', 'Current request': 'Aktualne żądanie',
'Current response': 'Aktualna odpowiedź', 'Current response': 'Aktualna odpowiedź',
'Current session': 'Aktualna sesja', '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!', 'customize me!': 'dostosuj mnie!',
'data uploaded': 'dane wysłane', 'data uploaded': 'dane wysłane',
'Database': 'baza danych', 'Database': 'baza danych',
'Database %s select': 'wybór z bazy danych %s', 'Database %s select': 'wybór z bazy danych %s',
'db': 'baza danych', 'db': 'baza danych',
'DB Model': 'Model bazy danych',
'Delete:': 'Usuń:',
'Demo': 'Demo',
'Deployment Recipes': 'Deployment Recipes',
'Description': 'Opis',
'design': 'projektuj', '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!', 'done!': 'zrobione!',
'Download': 'Download',
'E-mail': 'Adres e-mail',
'Edit': 'Edycja',
'Edit current record': 'Edytuj obecny rekord',
'edit profile': 'edit profile', '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', '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': 'wstaw nowy rekord tabeli',
'insert new %s': 'wstaw nowy rekord do tabeli %s', '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', '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': 'login',
'Login': 'Zaloguj',
'logout': 'logout', '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', 'new record inserted': 'nowy rekord został wstawiony',
'next 100 rows': 'następne 100 wierszy', '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', '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', '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': 'rekord',
'record does not exist': 'rekord nie istnieje', 'record does not exist': 'rekord nie istnieje',
'Record ID': 'ID rekordu',
'Record id': 'id rekordu', 'Record id': 'id rekordu',
'Register': 'Zarejestruj',
'register': 'register', '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', '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': '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', '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',
} }
+63 -35
View File
@@ -3,39 +3,63 @@
'!langcode!': 'pt-br', '!langcode!': 'pt-br',
'!langname!': 'Português (do Brasil)', '!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', '"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} deleted': '%s linhas apagadas',
'%s %%{row} updated': '%s linhas atualizadas', '%s %%{row} updated': '%s linhas atualizadas',
'%s selected': '%s selecionado', '%s selected': '%s selecionado',
'%Y-%m-%d': '%d-%m-%Y',
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
'About': 'About', 'About': 'About',
'Access Control': 'Access Control', 'Access Control': 'Access Control',
'Administrative Interface': 'Administrative Interface',
'Administrative interface': 'Interface administrativa', 'Administrative interface': 'Interface administrativa',
'Ajax Recipes': 'Ajax Recipes', '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', 'Available Databases and Tables': 'Bancos de dados e tabelas disponíveis',
'Buy this book': 'Buy this book', 'Buy this book': 'Buy this book',
'cache': 'cache',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': 'Não pode ser vazio', 'Cannot be empty': 'Não pode ser vazio',
'change password': 'modificar senha',
'Check to delete': 'Marque para apagar', 'Check to delete': 'Marque para apagar',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Client IP': 'Client IP', 'Client IP': 'Client IP',
'Community': 'Community', 'Community': 'Community',
'Components and Plugins': 'Components and Plugins',
'Controller': 'Controlador', 'Controller': 'Controlador',
'Copyright': 'Copyright', 'Copyright': 'Copyright',
'Current request': 'Requisição atual', 'Current request': 'Requisição atual',
'Current response': 'Resposta atual', 'Current response': 'Resposta atual',
'Current session': 'Sessão 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', 'DB Model': 'Modelo BD',
'Database': 'Banco de dados',
'Delete:': 'Apagar:', 'Delete:': 'Apagar:',
'Demo': 'Demo', 'Demo': 'Demo',
'Deployment Recipes': 'Deployment Recipes', 'Deployment Recipes': 'Deployment Recipes',
'Description': 'Description', 'Description': 'Description',
'design': 'design',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Documentation', 'Documentation': 'Documentation',
"Don't know what to do?": "Don't know what to do?",
'done!': 'concluído!',
'Download': 'Download', 'Download': 'Download',
'E-mail': 'E-mail', 'E-mail': 'E-mail',
'Edit': 'Editar', 'Edit': 'Editar',
'Edit This App': 'Edit This App',
'Edit current record': 'Editar o registro atual', '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', 'Errors': 'Errors',
'export as csv file': 'exportar como um arquivo csv',
'FAQ': 'FAQ', 'FAQ': 'FAQ',
'First name': 'First name', 'First name': 'First name',
'Forms and Validators': 'Forms and Validators', 'Forms and Validators': 'Forms and Validators',
@@ -44,37 +68,62 @@
'Groups': 'Groups', 'Groups': 'Groups',
'Hello World': 'Olá Mundo', 'Hello World': 'Olá Mundo',
'Home': 'Home', 'Home': 'Home',
'How did you get here?': 'How did you get here?',
'import': 'import',
'Import/Export': 'Importar/Exportar', 'Import/Export': 'Importar/Exportar',
'Index': 'Início', 'Index': 'Início',
'insert new': 'inserir novo',
'insert new %s': 'inserir novo %s',
'Internal State': 'Estado Interno', 'Internal State': 'Estado Interno',
'Introduction': 'Introduction', 'Introduction': 'Introduction',
'Invalid Query': 'Consulta Inválida',
'Invalid email': 'Invalid email', 'Invalid email': 'Invalid email',
'Invalid Query': 'Consulta Inválida',
'invalid request': 'requisição inválida',
'Key': 'Key',
'Last name': 'Last name', 'Last name': 'Last name',
'Layout': 'Layout', 'Layout': 'Layout',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'Layouts', 'Layouts': 'Layouts',
'Live chat': 'Live chat', 'Live chat': 'Live chat',
'Live Chat': 'Live Chat',
'login': 'Entrar',
'Login': 'Autentique-se', 'Login': 'Autentique-se',
'logout': 'Sair',
'Lost Password': 'Esqueceu sua senha?', 'Lost Password': 'Esqueceu sua senha?',
'lost password?': 'lost password?',
'Main Menu': 'Menu Principal', 'Main Menu': 'Menu Principal',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Modelo de Menu', 'Menu Model': 'Modelo de Menu',
'My Sites': 'My Sites',
'Name': 'Name', 'Name': 'Name',
'New Record': 'Novo Registro', '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', 'No databases in this application': 'Sem bancos de dados nesta aplicação',
'Online examples': 'Alguns exemplos', 'Online examples': 'Alguns exemplos',
'or import from csv file': 'ou importar de um arquivo csv',
'Origin': 'Origin', 'Origin': 'Origin',
'Other Plugins': 'Other Plugins',
'Other Recipes': 'Other Recipes', 'Other Recipes': 'Other Recipes',
'Overview': 'Overview', 'Overview': 'Overview',
'Password': 'Password', 'Password': 'Password',
'Plugins': 'Plugins', 'Plugins': 'Plugins',
'Powered by': 'Powered by', 'Powered by': 'Powered by',
'Preface': 'Preface', 'Preface': 'Preface',
'previous 100 rows': '100 linhas anteriores',
'Python': 'Python', 'Python': 'Python',
'Query:': 'Consulta:', 'Query:': 'Consulta:',
'Quick Examples': 'Quick Examples', 'Quick Examples': 'Quick Examples',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Recipes': 'Recipes', 'Recipes': 'Recipes',
'Record': 'registro',
'record does not exist': 'registro não existe',
'Record ID': 'Record ID', 'Record ID': 'Record ID',
'Record id': 'id do registro',
'Register': 'Registre-se', 'Register': 'Registre-se',
'register': 'Registre-se',
'Registration key': 'Registration key', 'Registration key': 'Registration key',
'Reset Password key': 'Reset Password key', 'Reset Password key': 'Reset Password key',
'Resources': 'Resources', 'Resources': 'Resources',
@@ -83,18 +132,25 @@
'Rows selected': 'Linhas selecionadas', 'Rows selected': 'Linhas selecionadas',
'Semantic': 'Semantic', 'Semantic': 'Semantic',
'Services': 'Services', 'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'estado',
'Statistics': 'Statistics',
'Stylesheet': 'Stylesheet', 'Stylesheet': 'Stylesheet',
'submit': 'submit',
'Support': 'Support', 'Support': 'Support',
'Sure you want to delete this object?': 'Está certo(a) que deseja apagar esse objeto ?', 'Sure you want to delete this object?': 'Está certo(a) que deseja apagar esse objeto ?',
'Table': 'tabela',
'Table name': 'Table name', '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 "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 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 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 App': 'This App',
'This is a copy of the scaffolding application': 'This is a copy of the scaffolding application', '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', 'Timestamp': 'Timestamp',
'Twitter': 'Twitter', 'Twitter': 'Twitter',
'unable to parse csv file': 'não foi possível analisar arquivo csv',
'Update:': 'Atualizar:', '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.', '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', 'User ID': 'User ID',
@@ -105,38 +161,10 @@
'Welcome': 'Welcome', 'Welcome': 'Welcome',
'Welcome %s': 'Vem vindo %s', 'Welcome %s': 'Vem vindo %s',
'Welcome to web2py': 'Bem vindo ao web2py', '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', '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 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 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', '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',
} }
+119 -56
View File
@@ -3,119 +3,182 @@
'!langcode!': 'pt', '!langcode!': 'pt',
'!langname!': 'Português', '!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', '"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} deleted': '%s linhas eliminadas',
'%s %%{row} updated': '%s linhas actualizadas', '%s %%{row} updated': '%s linhas actualizadas',
'%s selected': '%s seleccionado(s)', '%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', 'About': 'About',
'Access Control': 'Access Control',
'Administrative Interface': 'Administrative Interface',
'Administrative interface': 'Painel administrativo', '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': 'Author Reference Auth User',
'Author Reference Auth User.username': 'Author Reference Auth User.username', 'Author Reference Auth User.username': 'Author Reference Auth User.username',
'Available Databases and Tables': 'bases de dados e tabelas disponíveis', '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', 'Cannot be empty': 'não pode ser vazio',
'Category Create': 'Category Create', 'Category Create': 'Category Create',
'Category Select': 'Category Select', 'Category Select': 'Category Select',
'change password': 'alterar palavra-chave',
'Check to delete': 'seleccione para eliminar', 'Check to delete': 'seleccione para eliminar',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Comment Create': 'Comment Create', 'Comment Create': 'Comment Create',
'Comment Select': 'Comment Select', 'Comment Select': 'Comment Select',
'Community': 'Community',
'Components and Plugins': 'Components and Plugins',
'Content': 'Content', 'Content': 'Content',
'Controller': 'Controlador', 'Controller': 'Controlador',
'Copyright': 'Direitos de cópia', '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 By': 'Created By',
'Created On': 'Created On', 'Created On': 'Created On',
'Current request': 'pedido currente', 'Current request': 'pedido currente',
'Current response': 'resposta currente', 'Current response': 'resposta currente',
'Current session': 'sessão 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!', 'customize me!': 'Personaliza-me!',
'data uploaded': 'informação enviada', 'data uploaded': 'informação enviada',
'Database': 'base de dados', 'Database': 'base de dados',
'Database %s select': 'selecção de base de dados %s', 'Database %s select': 'selecção de base de dados %s',
'db': 'bd', 'db': 'bd',
'DB Model': 'Modelo de BD',
'Delete:': 'Eliminar:',
'Demo': 'Demo',
'Deployment Recipes': 'Deployment Recipes',
'design': 'design', '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!', 'done!': 'concluído!',
'Download': 'Download',
'Edit': 'Editar',
'edit category': 'edit category', 'edit category': 'edit category',
'edit comment': 'edit comment', 'edit comment': 'edit comment',
'Edit current record': 'Edição de registo currente',
'edit post': 'edit post', 'edit post': 'edit post',
'edit profile': 'Editar perfil', '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', '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': 'inserir novo',
'insert new %s': 'inserir novo %s', 'insert new %s': 'inserir novo %s',
'Internal State': 'Estado interno',
'Introduction': 'Introduction',
'Invalid Query': 'Consulta Inválida',
'invalid request': 'Pedido Inválido', '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', 'login': 'login',
'logout': 'logout', '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', 'new record inserted': 'novo registo inserido',
'next 100 rows': 'próximas 100 linhas', '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', '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', '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': 'registo',
'record does not exist': 'registo inexistente', 'record does not exist': 'registo inexistente',
'Record id': 'id de registo', 'Record id': 'id de registo',
'Register': 'Register',
'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 category': 'search category',
'search comment': 'search comment', 'search comment': 'search comment',
'search post': 'search post', 'search post': 'search post',
'select category': 'select category', 'select category': 'select category',
'select comment': 'select comment', 'select comment': 'select comment',
'select post': 'select post', 'select post': 'select post',
'Semantic': 'Semantic',
'Services': 'Services',
'show category': 'show category', 'show category': 'show category',
'show comment': 'show comment', 'show comment': 'show comment',
'show post': 'show post', 'show post': 'show post',
'Size of cache:': 'Size of cache:',
'state': 'estado', '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', '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', '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',
} }
+16 -2
View File
@@ -56,6 +56,7 @@
'Available Databases and Tables': 'Baze de date și tabele disponibile', 'Available Databases and Tables': 'Baze de date și tabele disponibile',
'Back': 'Înapoi', 'Back': 'Înapoi',
'Buy this book': 'Cumpără această carte', 'Buy this book': 'Cumpără această carte',
'Cache': 'Cache',
'cache': 'cache', 'cache': 'cache',
'Cache Keys': 'Chei cache', 'Cache Keys': 'Chei cache',
'cache, errors and sessions cleaned': 'cache, erori și sesiuni golite', 'cache, errors and sessions cleaned': 'cache, erori și sesiuni golite',
@@ -70,6 +71,9 @@
'Check to delete': 'Coșați pentru a șterge', 'Check to delete': 'Coșați pentru a șterge',
'clean': 'golire', 'clean': 'golire',
'Clear': 'Golește', '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', 'click to check for upgrades': 'Clic pentru a verifica dacă există upgrade-uri',
'Client IP': 'IP client', 'Client IP': 'IP client',
'Community': 'Comunitate', 'Community': 'Comunitate',
@@ -91,7 +95,6 @@
'currently saved or': 'în prezent salvat sau', 'currently saved or': 'în prezent salvat sau',
'customize me!': 'Personalizează-mă!', 'customize me!': 'Personalizează-mă!',
'data uploaded': 'date încărcate', 'data uploaded': 'date încărcate',
'Database': 'Baza de date',
'Database': 'bază de date', 'Database': 'bază de date',
'Database %s select': 'selectare bază de date %s', 'Database %s select': 'selectare bază de date %s',
'database administration': 'administrare bază de date', 'database administration': 'administrare bază de date',
@@ -110,7 +113,9 @@
'design': 'design', 'design': 'design',
'DESIGN': 'DESIGN', 'DESIGN': 'DESIGN',
'Design for': 'Design pentru', 'Design for': 'Design pentru',
'DISK': 'DISK',
'Disk Cache Keys': 'Chei cache de disc', 'Disk Cache Keys': 'Chei cache de disc',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Documentație', 'Documentation': 'Documentație',
"Don't know what to do?": 'Nu știți ce să faceți?', "Don't know what to do?": 'Nu știți ce să faceți?',
'done!': 'gata!', 'done!': 'gata!',
@@ -164,6 +169,7 @@
'Home': 'Acasă', 'Home': 'Acasă',
'How did you get here?': 'Cum ați ajuns aici?', 'How did you get here?': 'Cum ați ajuns aici?',
'htmledit': 'editare html', 'htmledit': 'editare html',
'import': 'import',
'Import/Export': 'Import/Export', 'Import/Export': 'Import/Export',
'includes': 'include', 'includes': 'include',
'Index': 'Index', 'Index': 'Index',
@@ -180,6 +186,7 @@
'Invalid Query': 'Interogare invalidă', 'Invalid Query': 'Interogare invalidă',
'invalid request': 'cerere invalidă', 'invalid request': 'cerere invalidă',
'invalid ticket': 'tichet invalid', 'invalid ticket': 'tichet invalid',
'Key': 'Key',
'language file "%(filename)s" created/updated': 'fișier de limbă "%(filename)s" creat/actualizat', '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', 'Language files (static strings) updated': 'Fișierele de limbă (șirurile statice de caractere) actualizate',
'languages': 'limbi', 'languages': 'limbi',
@@ -203,6 +210,7 @@
'Lost Password': 'Parolă pierdută', 'Lost Password': 'Parolă pierdută',
'Lost password?': 'Parolă pierdută?', 'Lost password?': 'Parolă pierdută?',
'Main Menu': 'Meniu principal', 'Main Menu': 'Meniu principal',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Model meniu', 'Menu Model': 'Model meniu',
'merge': 'unește', 'merge': 'unește',
'Models': 'Modele', 'Models': 'Modele',
@@ -245,12 +253,14 @@
'Query': 'Interogare', 'Query': 'Interogare',
'Query:': 'Interogare:', 'Query:': 'Interogare:',
'Quick Examples': 'Exemple rapide', 'Quick Examples': 'Exemple rapide',
'RAM': 'RAM',
'RAM Cache Keys': 'Chei cache RAM', 'RAM Cache Keys': 'Chei cache RAM',
'Ram Cleared': 'Ram Cleared',
'Recipes': 'Rețete', 'Recipes': 'Rețete',
'Record': 'înregistrare', 'Record': 'înregistrare',
'record does not exist': 'înregistrare inexistentă', 'record does not exist': 'înregistrare inexistentă',
'Record id': 'id înregistrare',
'Record ID': 'ID înregistrare', 'Record ID': 'ID înregistrare',
'Record id': 'id înregistrare',
'register': 'înregistrare', 'register': 'înregistrare',
'Register': 'Înregistrare', 'Register': 'Înregistrare',
'Registration identifier': 'Identificator de autentificare', 'Registration identifier': 'Identificator de autentificare',
@@ -275,13 +285,16 @@
'session expired': 'sesiune expirată', 'session expired': 'sesiune expirată',
'shell': 'line de commandă', 'shell': 'line de commandă',
'site': 'site', 'site': 'site',
'Size of cache:': 'Size of cache:',
'some files could not be removed': 'anumite fișiere n-au putut fi șterse', 'some files could not be removed': 'anumite fișiere n-au putut fi șterse',
'starts with': 'începe cu', 'starts with': 'începe cu',
'state': 'stare', 'state': 'stare',
'static': 'static', 'static': 'static',
'Static files': 'Fișiere statice', 'Static files': 'Fișiere statice',
'Statistics': 'Statistics',
'Stylesheet': 'Foaie de stiluri', 'Stylesheet': 'Foaie de stiluri',
'Submit': 'Înregistrează', 'Submit': 'Înregistrează',
'submit': 'submit',
'Support': 'Suport', 'Support': 'Suport',
'Sure you want to delete this object?': 'Sigur ștergeți acest obiect?', 'Sure you want to delete this object?': 'Sigur ștergeți acest obiect?',
'Table': 'tabel', 'Table': 'tabel',
@@ -306,6 +319,7 @@
'This is a copy of the scaffolding application': 'Aceasta este o copie a aplicației schelet', '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', 'This is the %(filename)s template': 'Aceasta este șablonul fișierului %(filename)s',
'Ticket': 'Tichet', 'Ticket': 'Tichet',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Moment în timp (timestamp)', 'Timestamp': 'Moment în timp (timestamp)',
'to previous version.': 'la versiunea anterioară.', 'to previous version.': 'la versiunea anterioară.',
'too short': 'prea scurt', 'too short': 'prea scurt',
+21 -3
View File
@@ -27,14 +27,20 @@
'Administrative Interface': 'Administrative Interface', 'Administrative Interface': 'Administrative Interface',
'Administrative interface': 'административный интерфейс', 'Administrative interface': 'административный интерфейс',
'Ajax Recipes': 'Ajax Recipes', '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?': 'Вы уверены, что хотите удалить этот объект?', 'Are you sure you want to delete this object?': 'Вы уверены, что хотите удалить этот объект?',
'Available Databases and Tables': 'Базы данных и таблицы', 'Available Databases and Tables': 'Базы данных и таблицы',
'Buy this book': 'Buy this book', 'Buy this book': 'Buy this book',
'cache': 'cache', 'cache': 'cache',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': 'Пустое значение недопустимо', 'Cannot be empty': 'Пустое значение недопустимо',
'Change Password': 'Смените пароль', 'Change Password': 'Смените пароль',
'Check to delete': 'Удалить', 'Check to delete': 'Удалить',
'Check to delete:': 'Удалить:', 'Check to delete:': 'Удалить:',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Client IP': 'Client IP', 'Client IP': 'Client IP',
'Community': 'Community', 'Community': 'Community',
'Components and Plugins': 'Components and Plugins', 'Components and Plugins': 'Components and Plugins',
@@ -45,7 +51,6 @@
'Current session': 'Текущая сессия', 'Current session': 'Текущая сессия',
'customize me!': 'настройте внешний вид!', 'customize me!': 'настройте внешний вид!',
'data uploaded': 'данные загружены', 'data uploaded': 'данные загружены',
'Database': 'база данных',
'Database': 'Database', 'Database': 'Database',
'Database %s select': 'выбор базы данных %s', 'Database %s select': 'выбор базы данных %s',
'db': 'БД', 'db': 'БД',
@@ -55,6 +60,9 @@
'Deployment Recipes': 'Deployment Recipes', 'Deployment Recipes': 'Deployment Recipes',
'Description': 'Описание', 'Description': 'Описание',
'design': 'дизайн', 'design': 'дизайн',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Documentation', 'Documentation': 'Documentation',
"Don't know what to do?": "Don't know what to do?", "Don't know what to do?": "Don't know what to do?",
'done!': 'готово!', 'done!': 'готово!',
@@ -86,6 +94,7 @@
'Invalid password': 'Неверный пароль', 'Invalid password': 'Неверный пароль',
'Invalid Query': 'Неверный запрос', 'Invalid Query': 'Неверный запрос',
'invalid request': 'неверный запрос', 'invalid request': 'неверный запрос',
'Key': 'Key',
'Last name': 'Фамилия', 'Last name': 'Фамилия',
'Layout': 'Layout', 'Layout': 'Layout',
'Layout Plugins': 'Layout Plugins', 'Layout Plugins': 'Layout Plugins',
@@ -99,6 +108,7 @@
'Logout': 'Выход', 'Logout': 'Выход',
'Lost Password': 'Забыли пароль?', 'Lost Password': 'Забыли пароль?',
'Lost password?': 'Lost password?', 'Lost password?': 'Lost password?',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Menu Model', 'Menu Model': 'Menu Model',
'My Sites': 'My Sites', 'My Sites': 'My Sites',
'Name': 'Name', 'Name': 'Name',
@@ -116,8 +126,8 @@
'Other Plugins': 'Other Plugins', 'Other Plugins': 'Other Plugins',
'Other Recipes': 'Other Recipes', 'Other Recipes': 'Other Recipes',
'Overview': 'Overview', 'Overview': 'Overview',
'password': 'пароль',
'Password': 'Пароль', 'Password': 'Пароль',
'password': 'пароль',
"Password fields don't match": 'Пароли не совпадают', "Password fields don't match": 'Пароли не совпадают',
'Plugins': 'Plugins', 'Plugins': 'Plugins',
'Powered by': 'Powered by', 'Powered by': 'Powered by',
@@ -127,10 +137,14 @@
'Python': 'Python', 'Python': 'Python',
'Query:': 'Запрос:', 'Query:': 'Запрос:',
'Quick Examples': 'Quick Examples', 'Quick Examples': 'Quick Examples',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache Keys',
'Ram Cleared': 'Ram Cleared',
'Recipes': 'Recipes', 'Recipes': 'Recipes',
'Record': 'Record',
'record does not exist': 'запись не найдена', 'record does not exist': 'запись не найдена',
'Record id': 'id записи',
'Record ID': 'ID записи', 'Record ID': 'ID записи',
'Record id': 'id записи',
'Register': 'Зарегистрироваться', 'Register': 'Зарегистрироваться',
'Registration identifier': 'Registration identifier', 'Registration identifier': 'Registration identifier',
'Registration key': 'Ключ регистрации', 'Registration key': 'Ключ регистрации',
@@ -141,8 +155,11 @@
'Rows selected': 'Выделено строк', 'Rows selected': 'Выделено строк',
'Semantic': 'Semantic', 'Semantic': 'Semantic',
'Services': 'Services', 'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'состояние', 'state': 'состояние',
'Statistics': 'Statistics',
'Stylesheet': 'Stylesheet', 'Stylesheet': 'Stylesheet',
'submit': 'submit',
'Submit': 'Отправить', 'Submit': 'Отправить',
'Support': 'Support', 'Support': 'Support',
'Sure you want to delete this object?': 'Подтвердите удаление объекта', '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 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', 'The Views': 'The Views',
'This App': 'This App', 'This App': 'This App',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': 'Отметка времени', 'Timestamp': 'Отметка времени',
'Twitter': 'Twitter', 'Twitter': 'Twitter',
'unable to parse csv file': 'нечитаемый csv-файл', 'unable to parse csv file': 'нечитаемый csv-файл',
+93 -34
View File
@@ -3,69 +3,154 @@
'!langcode!': 'sk', '!langcode!': 'sk',
'!langname!': 'Slovenský', '!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', '"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} deleted': '%s zmazaných záznamov',
'%s %%{row} updated': '%s upravených záznamov', '%s %%{row} updated': '%s upravených záznamov',
'%s selected': '%s označených', '%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', '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', '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', 'Cannot be empty': 'Nemôže byť prázdne',
'Check to delete': 'Označiť na zmazanie', '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', 'Controller': 'Controller',
'Copyright': 'Copyright', 'Copyright': 'Copyright',
'Current request': 'Aktuálna požiadavka', 'Current request': 'Aktuálna požiadavka',
'Current response': 'Aktuálna odpoveď', 'Current response': 'Aktuálna odpoveď',
'Current session': 'Aktuálne sedenie', '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', 'DB Model': 'DB Model',
'Database': 'Databáza',
'Delete:': 'Zmazať:', 'Delete:': 'Zmazať:',
'Demo': 'Demo',
'Deployment Recipes': 'Deployment Recipes',
'Description': 'Popis', 'Description': 'Popis',
'design': 'návrh',
'DISK': 'DISK',
'Disk Cache Keys': 'Disk Cache Keys',
'Disk Cleared': 'Disk Cleared',
'Documentation': 'Dokumentácia', 'Documentation': 'Dokumentácia',
"Don't know what to do?": "Don't know what to do?",
'done!': 'hotovo!',
'Download': 'Download',
'Edit': 'Upraviť', 'Edit': 'Upraviť',
'Edit Profile': 'Upraviť profil',
'Edit current record': 'Upraviť aktuálny záznam', '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', 'First name': 'Krstné meno',
'Forms and Validators': 'Forms and Validators',
'Free Applications': 'Free Applications',
'Group ID': 'ID skupiny', 'Group ID': 'ID skupiny',
'Groups': 'Groups',
'Hello World': 'Ahoj svet', 'Hello World': 'Ahoj svet',
'Home': 'Home',
'How did you get here?': 'How did you get here?',
'import': 'import',
'Import/Export': 'Import/Export', 'Import/Export': 'Import/Export',
'Index': 'Index', 'Index': 'Index',
'insert new': 'vložiť nový záznam ',
'insert new %s': 'vložiť nový záznam %s',
'Internal State': 'Vnútorný stav', 'Internal State': 'Vnútorný stav',
'Invalid Query': 'Neplatná otázka', 'Introduction': 'Introduction',
'Invalid email': 'Neplatný email', 'Invalid email': 'Neplatný email',
'Invalid password': 'Nesprávne heslo', 'Invalid password': 'Nesprávne heslo',
'Invalid Query': 'Neplatná otázka',
'invalid request': 'Neplatná požiadavka',
'Key': 'Key',
'Last name': 'Priezvisko', 'Last name': 'Priezvisko',
'Layout': 'Layout', 'Layout': 'Layout',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'Layouts',
'Live Chat': 'Live Chat',
'Logged in': 'Prihlásený', 'Logged in': 'Prihlásený',
'Logged out': 'Odhlásený', 'Logged out': 'Odhlásený',
'login': 'prihlásiť',
'logout': 'odhlásiť',
'Lost Password': 'Stratené heslo?', 'Lost Password': 'Stratené heslo?',
'lost password?': 'stratené heslo?',
'Manage Cache': 'Manage Cache',
'Menu Model': 'Menu Model', 'Menu Model': 'Menu Model',
'My Sites': 'My Sites',
'Name': 'Meno', 'Name': 'Meno',
'New Record': 'Nový záznam',
'New password': 'Nové heslo', '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', 'No databases in this application': 'V tejto aplikácii nie sú databázy',
'Old password': 'Staré heslo', 'Old password': 'Staré heslo',
'Online examples': 'pre online príklady kliknite sem', 'Online examples': 'pre online príklady kliknite sem',
'or import from csv file': 'alebo naimportovať z csv súboru',
'Origin': 'Pôvod', 'Origin': 'Pôvod',
'Other Plugins': 'Other Plugins',
'Other Recipes': 'Other Recipes',
'Overview': 'Overview',
'password': 'heslo',
'Password': 'Heslo', 'Password': 'Heslo',
'Plugins': 'Plugins',
'Powered by': 'Powered by', 'Powered by': 'Powered by',
'Preface': 'Preface',
'previous 100 rows': 'predchádzajúcich 100 riadkov',
'Python': 'Python',
'Query:': 'Otázka:', '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',
'Record id': 'id záznamu',
'Register': 'Zaregistrovať sa', 'Register': 'Zaregistrovať sa',
'register': 'registrovať',
'Registration key': 'Registračný kľúč', 'Registration key': 'Registračný kľúč',
'Remember me (for 30 days)': 'Zapamätaj si ma (na 30 dní)', 'Remember me (for 30 days)': 'Zapamätaj si ma (na 30 dní)',
'Reset Password key': 'Nastaviť registračný kľúč', 'Reset Password key': 'Nastaviť registračný kľúč',
'Role': 'Rola', 'Role': 'Rola',
'Rows in Table': 'riadkov v tabuľke', 'Rows in Table': 'riadkov v tabuľke',
'Rows selected': 'označených riadkov', 'Rows selected': 'označených riadkov',
'Semantic': 'Semantic',
'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': 'stav',
'Statistics': 'Statistics',
'Stylesheet': 'Stylesheet', 'Stylesheet': 'Stylesheet',
'submit': 'submit',
'Submit': 'Odoslať', 'Submit': 'Odoslať',
'Support': 'Support',
'Sure you want to delete this object?': 'Ste si istí, že chcete zmazať tento objekt?', 'Sure you want to delete this object?': 'Ste si istí, že chcete zmazať tento objekt?',
'Table': 'tabuľka',
'Table name': 'Názov tabuľky', '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 "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 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', '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', 'Timestamp': 'Časová pečiatka',
'Twitter': 'Twitter',
'unable to parse csv file': 'nedá sa načítať csv súbor',
'Update:': 'Upraviť:', '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.', '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ý', '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)s Registered': 'Používateľ %(id)s sa zaregistroval',
'User ID': 'ID používateľa', 'User ID': 'ID používateľa',
'Verify Password': 'Zopakujte heslo', 'Verify Password': 'Zopakujte heslo',
'Videos': 'Videos',
'View': 'Zobraziť', 'View': 'Zobraziť',
'Welcome to web2py': 'Vitajte vo web2py', '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', '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 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 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', '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',
} }
+7 -3
View File
@@ -53,12 +53,13 @@
'Components and Plugins': 'Компоненти та втулки', 'Components and Plugins': 'Компоненти та втулки',
'Controller': 'Контролер', 'Controller': 'Контролер',
'Copyright': 'Правовласник', 'Copyright': 'Правовласник',
'Created By': 'Створив(ла)',
'Created On': 'Створено в',
'Current request': 'Поточний запит (current request)', 'Current request': 'Поточний запит (current request)',
'Current response': 'Поточна відповідь (current response)', 'Current response': 'Поточна відповідь (current response)',
'Current session': 'Поточна сесія (current session)', 'Current session': 'Поточна сесія (current session)',
'customize me!': 'причепуріть мене!', 'customize me!': 'причепуріть мене!',
'data uploaded': 'дані завантажено', 'data uploaded': 'дані завантажено',
'Database': 'база даних',
'Database': 'База даних', 'Database': 'База даних',
'Database %s select': 'Вибірка з бази даних %s', 'Database %s select': 'Вибірка з бази даних %s',
'db': 'база даних', 'db': 'база даних',
@@ -108,6 +109,7 @@
'Invalid password': 'Невірний пароль', 'Invalid password': 'Невірний пароль',
'Invalid Query': 'Помилковий запит', 'Invalid Query': 'Помилковий запит',
'invalid request': 'хибний запит', 'invalid request': 'хибний запит',
'Is Active': 'Активна',
'Key': 'Ключ', 'Key': 'Ключ',
'Last name': 'Прізвище', 'Last name': 'Прізвище',
'Layout': 'Макет (Layout)', 'Layout': 'Макет (Layout)',
@@ -122,6 +124,8 @@
'Lost password?': 'Забули пароль?', 'Lost password?': 'Забули пароль?',
'Manage Cache': 'Управління кешем', 'Manage Cache': 'Управління кешем',
'Menu Model': 'Модель меню', 'Menu Model': 'Модель меню',
'Modified By': 'Зміни провадив(ла)',
'Modified On': 'Змінено в',
'My Sites': 'Сайт (усі додатки)', 'My Sites': 'Сайт (усі додатки)',
'Name': "Ім'я", 'Name': "Ім'я",
'New password': 'Новий пароль', 'New password': 'Новий пароль',
@@ -160,8 +164,8 @@
'Record': 'запис', 'Record': 'запис',
'Record %(id)s updated': 'Запис %(id)s змінено', 'Record %(id)s updated': 'Запис %(id)s змінено',
'record does not exist': 'запису не існує', 'record does not exist': 'запису не існує',
'Record id': 'ід. запису',
'Record ID': 'Ід.запису', 'Record ID': 'Ід.запису',
'Record id': 'ід. запису',
'Record Updated': 'Запис змінено', 'Record Updated': 'Запис змінено',
'Register': 'Реєстрація', 'Register': 'Реєстрація',
'Registration identifier': 'Реєстраційний ідентифікатор', 'Registration identifier': 'Реєстраційний ідентифікатор',
@@ -180,7 +184,7 @@
'state': 'стан', 'state': 'стан',
'Statistics': 'Статистика', 'Statistics': 'Статистика',
'Stylesheet': 'CSS-стилі', 'Stylesheet': 'CSS-стилі',
'submit': 'submit', 'submit': 'застосувати',
'Submit': 'Застосувати', 'Submit': 'Застосувати',
'Support': 'Підтримка', 'Support': 'Підтримка',
'Table': 'Таблиця', 'Table': 'Таблиця',
+107 -46
View File
@@ -3,34 +3,50 @@
'!langcode!': 'zh-cn', '!langcode!': 'zh-cn',
'!langname!': '中文', '!langname!': '中文',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"更新" 是選擇性的條件式, 格式就像 "欄位1=\'值\'". 但是 JOIN 的資料不可以使用 update 或是 delete"', '"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} deleted': '已刪除 %s 筆',
'%s %%{row} updated': '已更新 %s 筆', '%s %%{row} updated': '已更新 %s 筆',
'%s selected': '%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")', '(something like "it-it")': '(格式類似 "zh-tw")',
'A new version of web2py is available': '新版的 web2py 已發行', 'A new version of web2py is available': '新版的 web2py 已發行',
'A new version of web2py is available: %s': '新版的 web2py 已發行: %s', 'A new version of web2py is available: %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: 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: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: 因為在測試模式不保證多執行緒安全性,也就是說不可以同時執行多個測試案例',
'ATTENTION: you cannot edit the running application!': '注意:不可編輯正在執行的應用程式!', 'ATTENTION: you cannot edit the running application!': '注意:不可編輯正在執行的應用程式!',
'About': '關於',
'About 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': '驗證', 'Authentication': '驗證',
'Available Databases and Tables': '可提供的資料庫和資料表', 'Available Databases and Tables': '可提供的資料庫和資料表',
'Buy this book': 'Buy this book',
'cache': '快取記憶體',
'Cache': 'Cache',
'Cache Keys': 'Cache Keys',
'Cannot be empty': '不可空白', 'Cannot be empty': '不可空白',
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': '無法編譯:應用程式中含有錯誤,請除錯後再試一次.', 'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': '無法編譯:應用程式中含有錯誤,請除錯後再試一次.',
'Change Password': '變更密碼', 'Change Password': '變更密碼',
'change password': '變更密碼',
'Check to delete': '打勾代表刪除', 'Check to delete': '打勾代表刪除',
'Check to delete:': '點選以示刪除:', 'Check to delete:': '點選以示刪除:',
'Clear CACHE?': 'Clear CACHE?',
'Clear DISK': 'Clear DISK',
'Clear RAM': 'Clear RAM',
'Client IP': '客戶端網址(IP)', 'Client IP': '客戶端網址(IP)',
'Community': 'Community',
'Components and Plugins': 'Components and Plugins',
'Controller': '控件', 'Controller': '控件',
'Controllers': '控件', 'Controllers': '控件',
'Copyright': '版權所有', 'Copyright': '版權所有',
@@ -38,64 +54,120 @@
'Current request': '目前網路資料要求(request)', 'Current request': '目前網路資料要求(request)',
'Current response': '目前網路資料回應(response)', 'Current response': '目前網路資料回應(response)',
'Current session': '目前網路連線資訊(session)', 'Current session': '目前網路連線資訊(session)',
'DB Model': '資料庫模組', 'customize me!': '請調整我!',
'DESIGN': '設計', 'data uploaded': '資料已上傳',
'Database': '資料庫', 'Database': '資料庫',
'Database %s select': '已選擇 %s 資料庫',
'Date and Time': '日期和時間', 'Date and Time': '日期和時間',
'db': 'db',
'DB Model': '資料庫模組',
'Delete': '刪除', 'Delete': '刪除',
'Delete:': '刪除:', 'Delete:': '刪除:',
'Demo': 'Demo',
'Deploy on Google App Engine': '配置到 Google App Engine', 'Deploy on Google App Engine': '配置到 Google App Engine',
'Deployment Recipes': 'Deployment Recipes',
'Description': '描述', 'Description': '描述',
'DESIGN': '設計',
'design': '設計',
'Design for': '設計為了', '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': '電子郵件', 'E-mail': '電子郵件',
'EDIT': '編輯', 'EDIT': '編輯',
'Edit': '編輯', 'Edit': '編輯',
'Edit Profile': '編輯設定檔',
'Edit This App': '編輯本應用程式',
'Edit application': '編輯應用程式', 'Edit application': '編輯應用程式',
'Edit current record': '編輯當前紀錄', 'Edit current record': '編輯當前紀錄',
'edit profile': '編輯設定檔',
'Edit Profile': '編輯設定檔',
'Edit This App': '編輯本應用程式',
'Editing file': '編輯檔案', 'Editing file': '編輯檔案',
'Editing file "%s"': '編輯檔案"%s"', 'Editing file "%s"': '編輯檔案"%s"',
'Email and SMS': 'Email and SMS',
'Error logs for "%(app)s"': '"%(app)s"的錯誤紀錄', 'Error logs for "%(app)s"': '"%(app)s"的錯誤紀錄',
'Errors': 'Errors',
'export as csv file': '以逗號分隔檔(csv)格式匯出',
'FAQ': 'FAQ',
'First name': '名', 'First name': '名',
'Forms and Validators': 'Forms and Validators',
'Free Applications': 'Free Applications',
'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函式會顯示 [passed].', 'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函式會顯示 [passed].',
'Group ID': '群組編號', 'Group ID': '群組編號',
'Groups': 'Groups',
'Hello World': '嗨! 世界', 'Hello World': '嗨! 世界',
'Home': 'Home',
'How did you get here?': 'How did you get here?',
'import': 'import',
'Import/Export': '匯入/匯出', 'Import/Export': '匯入/匯出',
'Index': '索引', 'Index': '索引',
'insert new': '插入新資料',
'insert new %s': '插入新資料 %s',
'Installed applications': '已安裝應用程式', 'Installed applications': '已安裝應用程式',
'Internal State': '內部狀態', 'Internal State': '內部狀態',
'Invalid Query': '不合法的查詢', 'Introduction': 'Introduction',
'Invalid action': '不合法的動作(action)', 'Invalid action': '不合法的動作(action)',
'Invalid email': '不合法的電子郵件', 'Invalid email': '不合法的電子郵件',
'Invalid Query': '不合法的查詢',
'invalid request': '不合法的網路要求(request)',
'Key': 'Key',
'Language files (static strings) updated': '語言檔已更新', 'Language files (static strings) updated': '語言檔已更新',
'Languages': '各國語言', 'Languages': '各國語言',
'Last name': '姓', 'Last name': '姓',
'Last saved on:': '最後儲存時間:', 'Last saved on:': '最後儲存時間:',
'Layout': '網頁配置', 'Layout': '網頁配置',
'Layout Plugins': 'Layout Plugins',
'Layouts': 'Layouts',
'License for': '軟體版權為', 'License for': '軟體版權為',
'Live Chat': 'Live Chat',
'login': '登入',
'Login': '登入', 'Login': '登入',
'Login to the Administrative Interface': '登入到管理員介面', 'Login to the Administrative Interface': '登入到管理員介面',
'logout': '登出',
'Logout': '登出', 'Logout': '登出',
'Lost Password': '密碼遺忘', 'Lost Password': '密碼遺忘',
'Main Menu': '主選單', 'Main Menu': '主選單',
'Manage Cache': 'Manage Cache',
'Menu Model': '選單模組(menu)', 'Menu Model': '選單模組(menu)',
'Models': '資料模組', 'Models': '資料模組',
'Modules': '程式模組', 'Modules': '程式模組',
'NO': '否', 'My Sites': 'My Sites',
'Name': '名字', 'Name': '名字',
'New Record': '新紀錄', 'New Record': '新紀錄',
'new record inserted': '已插入新紀錄',
'next 100 rows': '往後 100 筆',
'NO': '否',
'No databases in this application': '這應用程式不含資料庫', 'No databases in this application': '這應用程式不含資料庫',
'Online examples': '點此處進入線上範例', 'Online examples': '點此處進入線上範例',
'or import from csv file': '或是從逗號分隔檔(CSV)匯入',
'Origin': '原文', 'Origin': '原文',
'Original/Translation': '原文/翻譯', 'Original/Translation': '原文/翻譯',
'Other Plugins': 'Other Plugins',
'Other Recipes': 'Other Recipes',
'Overview': 'Overview',
'Password': '密碼', 'Password': '密碼',
"Password fields don't match": '密碼欄不匹配', "Password fields don't match": '密碼欄不匹配',
'Peeking at file': '選擇檔案', 'Peeking at file': '選擇檔案',
'Plugins': 'Plugins',
'Powered by': '基於以下技術構建:', 'Powered by': '基於以下技術構建:',
'Preface': 'Preface',
'previous 100 rows': '往前 100 筆',
'Python': 'Python',
'Query:': '查詢:', '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': '紀錄編號',
'Record id': '紀錄編號',
'Register': '註冊', 'Register': '註冊',
'register': '註冊',
'Registration key': '註冊金鑰', 'Registration key': '註冊金鑰',
'Remember me (for 30 days)': '記住我(30 天)', 'Remember me (for 30 days)': '記住我(30 天)',
'Reset Password key': '重設密碼', 'Reset Password key': '重設密碼',
@@ -104,26 +176,40 @@
'Rows in Table': '在資料表裏的資料', 'Rows in Table': '在資料表裏的資料',
'Rows selected': '筆資料被選擇', 'Rows selected': '筆資料被選擇',
'Saved file hash:': '檔案雜湊值已紀錄:', 'Saved file hash:': '檔案雜湊值已紀錄:',
'Semantic': 'Semantic',
'Services': 'Services',
'Size of cache:': 'Size of cache:',
'state': '狀態',
'Static files': '靜態檔案', 'Static files': '靜態檔案',
'Statistics': 'Statistics',
'Stylesheet': '網頁風格檔', 'Stylesheet': '網頁風格檔',
'submit': 'submit',
'Submit': '傳送', 'Submit': '傳送',
'Support': 'Support',
'Sure you want to delete this object?': '確定要刪除此物件?', 'Sure you want to delete this object?': '確定要刪除此物件?',
'Table': '資料表',
'Table name': '資料表名稱', 'Table name': '資料表名稱',
'Testing application': '測試中的應用程式', 'Testing application': '測試中的應用程式',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"查詢"是一個像 "db.表1.欄位1==\'值\'" 的條件式. 以"db.表1.欄位1==db.表2.欄位2"方式則相當於執行 JOIN SQL.', '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 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 controllers': '沒有控件(controllers)',
'There are no models': '沒有資料庫模組(models)', 'There are no models': '沒有資料庫模組(models)',
'There are no modules': '沒有程式模組(modules)', 'There are no modules': '沒有程式模組(modules)',
'There are no static files': '沒有靜態檔案', 'There are no static files': '沒有靜態檔案',
'There are no translators, only default language is supported': '沒有翻譯檔,只支援原始語言', 'There are no translators, only default language is supported': '沒有翻譯檔,只支援原始語言',
'There are no views': '沒有視圖', 'There are no views': '沒有視圖',
'This App': 'This App',
'This is the %(filename)s template': '這是%(filename)s檔案的樣板(template)', 'This is the %(filename)s template': '這是%(filename)s檔案的樣板(template)',
'Ticket': '問題單', 'Ticket': '問題單',
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
'Timestamp': '時間標記', 'Timestamp': '時間標記',
'Twitter': 'Twitter',
'Unable to check for upgrades': '無法做升級檢查', 'Unable to check for upgrades': '無法做升級檢查',
'Unable to download': '無法下載', 'Unable to download': '無法下載',
'Unable to download app': '無法下載應用程式', 'Unable to download app': '無法下載應用程式',
'unable to parse csv file': '無法解析逗號分隔檔(csv)',
'Update:': '更新:', 'Update:': '更新:',
'Upload existing application': '更新存在的應用程式', 'Upload existing application': '更新存在的應用程式',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式來組合更複雜的條件式, (...)&(...) 代表同時存在的條件, (...)|(...) 代表擇一的條件, ~(...)則代表反向條件.', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式來組合更複雜的條件式, (...)&(...) 代表同時存在的條件, (...)|(...) 代表擇一的條件, ~(...)則代表反向條件.',
@@ -131,40 +217,15 @@
'User %(id)s Registered': '使用者 %(id)s 已註冊', 'User %(id)s Registered': '使用者 %(id)s 已註冊',
'User ID': '使用者編號', 'User ID': '使用者編號',
'Verify Password': '驗證密碼', 'Verify Password': '驗證密碼',
'Videos': 'Videos',
'View': '視圖', 'View': '視圖',
'Views': '視圖', 'Views': '視圖',
'Welcome %s': '歡迎 %s', 'Welcome %s': '歡迎 %s',
'Welcome to web2py': '歡迎使用 web2py', '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', 'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
'YES': '是', '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', '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
View File
@@ -12,7 +12,7 @@ Functions required to execute app components
FOR INTERNAL USE ONLY FOR INTERNAL USE ONLY
""" """
import os from os import stat
import thread import thread
import logging import logging
from fileutils import read_file 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. This is used on Google App Engine since pyc files cannot be saved.
""" """
try: try:
t = os.stat(filename).st_mtime t = stat(filename).st_mtime
except OSError: except OSError:
return filter() if callable(filter) else '' return filter() if callable(filter) else ''
cfs_lock.acquire() cfs_lock.acquire()
+295 -246
View File
@@ -29,15 +29,16 @@ from string import maketrans
__all__ = ['translator', 'findT', 'update_all_languages'] __all__ = ['translator', 'findT', 'update_all_languages']
ospath = os.path
ostat = os.stat ostat = os.stat
osep = os.sep oslistdir = os.listdir
pjoin = os.path.join pjoin = os.path.join
pexists = os.path.exists
pdirname = os.path.dirname pdirname = os.path.dirname
isdir = os.path.isdir isdir = os.path.isdir
is_gae = settings.global_settings.web2py_runtime_gae is_gae = settings.global_settings.web2py_runtime_gae
DEFAULT_LANGUAGE = 'en' DEFAULT_LANGUAGE = 'en'
DEFAULT_LANGUAGE_NAME = 'English'
# DEFAULT PLURAL-FORMS RULES: # DEFAULT PLURAL-FORMS RULES:
# language doesn't use plural forms # language doesn't use plural forms
@@ -45,23 +46,7 @@ DEFAULT_NPLURALS = 1
# only one singular/plural form is used # only one singular/plural form is used
DEFAULT_GET_PLURAL_ID = lambda n: 0 DEFAULT_GET_PLURAL_ID = lambda n: 0
# word is unchangeable # word is unchangeable
DEFAULT_CONSTRUCTOR_PLURAL_FORM = lambda word, plural_id: word DEFAULT_CONSTRUCT_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='')
NUMBERS = (int,long,float) 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>.+?)}') regex_param=re.compile(r'{(?P<s>.+?)}')
# pattern for a valid accept_language # pattern for a valid accept_language
regex_language = \ regex_language = \
re.compile('^([a-zA-Z]{2})(\-[a-zA-Z]{2})?(\-[a-zA-Z]+)?$') re.compile('([a-z]{2}(?:\-[a-z]{2})?(?:\-[a-z]{2})?)(?:[,;]|$)')
regex_langfile = re.compile('^[a-zA-Z]{2}(-[a-zA-Z]{2})?\.py$') regex_langfile = re.compile('^[a-z]{2}(-[a-z]{2})?\.py$')
regex_backslash = re.compile(r"\\([\\{}%])") regex_backslash = re.compile(r"\\([\\{}%])")
regex_plural = re.compile('%({.+?})') regex_plural = re.compile('%({.+?})')
regex_plural_dict = re.compile('^{(?P<w>[^()[\]][^()[\]]*?)\((?P<n>[^()\[\]]+)\)}$') # %%{word(varname or number)} 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_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 # UTF8 helper functions
def upper_fun(s): def upper_fun(s):
@@ -90,7 +91,7 @@ def upper_fun(s):
def title_fun(s): def title_fun(s):
return unicode(s,'utf-8').title().encode('utf-8') return unicode(s,'utf-8').title().encode('utf-8')
def cap_fun(s): 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_in = maketrans("\\%{}", '\x1c\x1d\x1e\x1f')
ttab_out = maketrans('\x1c\x1d\x1e\x1f', "\\%{}") ttab_out = maketrans('\x1c\x1d\x1e\x1f', "\\%{}")
@@ -132,38 +133,6 @@ def clear_cache(filename):
finally: finally:
lock.release() 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): def read_dict_aux(filename):
lang_text = portalocker.read_locked(filename).replace('\r\n', '\n') lang_text = portalocker.read_locked(filename).replace('\r\n', '\n')
clear_cache(filename) clear_cache(filename)
@@ -175,57 +144,24 @@ def read_dict_aux(filename):
return {'__corrupted__':status} return {'__corrupted__':status}
def read_dict(filename): def read_dict(filename):
""" """ return dictionary with translation messages
return dictionary with translation messages
""" """
return getcfs('lang:'+filename, filename, return getcfs('lang:'+filename, filename,
lambda: read_dict_aux(filename)) lambda: read_dict_aux(filename))
def get_lang_info(lang, langdir): def read_possible_plural_rules():
"""
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():
""" """
create list of all possible plural rules files 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: 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__): for importer, modname, ispkg in pkgutil.iter_modules(package.__path__):
if len(modname)==2: if len(modname)==2:
module = __import__(package.__name__+'.'+modname) module = __import__(package.__name__+'.'+modname,
fromlist=[modname])
lang = modname lang = modname
pname = modname+'.py' pname = modname+'.py'
nplurals = getattr(module,'nplurals', DEFAULT_NPLURALS) nplurals = getattr(module,'nplurals', DEFAULT_NPLURALS)
@@ -234,19 +170,84 @@ def read_possible_plurals():
DEFAULT_GET_PLURAL_ID) DEFAULT_GET_PLURAL_ID)
construct_plural_form = getattr( construct_plural_form = getattr(
module,'construct_plural_form', module,'construct_plural_form',
DEFAULT_CONSTRUCTOR_PLURAL_FORM) DEFAULT_CONSTRUCT_PLURAL_FORM)
plurals[lang] = (lang, nplurals, get_plural_id, plurals[lang] = (lang, nplurals, get_plural_id,
construct_plural_form, pname) construct_plural_form)
except ImportError: except ImportError, e:
logging.warn('Unable to import plural rules') logging.warn('Unable to import plural rules: %s' % e)
plurals['default'] = ('default',
DEFAULT_NPLURALS,
DEFAULT_GET_PLURAL_ID,
DEFAULT_CONSTRUCTOR_PLURAL_FORM,
None)
return plurals 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): def read_plural_dict_aux(filename):
lang_text = portalocker.read_locked(filename).replace('\r\n', '\n') 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 T(\"Hello World\") # translates \"Hello World\" using the selected file
notice 1: there is no need to force since, by default, T uses 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: notice 2:
en and en-en are considered different languages! en and en-en are considered different languages!
notice 3: notice 3:
if language xx-yy is not found force() probes other similar 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 xx-yy.py -> xx.py -> xx-yy*.py -> xx*.py
""" """
def __init__(self, request): def __init__(self, request):
self.request = request self.request = request
self.folder = request.folder self.folder = request.folder
self.langpath = ospath.join(self.folder,'languages') self.langpath = pjoin(self.folder, 'languages')
self.filenames = set(os.listdir(self.langpath))
self.http_accept_language = request.env.http_accept_language self.http_accept_language = request.env.http_accept_language
# self.cache # filled in self.force() # filled in self.force():
# self.accepted_language = None # filled in self.force() #------------------------
# self.language_file = None # filled in self.force() # self.cache
# self.plural_language = None # filled in self.force() # self.accepted_language
# self.nplurals = None # filled in self.force() # self.language_file
# self.get_plural_id = None # filled in self.force() # self.plural_language
# self.construct_plural_form = None # filled in self.force() # self.nplurals
# self.plural_rules_file = None # filled in self.force() # self.get_plural_id
# self.plural_file = None # filled in self.force() # self.construct_plural_form
# self.plural_dict = None # filled in self.force() # self.plural_file
# self.plural_status = None # filled in self.force() # self.plural_dict
self.requested_languages = \ # self.requested_languages
self.force(self.http_accept_language) #----------------------------------------
# filled in self.set_current_languages():
#----------------------------------------
# self.default_language_file
# self.default_t
# self.current_languages
self.set_current_languages()
self.lazy = True self.lazy = True
self.otherTs = {} self.otherTs = {}
self.filter = markmin self.filter = markmin
self.ftag = '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): def get_possible_languages(self):
return [lang[:-3] for lang in self.filenames \ """ get list of all possible languages for current applications """
if regex_langfile.match(lang)] 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): def set_current_languages(self, *languages):
""" """
@@ -447,38 +487,30 @@ class translator(object):
if len(languages) == 1 and isinstance( if len(languages) == 1 and isinstance(
languages[0], (tuple, list)): languages[0], (tuple, list)):
languages = languages[0] 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) 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): def plural(self, word, n):
""" """ get plural form of word for number *n*
get plural form of word for number *n* NOTE: *word" MUST be defined in current language
NOTE: *word* MUST be defined in current language
(T.accepted_language) (T.accepted_language)
invoked from T()/M() in %%{} tag invoked from T()/T.M() in %%{} tag
args: args:
word (str): word in singular word (str): word in singular
n (numeric): number plural form created for n (numeric): number plural form created for
@@ -486,51 +518,34 @@ class translator(object):
returns: returns:
(str): word in appropriate singular/plural form (str): word in appropriate singular/plural form
""" """
nplurals = self.nplurals if int(n) == 1:
if int(n)==1:
return word return word
elif word: elif word:
id = self.get_plural_id(abs(int(n))) id = self.get_plural_id(abs(int(n)))
# id = 0 first plural form # id = 0 singular form
# id = 1 second plural form # id = 1 first plural form
# id = 2 second plural form
# etc. # etc.
forms = self.plural_dict.get(word, []) if id != 0:
if len(forms)>=id: forms = self.plural_dict.get(word, [])
# have this plural form if len(forms)>=id:
return forms[id-1] # have this plural form:
else: return forms[id-1]
# guessing this plural form else:
forms += ['']*(nplurals-len(forms)-1) # guessing this plural form
form = self.construct_plural_form(word, id) forms += ['']*(self.nplurals-len(forms)-1)
forms[id-1] = form form = self.construct_plural_form(word, id)
self.plural_dict[word] = forms forms[id-1] = form
if self.plural_file and not is_gae: self.plural_dict[word] = forms
write_plural_dict(self.plural_file, if self.plural_file and not is_gae:
self.plural_dict) write_plural_dict(self.plural_file,
return form self.plural_dict)
return form
def get_possible_languages_info(self, lang=None): return word
"""
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
def force(self, *languages): def force(self, *languages):
""" """
select language(s) for translation select language(s) for translation
if a list of languages is passed as a parameter, if a list of languages is passed as a parameter,
@@ -541,41 +556,76 @@ class translator(object):
default language will be selected if none default language will be selected if none
of them matches possible_languages. 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 = '' language = ''
if isinstance(languages,str): if len(languages)==1 and isinstance(languages[0],str):
languages = regex_language.findall(languages.lower()) languages = regex_language.findall(languages[0].lower())
elif not languages or languages[0] is None: elif not languages or languages[0] is None:
languages = [] languages = []
for lang in languages: self.requested_languages = languages = tuple(languages)
if lang+'.py' in self.filenames: if languages:
language = lang all_languages = set(lang for lang in pl_info.iterkeys()
langfile = language+'.py' if lang != 'default') \
break | set(self.current_languages)
elif len(lang)>5 and lang[:5]+'.py' in self.filenames: for lang in languages:
language = lang[:5] # compare "aa-bb" | "aa" from *language* parameter
langfile = language+'.py' # with strings from langlist using such alghorythm:
break # xx-yy.py -> xx.py -> xx*.py
elif len(lang)>2 and lang[:2]+'.py' in self.filenames: lang5 = lang[:5]
language = lang[:2] if lang5 in all_languages:
langfile = language+'.py' language = lang5
break else:
else: lang2 = lang[:2]
if 'default.py' in self.filenames: if len(lang5)>2 and lang2 in all_languages:
language = DEFAULT_LANGUAGE language = lang2
langfile = 'default.py' else:
else: for l in all_languages:
language = DEFAULT_LANGUAGE if l[:2]==lang2:
langfile = None language = l
self.accepted_language = language if language:
if langfile: if language in self.current_languages:
self.language_file = ospath.join(self.langpath,langfile) break
self.t = read_dict(self.language_file) self.language_file = pjoin(self.langpath, language+'.py')
else: self.t = read_dict(self.language_file)
self.language_file = None self.cache = global_language_cache.setdefault(
self.t = {} self.language_file,
self.cache = global_language_cache.setdefault( ({},allocate_lock()))
self.language_file,({},allocate_lock())) set_plural(language)
self.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 return languages
def __call__(self, message, symbols={}, language=None, lazy=None): def __call__(self, message, symbols={}, language=None, lazy=None):
@@ -661,20 +711,18 @@ class translator(object):
""" """
key = prefix+message key = prefix+message
mt = self.t.get(key, None) mt = self.t.get(key, None)
if mt is None: if mt is not None: return mt
# we did not find a translation # we did not find a translation
if message.find('##')>0 and not '\n' in message: if message.find('##')>0 and not '\n' in message:
# remove comments # remove comments
message = message.rsplit('##', 1)[0] message = message.rsplit('##', 1)[0]
# guess translation same as original # guess translation same as original
self.t[key] = mt = message self.t[key] = mt = self.default_t.get(key, message)
# update language file for later translation # update language file for latter translation
if self.language_file and not is_gae: if self.language_file != self.default_language_file and not is_gae:
write_dict(self.language_file, self.t) write_dict(self.language_file, self.t)
# fix backslash escaping return regex_backslash.sub(
mt = regex_backslash.sub( lambda m: m.group(1).translate(ttab_in), mt)
lambda m: m.group(1).translate(ttab_in), mt)
return mt
def params_substitution(self, message, symbols): def params_substitution(self, message, symbols):
""" """
@@ -796,16 +844,16 @@ class translator(object):
message = self.params_substitution(message, symbols) message = self.params_substitution(message, symbols)
return message.translate(ttab_out) return message.translate(ttab_out)
def findT(path, language='en'): def findT(path, language=DEFAULT_LANGUAGE):
""" """
must be run by the admin app 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) sentences = read_dict(lang_file)
mp = ospath.join(path, 'models') mp = pjoin(path, 'models')
cp = ospath.join(path, 'controllers') cp = pjoin(path, 'controllers')
vp = ospath.join(path, 'views') vp = pjoin(path, 'views')
mop = ospath.join(path, 'modules') mop = pjoin(path, 'modules')
for filename in \ for filename in \
listdir(mp, '^.+\.py$', 0)+listdir(cp, '^.+\.py$', 0)\ listdir(mp, '^.+\.py$', 0)+listdir(cp, '^.+\.py$', 0)\
+listdir(vp, '^.+\.html$', 0)+listdir(mop, '^.+\.py$', 0): +listdir(vp, '^.+\.html$', 0)+listdir(mop, '^.+\.py$', 0):
@@ -827,10 +875,10 @@ def findT(path, language='en'):
sentences[message] = message sentences[message] = message
if not '!langcode!' in sentences: if not '!langcode!' in sentences:
sentences['!langcode!'] = ( 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: if not '!langname!' in sentences:
sentences['!langname!'] = ( sentences['!langname!'] = (
'English' if language in ('default', 'en') DEFAULT_LANGUAGE_NAME if language in ('default', DEFAULT_LANGUAGE)
else sentences['!langcode!']) else sentences['!langcode!'])
write_dict(lang_file, sentences) write_dict(lang_file, sentences)
@@ -843,9 +891,10 @@ copy_reg.pickle(lazyT, lazyT_pickle, lazyT_unpickle)
def update_all_languages(application_path): def update_all_languages(application_path):
path = ospath.join(application_path, 'languages/') path = pjoin(application_path, 'languages/')
for language in listdir(path, regex_langfile): for language in oslistdir(path):
findT(application_path, language[:-3]) if regex_langfile.match(language):
findT(application_path, language[:-3])
if __name__ == '__main__': if __name__ == '__main__':