Updated translations

This commit is contained in:
Emanuel Schütze 2019-02-02 17:06:23 +01:00
parent fa63110889
commit ac96ba8d3a
18 changed files with 197 additions and 75 deletions

View File

@ -4,18 +4,18 @@ import { TranslateService } from '@ngx-translate/core';
/**
* Provides functionalities that will be used by most components
* currently able to set the title with the suffix ' - OpenSlides 3'
* currently able to set the title with the suffix ' - OpenSlides'
*
* A BaseComponent is an OpenSlides Component.
* Components in the 'Side'- or 'projector' Folder are BaseComponents
*/
export abstract class BaseComponent extends OpenSlidesComponent {
/**
* To manipulate the browser title bar, adds the Suffix "OpenSlides 3"
* To manipulate the browser title bar, adds the Suffix "OpenSlides"
*
* Might be a config variable later at some point
*/
private titleSuffix = ' - OpenSlides 3';
private titleSuffix = ' - OpenSlides';
/**
* Settings for the TinyMCE editor selector

View File

@ -215,6 +215,7 @@ _('Called');
_('Called with');
_('Recommendation');
_('Motion block');
_('Are you sure you want to delete this motion?');
// Assignment config strings
_('Election method');
@ -330,6 +331,9 @@ _(
'Dear {name},\n\nthis is your OpenSlides login for the event {event_name}:\n\n {url}\n username: {username}\n password: {password}\n\nThis email was generated automatically.'
);
_('Use these placeholders: {name}, {event_name}, {url}, {username}, {password}. The url referrs to the system url.');
_(
'Use <strong>admin</strong> and <strong>admin</strong> for your first login.<br>Please change your password to hide this message!'
);
// default groups
_('Default');

View File

@ -1,6 +1,6 @@
<h2 mat-dialog-title>{{ data.title | translate }}</h2>
<mat-dialog-content [innerHTML]="(data.content | translate)"></mat-dialog-content>
<h2 mat-dialog-title>{{ data.title }}</h2>
<mat-dialog-content [innerHTML]="data.content"></mat-dialog-content>
<mat-dialog-actions>
<button mat-button [mat-dialog-close]="true" color="warn" translate>Yes</button>
<button mat-button [mat-dialog-close]="false" translate>Cancel</button>
<button mat-button [mat-dialog-close]="true" color="warn">{{ 'Yes' | translate }}</button>
<button mat-button [mat-dialog-close]="false">{{ 'Cancel' | translate }}</button>
</mat-dialog-actions>

View File

@ -7,7 +7,6 @@
<mat-card class="os-card">
<div class="app-content" translate>
<h1>{{ welcomeTitle | translate }}</h1>
<!-- TOODO: translate welcomeText-->
<div [innerHTML]="welcomeText"></div>
<div [innerHTML]="(welcomeText) | translate"></div>
</div>
</mat-card>

View File

@ -14,10 +14,6 @@ mat-form-field {
margin-right: auto;
}
.back-button {
width: 40%;
}
.form-wrapper {
padding-left: 30px;
padding-right: 30px;

View File

@ -4,7 +4,7 @@
<!-- Install notice -->
<div class="login-container" *ngIf="installationNotice">
<mat-card [innerHTML]="installationNotice"></mat-card>
<mat-card [innerHTML]="(installationNotice) | translate"></mat-card>
</div>
<!-- login form -->
@ -14,7 +14,7 @@
matInput
osAutofocus
required
placeholder="User name"
placeholder="{{ 'Username' | translate }}"
formControlName="username"
[errorStateMatcher]="parentErrorStateMatcher"
/>
@ -24,36 +24,34 @@
<input
matInput
required
placeholder="Password"
placeholder="{{ 'Password' | translate }}"
formControlName="password"
[type]="!hide ? 'password' : 'text'"
[errorStateMatcher]="parentErrorStateMatcher"
/>
<mat-icon matSuffix (click)="hide = !hide">{{ hide ? 'visibility_off' : 'visibility_on' }}</mat-icon>
<mat-error>{{ loginErrorMsg }}</mat-error>
<mat-error>{{ loginErrorMsg | translate }}</mat-error>
</mat-form-field>
<!-- forgot password button -->
<br />
<button type="button" class="forgot-password-button" (click)="resetPassword()" mat-button>
Forgot Password?
{{ 'Forgot Password?' | translate }}
</button>
<!-- login button -->
<br />
<!-- TODO: Next to each other...-->
<button mat-raised-button color="primary" class="login-button" type="submit" translate>Login</button>
<button mat-raised-button color="primary" class="login-button" type="submit">{{ 'Login' | translate }}</button>
<button
mat-raised-button
mat-stroked-button
*ngIf="areGuestsEnabled()"
color="primary"
class="login-button"
type="button"
(click)="guestLogin()"
translate
>
Login as Guest
{{ 'Login as guest' | translate }}
</button>
</form>
</div>

View File

@ -2,14 +2,14 @@
<form [formGroup]="resetPasswordForm" (ngSubmit)="resetPassword()">
<h3 translate>Enter your email to send the password reset link</h3>
<mat-form-field>
<input matInput required placeholder="Email" formControlName="email" type="email">
<mat-error *ngIf="resetPasswordForm.get('email').hasError('email')" translate>
Please enter a valid email address
<input matInput required placeholder="{{ 'Email' | translate }}" formControlName="email" type="email">
<mat-error *ngIf="resetPasswordForm.get('email').invalid" translate>
Please enter a valid email address!
</mat-error>
</mat-form-field>
<br>
<button mat-raised-button color="primary" class="submit-button" [disabled]="resetPasswordForm.invalid"
type="submit" translate>Reset password</button>
<button mat-button class="back-button" routerLink="/login" translate>Back to login</button>
type="submit">{{ 'Reset password' | translate }}</button>&nbsp;
<button mat-button routerLink="/login">{{ 'Back' | translate }}</button>
</form>
</div>

View File

@ -29,11 +29,11 @@
<mat-menu #downloadMenu="matMenu">
<button mat-menu-item (click)="pdfExportCallList()">
<mat-icon>picture_as_pdf</mat-icon>
<span translate>Export (PDF)</span>
<span translate>Export as PDF</span>
</button>
<button mat-menu-item (click)="csvExportCallList()">
<mat-icon>archive</mat-icon>
<span translate>Export (CSV)</span>
<span translate>Export as CSV</span>
</button>
</mat-menu>

View File

@ -712,8 +712,8 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit {
* Trigger to delete the motion.
*/
public async deleteMotionButton(): Promise<void> {
const content = this.translate.instant('Are you sure you want to delete this motion?');
if (await this.promptService.open(this.motion.title, content)) {
const title = this.translate.instant('Are you sure you want to delete this motion?');
if (await this.promptService.open(title, this.motion.getTitle())) {
await this.repo.delete(this.motion);
this.router.navigate(['./motions/']);
}

View File

@ -178,11 +178,11 @@
</button>
<button mat-menu-item (click)="openExportDialog()">
<mat-icon>archive</mat-icon>
<span translate>Export</span><span>&nbsp;...</span>
<span translate>Export</span>
</button>
<button mat-menu-item routerLink="import">
<mat-icon>save_alt</mat-icon>
<span translate>Import</span><span>&nbsp;...</span>
<span translate>Import</span>
</button>
</div>
</div>

View File

@ -1,10 +1,10 @@
<os-head-bar [nav]="false">
<!-- Title -->
<div class="title-slot"><h2 translate>Import Statutes</h2></div>
<div class="title-slot"><h2 translate>Import statute</h2></div>
<div class="menu-slot">
<button *ngIf="hasFile && newCount" mat-button (click)="doImport()">
<span class="upper" translate> Import</span>
<span class="upper" translate>Import</span>
</button>
</div>
</os-head-bar>
@ -71,7 +71,7 @@
<div *ngIf="newCount">
&nbsp;
<mat-icon inline>playlist_add</mat-icon>
<span>&nbsp;{{ newCount }}&nbsp;</span> <span translate>Statute paragraphs(s) will be imported.</span>
<span>&nbsp;{{ newCount }}&nbsp;</span> <span translate>statute paragraphs(s) will be imported.</span>
</div>
<!-- errors/duplicates -->
<div *ngIf="nonImportableCount" class="red-warning-text">
@ -83,7 +83,7 @@
<div *ngIf="doneCount" class="green-text">
&nbsp;
<mat-icon inline>done</mat-icon>
<span>&nbsp;{{ doneCount }}&nbsp;</span> <span translate>Statute paragraphs have been imported.</span>
<span>&nbsp;{{ doneCount }}&nbsp;</span> <span translate>statute paragraphs have been imported.</span>
</div>
</div>
<div *ngIf="newCount">

View File

@ -74,7 +74,7 @@ export class StatuteParagraphListComponent extends BaseViewComponent implements
* Sets the title and gets/observes statute paragraphs from DataStore
*/
public ngOnInit(): void {
super.setTitle('Statute paragraphs');
super.setTitle('Statute');
this.repo.getViewModelListObservable().subscribe(newViewStatuteParagraphs => {
this.statuteParagraphs = newViewStatuteParagraphs;
});

View File

@ -36,7 +36,7 @@ export class StatuteCsvExportService {
{ property: 'title' },
{ property: 'text' }
];
this.csvExport.export(statutes, exportProperties, this.translate.instant('Statutes') + '.csv');
this.csvExport.export(statutes, exportProperties, this.translate.instant('Statute') + '.csv');
}
/**
@ -52,7 +52,7 @@ export class StatuteCsvExportService {
];
this.fileExport.saveFile(
rows.join('\n'),
`${this.translate.instant('Statutes')} - ${this.translate.instant('example')}.csv`,
`${this.translate.instant('Statute')}-${this.translate.instant('example')}.csv`,
'text/csv'
);
}

View File

@ -75,7 +75,7 @@
</mat-form-field>
<!-- Reference projector for the current list of speakers -->
<h3 translate>Current list fo speakers reference</h3>
<h3 translate>Current list of speakers reference</h3>
<mat-form-field>
<mat-select formControlName="reference_projector_id" placeholder="{{ 'Reference projector' | translate }}">
<mat-option [value]="projector.id">

File diff suppressed because one or more lines are too long

View File

@ -57,6 +57,9 @@ msgstr "Aktive Filter"
msgid "Add me"
msgstr "Füge mich hinzu"
msgid "Add new custom translation"
msgstr "Neue benutzerdefinierte Übersetzung hinzufügen"
msgid "Add/remove groups ..."
msgstr "Gruppen hinzufügen/entfernen ..."
@ -84,8 +87,7 @@ msgstr "Admin"
msgid "After verifiy the preview click on 'import' please (see top right)."
msgstr ""
"Nach Prüfung der Vorschau klicken Sie bitte auf 'Importieren' (siehe oben "
"rechts)."
"Nach Prüfung der Vorschau klicken Sie bitte auf 'Importieren' (oben rechts)."
msgid "Agenda"
msgstr "Tagesordnung"
@ -142,6 +144,9 @@ msgstr "Ein unbekannter Fehler ist aufgetreten."
msgid "Arabic"
msgstr "Arabisch"
msgid "Are you sure you want to delete this motion?"
msgstr "Soll dieser Antrag wirklich gelöscht werden?"
msgid "Are you sure you want to delete this vote?"
msgstr "Soll diese Abstimmung wirklich gelöscht werden?"
@ -378,6 +383,9 @@ msgstr "Inhalt"
msgid "Copy and paste your participant names in this textbox."
msgstr "Kopieren Sie die Name Ihrer Teilnehmer/innen in diese Textbox."
msgid "Count active users"
msgstr "Aktive Nutzer zählen"
msgid "Countdowns"
msgstr "Countdowns"
@ -399,9 +407,15 @@ msgstr "Aktuell"
msgid "Current browser language"
msgstr "Aktuelle Browsersprache"
msgid "Current list of speakers"
msgstr "Aktuelle Redeliste"
msgid "Current list of speakers overlay"
msgstr "Aktuelle Redeliste (Einblendung)"
msgid "Current list of speakers reference"
msgstr "Referenz zur aktuellen Redeliste"
msgid "Current list of speakers slide"
msgstr "Aktuelle Redeliste (Folie)"
@ -559,9 +573,6 @@ msgstr "Details bearbeiten"
msgid "Edit details for"
msgstr "Details bearbeiten für"
msgid "Edit profile"
msgstr "Profil bearbeiten"
msgid "Edit statute paragraph:"
msgstr "Satzungsabschnitt bearbeiten:"
@ -654,7 +665,7 @@ msgid "Expand all"
msgstr "Alle ausklappen"
msgid "Export"
msgstr "Export"
msgstr "Exportieren"
msgid "Export ..."
msgstr "Exportieren ..."
@ -713,6 +724,9 @@ msgstr "Schriftfarbe des Projektor-Kopf- und Fußbereichs"
msgid "Font color of projector headline"
msgstr "Schriftfarbe der Projektor-Überschrift"
msgid "Forgot Password?"
msgstr "Passwort vergessen?"
msgid "Format"
msgstr "Format"
@ -798,6 +812,9 @@ msgstr "Anträge importieren"
msgid "Import participants"
msgstr "Teilnehmende importieren"
msgid "Import statute"
msgstr "Satzung importieren"
msgid "Import topics"
msgstr "Themen importieren"
@ -894,12 +911,15 @@ msgstr "Redelisten-Einblendung"
msgid "Login"
msgstr "Anmelden"
msgid "Login as Guest"
msgid "Login as guest"
msgstr "Als Gast anmelden"
msgid "Logout"
msgstr "Abmelden"
msgid "Manage the list of speakers for..."
msgstr "Redeliste verwalten für..."
msgid "Mark speaker"
msgstr "Redner/in markieren"
@ -1059,13 +1079,6 @@ msgstr "Keine Satzungsabschnitte vorhanden"
msgid "None"
msgstr "aus"
msgid ""
"Note: You have to reject all change recommendations if the plenum does not "
"follow the recommendation. This does not affect amendments."
msgstr ""
"Wichtig: Sie müssen alle Änderungsempfehlungen ablehnen, wenn das Plenum der"
" Empfehlung nicht folgt. Dies betrifft jedoch nicht die Änderungsanträge."
msgid "Number of (minimum) required supporters for a motion"
msgstr "Mindestanzahl erforderlicher Unterstützer/innen für einen Antrag"
@ -1185,6 +1198,9 @@ msgstr "Teilnehmende"
msgid "Participants have been imported."
msgstr "Teilnehmende wurden importiert."
msgid "Password"
msgstr "Passwort"
msgid "Paste/write your topics in this textbox."
msgstr ""
"Kopieren oder schreiben Sie die Titel Ihrer Themenpunkte in diese Textbox."
@ -1207,6 +1223,9 @@ msgstr "Persönliche Notizen"
msgid "Please enter a valid email address"
msgstr "Bitte geben Sie einen neuen Namen ein für"
msgid "Please enter a valid email address!"
msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein!"
msgid "Please enter your new password"
msgstr "Bitte geben Sie Ihr neues Passwort ein"
@ -1297,6 +1316,9 @@ msgstr "Warteliste"
msgid "Reason"
msgstr "Begründung"
msgid "Reason required for creating new motion"
msgstr "Begründung erforderlich zur Erstellung neuer Anträge"
msgid "Recommendation"
msgstr "Empfehlung"
@ -1306,6 +1328,9 @@ msgstr "Empfehlung gesetzt auf {arg1}"
msgid "Refer to committee"
msgstr "In Ausschuss verweisen"
msgid "Reference projector"
msgstr "Referenzprojektor"
msgid "Referral to committee"
msgstr "Verweisung in Ausschuss"
@ -1494,6 +1519,9 @@ msgstr "Countdown in den letzten x Sekunden der Redezeit orange darstellen"
msgid "Show password"
msgstr "Passwort anzeigen"
msgid "Show profile"
msgstr "Profil anzeigen"
msgid "Show the clock on projector"
msgstr "Uhr auf dem Projektor anzeigen"
@ -1516,9 +1544,6 @@ msgstr "Folien"
msgid "Sort"
msgstr "Sortieren"
msgid "Sort ..."
msgstr "Sortieren ..."
msgid "Sort agenda"
msgstr "Tagesordnung sortieren"
@ -1561,9 +1586,18 @@ msgstr "Satzungsänderungsantrag zu"
msgid "Statute paragraph"
msgstr "Satzungsabschnitt"
msgid "Statute paragraph has been imported"
msgstr "Satzungsabschnitt wurde importiert"
msgid "Statute paragraph will be imported"
msgstr "Satzungsabschnitt wird importiert"
msgid "Stop"
msgstr "Stopp"
msgid "Stop counting"
msgstr "Zählen stoppen"
msgid "Stop submitting new motions by non-staff users"
msgstr ""
"Einreichen von neuen Anträgen stoppen für Nutzer ohne Verwaltungsrechte"
@ -1679,6 +1713,9 @@ msgstr "Diese Änderung kollidiert mit einer anderen."
msgid "This element does not exist at this time."
msgstr "Dieses Element existiert nicht zu diesem Zeitpunkt."
msgid "This field is required."
msgstr "Dieses Feld ist erforderlich."
msgid "This prefix will be set if you run the automatic agenda numbering."
msgstr ""
"Dieses Präfix wird gesetzt, wenn die automatische Nummerierung der "
@ -1768,6 +1805,14 @@ msgstr "Hochladen"
msgid "Upload files"
msgstr "Dateien hochladen"
msgid ""
"Use <strong>admin</strong> and <strong>admin</strong> for your first "
"login.<br>Please change your password to hide this message!"
msgstr ""
"Verwenden Sie <strong>admin</strong> und <strong>admin</strong> für die "
"erste Anmeldung.<br>Bitte ändern Sie Ihr Passwort, um diese Nachricht "
"auszublenden!"
msgid "Use the following custom number"
msgstr "Verwende die folgende benutzerdefinierte Anzahl"
@ -1922,6 +1967,9 @@ msgstr "[Platz für Ihren Begrüßungstext.]"
msgid "accepted"
msgstr "angenommen"
msgid "active users"
msgstr "aktive Nutzer"
msgid "adjourned"
msgstr "vertagt"
@ -1934,6 +1982,9 @@ msgstr "stimmzettel"
msgid "by"
msgstr "von"
msgid "connections"
msgstr "Verbindungen"
msgid "contribution"
msgstr "Wortmeldung"
@ -1946,6 +1997,9 @@ msgstr "Einträge werden ausgelassen. "
msgid "errors"
msgstr "Fehler"
msgid "example"
msgstr "Beispiel"
msgid "inline"
msgstr "innerhalb"
@ -2018,6 +2072,15 @@ msgstr "Ergebnisse"
msgid "selected"
msgstr "ausgewählt"
msgid "self"
msgstr "sich selbst"
msgid "statute paragraphs have been imported."
msgstr "Satzungsabschnitte wurden importiert."
msgid "statute paragraphs(s) will be imported."
msgstr "Satzungsabschnitte werden importiert."
msgid "submitted"
msgstr "eingereicht"

View File

@ -49,6 +49,9 @@ msgstr ""
msgid "Add me"
msgstr ""
msgid "Add new custom translation"
msgstr ""
msgid "Add/remove groups ..."
msgstr ""
@ -129,6 +132,9 @@ msgstr ""
msgid "Arabic"
msgstr ""
msgid "Are you sure you want to delete this motion?"
msgstr ""
msgid "Are you sure you want to delete this vote?"
msgstr ""
@ -359,6 +365,9 @@ msgstr ""
msgid "Copy and paste your participant names in this textbox."
msgstr ""
msgid "Count active users"
msgstr ""
msgid "Countdowns"
msgstr ""
@ -380,9 +389,15 @@ msgstr ""
msgid "Current browser language"
msgstr ""
msgid "Current list of speakers"
msgstr ""
msgid "Current list of speakers overlay"
msgstr ""
msgid "Current list of speakers reference"
msgstr ""
msgid "Current list of speakers slide"
msgstr ""
@ -521,9 +536,6 @@ msgstr ""
msgid "Edit details for"
msgstr ""
msgid "Edit profile"
msgstr ""
msgid "Edit statute paragraph:"
msgstr ""
@ -671,6 +683,9 @@ msgstr ""
msgid "Font color of projector headline"
msgstr ""
msgid "Forgot Password?"
msgstr ""
msgid "Format"
msgstr ""
@ -754,6 +769,9 @@ msgstr ""
msgid "Import participants"
msgstr ""
msgid "Import statute"
msgstr ""
msgid "Import topics"
msgstr ""
@ -850,12 +868,15 @@ msgstr ""
msgid "Login"
msgstr ""
msgid "Login as Guest"
msgid "Login as guest"
msgstr ""
msgid "Logout"
msgstr ""
msgid "Manage the list of speakers for..."
msgstr ""
msgid "Mark speaker"
msgstr ""
@ -1015,11 +1036,6 @@ msgstr ""
msgid "None"
msgstr ""
msgid ""
"Note: You have to reject all change recommendations if the plenum does not "
"follow the recommendation. This does not affect amendments."
msgstr ""
msgid "Number of (minimum) required supporters for a motion"
msgstr ""
@ -1137,6 +1153,9 @@ msgstr ""
msgid "Participants have been imported."
msgstr ""
msgid "Password"
msgstr ""
msgid "Paste/write your topics in this textbox."
msgstr ""
@ -1158,6 +1177,9 @@ msgstr ""
msgid "Please enter a valid email address"
msgstr ""
msgid "Please enter a valid email address!"
msgstr ""
msgid "Please enter your new password"
msgstr ""
@ -1248,6 +1270,9 @@ msgstr ""
msgid "Reason"
msgstr ""
msgid "Reason required for creating new motion"
msgstr ""
msgid "Recommendation"
msgstr ""
@ -1257,6 +1282,9 @@ msgstr ""
msgid "Refer to committee"
msgstr ""
msgid "Reference projector"
msgstr ""
msgid "Referral to committee"
msgstr ""
@ -1441,6 +1469,9 @@ msgstr ""
msgid "Show password"
msgstr ""
msgid "Show profile"
msgstr ""
msgid "Show the clock on projector"
msgstr ""
@ -1462,9 +1493,6 @@ msgstr ""
msgid "Sort"
msgstr ""
msgid "Sort ..."
msgstr ""
msgid "Sort agenda"
msgstr ""
@ -1507,9 +1535,18 @@ msgstr ""
msgid "Statute paragraph"
msgstr ""
msgid "Statute paragraph has been imported"
msgstr ""
msgid "Statute paragraph will be imported"
msgstr ""
msgid "Stop"
msgstr ""
msgid "Stop counting"
msgstr ""
msgid "Stop submitting new motions by non-staff users"
msgstr ""
@ -1611,6 +1648,9 @@ msgstr ""
msgid "This element does not exist at this time."
msgstr ""
msgid "This field is required."
msgstr ""
msgid "This prefix will be set if you run the automatic agenda numbering."
msgstr ""
@ -1689,6 +1729,11 @@ msgstr ""
msgid "Upload files"
msgstr ""
msgid ""
"Use <strong>admin</strong> and <strong>admin</strong> for your first "
"login.<br>Please change your password to hide this message!"
msgstr ""
msgid "Use the following custom number"
msgstr ""
@ -1832,6 +1877,9 @@ msgstr ""
msgid "accepted"
msgstr ""
msgid "active users"
msgstr ""
msgid "adjourned"
msgstr ""
@ -1844,6 +1892,9 @@ msgstr ""
msgid "by"
msgstr ""
msgid "connections"
msgstr ""
msgid "contribution"
msgstr ""
@ -1856,6 +1907,9 @@ msgstr ""
msgid "errors"
msgstr ""
msgid "example"
msgstr ""
msgid "inline"
msgstr ""
@ -1928,6 +1982,15 @@ msgstr ""
msgid "selected"
msgstr ""
msgid "self"
msgstr ""
msgid "statute paragraphs have been imported."
msgstr ""
msgid "statute paragraphs(s) will be imported."
msgstr ""
msgid "submitted"
msgstr ""

View File

@ -499,9 +499,8 @@ class UserLoginView(APIView):
else:
if user.check_password("admin"):
context["info_text"] = (
f"Installation was successfully. Use <strong>admin</strong> and "
"<strong>admin</strong> for first login. Important: Please change "
"your password!"
f"Use <strong>admin</strong> and <strong>admin</strong> for your first login.<br>"
"Please change your password to hide this message!"
)
else:
context["info_text"] = ""