Changes: transcription

This commit is contained in:
Markus Schmidt 2021-10-08 09:44:50 +02:00
parent 21e2fc7a24
commit 757d8aeadf
5 changed files with 99 additions and 41 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ sessions
.project
.settings
__pycache__/
/uploads/

View File

@ -6,7 +6,12 @@
# ---- example index page ----
def index():
return dict(u1="Überschrift 1", u2="Überschrift 2")
images = db().select(db.image.ALL, orderby=db.image.title)
return dict(images=images)
def manage():
grid = SQLFORM.smartgrid(db.image, linked_tables=['post'])
return dict(grid=grid)
# ---- API (example) -----
@auth.requires_login()

View File

@ -1,76 +1,103 @@
# -*- coding: utf-8 -*-
{
'!=': '!=',
'!langcode!': 'de',
'!langname!': 'Deutsch (DE)',
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "feld1=\'newvalue\'". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d\xa0%H:%M:%S',
'%(nrows)s records found': '%(nrows)s records found',
'%s %%{row} deleted': '%s %%{row} gelöscht',
'%s %%{row} updated': '%s %%{row} aktualisiert',
'%s selected': '%s ausgewählt',
'%Y-%m-%d': '%Y-%m-%d',
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d\xa0%H:%M:%S',
'(**%.0d MB**)': '(**%.0d\xa0MB**)',
'**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{Item(Items)}, **%(bytes)s** %%{Byte(Bytes)}',
'**%(items)s** items, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** Items, **%(bytes)s** %%{Byte(Bytes)}',
'**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '**nicht verfügbar** (benötigt die Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] Bibliothek)',
'+ And': '+ And',
'+ Or': '+ Or',
'<': '<',
'<=': '<=',
'=': '=',
'>': '>',
'>=': '>=',
'?': '?',
'@markmin\x01(**%.0d MB**)': '(**%.0d\xa0MB**)',
'@markmin\x01**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{Item(items)}, **%(bytes)s** %%{Byte(bytes)}',
'@markmin\x01**%(items)s** items, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** items, **%(bytes)s** %%{Byte(bytes)}',
'@markmin\x01**not available** (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)': '**nicht verfügbar** (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)',
'@markmin\x01``**not available**``:red (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)': '``**nicht verfügbar**``:red (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)',
'@markmin\x01An error occured, please [[reload %s]] the page': 'Hi ha hagut un error, si us plau [[recarregui %s]] la pàgina',
'@markmin\x01Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'Cache geleert enthält Artikel bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
'@markmin\x01DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'DISK enthält Artikel bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
'@markmin\x01Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})': 'Trefferquote:**%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})',
'@markmin\x01Number of entries: **%s**': "Nombre d'entrades: **%s**",
'@markmin\x01RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'RAM enthält Elemente bis zu\xa0**%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.',
'@markmin\x01``**not available**``:red (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)': '``**nicht verfügbar**``:red (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)',
'``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '``**nicht verfügbar**``:rot (benötigt die Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] Bibliothek)',
'A new password was emailed to you': 'Ein neues Passwort wurde per E-Mail an Sie gesendet',
'API Example': 'API Beispiel',
'About': 'Über',
'Access Control': 'Zugangskontrolle',
'Add this to the search as an AND term': 'Add this to the search as an AND term',
'Add this to the search as an OR term': 'Add this to the search as an OR term',
'admin': 'admin',
'Ajax Recipes': 'Ajax Rezepte',
'An error occured, please [[reload %s]] the page': 'Ein Fehler ist aufgetreten, bitte [[laden %s]] Sie die Seite neu',
'API Example': 'API Beispiel',
'appadmin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
'Apply changes': 'Aplicar canvis',
'Are you sure you want to delete this object?': 'Sind Sie sich sicher, dass Sie dieses Objekt löschen wollen?',
'Authentication code': 'Authentifizierungs code',
'Available Databases and Tables': 'Verfügbare Datenbanken und Tabellen',
'Back': 'Back',
"Buy web2py's book": "web2py's Buch kaufen",
'Cache': 'Zwischenspeicher',
'cache': 'zwischenspeicher',
'Cache Cleared': 'Cache geleert',
'Cache Keys': 'Cache Schlüssel',
'Cache contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'Cache enthält items die bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} alt sind.',
'Cache Keys': 'Cache Schlüssel',
'Cannot be empty': 'Darf nicht leer sein',
'Change Password': 'Canviï la Contrasenya',
'Change password': 'Canviï la contrasenya',
'Check to delete': 'Auswählen um zu löschen',
'Clear': 'Clear',
'Clear CACHE?': 'CACHE löschen?',
'Clear DISK': 'DISK löschen',
'Clear RAM': 'RAM löschen',
'Click on the link %(link)s to reset your password': "Klicke auf den Link %(link)s um das Passwort zurückzusetzen",
'Click on the link %(link)s to reset your password': 'Klicke auf den Link %(link)s um das Passwort zurückzusetzen',
'Client IP': 'Client IP',
'Close': 'Close',
'Comma-separated export including columns not shown; fields from other tables are exported as raw values for faster export': 'Comma-separated export including columns not shown; fields from other tables are exported as raw values for faster export',
'Comma-separated export of visible columns. Fields from other tables are exported as they appear on-screen but this may be slow for many rows': 'Comma-separated export of visible columns. Fields from other tables are exported as they appear on-screen but this may be slow for many rows',
'Community': 'Community',
'Components and Plugins': 'Komponenten und Plugins',
'Config.ini': 'Config.ini',
'contains': 'contains',
'Controller': 'Controller',
'Copyright': 'Urheberrechte',
'CSV': 'CSV',
'CSV (hidden cols)': 'CSV (hidden cols)',
'Current request': 'Derzeitiger Request',
'Current response': 'Derzeitige Response',
'Current session': 'Derzeitige Session',
'DB Model': 'Muster-DB',
'DISK': 'DISK',
'DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'DISK enthält items die bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} alt sind.',
'data uploaded': 'Datei hochgeladen',
'Database': 'Datenbank',
'Database %s select': 'Datenbank %s ausgewählt',
'Database Administration (appadmin)': 'Datenbankadministration (appadmin)',
'db': 'db',
'DB Model': 'Muster-DB',
'Delete:': 'Lösche:',
'Demo': 'Demo',
'Deployment Recipes': 'Entwicklungsrezepte',
'Description': 'Beschreibung',
'Design': 'Design',
'design': 'Design',
'DISK': 'DISK',
'Disk Cache Keys': 'Festplatten-Cache-Schlüssel',
'Disk Cleared': 'Disk gelöscht',
'DISK contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'DISK enthält items die bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} alt sind.',
'Documentation': 'Dokumentation',
"Don't know what to do?": 'Wissen Sie nicht weiter?',
'done!': 'Fertig!',
'Download': 'Download',
'E-mail': 'Correu electrònic',
'Edit current record': 'Diesen Eintrag editieren',
@ -79,7 +106,11 @@
'Email verification': 'Email-Verifizierung',
'Email verified': 'Email-Verifiziert',
'Errors': 'Fehlermeldungen',
'export as csv file': 'als csv Datei exportieren',
'Export:': 'Export:',
'FAQ': 'FAQ',
'file': 'file',
'file ## download': 'file ',
'First name': 'Nom',
'Forms and Validators': 'Forms und Validators',
'Free Applications': 'Kostenlose Anwendungen',
@ -96,20 +127,29 @@
'Hit Ratio: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} and **%(misses)s** %%{miss(misses)})': 'Trefferquote: **%(ratio)s%%** (**%(hits)s** %%{hit(hits)} und **%(misses)s** %%{miss(misses)})',
'Home': 'Startseite',
'How did you get here?': 'Wie sind Sie hier her gelangt?',
'HTML': 'HTML',
'HTML export of visible columns': 'HTML export of visible columns',
'Id': 'Id',
'Images': 'Images',
'import': 'Importieren',
'Import/Export': 'Importieren/Exportieren',
'in': 'in',
'Incorrect code. {0} more attempt(s) remaining.': 'Falscher Code. {0} weitere Versuche verbleiben.',
'Insufficient privileges': 'Privilegis insuficients',
'Internal State': 'Innerer Zustand',
'Introduction': 'Einführung',
'Invalid Query': 'Ungültige Query',
'Invalid email': 'Ungültige Email',
'Invalid key': 'Ungültiger Schlüssel',
'Invalid login': 'Ungültige Anmeldung',
'Invalid password': 'Ungültiges Passwort',
'Invalid Query': 'Ungültige Query',
'invalid request': 'Ungültiger Request',
'Invalid reset password': 'Ungültiges Passwort zurücksetzen',
'Invalid user': 'Ungültiger Benutzer',
'Invalid username': 'Ungültiger Benutzername',
'Invitation to join %(site)s': 'Einladung um %(site)s zujoinen',
'JSON': 'JSON',
'JSON export of visible columns': 'JSON export of visible columns',
'Key': 'Schlüssel',
'Key verified': 'Schlüssel verifiziert',
'Last name': 'Cognom',
@ -130,14 +170,20 @@
'Menu Model': 'Menü-Muster',
'My Sites': 'Meine Seiten',
'Name': 'Nombre',
'New Record': 'Neuer Eintrag',
'New password': 'Contrasenya nova',
'New Record': 'Neuer Eintrag',
'new record inserted': 'neuer Eintrag hinzugefügt',
'New Search': 'New Search',
'next %s rows': 'nächste %s Reihen',
'No databases in this application': 'Keine Datenbank in dieser Anwendung',
'not authorized': 'not authorized',
'not in': 'not in',
'Number of entries: **%s**': 'Nummer der Einträge: **%s**',
'Object or table name': 'Objekt oder Tabellenname',
'Old password': 'Altes Passwort',
'Online book': 'Online Buch',
'Online examples': 'Online Beispiele',
'or import from csv file': 'oder von csv Datei importieren',
'Origin': 'Urprung',
'Other Recipes': 'Andere Rezepte',
'Overview': 'Überblick',
@ -148,18 +194,22 @@
'Password retrieve': 'Passwort abrufen',
'Permission': 'Erlaubnis',
'Permissions': 'Erlaubnisse',
'please input your password again': 'si us plau, entri un altre cop la seva contrasenya',
'Plugins': 'Plugins',
'Posts': 'Posts',
'Powered by': 'Unterstützt von',
'Preface': 'Allgemeines',
'previous %s rows': 'vorherige %s Reihen',
'Profile': 'Perfil',
'Profile updated': 'Profil aktualisiert',
'pygraphviz library not found': 'pygraphviz Bibliothek wurde nicht gefunden',
'Python': 'Python',
'Query:': 'Abfrage:',
'Quick Examples': 'Kurze Beispiele',
'RAM': 'RAM',
'RAM Cache Keys': 'RAM Cache-Schlüssel',
'RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'RAM enthält items die bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} alt sind.',
'Ram Cleared': 'Ram gelöscht',
'RAM contains items up to **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} old.': 'RAM enthält items die bis zu **%(hours)02d** %%{hour(hours)} **%(min)02d** %%{minute(min)} **%(sec)02d** %%{second(sec)} alt sind.',
'Recipes': 'Rezepte',
'Record': 'Eintrag',
'Record %(id)s created': 'Registre %(id)s creat',
@ -168,16 +218,17 @@
'Record %(id)s updated': 'Eintrag %(id)s aktualisiert',
'Record Created': 'Eintrag erstellt',
'Record Deleted': 'Eintrag gelöscht',
'record does not exist': 'Eintrag existiert nicht',
'Record ID': 'ID des Eintrags',
'Record Updated': 'Eintrag Aktualisiert',
'Record id': 'id des Eintrags',
'Register': "Registrieren",
'Record Updated': 'Eintrag Aktualisiert',
'Register': 'Registrieren',
'Registration identifier': 'Kennung für die Registrierung',
'Registration is pending approval': 'Die Registrierung steht noch aus',
'Registration key': 'Registrierungsschlüssel',
'Registration needs verification': 'Registrierung muss überprüft werden',
'Registration successful': 'Registrierung erfolgreich',
'Remember me (for 30 days)': "Erinnere mich (durant 30 dies)",
'Remember me (for 30 days)': 'Erinnere mich (durant 30 dies)',
'Request reset password': 'Passort zurücksetzen',
'Reset Password key': 'Reset Password key',
'Role': 'Rolle',
@ -185,31 +236,43 @@
'Rows in Table': 'Tabellenreihen',
'Rows selected': 'Reihen ausgewählt',
'Save model as...': 'Speichere Vorlage als...',
'Search': 'Search',
'Services': 'Dienste',
'Sign Up': 'Registrieren',
'Sign up': 'Anmelden',
'Size of cache:': 'Cachegröße:',
'Spreadsheet-optimised export of tab-separated content including hidden columns. May be slow': 'Spreadsheet-optimised export of tab-separated content including hidden columns. May be slow',
'Spreadsheet-optimised export of tab-separated content, visible columns only. May be slow.': 'Spreadsheet-optimised export of tab-separated content, visible columns only. May be slow.',
'Start building a new search': 'Start building a new search',
'starts with': 'starts with',
'state': 'Status',
'Statistics': 'Statistik',
'Stylesheet': 'Stylesheet',
'Submit': 'Absenden',
'submit': 'Submit',
'Support': 'Support',
'Table': 'Tabelle',
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Die "query" ist eine Bedingung wie "db.tabelle1.feld1==\'wert\'". So etwas wie "db.tabelle1.feld1==db.tabelle2.feld2" resultiert in einem SQL JOIN.',
'The Core': 'Der Core',
'The Views': 'Die Views',
'The output of the file is a dictionary that was rendered by the view %s': 'Die Ausgabe der Datei ist ein "dictionary", welches vom "view" %s gerendert wurde',
'The Views': 'Die Views',
'This App': 'Diese App',
'This code was emailed to you and is required for login.': 'Dieser Code wurde per E-Mail an Sie gesendet und ist für die Anmeldung erforderlich.',
'This email already has an account': 'Zu dieser Email gehört bereits ein Account',
'Time in Cache (h:m:s)': 'Zeit im Cache (h:m:s)',
'Timestamp': 'Zeitstempel',
'Title': 'Title',
'Traceback': 'Zurückverfolgen',
'TSV (Spreadsheets)': 'TSV (Spreadsheets)',
'TSV (Spreadsheets, hidden cols)': 'TSV (Spreadsheets, hidden cols)',
'Twitter': 'Twitter',
'Two-step Login Authentication Code': 'Zweistufiger Login-Authentifizierungscode',
'unable to parse csv file': 'csv Datei konnte nicht geparst werden',
'Unable to send email': 'Email kann nicht gesendet werden',
'Update:': 'Update:',
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Benutze (...)&(...) für AND, (...)|(...) für OR, und ~(...) für NOT um komplexere Queries zu erstellen.',
'User': 'Benutzer',
'User %(id)s is impersonating %(other_id)s': 'El usuari %(id)s està suplantant %(other_id)s',
'User %(id)s Logged-in': 'Benutzer %(id)s eingeloggt',
'User %(id)s Logged-out': 'Benutzer %(id)s ausgeloggt',
'User %(id)s Password changed': 'Benutzer %(id)s Passwort geändert',
@ -219,21 +282,24 @@
'User %(id)s Registered': 'Usuari %(id)s Registrat',
'User %(id)s Username retrieved': 'Se ha recuperat el nom de usuari del usuari %(id)s',
'User %(id)s Verification email sent': 'Benutzer %(id)s Bestätigungs-Email gesendet',
'User %(id)s is impersonating %(other_id)s': 'El usuari %(id)s està suplantant %(other_id)s',
'User %(id)s verified registration key': 'Benutzer %(id)s verifizierter Registrierungsschlüssel',
'User ID': 'ID de Usuari',
'Username': 'Nom de usuari',
'Username already taken': 'Benutzername schon vergeben',
'Username retrieve': 'Recuperar nom de usuari',
'Users': 'Benutzer',
'Value already in database or empty': 'Value already in database or empty',
'Verify Password': 'Verificar Contrasenya',
'Videos': 'Videos',
'View': 'Ansicht',
'View %(entity)s': 'View %(entity)s',
'Welcome %(username)s! Click on the link %(link)s to verify your email': 'Willkommen %(username)s! Klicken Sie auf den Link %(link)s, um Ihre Email zu bestätigen',
'Welcome to web2py!': 'Willkommen bei web2py!',
'Which called the function %s located in the file %s': 'Welche die Funktion %s in der Datei %s aufrief',
'Wiki Example': 'Wiki Beispiel',
'Working...': 'Arbeite...',
'XML': 'XML',
'XML export of columns shown': 'XML export of columns shown',
'You are successfully running web2py': 'web2py wird erfolgreich ausgeführt',
'You can modify this application and adapt it to your needs': 'Sie können diese Anwendung verändern und Ihren Bedürfnissen anpassen',
'You have been invited to join %(site)s, click %(link)s to complete the process': 'Sie wurden eingeladen,%(site)s beizutreten. Klicken Sie auf %(link)s, um den Vorgang abzuschließen',
@ -242,25 +308,4 @@
'Your temporary login code is {0}': 'Ihr temporärer Login-Code lautet {0}',
'Your username is: %(username)s': 'El seu nom de usuari és: %(username)s',
'Your username was emailed to you': 'Ihr Benutzername wurde per E-Mail an Sie gesendet',
'``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)': '``**nicht verfügbar**``:rot (benötigt die Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] Bibliothek)',
'admin': 'admin',
'appadmin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
'cache': 'zwischenspeicher',
'data uploaded': 'Datei hochgeladen',
'db': 'db',
'design': 'Design',
'done!': 'Fertig!',
'export as csv file': 'als csv Datei exportieren',
'import': 'Importieren',
'invalid request': 'Ungültiger Request',
'new record inserted': 'neuer Eintrag hinzugefügt',
'next %s rows': 'nächste %s Reihen',
'or import from csv file': 'oder von csv Datei importieren',
'please input your password again': 'si us plau, entri un altre cop la seva contrasenya',
'previous %s rows': 'vorherige %s Reihen',
'pygraphviz library not found': 'pygraphviz Bibliothek wurde nicht gefunden',
'record does not exist': 'Eintrag existiert nicht',
'state': 'Status',
'submit': 'Submit',
'unable to parse csv file': 'csv Datei konnte nicht geparst werden',
}

View File

@ -2,7 +2,11 @@
<div class="row">
<div class="col-md-12">
<h1>{{=u1}}</h1>
<h2>{{=u2}}</h2>
<h1>Current Images</h1>
<ul>
{{for image in images:}}
{{=LI(A(image.title, _href=URL("show", args=image.id)))}}
{{pass}}
</ul>
</div>
</div>

View File

@ -0,0 +1,3 @@
{{extend 'layout.html'}}
<h2>Management Interface</h2>
{{=grid}}