more language patches, thanks Vladyslav
This commit is contained in:
1 parent
eb0910129d
commit
e4cd9ceeb6
10 files changed
+241
-234
No files matched your search
@@ -1 +1 @@
|
||||
Version 2.00.0 (2012-07-31 19:25:48) dev
|
||||
Version 2.00.0 (2012-07-31 22:02:48) dev
|
||||
@@ -65,6 +65,7 @@
|
||||
'cache': 'кеш',
|
||||
'Cache Keys': 'Ключі кешу',
|
||||
'cache, errors and sessions cleaned': 'кеш, список зареєстрованих помилок та сесії очищенні',
|
||||
'can be a git repo': 'може бути git-репозитарієм',
|
||||
'Cancel': 'Відмінити',
|
||||
'Cannot be empty': 'Не може бути порожнім',
|
||||
'Cannot compile: there are errors in your app:': 'Не вдається скомпілювати: є помилки у вашому додатку:',
|
||||
@@ -85,6 +86,7 @@
|
||||
'Code listing': 'Лістинг',
|
||||
'collapse/expand all': 'згорнути/розгорнути все',
|
||||
'Command': 'Команда',
|
||||
'Commit': 'Комміт',
|
||||
'Compile': 'Компілювати',
|
||||
'compiled application removed': 'скомпільований додаток вилучено',
|
||||
'Condition': 'Умова',
|
||||
@@ -187,6 +189,8 @@
|
||||
'GAE Password': 'Пароль GAE',
|
||||
'Generate': 'Генерувати',
|
||||
'Get from URL:': 'Отримати з URL:',
|
||||
'Git Pull': 'Git Pull',
|
||||
'Git Push': 'Git Push',
|
||||
'Globals##debug': 'Глобальні змінні',
|
||||
'Go to Matching Pair': 'Перейти до відповідної пари',
|
||||
'go!': 'почали!',
|
||||
@@ -200,7 +204,7 @@
|
||||
'honored only if the expression evaluates to true': 'точка зупинки активується тільки за істинності умови',
|
||||
'If start the downgrade, be patient, it may take a while to rollback': 'Запустивши повернення на попередню версію, будьте терплячими, це може зайняти трохи часу',
|
||||
'If start the upgrade, be patient, it may take a while to download': 'Запустивши оновлення, будьте терплячими, потрібен час для завантаження необхідних даних',
|
||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Якщо в наданому вище звіті присутня позначка про помилку (ticket number), то це вказує на збій у виконанні контролера ще до початку запуску док-тестів. Це, зазвичай, сигналізує про помилку вирівнювання тексту програми (indention error) або помилку за межами функції (error outside function code).\r\nЗелений заголовок сигналізує, що всі тести (з наявних) пройшли успішно. В цьому випадку результат тестів показано не буде.',
|
||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Якщо в наданому вище звіті присутня позначка про помилку (ticket number), то це вказує на збій у виконанні контролера ще до початку запуску док-тестів. Це, зазвичай, сигналізує про помилку вирівнювання тексту програми (indention error) або помилку за межами функції (error outside function code). Зелений заголовок сигналізує, що всі тести (з наявних) пройшли успішно. В цьому випадку результат тестів показано не буде.',
|
||||
'Import/Export': 'Імпорт/Експорт',
|
||||
'In development, use the default Rocket webserver that is currently supported by this debugger.': 'Під час розробки , використовуйте вбудований веб-сервер Rocket, він найкраще налаштований на спільну роботу з інтерактивним ладначем.',
|
||||
'includes': 'включає',
|
||||
@@ -306,7 +310,11 @@
|
||||
'Powered by': 'Працює на',
|
||||
'previous 100 rows': 'попередні 100 рядків',
|
||||
'Previous Edit Point': 'Попереднє місце редагування',
|
||||
'Private files': 'Приватні файли',
|
||||
'private files': 'приватні файли',
|
||||
'Project Progress': 'Поступ проекту',
|
||||
'Pull': 'Втягнути',
|
||||
'Push': 'Проштовхнути',
|
||||
'Query:': 'Запит:',
|
||||
'RAM Cache Keys': 'Ключ ОЗП-кешу (RAM Cache)',
|
||||
'Ram Cleared': "Кеш в пам'яті очищено",
|
||||
@@ -383,6 +391,7 @@
|
||||
'There are no translators': 'Перекладів нема',
|
||||
'There are no translators, only default language is supported': 'Перекладів нема, підтримується тільки мова оригіналу',
|
||||
'There are no views': 'Відображень нема',
|
||||
'These files are not served, they are only available from within your app': 'Ці файли ніяк не обробляються, вони доступні тільки в межах вашого додатку',
|
||||
'These files are served without processing, your images go here': 'Ці файли обслуговуються "як є", без обробки, ваші графічні файли та інші супутні файли даних можуть знаходитись тут',
|
||||
"This debugger may not work properly if you don't have a threaded webserver or you're using multiple daemon processes.": 'Цей ладнач може працювати некоректно, якщо ви використовуєте веб-сервер без підтримки потоків або використовуєте декілька сервісних процесів.',
|
||||
'This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk': 'Це експериментальна властивість, яка вимагає подальшого тестування. Якщо ви вирішили повернутись на попередню версію, ви це робити на ваш власний розсуд.',
|
||||
@@ -391,6 +400,8 @@
|
||||
"This page can commit your changes to an openshift app repo and push them to your cloud instance. This assumes that you've already created the application instance using the web2py skeleton and have that repo somewhere on a filesystem that this web2py instance can access. This functionality requires GitPython installed and on the python path of the runtime that web2py is operating in.": 'На цій сторінці можна закомітити ваші зміни в репозитарій додатків openshift та проштовхнути їх у ваш примірник в хмарі. Це передбачає, що ви вже створили примірник додатку, використовуючи базовий додаток web2py, як скелет, і маєте репозитарій десь на вашій файловій системі, причому екземпляр web2py має до нього доступ. Ця властивість вимагає наявності встановленого модулю GitPython так, щоб web2py міг його викликати.',
|
||||
'This page can upload your application to the Google App Engine computing cloud. Mind that you must first create indexes locally and this is done by installing the Google appserver and running the app locally with it once, or there will be errors when selecting records. Attention: deployment may take long time, depending on the network speed. Attention: it will overwrite your app.yaml. DO NOT SUBMIT TWICE.': 'На цій сторінці ви можете завантажити свій додаток в сервіс хмарних обчислень Google App Engine. Майте на увазі, що спочатку необхідно локально створити індекси, і це можна зробити встановивши сервер додатків Google appserver та запустивши в ньому додаток один раз, інакше при виборі записів виникатимуть помилки. Увага: розгортання може зайняти тривалий час, в залежності від швидкості мережі. Увага: це призведе до перезапису app.yaml. НЕ ПУБЛІКУЙТЕ ДВІЧІ.',
|
||||
'this page to see if a breakpoint was hit and debug interaction is required.': 'цю сторінку, щоб побачити, чи була досягнута точка зупинки і процес ладнання розпочато.',
|
||||
'This will pull changes from the remote repo for application "%s"?': '"Втягнути" (pull) зміни з віддаленого репозитарію для додатку "%s"?',
|
||||
'This will push changes to the remote repo for application "%s".': 'Проштовхнути (push) зміни у віддалений репозитарій для додатку "%s"?',
|
||||
'ticket': 'позначка',
|
||||
'Ticket': 'Позначка (Ticket)',
|
||||
'Ticket ID': 'Ід.позначки (Ticket ID)',
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
{{pass}}
|
||||
{{pass}}
|
||||
<h3>
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
</h3>
|
||||
[ {{=A(str(T('insert new'))+' '+table,_href=URL('insert',args=[db,table]))}} ]
|
||||
<br /><br />
|
||||
@@ -50,7 +50,7 @@
|
||||
{{=T('Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.')}}<br/>
|
||||
{{=T('"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN')}}</p>
|
||||
<br/><br/>
|
||||
<h4>{{=nrows}} {{=T("selected")}}</h4>
|
||||
<h4>{{=T("%s selected", nrows)}}</h4>
|
||||
{{if start>0:}}[ {{=A(T('previous 100 rows'),_href=URL('select',args=request.args[0],vars=dict(start=start-100)))}} ]{{pass}}
|
||||
{{if stop<nrows:}}[ {{=A(T('next 100 rows'),_href=URL('select',args=request.args[0],vars=dict(start=start+100)))}} ]{{pass}}
|
||||
{{if rows:}}
|
||||
@@ -105,40 +105,34 @@
|
||||
|
||||
|
||||
{{elif request.function == 'ccache':}}
|
||||
<h2>Cache</h2>
|
||||
<h2>{{T("Cache")}}</h2>
|
||||
<div class="list">
|
||||
|
||||
<div class="list-header">
|
||||
<h3>Statistics</h3>
|
||||
<h3>{{T("Statistics")}}</h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h4>Overview</h4>
|
||||
<p>Number of entries: <strong>{{=total['entries']}}</strong>
|
||||
{{if total['entries'] > 0:}}
|
||||
</p>
|
||||
<h4>{{=T("Overview")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", total['entries'])}}</p>
|
||||
{{if total['entries'] > 0:}}
|
||||
<p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses})",
|
||||
dict(ratio=total['ratio'], hits=total['hits'], misses=total['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=total['ratio']}}%</strong>
|
||||
(<strong>{{=total['hits']}}</strong> hits
|
||||
and <strong>{{=total['misses']}}</strong> misses)
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=total['objects']}}</strong> items,
|
||||
<strong>{{=total['bytes']}}</strong> bytes
|
||||
{{if total['bytes'] > 524287:}}
|
||||
(<strong>{{="%.0d" % (total['bytes'] / 1048576)}} MB</strong>)
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict(items=total['objects'], bytes=total['bytes']))}}
|
||||
{{if total['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", total['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
Cache contains items up to
|
||||
<strong>{{="%02d" % total['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % total['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % total['oldest'][2]}}</strong> seconds old.
|
||||
{{=T.M("Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=total['oldest'][0], min=total['oldest'][1], sec=total['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('Cache Keys'), _onclick='jQuery("#all_keys").toggle();')}}
|
||||
<div class="hidden" id="all_keys">
|
||||
@@ -147,31 +141,26 @@
|
||||
<br />
|
||||
{{pass}}
|
||||
|
||||
<h4>RAM</h4>
|
||||
<p>Number of entries: <strong>{{=ram['entries']}}</strong>
|
||||
{{if ram['entries'] > 0:}}</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=ram['ratio']}}%</strong>
|
||||
(<strong>{{=ram['hits']}}</strong> hits
|
||||
and <strong>{{=ram['misses']}}</strong> misses)
|
||||
<h4>{{=T("RAM")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", ram['entries'])}}</p>
|
||||
{{if ram['entries'] > 0:}}
|
||||
<p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %{hit(hits)} and **%(misses)s** %%{miss(misses)})",
|
||||
dict( ratio=ram['ratio'], hits=ram['hits'], misses=ram['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=ram['objects']}}</strong> items,
|
||||
<strong>{{=ram['bytes']}}</strong> bytes
|
||||
{{if ram['bytes'] > 524287:}}
|
||||
(<strong>{{=ram['bytes'] / 1048576}} MB</strong>)
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{=T.M("**%(items)s** items, **%(bytes)s** %%{byte(bytes)}", dict(items=ram['objects'], bytes=ram['bytes']))}}
|
||||
{{if ram['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", ram['bytes'] / 10485576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
RAM contains items up to
|
||||
<strong>{{="%02d" % ram['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % ram['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % ram['oldest'][2]}}</strong> seconds old.
|
||||
{{=T.M("RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=ram['oldest'][0], min=ram['oldest'][1], sec=ram['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('RAM Cache Keys'), _onclick='jQuery("#ram_keys").toggle();')}}
|
||||
<div class="hidden" id="ram_keys">
|
||||
@@ -180,43 +169,38 @@
|
||||
<br />
|
||||
{{pass}}
|
||||
|
||||
<h4>DISK</h4>
|
||||
<p>Number of entries: <strong>{{=disk['entries']}}</strong>
|
||||
{{if disk['entries'] > 0:}}
|
||||
</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=disk['ratio']}}%</strong>
|
||||
(<strong>{{=disk['hits']}}</strong> hits
|
||||
and <strong>{{=disk['misses']}}</strong> misses)
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
<h4>{{=T("DISK")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", disk['entries'])}}</p>
|
||||
{{if disk['entries'] > 0:}}
|
||||
<p>
|
||||
{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})",
|
||||
dict(ratio=disk['ratio'], hits=disk['hits'], misses=disk['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=disk['objects']}}</strong> items,
|
||||
<strong>{{=disk['bytes']}}</strong> bytes
|
||||
{{if disk['bytes'] > 524287:}}
|
||||
(<strong>{{=disk['bytes'] / 1048576}} MB</strong>)
|
||||
{{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict( items=disk['objects'], bytes=disk['bytes']))}}
|
||||
{{if disk['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", disk['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
DISK contains items up to
|
||||
<strong>{{="%02d" % disk['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % disk['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % disk['oldest'][2]}}</strong> seconds old.
|
||||
</p>
|
||||
{{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
|
||||
<div class="hidden" id="disk_keys">
|
||||
</p>
|
||||
<p>
|
||||
{{=T.M("DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=disk['oldest'][0], min=disk['oldest'][1], sec=disk['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
|
||||
<div class="hidden" id="disk_keys">
|
||||
{{=disk['keys']}}
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
<br />
|
||||
{{pass}}
|
||||
</div>
|
||||
|
||||
<div class="list-header">
|
||||
<h3>Manage Cache</h3>
|
||||
<h3>{{=T("Manage Cache")}}</h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
{{pass}}
|
||||
{{pass}}
|
||||
<h3>
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
</h3>
|
||||
[ {{=A(str(T('insert new'))+' '+table,_href=URL('insert',args=[db,table]))}} ]
|
||||
<br /><br />
|
||||
@@ -50,7 +50,7 @@
|
||||
{{=T('Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.')}}<br/>
|
||||
{{=T('"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN')}}</p>
|
||||
<br/><br/>
|
||||
<h4>{{=nrows}} {{=T("selected")}}</h4>
|
||||
<h4>{{=T("%s selected", nrows)}}</h4>
|
||||
{{if start>0:}}[ {{=A(T('previous 100 rows'),_href=URL('select',args=request.args[0],vars=dict(start=start-100)))}} ]{{pass}}
|
||||
{{if stop<nrows:}}[ {{=A(T('next 100 rows'),_href=URL('select',args=request.args[0],vars=dict(start=start+100)))}} ]{{pass}}
|
||||
{{if rows:}}
|
||||
@@ -105,40 +105,34 @@
|
||||
|
||||
|
||||
{{elif request.function == 'ccache':}}
|
||||
<h2>Cache</h2>
|
||||
<h2>{{T("Cache")}}</h2>
|
||||
<div class="list">
|
||||
|
||||
<div class="list-header">
|
||||
<h3>Statistics</h3>
|
||||
<h3>{{T("Statistics")}}</h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h4>Overview</h4>
|
||||
<p>Number of entries: <strong>{{=total['entries']}}</strong>
|
||||
{{if total['entries'] > 0:}}
|
||||
</p>
|
||||
<h4>{{=T("Overview")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", total['entries'])}}</p>
|
||||
{{if total['entries'] > 0:}}
|
||||
<p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses})",
|
||||
dict(ratio=total['ratio'], hits=total['hits'], misses=total['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=total['ratio']}}%</strong>
|
||||
(<strong>{{=total['hits']}}</strong> hits
|
||||
and <strong>{{=total['misses']}}</strong> misses)
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=total['objects']}}</strong> items,
|
||||
<strong>{{=total['bytes']}}</strong> bytes
|
||||
{{if total['bytes'] > 524287:}}
|
||||
(<strong>{{="%.0d" % (total['bytes'] / 1048576)}} MB</strong>)
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict(items=total['objects'], bytes=total['bytes']))}}
|
||||
{{if total['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", total['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
Cache contains items up to
|
||||
<strong>{{="%02d" % total['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % total['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % total['oldest'][2]}}</strong> seconds old.
|
||||
{{=T.M("Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=total['oldest'][0], min=total['oldest'][1], sec=total['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('Cache Keys'), _onclick='jQuery("#all_keys").toggle();')}}
|
||||
<div class="hidden" id="all_keys">
|
||||
@@ -147,31 +141,26 @@
|
||||
<br />
|
||||
{{pass}}
|
||||
|
||||
<h4>RAM</h4>
|
||||
<p>Number of entries: <strong>{{=ram['entries']}}</strong>
|
||||
{{if ram['entries'] > 0:}}</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=ram['ratio']}}%</strong>
|
||||
(<strong>{{=ram['hits']}}</strong> hits
|
||||
and <strong>{{=ram['misses']}}</strong> misses)
|
||||
<h4>{{=T("RAM")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", ram['entries'])}}</p>
|
||||
{{if ram['entries'] > 0:}}
|
||||
<p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %{hit(hits)} and **%(misses)s** %%{miss(misses)})",
|
||||
dict( ratio=ram['ratio'], hits=ram['hits'], misses=ram['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=ram['objects']}}</strong> items,
|
||||
<strong>{{=ram['bytes']}}</strong> bytes
|
||||
{{if ram['bytes'] > 524287:}}
|
||||
(<strong>{{=ram['bytes'] / 1048576}} MB</strong>)
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{=T.M("**%(items)s** items, **%(bytes)s** %%{byte(bytes)}", dict(items=ram['objects'], bytes=ram['bytes']))}}
|
||||
{{if ram['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", ram['bytes'] / 10485576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
RAM contains items up to
|
||||
<strong>{{="%02d" % ram['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % ram['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % ram['oldest'][2]}}</strong> seconds old.
|
||||
{{=T.M("RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=ram['oldest'][0], min=ram['oldest'][1], sec=ram['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('RAM Cache Keys'), _onclick='jQuery("#ram_keys").toggle();')}}
|
||||
<div class="hidden" id="ram_keys">
|
||||
@@ -180,43 +169,38 @@
|
||||
<br />
|
||||
{{pass}}
|
||||
|
||||
<h4>DISK</h4>
|
||||
<p>Number of entries: <strong>{{=disk['entries']}}</strong>
|
||||
{{if disk['entries'] > 0:}}
|
||||
</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=disk['ratio']}}%</strong>
|
||||
(<strong>{{=disk['hits']}}</strong> hits
|
||||
and <strong>{{=disk['misses']}}</strong> misses)
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
<h4>{{=T("DISK")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", disk['entries'])}}</p>
|
||||
{{if disk['entries'] > 0:}}
|
||||
<p>
|
||||
{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})",
|
||||
dict(ratio=disk['ratio'], hits=disk['hits'], misses=disk['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=disk['objects']}}</strong> items,
|
||||
<strong>{{=disk['bytes']}}</strong> bytes
|
||||
{{if disk['bytes'] > 524287:}}
|
||||
(<strong>{{=disk['bytes'] / 1048576}} MB</strong>)
|
||||
{{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict( items=disk['objects'], bytes=disk['bytes']))}}
|
||||
{{if disk['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", disk['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
DISK contains items up to
|
||||
<strong>{{="%02d" % disk['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % disk['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % disk['oldest'][2]}}</strong> seconds old.
|
||||
</p>
|
||||
{{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
|
||||
<div class="hidden" id="disk_keys">
|
||||
</p>
|
||||
<p>
|
||||
{{=T.M("DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=disk['oldest'][0], min=disk['oldest'][1], sec=disk['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
|
||||
<div class="hidden" id="disk_keys">
|
||||
{{=disk['keys']}}
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
<br />
|
||||
{{pass}}
|
||||
</div>
|
||||
|
||||
<div class="list-header">
|
||||
<h3>Manage Cache</h3>
|
||||
<h3>{{=T("Manage Cache")}}</h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
@@ -6,4 +6,11 @@
|
||||
'изменена': ['изменены','изменено'],
|
||||
'строка': ['строки','строк'],
|
||||
'удалена': ['удалены','удалено'],
|
||||
'день': ['дня', 'дней'],
|
||||
'месяц': ['месяца','месяцев'],
|
||||
'неделю': ['недели','недель'],
|
||||
'год': ['года','лет'],
|
||||
'час': ['часа','часов'],
|
||||
'минуту': ['минуты','минут'],
|
||||
'секунду': ['секунды','секунд'],
|
||||
}
|
||||
@@ -10,4 +10,8 @@
|
||||
'секунду': ['секунди','секунд'],
|
||||
'схибнення': ['схибнення','схибнень'],
|
||||
'хвилину': ['хвилини','хвилин'],
|
||||
'день': ['дні', 'днів'],
|
||||
'місяць': ['місяці','місяців'],
|
||||
'тиждень': ['тижні','тижнів'],
|
||||
'рік': ['роки','років'],
|
||||
}
|
||||
@@ -3,11 +3,25 @@
|
||||
'!langcode!': 'ru',
|
||||
'!langname!': 'Русский',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Изменить" - необязательное выражение вида "field1=\'новое значение\'". Результаты операции JOIN нельзя изменить или удалить.',
|
||||
'%d days ago': '%d %%{день} тому',
|
||||
'%d hours ago': '%d %%{час} тому',
|
||||
'%d minutes ago': '%d %%{минуту} тому',
|
||||
'%d months ago': '%d %%{месяц} тому',
|
||||
'%d seconds ago': '%d %%{секунду} тому',
|
||||
'%d weeks ago': '%d %%{неделю} тому',
|
||||
'%d years ago': '%d %%{год} тому',
|
||||
'%s %%{row} deleted': '%%{!удалена[0]} %s %%{строка[0]}',
|
||||
'%s %%{row} updated': '%%{!изменена[0]} %s %%{строка[0]}',
|
||||
'%s selected': '%%{!выбрана[0]} %s %%{запись[0]}',
|
||||
'%Y-%m-%d': '%Y-%m-%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||
'1 day ago': '1 день тому',
|
||||
'1 hour ago': '1 час тому',
|
||||
'1 minute ago': '1 минуту тому',
|
||||
'1 month ago': '1 месяц тому',
|
||||
'1 second ago': '1 секунду тому',
|
||||
'1 week ago': '1 неделю тому',
|
||||
'1 year ago': '1 год тому',
|
||||
'About': 'About',
|
||||
'Access Control': 'Access Control',
|
||||
'Administrative Interface': 'Administrative Interface',
|
||||
@@ -31,8 +45,8 @@
|
||||
'Current session': 'Текущая сессия',
|
||||
'customize me!': 'настройте внешний вид!',
|
||||
'data uploaded': 'данные загружены',
|
||||
'Database': 'Database',
|
||||
'database': 'база данных',
|
||||
'Database': 'Database',
|
||||
'database %s select': 'выбор базы данных %s',
|
||||
'db': 'БД',
|
||||
'DB Model': 'DB Model',
|
||||
@@ -93,6 +107,7 @@
|
||||
'new record inserted': 'новая запись добавлена',
|
||||
'next 100 rows': 'следующие 100 строк',
|
||||
'No databases in this application': 'В приложении нет баз данных',
|
||||
'now': 'сейчас',
|
||||
'Object or table name': 'Object or table name',
|
||||
'Old password': 'Старый пароль',
|
||||
'Online examples': 'примеры он-лайн',
|
||||
|
||||
@@ -3,11 +3,25 @@
|
||||
'!langcode!': 'uk',
|
||||
'!langname!': 'Українська',
|
||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Оновити" це додатковий вираз, такий, як "field1=\'нове_значення\'". Ви не можете змінювати або вилучати дані об\'єднаних таблиць.',
|
||||
'%d days ago': '%d %%{день} тому',
|
||||
'%d hours ago': '%d %%{годину} тому',
|
||||
'%d minutes ago': '%d %%{хвилину} тому',
|
||||
'%d months ago': '%d %%{місяць} тому',
|
||||
'%d secods ago': '%d %%{секунду} тому',
|
||||
'%d weeks ago': '%d %%{тиждень} тому',
|
||||
'%d years ago': '%d %%{рік} тому',
|
||||
'%s %%{row} deleted': 'Вилучено %s %%{рядок}',
|
||||
'%s %%{row} updated': 'Змінено %s %%{рядок}',
|
||||
'%s selected': 'Вибрано %s %%{запис}',
|
||||
'%Y-%m-%d': '%Y/%m/%d',
|
||||
'%Y-%m-%d %H:%M:%S': '%Y/%m/%d %H:%M:%S',
|
||||
'1 day ago': '1 день тому',
|
||||
'1 hour ago': '1 годину тому',
|
||||
'1 minute ago': '1 хвилину тому',
|
||||
'1 month ago': '1 місяць тому',
|
||||
'1 second ago': '1 секунду тому',
|
||||
'1 week ago': '1 тиждень тому',
|
||||
'1 year ago': '1 рік тому',
|
||||
'@markmin\x01(**%.0d MB**)': '(**``%.0d``:red МБ**)',
|
||||
'@markmin\x01**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{елемент(items)}, **%(bytes)s** %%{байт(bytes)}',
|
||||
'@markmin\x01``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '**нема в наявності** (потребує Пітонівської бібліотеки [[guppy {посилання відкриється у новому вікні} http://pypi.python.org/pypi/guppy/ popup]])',
|
||||
@@ -115,6 +129,7 @@
|
||||
'new record inserted': 'новий рядок додано',
|
||||
'next 100 rows': 'наступні 100 рядків',
|
||||
'No databases in this application': 'Даний додаток не використовує базу даних',
|
||||
'now': 'зараз',
|
||||
'Object or table name': "Об'єкт або назва таблиці",
|
||||
'Old password': 'Старий пароль',
|
||||
'Online examples': 'Зразковий демо-сайт',
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
{{pass}}
|
||||
{{pass}}
|
||||
<h3>
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
{{=A("%s.%s" % (db,table),_href=URL('select',args=[db],vars=dict(query=qry)))}}
|
||||
</h3>
|
||||
[ {{=A(str(T('insert new'))+' '+table,_href=URL('insert',args=[db,table]))}} ]
|
||||
<br /><br />
|
||||
@@ -50,7 +50,7 @@
|
||||
{{=T('Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.')}}<br/>
|
||||
{{=T('"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN')}}</p>
|
||||
<br/><br/>
|
||||
<h4>{{=nrows}} {{=T("selected")}}</h4>
|
||||
<h4>{{=T("%s selected", nrows)}}</h4>
|
||||
{{if start>0:}}[ {{=A(T('previous 100 rows'),_href=URL('select',args=request.args[0],vars=dict(start=start-100)))}} ]{{pass}}
|
||||
{{if stop<nrows:}}[ {{=A(T('next 100 rows'),_href=URL('select',args=request.args[0],vars=dict(start=start+100)))}} ]{{pass}}
|
||||
{{if rows:}}
|
||||
@@ -105,40 +105,34 @@
|
||||
|
||||
|
||||
{{elif request.function == 'ccache':}}
|
||||
<h2>Cache</h2>
|
||||
<h2>{{T("Cache")}}</h2>
|
||||
<div class="list">
|
||||
|
||||
<div class="list-header">
|
||||
<h3>Statistics</h3>
|
||||
<h3>{{T("Statistics")}}</h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h4>Overview</h4>
|
||||
<p>Number of entries: <strong>{{=total['entries']}}</strong>
|
||||
{{if total['entries'] > 0:}}
|
||||
</p>
|
||||
<h4>{{=T("Overview")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", total['entries'])}}</p>
|
||||
{{if total['entries'] > 0:}}
|
||||
<p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses})",
|
||||
dict(ratio=total['ratio'], hits=total['hits'], misses=total['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=total['ratio']}}%</strong>
|
||||
(<strong>{{=total['hits']}}</strong> hits
|
||||
and <strong>{{=total['misses']}}</strong> misses)
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=total['objects']}}</strong> items,
|
||||
<strong>{{=total['bytes']}}</strong> bytes
|
||||
{{if total['bytes'] > 524287:}}
|
||||
(<strong>{{="%.0d" % (total['bytes'] / 1048576)}} MB</strong>)
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict(items=total['objects'], bytes=total['bytes']))}}
|
||||
{{if total['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", total['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
Cache contains items up to
|
||||
<strong>{{="%02d" % total['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % total['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % total['oldest'][2]}}</strong> seconds old.
|
||||
{{=T.M("Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=total['oldest'][0], min=total['oldest'][1], sec=total['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('Cache Keys'), _onclick='jQuery("#all_keys").toggle();')}}
|
||||
<div class="hidden" id="all_keys">
|
||||
@@ -147,31 +141,26 @@
|
||||
<br />
|
||||
{{pass}}
|
||||
|
||||
<h4>RAM</h4>
|
||||
<p>Number of entries: <strong>{{=ram['entries']}}</strong>
|
||||
{{if ram['entries'] > 0:}}</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=ram['ratio']}}%</strong>
|
||||
(<strong>{{=ram['hits']}}</strong> hits
|
||||
and <strong>{{=ram['misses']}}</strong> misses)
|
||||
<h4>{{=T("RAM")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", ram['entries'])}}</p>
|
||||
{{if ram['entries'] > 0:}}
|
||||
<p>{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %{hit(hits)} and **%(misses)s** %%{miss(misses)})",
|
||||
dict( ratio=ram['ratio'], hits=ram['hits'], misses=ram['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=ram['objects']}}</strong> items,
|
||||
<strong>{{=ram['bytes']}}</strong> bytes
|
||||
{{if ram['bytes'] > 524287:}}
|
||||
(<strong>{{=ram['bytes'] / 1048576}} MB</strong>)
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{=T.M("**%(items)s** items, **%(bytes)s** %%{byte(bytes)}", dict(items=ram['objects'], bytes=ram['bytes']))}}
|
||||
{{if ram['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", ram['bytes'] / 10485576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
RAM contains items up to
|
||||
<strong>{{="%02d" % ram['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % ram['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % ram['oldest'][2]}}</strong> seconds old.
|
||||
{{=T.M("RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=ram['oldest'][0], min=ram['oldest'][1], sec=ram['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('RAM Cache Keys'), _onclick='jQuery("#ram_keys").toggle();')}}
|
||||
<div class="hidden" id="ram_keys">
|
||||
@@ -180,43 +169,38 @@
|
||||
<br />
|
||||
{{pass}}
|
||||
|
||||
<h4>DISK</h4>
|
||||
<p>Number of entries: <strong>{{=disk['entries']}}</strong>
|
||||
{{if disk['entries'] > 0:}}
|
||||
</p>
|
||||
<p>
|
||||
Hit Ratio:
|
||||
<strong>{{=disk['ratio']}}%</strong>
|
||||
(<strong>{{=disk['hits']}}</strong> hits
|
||||
and <strong>{{=disk['misses']}}</strong> misses)
|
||||
</p>
|
||||
<p>
|
||||
Size of cache:
|
||||
<h4>{{=T("DISK")}}</h4>
|
||||
<p>{{=T.M("Number of entries: **%s**", disk['entries'])}}</p>
|
||||
{{if disk['entries'] > 0:}}
|
||||
<p>
|
||||
{{=T.M("Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})",
|
||||
dict(ratio=disk['ratio'], hits=disk['hits'], misses=disk['misses']))}}
|
||||
</p>
|
||||
<p>
|
||||
{{=T("Size of cache:")}}
|
||||
{{if object_stats:}}
|
||||
<strong>{{=disk['objects']}}</strong> items,
|
||||
<strong>{{=disk['bytes']}}</strong> bytes
|
||||
{{if disk['bytes'] > 524287:}}
|
||||
(<strong>{{=disk['bytes'] / 1048576}} MB</strong>)
|
||||
{{=T.M("**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}", dict( items=disk['objects'], bytes=disk['bytes']))}}
|
||||
{{if disk['bytes'] > 524287:}}
|
||||
{{=T.M("(**%.0d MB**)", disk['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{pass}}
|
||||
{{else:}} <strong>not available</strong> (requires the Python <a href="http://pypi.python.org/pypi/guppy/" target="_blank">guppy</a> library)
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
DISK contains items up to
|
||||
<strong>{{="%02d" % disk['oldest'][0]}}</strong> hours
|
||||
<strong>{{="%02d" % disk['oldest'][1]}}</strong> minutes
|
||||
<strong>{{="%02d" % disk['oldest'][2]}}</strong> seconds old.
|
||||
</p>
|
||||
{{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
|
||||
<div class="hidden" id="disk_keys">
|
||||
</p>
|
||||
<p>
|
||||
{{=T.M("DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.",
|
||||
dict(hours=disk['oldest'][0], min=disk['oldest'][1], sec=disk['oldest'][2]))}}
|
||||
</p>
|
||||
{{=BUTTON(T('Disk Cache Keys'), _onclick='jQuery("#disk_keys").toggle();')}}
|
||||
<div class="hidden" id="disk_keys">
|
||||
{{=disk['keys']}}
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
<br />
|
||||
{{pass}}
|
||||
</div>
|
||||
|
||||
<div class="list-header">
|
||||
<h3>Manage Cache</h3>
|
||||
<h3>{{=T("Manage Cache")}}</h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
|
||||
@@ -3,15 +3,18 @@
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<style>
|
||||
blockquote { background-color: lime; }
|
||||
thead { color: white; background-color: gray; text-align: center; }
|
||||
tfoot { color: white; background-color: gray; }
|
||||
.tableclass1 { background-color: yellow; }
|
||||
blockquote { background-color: #FFFAAE; padding: 7px; }
|
||||
table { border-collapse: collapse; }
|
||||
thead td { border-bottom: 1px solid; }
|
||||
tfoot td { border-top: 1px solid; }
|
||||
.tableclass1 { background-color: lime; }
|
||||
.tableclass1 thead { color: yellow; background-color: green; }
|
||||
.tableclass1 tfoot { color: yellow; background-color: green; }
|
||||
.tableclass1 .even td { background-color: #80FF7F; }
|
||||
.tableclass1 .first td {border-top: 1px solid; }
|
||||
|
||||
td.num { text-align: right; }
|
||||
pre { background-color: #E0E0E0; }
|
||||
pre { background-color: #E0E0E0; padding: 5px; }
|
||||
</style>
|
||||
<title>Markmin markup language</title>
|
||||
</head>
|
||||
@@ -22,14 +25,14 @@ print markmin2html(m)
|
||||
from markmin2latex import markmin2latex
|
||||
print markmin2latex(m)
|
||||
from markmin2pdf import markmin2pdf # requires pdflatex
|
||||
print markmin2pdf(m)</code></pre> ====================<h1>This is a test block with new features:</h1><p>This is a blockquote with a list with tables in it:</p><blockquote class="blockquoteclass" id="markmin_blockquoteid">This is a paragraph before list. You can continue paragraph on the next lines.<br />This is an ordered list with tables:<ol><li>Item 1</li><li>Item 2</li><li><table class="tableclass1" id="markmin_tableid1"><tbody><tr><td>aa</td><td>bb</td><td>cc</td></tr><tr><td class="num">11</td><td class="num">22</td><td class="num">33</td></tr></tbody></table></li><li>Item 4 <table class="tableclass1"><thead><tr><td>T1</td><td>T2</td><td>t3</td></tr></thead><tbody><tr><td>aaa</td><td>bbb</td><td>ccc</td></tr><tr><td>ddd</td><td>fff</td><td>ggg</td></tr><tr><td class="num">123</td><td class="num">0</td><td class="num">5.0</td></tr></tbody></table></li></ol></blockquote><p>This this a new paragraph with a table. Table has header and footer:</p><table class="tableclass1" id="markmin_tableid2"><thead><tr><td><strong>Title 1</strong></td><td><strong>Title 2</strong></td><td><strong>Title 3</strong></td></tr></thead><tbody><tr><td>data 1</td><td>data 2</td><td class="num">2.00</td></tr><tr><td>data 4</td><td>data5(long)</td><td class="num">23.00</td></tr><tr><td></td><td>data 8</td><td class="num">33.50</td></tr></tbody><tfoot><tr><td>Total:</td><td>3 items</td><td class="num">58.50</td></tr></tfoot></table><h2>Multilevel lists</h2><p>Now lists can be multilevel:</p><ol><li>Ordered item 1 on level 1. You can continue item text on next strings<ol><li><p>Ordered item 1 of sublevel 2 with a paragraph (paragraph can start with point after plus or minus characters, e.g. <strong>++.</strong> or <strong>--.</strong>)</p><li><p>This is another item. But with 3 paragraphs, blockquote and sublists:</p><p>This is the second paragraph in the item. You can add paragraphs to an item, using point notation, where first characters in the string are sequence of points with space between them and another string. For example, this paragraph (in sublevel 2) starts with two points:</p><code>.. This is the second paragraph...</code><blockquote><h3>this is a blockquote in a list</h3>You can use blockquote with headers, paragraphs, tables and lists in it:<br />Tables can have or have not header and footer. This table is defined without any header and footer in it:<table><tbody><tr><td>red</td><td>fox</td><td class="num">0</td></tr><tr><td>blue</td><td>dolphin</td><td class="num">1000</td></tr><tr><td>green</td><td>leaf</td><td class="num">10000</td></tr></tbody></table></blockquote><p>This is yet another paragraph in the item.</p><ul><li>This is an item of unordered list <strong>(sublevel 3)</strong></li><li>This is the second item of the unordered list <em>(sublevel 3)</em><ol><ol><ol><li>This is a single item of ordered list in sublevel 6</li></ol></ol><p>and this is a paragraph in sublevel 4</p></ol></li><li><p>This is a new item with paragraph in sublevel 3.</p><ol><li>Start ordered list in sublevel 4 with code block: <pre><code>line 1
|
||||
print markmin2pdf(m)</code></pre> ====================<h1>This is a test block with new features:</h1><p>This is a blockquote with a list with tables in it:</p><blockquote class="blockquoteclass" id="markmin_blockquoteid">This is a paragraph before list. You can continue paragraph on the next lines.<br />This is an ordered list with tables:<ol><li>Item 1</li><li>Item 2</li><li><table class="tableclass1" id="markmin_tableid1"><tbody><tr class="first"><td>aa</td><td>bb</td><td>cc</td></tr><tr class="even"><td class="num">11</td><td class="num">22</td><td class="num">33</td></tr></tbody></table></li><li>Item 4 <table class="tableclass1"><thead><tr class="first"><td>T1</td><td>T2</td><td>t3</td></tr></thead><tbody><tr class="first"><td>aaa</td><td>bbb</td><td>ccc</td></tr><tr class="even"><td>ddd</td><td>fff</td><td>ggg</td></tr><tr><td class="num">123</td><td class="num">0</td><td class="num">5.0</td></tr></tbody></table></li></ol></blockquote><p>This this a new paragraph with a table. Table has header, footer, sections, odd and even rows:</p><table class="tableclass1" id="markmin_tableid2"><thead><tr class="first"><td><strong>Title 1</strong></td><td><strong>Title 2</strong></td><td><strong>Title 3</strong></td></tr></thead><tbody><tr class="first"><td>data 1</td><td>data 2</td><td class="num">2.00</td></tr><tr class="even"><td>data 3</td><td>data4(long)</td><td class="num">23.00</td></tr><tr><td></td><td>data 5</td><td class="num">33.50</td></tr><tr class="first"><td>New section</td><td>New data</td><td class="num">5.00</td></tr><tr class="even"><td>data 1</td><td>data2(long)</td><td class="num">100.45</td></tr><tr><td></td><td>data 3</td><td class="num">12.50</td></tr><tr class="even"><td>data 4</td><td>data 5</td><td class="num">.33</td></tr><tr><td>data 6</td><td>data7(long)</td><td class="num">8.01</td></tr><tr class="even"><td></td><td>data 8</td><td class="num">514</td></tr></tbody><tfoot><tr class="first"><td>Total:</td><td>9 items</td><td>698,79</td></tr></tfoot></table><h2>Multilevel lists</h2><p>Now lists can be multilevel:</p><ol><li>Ordered item 1 on level 1. You can continue item text on next strings<ol><li><p>Ordered item 1 of sublevel 2 with a paragraph (paragraph can start with point after plus or minus characters, e.g. <strong>++.</strong> or <strong>--.</strong>)</p><li><p>This is another item. But with 3 paragraphs, blockquote and sublists:</p><p>This is the second paragraph in the item. You can add paragraphs to an item, using point notation, where first characters in the string are sequence of points with space between them and another string. For example, this paragraph (in sublevel 2) starts with two points:</p><code>.. This is the second paragraph...</code><blockquote><h3>this is a blockquote in a list</h3>You can use blockquote with headers, paragraphs, tables and lists in it:<br />Tables can have or have not header and footer. This table is defined without any header and footer in it:<table><tbody><tr class="first"><td>red</td><td>fox</td><td class="num">0</td></tr><tr class="even"><td>blue</td><td>dolphin</td><td class="num">1000</td></tr><tr><td>green</td><td>leaf</td><td class="num">10000</td></tr></tbody></table></blockquote><p>This is yet another paragraph in the item.</p><ul><li>This is an item of unordered list <strong>(sublevel 3)</strong></li><li>This is the second item of the unordered list <em>(sublevel 3)</em><ol><ol><ol><li>This is a single item of ordered list in sublevel 6</li></ol></ol><p>and this is a paragraph in sublevel 4</p></ol></li><li><p>This is a new item with paragraph in sublevel 3.</p><ol><li>Start ordered list in sublevel 4 with code block: <pre><code>line 1
|
||||
line 2
|
||||
line 3</code></pre></li><li><p>Yet another item with code block:</p><pre><code> line 1
|
||||
line 2
|
||||
line 3</code></pre> This item finishes with this paragraph.</li></ol><p>Item in sublevel 3 can be continued with paragraphs.</p><pre><code> this is another
|
||||
code block
|
||||
in the
|
||||
sublevel 3 item</code></pre></li></ul><ol><li>The last item in sublevel 3</li></ol><p>This is a continuous paragraph for item 2 in sublevel 2. You can use such structure to create difficult structured documents.</p><li>item 3 in sublevel 2</li></li></li></ol><ul><li>item 1 in sublevel 2 (new unordered list)</li><li>item 2 in sublevel 2</li><li>item 3 in sublevel 2</li></ul><ol><li>item 1 in sublevel 2 (new ordered list)</li><li>item 2 in sublevel 2</li><li>item 3 in sublevle 2</li></ol></li><li>item 2 in level 1</li><li>item 3 in level 1</li></ol><ul><li>new unordered list (item 1 in level 1)</li><li>level 2 in level 1</li><li>level 3 in level 1</li><li>level 4 in level 1</li></ul><h2>This is the last section of the test</h2><p>Single paragraph with '----' in it will be turned into separator:</p><hr /><p>And this is the last paragraph in the test. Be happy!</p><p>====================</p><h2>Why?</h2><p>We wanted a markup language with the following requirements:</p><ul><li>less than 300 lines of functional code</li><li>easy to read</li><li>secure</li><li>support table, ul, ol, code</li><li>support html5 video and audio elements (html serialization only)</li><li>can align images and resize them</li><li>can specify class for tables and code elements</li><li>can add anchors</li><li>does not use _ for markup (since it creates odd behavior)</li><li>automatically links urls</li><li>fast</li><li>easy to extend</li><li>supports latex and pdf including references</li><li>allows to describe the markup in the markup (this document is generated from markmin syntax)</li></ul><p>(results depend on text but in average for text ~100K markmin is 30% faster than markdown, for text ~10K it is 10x faster)</p><p>The <a href="http://www.lulu.com/product/paperback/web2py-%283rd-edition%29/12822827">web2py book</a> published by lulu, for example, was entirely generated with markmin2pdf from the online <a href="http://www.web2py.com/book">web2py wiki</a></p><h2>Download</h2><ul><li><a href="http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2html.py">http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2html.py</a></li><li><a href="http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2latex.py">http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2latex.py</a></li><li><a href="http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2pdf.py">http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2pdf.py</a></li></ul><p>markmin2html.py and markmin2latex.py are single files and have no web2py dependence. Their license is BSD.</p><h2>Examples</h2><h3>Bold, italic, code and links</h3><table><thead><tr><td><strong>SOURCE</strong></td><td><strong>OUTPUT</strong></td></tr></thead><tbody><tr><td><code># title</code></td><td><strong>title</strong></td></tr><tr><td><code>## section</code></td><td><strong>section</strong></td></tr><tr><td><code>### subsection</code></td><td><strong>subsection</strong></td></tr><tr><td><code>**bold**</code></td><td><strong>bold</strong></td></tr><tr><td><code>''italic''</code></td><td><em>italic</em></td></tr><tr><td><code>~~strikeout~~</code></td><td><del>strikeout</del></td></tr><tr><td><code>``verbatim``</code></td><td><code>verbatim</code></td></tr><tr><td><code>``color with **bold**``:red</code></td><td><span style="color: red">color with <strong>bold</strong></span></td></tr><tr><td><code>``many colors``:color[blue:#ffff00]</code></td><td><span style="color: blue;background-color: #ffff00;">many colors</span></td></tr><tr><td><code>http://google.com</code></td><td><a href="http://google.com">http://google.com</a></td></tr><tr><td><code>[[**click** me #myanchor]]</code></td><td><a href="#markmin_myanchor"><strong>click</strong> me</a></td></tr><tr><td><code>[[click me [extra info] #myanchor popup]]</code></td><td><a href="#markmin_myanchor" title="extra info" target="_blank">click me</a></td></tr></tbody></table><h3>More on links</h3><p>The format is always <code>[[title link]]</code> or <code>[[title [extra] link]]</code>. Notice you can nest bold, italic, strikeout and code inside the link <code>title</code>.</p><h3>Anchors <a name="markmin_myanchor"></a></h3><p>You can place an anchor anywhere in the text using the syntax <code>[[name]]</code> where <em>name</em> is the name of the anchor. You can then link the anchor with <a href="#markmin_myanchor">link</a>, i.e. <code>[[link #myanchor]]</code> or <a href="#markmin_myanchor" title="extra info">link with an extra info</a>, i.e. <code>[[link with an extra info [extra info] #myanchor]]</code>.</p><h3>Images</h3><p><img src="http://www.web2py.com/examples/static/web2py_logo.png" alt="alt-string for the image" title="the image title" style="float:right" width="200px" /> This paragraph has an image aligned to the right with a width of 200px. Its is placed using the code</p><p><code>[[alt-string for the image [the image title] http://www.web2py.com/examples/static/web2py_logo.png right 200px]]</code>.</p><h3>UnLine truncated
|
||||
sublevel 3 item</code></pre></li></ul><ol><li>The last item in sublevel 3</li></ol><p>This is a continuous paragraph for item 2 in sublevel 2. You can use such structure to create difficult structured documents.</p><li>item 3 in sublevel 2</li></li></li></ol><ul><li>item 1 in sublevel 2 (new unordered list)</li><li>item 2 in sublevel 2</li><li>item 3 in sublevel 2</li></ul><ol><li>item 1 in sublevel 2 (new ordered list)</li><li>item 2 in sublevel 2</li><li>item 3 in sublevle 2</li></ol></li><li>item 2 in level 1</li><li>item 3 in level 1</li></ol><ul><li>new unordered list (item 1 in level 1)</li><li>level 2 in level 1</li><li>level 3 in level 1</li><li>level 4 in level 1</li></ul><h2>This is the last section of the test</h2><p>Single paragraph with '----' in it will be turned into separator:</p><hr /><p>And this is the last paragraph in the test. Be happy!</p><p>====================</p><h2>Why?</h2><p>We wanted a markup language with the following requirements:</p><ul><li>less than 300 lines of functional code</li><li>easy to read</li><li>secure</li><li>support table, ul, ol, code</li><li>support html5 video and audio elements (html serialization only)</li><li>can align images and resize them</li><li>can specify class for tables and code elements</li><li>can add anchors</li><li>does not use _ for markup (since it creates odd behavior)</li><li>automatically links urls</li><li>fast</li><li>easy to extend</li><li>supports latex and pdf including references</li><li>allows to describe the markup in the markup (this document is generated from markmin syntax)</li></ul><p>(results depend on text but in average for text ~100K markmin is 30% faster than markdown, for text ~10K it is 10x faster)</p><p>The <a href="http://www.lulu.com/product/paperback/web2py-%283rd-edition%29/12822827">web2py book</a> published by lulu, for example, was entirely generated with markmin2pdf from the online <a href="http://www.web2py.com/book">web2py wiki</a></p><h2>Download</h2><ul><li><a href="http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2html.py">http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2html.py</a></li><li><a href="http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2latex.py">http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2latex.py</a></li><li><a href="http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2pdf.py">http://web2py.googlecode.com/hg/gluon/contrib/markmin/markmin2pdf.py</a></li></ul><p>markmin2html.py and markmin2latex.py are single files and have no web2py dependence. Their license is BSD.</p><h2>Examples</h2><h3>Bold, italic, code and links</h3><table><thead><tr class="first"><td><strong>SOURCE</strong></td><td><strong>OUTPUT</strong></td></tr></thead><tbody><tr class="first"><td><code># title</code></td><td><strong>title</strong></td></tr><tr class="even"><td><code>## section</code></td><td><strong>section</strong></td></tr><tr><td><code>### subsection</code></td><td><strong>subsection</strong></td></tr><tr class="even"><td><code>**bold**</code></td><td><strong>bold</strong></td></tr><tr><td><code>''italic''</code></td><td><em>italic</em></td></tr><tr class="even"><td><code>~~strikeout~~</code></td><td><del>strikeout</del></td></tr><tr><td><code>``verbatim``</code></td><td><code>verbatim</code></td></tr><tr class="even"><td><code>``color with **bold**``:red</code></td><td><span style="color: red">color with <strong>bold</strong></span></td></tr><tr><td><code>``many colors``:color[blue:#ffff00]</code></td><td><span style="color: blue;background-color: #ffff00;">many colors</span></td></tr><tr class="even"><td><code>http://google.com</code></td><td><a href="http://google.com">http://google.com</a></td></tr><tr><td><code>[[**click** me #myanchor]]</code></td><td><a href="#markmin_myanchor"><strong>click</strong> me</a></td></tr><tr class="even"><td><code>[[click me [extra info] #myanchor popup]]</code></td><td><a href="#markmin_myanchor" title="extra info" target="_blank">click me</a></td></tr></tbody></table><h3>More on links</h3><p>The format is always <code>[[title link]]</code> or <code>[[title [extra] link]]</code>. Notice you can nest bold, italic, strikeout and code inside the link <code>title</code>.</p><h3>Anchors <a name="markmin_myanchor"></a></h3><p>You can place an anchor anywhere in the text using the syntax <code>[[name]]</code> where <em>name</em> is the name of the anchor. You can then link the anchor with <a href="#markmin_myanchor">link</a>, i.e. <code>[[link #myanchor]]</code> or <a href="#markmin_myanchor" title="extra info">link with an extra info</a>, i.e. <code>[[link with an extra info [extra info] #myanchor]]</code>.</p><h3>Images</h3><p><img src="http://www.web2py.com/examples/static/web2py_logo.png" alt="alt-string for the image" title="the image title" style="float:right" width="200px" /> This paragraph has an image aligned to the right with a width of 200px. Its is placed using the code</p><p><code>[[alt-string for the imaLine truncated
|
||||
- Cat
|
||||
- Mouse</code></pre><p>is rendered as</p><ul><li>Dog</li><li>Cat</li><li>Mouse</li></ul><p>Two new lines between items break the list in two lists.</p><h3>Ordered Lists</h3><pre><code>+ Dog
|
||||
+ Cat
|
||||
@@ -52,7 +55,7 @@ code block
|
||||
X | 0 | 0
|
||||
=================
|
||||
**D**|**F**|**G**
|
||||
-----------------:abc[id]</code></pre> is a table and is rendered as<table class="abc" id="markmin_id"><thead><tr><td><strong>A</strong></td><td><strong>B</strong></td><td><strong>C</strong></td></tr></thead><tbody><tr><td class="num">0</td><td class="num">0</td><td>X</td></tr><tr><td class="num">0</td><td>X</td><td class="num">0</td></tr><tr><td>X</td><td class="num">0</td><td class="num">0</td></tr></tbody><tfoot><tr><td><strong>D</strong></td><td><strong>F</strong></td><td><strong>G</strong></td></tr></tfoot></table> Four or more dashes delimit the table and | separates the columns. The <code>:abc</code>, <code>:id[abc_1]</code> or <code>:abc[abc_1]</code> at the end sets the class and/or id for the table and it is optional.<h3>Blockquote</h3><p>A table with a single cell is rendered as a blockquote:</p><blockquote>Hello world</blockquote><p>Blockquote can contain headers, paragraphs, lists and tables:</p><pre><code>-----
|
||||
-----------------:abc[id]</code></pre> is a table and is rendered as<table class="abc" id="markmin_id"><thead><tr class="first"><td><strong>A</strong></td><td><strong>B</strong></td><td><strong>C</strong></td></tr></thead><tbody><tr class="first"><td class="num">0</td><td class="num">0</td><td>X</td></tr><tr class="even"><td class="num">0</td><td>X</td><td class="num">0</td></tr><tr><td>X</td><td class="num">0</td><td class="num">0</td></tr></tbody><tfoot><tr class="first"><td><strong>D</strong></td><td><strong>F</strong></td><td><strong>G</strong></td></tr></tfoot></table> Four or more dashes delimit the table and | separates the columns. The <code>:abc</code>, <code>:id[abc_1]</code> or <code>:abc[abc_1]</code> at the end sets the class and/or id for the table and it is optional.<h3>Blockquote</h3><p>A table with a single cell is rendered as a blockquote:</p><blockquote>Hello world</blockquote><p>Blockquote can contain headers, paragraphs, lists and tables:</p><pre><code>-----
|
||||
This is a paragraph in a blockquote
|
||||
|
||||
+ item 1
|
||||
@@ -66,7 +69,7 @@ code block
|
||||
0 | X | 0
|
||||
X | 0 | 0
|
||||
---------:tableclass1
|
||||
-----</code></pre><p>is rendered as:</p><blockquote>This is a paragraph in a blockquote<ol><li>item 1</li><li>item 2<ul><li>item 2.1</li><li>item 2.2</li></ul></li><li>item 3</li></ol><table class="tableclass1"><tbody><tr><td class="num">0</td><td class="num">0</td><td>X</td></tr><tr><td class="num">0</td><td>X</td><td class="num">0</td></tr><tr><td>X</td><td class="num">0</td><td class="num">0</td></tr></tbody></table></blockquote><h3>Code, <code><code></code>, escaping and extra stuff</h3><pre><code class="python">def test():
|
||||
-----</code></pre><p>is rendered as:</p><blockquote>This is a paragraph in a blockquote<ol><li>item 1</li><li>item 2<ul><li>item 2.1</li><li>item 2.2</li></ul></li><li>item 3</li></ol><table class="tableclass1"><tbody><tr class="first"><td class="num">0</td><td class="num">0</td><td>X</td></tr><tr class="even"><td class="num">0</td><td>X</td><td class="num">0</td></tr><tr><td>X</td><td class="num">0</td><td class="num">0</td></tr></tbody></table></blockquote><h3>Code, <code><code></code>, escaping and extra stuff</h3><pre><code class="python">def test():
|
||||
return "this is Python code"</code></pre><p>Optionally a ` inside a <code>``...``</code> block can be inserted escaped with !`!.</p><p><strong>NOTE:</strong> You can escape markmin constructions ('',``,**,~~,[,{,]},$,@) with '\' character: so \`\` can replace !`!`! escape string</p><p>The <code>:python</code> after the markup is also optional. If present, by default, it is used to set the class of the <code> block. The behavior can be overridden by passing an argument <code>extra</code> to the <code>render</code> function. For example:</p><pre><code class="python">markmin2html("``aaa``:custom",
|
||||
extra=dict(custom=lambda text: 'x'+text+'x'))</code></pre><p>generates</p><code class="python">'xaaax'</code><p>(the <code>``...``:custom</code> block is rendered by the <code>custom=lambda</code> function passed to <code>render</code>).</p><h3>Html5 support</h3><p>Markmin also supports the <video> and <audio> html5 tags using the notation:</p><pre><code>[[message link video]]
|
||||
[[message link audio]]
|
||||
|
||||
Reference in new issue
Block a user