Updated translations

This commit is contained in:
Emanuel Schütze 2019-02-11 12:39:41 +01:00
parent 9c68155d9c
commit 279d1323fa
15 changed files with 303 additions and 35 deletions

View File

@ -17,7 +17,7 @@
"lint": "ng lint", "lint": "ng lint",
"e2e": "ng e2e", "e2e": "ng e2e",
"compodoc": "./node_modules/.bin/compodoc --hideGenerator -p src/tsconfig.app.json -n 'OpenSlides Documentation' -d ../Compodoc -s -w -t -o --port", "compodoc": "./node_modules/.bin/compodoc --hideGenerator -p src/tsconfig.app.json -n 'OpenSlides Documentation' -d ../Compodoc -s -w -t -o --port",
"extract": "ngx-translate-extract -i ./src -o ./src/assets/i18n/template-en.pot -clean --sort --format pot -m _", "extract": "ngx-translate-extract -i ./src -o ./src/assets/i18n/template-en.pot --clean --sort --format pot -m _",
"po2json": "./node_modules/.bin/po2json -f mf src/assets/i18n/de.po src/assets/i18n/de.json && ./node_modules/.bin/po2json -f mf src/assets/i18n/cs.po src/assets/i18n/cs.json", "po2json": "./node_modules/.bin/po2json -f mf src/assets/i18n/de.po src/assets/i18n/de.json && ./node_modules/.bin/po2json -f mf src/assets/i18n/cs.po src/assets/i18n/cs.json",
"po2json-tempfix": "./node_modules/.bin/po2json -f mf src/assets/i18n/de.po /dev/stdout | sed -f sed_replacements > src/assets/i18n/de.json && ./node_modules/.bin/po2json -f mf src/assets/i18n/cs.po /dev/stdout | sed -f sed_replacements > src/assets/i18n/cs.json", "po2json-tempfix": "./node_modules/.bin/po2json -f mf src/assets/i18n/de.po /dev/stdout | sed -f sed_replacements > src/assets/i18n/de.json && ./node_modules/.bin/po2json -f mf src/assets/i18n/cs.po /dev/stdout | sed -f sed_replacements > src/assets/i18n/cs.json",
"prettify-check": "prettier --config ./.prettierrc --list-different \"src/{app,environments}/**/*{.ts,.js,.json,.css,.scss}\"", "prettify-check": "prettier --config ./.prettierrc --list-different \"src/{app,environments}/**/*{.ts,.js,.json,.css,.scss}\"",

View File

@ -117,7 +117,7 @@ export class HttpService {
error += this.translate.instant("The server didn't respond."); error += this.translate.instant("The server didn't respond.");
} else if (typeof e.error === 'object') { } else if (typeof e.error === 'object') {
if (e.error.detail) { if (e.error.detail) {
error += this.processErrorTexts(e.error.detail); error += this.processErrorTexts(this.translate.instant(e.error.detail));
} else { } else {
error = Object.keys(e.error) error = Object.keys(e.error)
.map(key => { .map(key => {

View File

@ -252,12 +252,29 @@ _('Disabled');
_('Put all candidates on the list of speakers'); _('Put all candidates on the list of speakers');
_('Title for PDF document (all elections)'); _('Title for PDF document (all elections)');
_('Preamble text for PDF document (all elections)'); _('Preamble text for PDF document (all elections)');
// motion workflow
_('Recommendation label');
_('Allow support');
_('Allow create poll');
_('Allow submitter edit');
_('Set identifier');
_('Show state extension field');
_('Show recommendation extension field');
_('Show amendment in parent motoin');
_('Access level');
_('Label color');
_('Next states');
_('0: All users');
_('1: Submitters and all managers');
_('2: Only managers for motions and metadata');
_('3: Only managers for motions');
// other translations // other translations
_('Searching for candidates'); _('Searching for candidates');
_('Voting'); _('Voting');
_('Finished'); _('Finished');
// Users // ** Users **
// permission strings (see models.py of each Django app) // permission strings (see models.py of each Django app)
// agenda // agenda
_('Can see agenda'); _('Can see agenda');
@ -336,6 +353,9 @@ _(
'Use <strong>admin</strong> and <strong>admin</strong> for your first login.<br>Please change your password to hide this message!' 'Use <strong>admin</strong> and <strong>admin</strong> for your first login.<br>Please change your password to hide this message!'
); );
// users misc
_('Username or password is not correct.');
// default groups // default groups
_('Default'); _('Default');
_('Admin'); _('Admin');

View File

@ -53,7 +53,7 @@ export class UserRepositoryService extends BaseRepository<ViewUser, User> {
const groups = this.viewModelStoreService.getMany(ViewGroup, user.groups_id); const groups = this.viewModelStoreService.getMany(ViewGroup, user.groups_id);
const viewUser = new ViewUser(user, groups); const viewUser = new ViewUser(user, groups);
viewUser.getVerboseName = (plural: boolean = false) => { viewUser.getVerboseName = (plural: boolean = false) => {
return this.translate.instant(plural ? 'Users' : 'User'); return this.translate.instant(plural ? 'Participants' : 'Participant');
}; };
return viewUser; return viewUser;
} }

View File

@ -50,7 +50,7 @@ export class AssignmentListComponent extends ListViewBaseComponent<ViewAssignmen
* data and sorting service * data and sorting service
*/ */
public ngOnInit(): void { public ngOnInit(): void {
super.setTitle('Assignments'); super.setTitle(this.translate.instant('Elections'));
this.initTable(); this.initTable();
this.filterService.filter().subscribe(filteredData => { this.filterService.filter().subscribe(filteredData => {

View File

@ -1,14 +1,13 @@
<h2 mat-dialog-title>New change recommendation</h2> <h2 mat-dialog-title translate>New change recommendation</h2>
<mat-dialog-content> <mat-dialog-content>
<form class="motion-content" [formGroup]='contentForm' (ngSubmit)='saveChangeRecommendation()'> <form class="motion-content" [formGroup]='contentForm' (ngSubmit)='saveChangeRecommendation()'>
<h3>Change from line {{ lineRange.from }} to {{ lineRange.to }}:</h3>
<mat-radio-group #rGroup formControlName="diffType"> <mat-radio-group #rGroup formControlName="diffType">
<mat-radio-button *ngFor="let radio of replacementTypes" [value]="radio.value">{{ radio.title }}</mat-radio-button> <mat-radio-button *ngFor="let radio of replacementTypes" [value]="radio.value">{{ radio.title }}</mat-radio-button>
</mat-radio-group> </mat-radio-group>
<!-- The HTML Editor --> <!-- The HTML Editor -->
<h4 translate>Changed version</h4> <h4><span translate>Changed version in line</span> {{ lineRange.from }} <span translate>to</span> {{ lineRange.to }}:</h4>
<editor <editor
formControlName='text' formControlName='text'
[init]="tinyMceSettings" [init]="tinyMceSettings"

View File

@ -28,8 +28,8 @@
--> -->
</span> </span>
<span class="status"> <span class="status">
<ng-container *ngIf="change.isRejected()" translate>Rejected</ng-container> <ng-container *ngIf="change.isRejected()"><span translate>Rejected</span></ng-container>
<ng-container *ngIf="change.isAccepted() && isAmendment(change)" translate>Accepted</ng-container> <ng-container *ngIf="change.isAccepted() && isAmendment(change)"><span translate>Accepted</span></ng-container>
</span> </span>
</a> </a>
</li> </li>

View File

@ -336,7 +336,7 @@
<!-- Tags --> <!-- Tags -->
<!-- Disabled during "new motion" since changing has no effect --> <!-- Disabled during "new motion" since changing has no effect -->
<div *ngIf="!editMotion && tagObserver.value.length > 0"> <div *ngIf="!editMotion && tagObserver.value.length > 0">
<h4 *ngIf="perms.isAllowed('change_metadata', motion) || motion.hasTags()">Tags</h4> <h4 *ngIf="perms.isAllowed('change_metadata', motion) || motion.hasTags()" translate>Tags</h4>
<!-- For privileged users --> <!-- For privileged users -->
<div *ngIf="perms.isAllowed('change_metadata', motion)"> <div *ngIf="perms.isAllowed('change_metadata', motion)">

View File

@ -56,7 +56,7 @@
(click)="onClickInputPerm(perm, state)" (click)="onClickInputPerm(perm, state)"
> >
<div class="inner-table"> <div class="inner-table">
{{ state[perm.selector] || '-' | translate }} {{ (state[perm.selector] | translate) || '' }}
</div> </div>
</div> </div>
<div class="inner-table" *ngIf="perm.type === 'color'"> <div class="inner-table" *ngIf="perm.type === 'color'">
@ -76,7 +76,7 @@
[matMenuTriggerData]="{ state: state }" [matMenuTriggerData]="{ state: state }"
> >
<div class="inner-table"> <div class="inner-table">
{{ state.next_states_id.length > 0 ? state.getNextStates(workflow.workflow) : '-' }} {{ state.next_states_id.length > 0 ? state.getNextStates(workflow.workflow) : '' }}
</div> </div>
</div> </div>
<div <div
@ -94,9 +94,10 @@
*ngIf="perm.type === 'accessLevel'" *ngIf="perm.type === 'accessLevel'"
[matMenuTriggerFor]="accessLevelMenu" [matMenuTriggerFor]="accessLevelMenu"
[matMenuTriggerData]="{ state: state }" [matMenuTriggerData]="{ state: state }"
matTooltip="{{ accessLevels[state.access_level].label | translate }}"
> >
<div class="inner-table"> <div class="inner-table">
{{ accessLevels[state.access_level].label }} {{ accessLevels[state.access_level].label | translate }}
</div> </div>
</div> </div>
</mat-cell> </mat-cell>
@ -112,10 +113,10 @@
<!-- New state dialog --> <!-- New state dialog -->
<ng-template #workflowDialog> <ng-template #workflowDialog>
<h1 mat-dialog-title> <h1 mat-dialog-title>
<span translate>{{ dialogData.title }}</span> <span>{{ dialogData.title | translate }}</span>
</h1> </h1>
<div class="os-form-card-mobile" mat-dialog-content> <div class="os-form-card-mobile" mat-dialog-content>
<p translate>{{ dialogData.description }}</p> <p>{{ dialogData.description | translate }}</p>
<mat-form-field> <mat-form-field>
<input matInput osAutofocus [(ngModel)]="dialogData.value" /> <input matInput osAutofocus [(ngModel)]="dialogData.value" />
</mat-form-field> </mat-form-field>
@ -171,7 +172,7 @@
<ng-template let-state="state" matMenuContent> <ng-template let-state="state" matMenuContent>
<button mat-menu-item *ngFor="let level of accessLevels" (click)="onSetAccesLevel(level.level, state)"> <button mat-menu-item *ngFor="let level of accessLevels" (click)="onSetAccesLevel(level.level, state)">
<mat-icon *ngIf="state.access_level === level.level">check</mat-icon> <mat-icon *ngIf="state.access_level === level.level">check</mat-icon>
<span translate> {{ level.label }}</span> <span>{{ level.label | translate }}</span>
</button> </button>
</ng-template> </ng-template>
</mat-menu> </mat-menu>
@ -182,7 +183,7 @@
<div *ngFor="let amendment of amendmentIntoFinal"> <div *ngFor="let amendment of amendmentIntoFinal">
<button mat-menu-item (click)="setMergeAmendment(amendment.merge, state)"> <button mat-menu-item (click)="setMergeAmendment(amendment.merge, state)">
<mat-icon *ngIf="amendment.merge === state.merge_amendment_into_final">check</mat-icon> <mat-icon *ngIf="amendment.merge === state.merge_amendment_into_final">check</mat-icon>
<span translate> {{ amendment.label }}</span> <span>{{ amendment.label | translate }}</span>
</button> </button>
</div> </div>
</ng-template> </ng-template>

View File

@ -117,10 +117,10 @@ export class WorkflowDetailComponent extends BaseViewComponent implements OnInit
* Determines possible access levels * Determines possible access levels
*/ */
public accessLevels = [ public accessLevels = [
{ level: 0, label: 'All users' }, { level: 0, label: '0: All users' },
{ level: 1, label: 'Submitters, managers and users with permission to manage metadata' }, { level: 1, label: '1: Submitters and all managers' },
{ level: 2, label: 'Only managers and users with permission to manage metadata' }, { level: 2, label: '2: Only managers for motions and metadata' },
{ level: 3, label: 'Managers only' } { level: 3, label: '3: Only managers for motions' }
] as AccessLevel[]; ] as AccessLevel[];
/** /**
@ -200,11 +200,13 @@ export class WorkflowDetailComponent extends BaseViewComponent implements OnInit
* Opens a dialog to enter the workflow name * Opens a dialog to enter the workflow name
*/ */
public onNewStateButton(): void { public onNewStateButton(): void {
this.openEditDialog('', 'Create new state', 'Name').subscribe(result => { this.openEditDialog('', this.translate.instant('Create new state'), this.translate.instant('Name')).subscribe(
result => {
if (result && result.action === 'update') { if (result && result.action === 'update') {
this.workflowRepo.addState(result.value, this.workflow).then(() => {}, this.raiseError); this.workflowRepo.addState(result.value, this.workflow).then(() => {}, this.raiseError);
} }
}); }
);
} }
/** /**

View File

@ -116,7 +116,7 @@ export class MotionMultiselectService {
id: workflowState.id, id: workflowState.id,
label: workflowState.recommendation_label label: workflowState.recommendation_label
})); }));
const clearChoice = 'Delete recommendation'; const clearChoice = this.translate.instant('Delete recommendation');
const selectedChoice = await this.choiceService.open(title, choices, false, null, clearChoice); const selectedChoice = await this.choiceService.open(title, choices, false, null, clearChoice);
if (selectedChoice) { if (selectedChoice) {
const requestData = motions.map(motion => ({ const requestData = motions.map(motion => ({
@ -136,7 +136,7 @@ export class MotionMultiselectService {
*/ */
public async setCategory(motions: ViewMotion[]): Promise<void> { public async setCategory(motions: ViewMotion[]): Promise<void> {
const title = this.translate.instant('This will set the following category for all selected motions:'); const title = this.translate.instant('This will set the following category for all selected motions:');
const clearChoice = 'No category'; const clearChoice = this.translate.instant('No category');
const selectedChoice = await this.choiceService.open( const selectedChoice = await this.choiceService.open(
title, title,
this.categoryRepo.sortViewCategoriesByConfig(this.categoryRepo.getViewModelList()), this.categoryRepo.sortViewCategoriesByConfig(this.categoryRepo.getViewModelList()),
@ -163,7 +163,7 @@ export class MotionMultiselectService {
const title = this.translate.instant( const title = this.translate.instant(
'This will add or remove the following submitters for all selected motions:' 'This will add or remove the following submitters for all selected motions:'
); );
const choices = ['Add', 'Remove']; const choices = [this.translate.instant('Add'), this.translate.instant('Remove')];
const selectedChoice = await this.choiceService.open(title, this.userRepo.getViewModelList(), true, choices); const selectedChoice = await this.choiceService.open(title, this.userRepo.getViewModelList(), true, choices);
if (selectedChoice && selectedChoice.action === choices[0]) { if (selectedChoice && selectedChoice.action === choices[0]) {
const requestData = motions.map(motion => { const requestData = motions.map(motion => {
@ -195,7 +195,11 @@ export class MotionMultiselectService {
*/ */
public async changeTags(motions: ViewMotion[]): Promise<void> { public async changeTags(motions: ViewMotion[]): Promise<void> {
const title = this.translate.instant('This will add or remove the following tags for all selected motions:'); const title = this.translate.instant('This will add or remove the following tags for all selected motions:');
const choices = ['Add', 'Remove', 'Clear tags']; const choices = [
this.translate.instant('Add'),
this.translate.instant('Remove'),
this.translate.instant('Clear tags')
];
const selectedChoice = await this.choiceService.open(title, this.tagRepo.getViewModelList(), true, choices); const selectedChoice = await this.choiceService.open(title, this.tagRepo.getViewModelList(), true, choices);
if (selectedChoice && selectedChoice.action === choices[0]) { if (selectedChoice && selectedChoice.action === choices[0]) {
const requestData = motions.map(motion => { const requestData = motions.map(motion => {
@ -258,8 +262,10 @@ export class MotionMultiselectService {
* @param motions The motions to move * @param motions The motions to move
*/ */
public async bulkMoveItems(motions: ViewMotion[]): Promise<void> { public async bulkMoveItems(motions: ViewMotion[]): Promise<void> {
const title = this.translate.instant('This will assign the selected motions as belonging to:'); const title = this.translate.instant(
const options = ['Set as parent', 'Insert after']; 'This will move all selected motions under or after the following motion in the call list:'
);
const options = [this.translate.instant('Set as parent'), this.translate.instant('Insert after')];
const allMotions = this.repo.getViewModelList(); const allMotions = this.repo.getViewModelList();
const tree = this.treeService.makeTree(allMotions, 'weight', 'sort_parent_id'); const tree = this.treeService.makeTree(allMotions, 'weight', 'sort_parent_id');
const itemsToMove = this.treeService.getTopItemsFromTree(tree, motions); const itemsToMove = this.treeService.getTopItemsFromTree(tree, motions);

View File

@ -102,7 +102,7 @@ export class UserListComponent extends ListViewBaseComponent<ViewUser> implement
* to filter/sort services * to filter/sort services
*/ */
public ngOnInit(): void { public ngOnInit(): void {
super.setTitle('Users'); super.setTitle(this.translate.instant('Participants'));
this.initTable(); this.initTable();
this.filterService.filter().subscribe(filteredData => { this.filterService.filter().subscribe(filteredData => {

File diff suppressed because one or more lines are too long

View File

@ -14,6 +14,18 @@ msgstr ""
msgid "%num% emails were send sucessfully." msgid "%num% emails were send sucessfully."
msgstr "%num% E-Mails wurden erfolgreich versandt." msgstr "%num% E-Mails wurden erfolgreich versandt."
msgid "0: All users"
msgstr "0: Alle Nutzer"
msgid "1: Submitters and all managers"
msgstr "1: Antragsteller und alle Verwalter"
msgid "2: Only managers for motions and metadata"
msgstr "2: Nur Verwalter von Anträgen und Metadaten"
msgid "3: Only managers for motions"
msgstr "3: Nur Verwalter von Anträgen"
msgid "A name is required" msgid "A name is required"
msgstr "Ein Name ist erforderlich" msgstr "Ein Name ist erforderlich"
@ -42,6 +54,9 @@ msgstr "Angenommen"
msgid "Access data (PDF)" msgid "Access data (PDF)"
msgstr "Zugangsdaten (PDF)" msgstr "Zugangsdaten (PDF)"
msgid "Access level"
msgstr "Zugangsebene"
msgid "Access-data" msgid "Access-data"
msgstr "Zugangsdaten" msgstr "Zugangsdaten"
@ -54,6 +69,9 @@ msgstr "Satzungsänderungsanträge"
msgid "Active filters" msgid "Active filters"
msgstr "Aktive Filter" msgstr "Aktive Filter"
msgid "Add"
msgstr "Hinzufügen"
msgid "Add me" msgid "Add me"
msgstr "Füge mich hinzu" msgstr "Füge mich hinzu"
@ -101,6 +119,9 @@ msgstr "Alle abgegebenen Stimmzettel"
msgid "All selected files will be deleted!" msgid "All selected files will be deleted!"
msgstr "Alle ausgewählten Dateien werden gelöscht!" msgstr "Alle ausgewählten Dateien werden gelöscht!"
msgid "All users"
msgstr ""
msgid "All valid ballots" msgid "All valid ballots"
msgstr "Alle gültigen Stimmzettel" msgstr "Alle gültigen Stimmzettel"
@ -110,6 +131,15 @@ msgstr "Alle Änderungen werden sofort gespeichert."
msgid "Allow access for anonymous guest users" msgid "Allow access for anonymous guest users"
msgstr "Erlaube Zugriff für anonyme Gast-Nutzer" msgstr "Erlaube Zugriff für anonyme Gast-Nutzer"
msgid "Allow create poll"
msgstr "Abstimmung möglich"
msgid "Allow submitter edit"
msgstr "Antragsteller/in darf bearbeiten"
msgid "Allow support"
msgstr "Unterstützung möglich"
msgid "Allow to disable versioning" msgid "Allow to disable versioning"
msgstr "Erlaubt Versionierung zu deaktiveren" msgstr "Erlaubt Versionierung zu deaktiveren"
@ -297,6 +327,9 @@ msgstr "Darf den Chat benutzen"
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
msgid "Cancel edit"
msgstr "Bearbeitung abbrechen"
msgid "Categories" msgid "Categories"
msgstr "Sachgebiete" msgstr "Sachgebiete"
@ -330,6 +363,9 @@ msgstr "Bearbeitet von"
msgid "Changed version" msgid "Changed version"
msgstr "Geänderte Fassung" msgstr "Geänderte Fassung"
msgid "Changed version in line"
msgstr "Geänderte Fassung in Zeile"
msgid "Check in or check out participants based on their participant numbers:" msgid "Check in or check out participants based on their participant numbers:"
msgstr "" msgstr ""
"An- oder Abmeldung von Teilnehmenden basierend auf ihren Teilnehmernummern:" "An- oder Abmeldung von Teilnehmenden basierend auf ihren Teilnehmernummern:"
@ -343,6 +379,9 @@ msgstr "Alle löschen"
msgid "Clear list" msgid "Clear list"
msgstr "Liste leeren" msgstr "Liste leeren"
msgid "Clear tags"
msgstr "Schlagwörter löschen"
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
@ -401,6 +440,9 @@ msgstr "Beschluss-Druckvorlage erstellen"
msgid "Create new category" msgid "Create new category"
msgstr "Neues Sachgebiet erstellen" msgstr "Neues Sachgebiet erstellen"
msgid "Create new workflow"
msgstr "Neuen Arbeitsablauf erstellen"
msgid "Current" msgid "Current"
msgstr "Aktuell" msgstr "Aktuell"
@ -452,6 +494,9 @@ msgstr ""
msgid "Default" msgid "Default"
msgstr "Standard" msgstr "Standard"
msgid "Default encoding for all csv exports"
msgstr "Voreingestelltes Encoding für alle CSV-Exporte"
msgid "Default line numbering" msgid "Default line numbering"
msgstr "Voreingestellte Zeilennummerierung" msgstr "Voreingestellte Zeilennummerierung"
@ -487,6 +532,9 @@ msgstr "Löschen"
msgid "Delete final print template" msgid "Delete final print template"
msgstr "Beschluss-Druckvorlage löschen" msgstr "Beschluss-Druckvorlage löschen"
msgid "Delete recommendation"
msgstr "Empfehlung löschen"
msgid "Delete whole history" msgid "Delete whole history"
msgstr "Chronik löschen" msgstr "Chronik löschen"
@ -679,6 +727,9 @@ msgstr "Als PDF exportieren"
msgid "Export motions" msgid "Export motions"
msgstr "Anträge exportieren" msgstr "Anträge exportieren"
msgid "Export personal note only"
msgstr "Nur persönliche Notiz exportieren"
msgid "Extension" msgid "Extension"
msgstr "Erweiterung" msgstr "Erweiterung"
@ -712,6 +763,9 @@ msgstr "Beschlussfassung"
msgid "Finished" msgid "Finished"
msgstr "Abgeschlossen" msgstr "Abgeschlossen"
msgid "First state"
msgstr "Erster Status"
msgid "Follow recommendation" msgid "Follow recommendation"
msgstr "Empfehlung folgen" msgstr "Empfehlung folgen"
@ -745,12 +799,18 @@ msgstr "Allgemein"
msgid "Generate new passwords" msgid "Generate new passwords"
msgstr "Neue Passwörter generieren" msgstr "Neue Passwörter generieren"
msgid "Generate password"
msgstr "Passwort generieren"
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
msgid "Given name" msgid "Given name"
msgstr "Vorname" msgstr "Vorname"
msgid "Go to line"
msgstr "Springe zur Zeile"
msgid "Groups" msgid "Groups"
msgstr "Gruppen" msgstr "Gruppen"
@ -778,6 +838,9 @@ msgstr "Interne Einträge ausblenden bei der Projektion von Untereinträgen"
msgid "Hide meta information box on projector" msgid "Hide meta information box on projector"
msgstr "Meta-Informations-Box auf dem Projektor ausblenden" msgstr "Meta-Informations-Box auf dem Projektor ausblenden"
msgid "Hide password"
msgstr "Passwort verstecken"
msgid "Hide reason on projector" msgid "Hide reason on projector"
msgstr "Begründung auf dem Projektor ausblenden" msgstr "Begründung auf dem Projektor ausblenden"
@ -830,6 +893,9 @@ msgstr "innerhalb"
msgid "Input format: DD.MM.YYYY HH:MM" msgid "Input format: DD.MM.YYYY HH:MM"
msgstr "Eingabeformat: TT.MM.JJJJ HH:MM" msgstr "Eingabeformat: TT.MM.JJJJ HH:MM"
msgid "Insert after"
msgstr "Danach einfügen"
msgid "Insert participants here" msgid "Insert participants here"
msgstr "Teilnehmende hier importieren" msgstr "Teilnehmende hier importieren"
@ -848,6 +914,9 @@ msgstr "Interner Eintrag"
msgid "Invalid input." msgid "Invalid input."
msgstr "Ungültige Eingabe." msgstr "Ungültige Eingabe."
msgid "Invalid line number"
msgstr "Ungültige Zeilennummer"
msgid "Is a committee" msgid "Is a committee"
msgstr "Ist ein Gremium" msgstr "Ist ein Gremium"
@ -875,6 +944,9 @@ msgstr "Verwenden Sie eine Zeile pro Eintrag."
msgid "Keep each person in a single line." msgid "Keep each person in a single line."
msgstr "Verwenden Sie eine Zeile pro Person." msgstr "Verwenden Sie eine Zeile pro Person."
msgid "Label color"
msgstr "Beschriftungsfarbe"
msgid "Last speakers" msgid "Last speakers"
msgstr "Letzte Redner" msgstr "Letzte Redner"
@ -971,6 +1043,9 @@ msgstr "Anträge"
msgid "Motions have been imported." msgid "Motions have been imported."
msgstr "Anträge wurden importiert." msgstr "Anträge wurden importiert."
msgid "Move in call list"
msgstr "In Aufrufliste verschieben"
msgid "Move to agenda item" msgid "Move to agenda item"
msgstr "Zu TOP verschieben" msgstr "Zu TOP verschieben"
@ -995,6 +1070,9 @@ msgstr "Neuer Projektor"
msgid "New amendment" msgid "New amendment"
msgstr "Neuer Änderungsantrag" msgstr "Neuer Änderungsantrag"
msgid "New change recommendation"
msgstr "Neue Änderungsempfehlung"
msgid "New comment field" msgid "New comment field"
msgstr "Neues Kommentarfeld" msgstr "Neues Kommentarfeld"
@ -1034,9 +1112,15 @@ msgstr "Neue Abstimmung"
msgid "Next" msgid "Next"
msgstr "Weiter" msgstr "Weiter"
msgid "Next states"
msgstr "Nächste Zustände"
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
msgid "No category"
msgstr "Kein Sachgebiet"
msgid "No change recommendations yet" msgid "No change recommendations yet"
msgstr "Bisher keine Änderungsempfehlungen" msgstr "Bisher keine Änderungsempfehlungen"
@ -1220,6 +1304,9 @@ msgstr "Persönliche Notiz"
msgid "Personal notes" msgid "Personal notes"
msgstr "Persönliche Notizen" msgstr "Persönliche Notizen"
msgid "Please enter a name for the new workflow:"
msgstr "Bitte geben Sie einen Namen für den neuen Arbeitsablauf ein:"
msgid "Please enter a valid email address" msgid "Please enter a valid email address"
msgstr "Bitte geben Sie einen neuen Namen ein für" msgstr "Bitte geben Sie einen neuen Namen ein für"
@ -1322,6 +1409,9 @@ msgstr "Begründung erforderlich zur Erstellung neuer Anträge"
msgid "Recommendation" msgid "Recommendation"
msgstr "Empfehlung" msgstr "Empfehlung"
msgid "Recommendation label"
msgstr "Empfehlung"
msgid "Recommendation set to {arg1}" msgid "Recommendation set to {arg1}"
msgstr "Empfehlung gesetzt auf {arg1}" msgstr "Empfehlung gesetzt auf {arg1}"
@ -1453,6 +1543,9 @@ msgstr "Laufende Nummer"
msgid "Serially numbered" msgid "Serially numbered"
msgstr "fortlaufend nummerieren" msgstr "fortlaufend nummerieren"
msgid "Set as parent"
msgstr "Als Eltern setzen"
msgid "Set category" msgid "Set category"
msgstr "Sachgebiet setzen" msgstr "Sachgebiet setzen"
@ -1462,6 +1555,9 @@ msgstr "Gremium setzen ..."
msgid "Set hidden" msgid "Set hidden"
msgstr "Versteckt setzen" msgstr "Versteckt setzen"
msgid "Set identifier"
msgstr "Bezeichner setzen"
msgid "Set internal" msgid "Set internal"
msgstr "Intern setzen" msgstr "Intern setzen"
@ -1492,6 +1588,9 @@ msgstr "Kurzbeschreibung der Veranstaltung"
msgid "Show all" msgid "Show all"
msgstr "Alle anzeigen" msgstr "Alle anzeigen"
msgid "Show amendment in parent motoin"
msgstr "Änderungsantrag im Hauptantrag anzeigen"
msgid "Show amendments together with motions" msgid "Show amendments together with motions"
msgstr "Änderungsanträge zusätzlich in der Hauptantragsübersicht anzeigen" msgstr "Änderungsanträge zusätzlich in der Hauptantragsübersicht anzeigen"
@ -1522,6 +1621,12 @@ msgstr "Passwort anzeigen"
msgid "Show profile" msgid "Show profile"
msgstr "Profil anzeigen" msgstr "Profil anzeigen"
msgid "Show recommendation extension field"
msgstr "Ergänzungsfeld für Empfehlung anzeigen"
msgid "Show state extension field"
msgstr "Ergänzungsfeld für Status anzeigen"
msgid "Show the clock on projector" msgid "Show the clock on projector"
msgstr "Uhr auf dem Projektor anzeigen" msgstr "Uhr auf dem Projektor anzeigen"
@ -1740,6 +1845,13 @@ msgstr ""
"Alle ausgewählten Anträge werden unterhalb des folgenden " "Alle ausgewählten Anträge werden unterhalb des folgenden "
"Tagesordnungspunktes verschoben:" "Tagesordnungspunktes verschoben:"
msgid ""
"This will move all selected motions under or after the following motion in "
"the call list:"
msgstr ""
"Alle ausgewählten Anträge unter oder nach dem folgenden Antrag in der "
"Aufrufliste verschieben:"
msgid "This will set the following category for all selected motions:" msgid "This will set the following category for all selected motions:"
msgstr "Folgendes Sachgebiet wird für alle ausgewählten Anträge gesetzt:" msgstr "Folgendes Sachgebiet wird für alle ausgewählten Anträge gesetzt:"
@ -1832,6 +1944,9 @@ msgstr "Wird für WLAN-QR-Code im Zugangsdaten-PDF verwendet."
msgid "Username" msgid "Username"
msgstr "Benutzername" msgstr "Benutzername"
msgid "Username or password is not correct."
msgstr "Benutzername oder Passwort war nicht korrekt."
msgid "Visibility" msgid "Visibility"
msgstr "Sichtbarkeit" msgstr "Sichtbarkeit"
@ -1910,6 +2025,9 @@ msgstr "Arbeitsablauf für neue Anträge"
msgid "Workflow of new statute amendments" msgid "Workflow of new statute amendments"
msgstr "Arbeitsablauf für neue Satzungsänderungsanträge" msgstr "Arbeitsablauf für neue Satzungsänderungsanträge"
msgid "Workflows"
msgstr "Arbeitsabläufe"
msgid "Wrong file type detected. Import failed." msgid "Wrong file type detected. Import failed."
msgstr "Falscher Dateityp erkannt. Import fehlgeschlagen." msgstr "Falscher Dateityp erkannt. Import fehlgeschlagen."
@ -2087,6 +2205,9 @@ msgstr "eingereicht"
msgid "supporters" msgid "supporters"
msgstr "Unterstützer/innen" msgstr "Unterstützer/innen"
msgid "to"
msgstr "bis"
msgid "undocumented" msgid "undocumented"
msgstr "nicht erfasst" msgstr "nicht erfasst"

View File

@ -7,6 +7,18 @@ msgstr ""
msgid "%num% emails were send sucessfully." msgid "%num% emails were send sucessfully."
msgstr "" msgstr ""
msgid "0: All users"
msgstr ""
msgid "1: Submitters and all managers"
msgstr ""
msgid "2: Only managers for motions and metadata"
msgstr ""
msgid "3: Only managers for motions"
msgstr ""
msgid "A name is required" msgid "A name is required"
msgstr "" msgstr ""
@ -34,6 +46,9 @@ msgstr ""
msgid "Access data (PDF)" msgid "Access data (PDF)"
msgstr "" msgstr ""
msgid "Access level"
msgstr ""
msgid "Access-data" msgid "Access-data"
msgstr "" msgstr ""
@ -46,6 +61,9 @@ msgstr ""
msgid "Active filters" msgid "Active filters"
msgstr "" msgstr ""
msgid "Add"
msgstr ""
msgid "Add me" msgid "Add me"
msgstr "" msgstr ""
@ -90,6 +108,9 @@ msgstr ""
msgid "All selected files will be deleted!" msgid "All selected files will be deleted!"
msgstr "" msgstr ""
msgid "All users"
msgstr ""
msgid "All valid ballots" msgid "All valid ballots"
msgstr "" msgstr ""
@ -99,6 +120,15 @@ msgstr ""
msgid "Allow access for anonymous guest users" msgid "Allow access for anonymous guest users"
msgstr "" msgstr ""
msgid "Allow create poll"
msgstr ""
msgid "Allow submitter edit"
msgstr ""
msgid "Allow support"
msgstr ""
msgid "Allow to disable versioning" msgid "Allow to disable versioning"
msgstr "" msgstr ""
@ -281,6 +311,9 @@ msgstr ""
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
msgid "Cancel edit"
msgstr ""
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
@ -314,6 +347,9 @@ msgstr ""
msgid "Changed version" msgid "Changed version"
msgstr "" msgstr ""
msgid "Changed version in line"
msgstr ""
msgid "Check in or check out participants based on their participant numbers:" msgid "Check in or check out participants based on their participant numbers:"
msgstr "" msgstr ""
@ -326,6 +362,9 @@ msgstr ""
msgid "Clear list" msgid "Clear list"
msgstr "" msgstr ""
msgid "Clear tags"
msgstr ""
msgid "Close" msgid "Close"
msgstr "" msgstr ""
@ -383,6 +422,9 @@ msgstr ""
msgid "Create new category" msgid "Create new category"
msgstr "" msgstr ""
msgid "Create new workflow"
msgstr ""
msgid "Current" msgid "Current"
msgstr "" msgstr ""
@ -425,6 +467,9 @@ msgstr ""
msgid "Default" msgid "Default"
msgstr "" msgstr ""
msgid "Default encoding for all csv exports"
msgstr ""
msgid "Default line numbering" msgid "Default line numbering"
msgstr "" msgstr ""
@ -454,6 +499,9 @@ msgstr ""
msgid "Delete final print template" msgid "Delete final print template"
msgstr "" msgstr ""
msgid "Delete recommendation"
msgstr ""
msgid "Delete whole history" msgid "Delete whole history"
msgstr "" msgstr ""
@ -638,6 +686,9 @@ msgstr ""
msgid "Export motions" msgid "Export motions"
msgstr "" msgstr ""
msgid "Export personal note only"
msgstr ""
msgid "Extension" msgid "Extension"
msgstr "" msgstr ""
@ -671,6 +722,9 @@ msgstr ""
msgid "Finished" msgid "Finished"
msgstr "" msgstr ""
msgid "First state"
msgstr ""
msgid "Follow recommendation" msgid "Follow recommendation"
msgstr "" msgstr ""
@ -704,12 +758,18 @@ msgstr ""
msgid "Generate new passwords" msgid "Generate new passwords"
msgstr "" msgstr ""
msgid "Generate password"
msgstr ""
msgid "German" msgid "German"
msgstr "" msgstr ""
msgid "Given name" msgid "Given name"
msgstr "" msgstr ""
msgid "Go to line"
msgstr ""
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
@ -737,6 +797,9 @@ msgstr ""
msgid "Hide meta information box on projector" msgid "Hide meta information box on projector"
msgstr "" msgstr ""
msgid "Hide password"
msgstr ""
msgid "Hide reason on projector" msgid "Hide reason on projector"
msgstr "" msgstr ""
@ -787,6 +850,9 @@ msgstr ""
msgid "Input format: DD.MM.YYYY HH:MM" msgid "Input format: DD.MM.YYYY HH:MM"
msgstr "" msgstr ""
msgid "Insert after"
msgstr ""
msgid "Insert participants here" msgid "Insert participants here"
msgstr "" msgstr ""
@ -805,6 +871,9 @@ msgstr ""
msgid "Invalid input." msgid "Invalid input."
msgstr "" msgstr ""
msgid "Invalid line number"
msgstr ""
msgid "Is a committee" msgid "Is a committee"
msgstr "" msgstr ""
@ -832,6 +901,9 @@ msgstr ""
msgid "Keep each person in a single line." msgid "Keep each person in a single line."
msgstr "" msgstr ""
msgid "Label color"
msgstr ""
msgid "Last speakers" msgid "Last speakers"
msgstr "" msgstr ""
@ -928,6 +1000,9 @@ msgstr ""
msgid "Motions have been imported." msgid "Motions have been imported."
msgstr "" msgstr ""
msgid "Move in call list"
msgstr ""
msgid "Move to agenda item" msgid "Move to agenda item"
msgstr "" msgstr ""
@ -952,6 +1027,9 @@ msgstr ""
msgid "New amendment" msgid "New amendment"
msgstr "" msgstr ""
msgid "New change recommendation"
msgstr ""
msgid "New comment field" msgid "New comment field"
msgstr "" msgstr ""
@ -991,9 +1069,15 @@ msgstr ""
msgid "Next" msgid "Next"
msgstr "" msgstr ""
msgid "Next states"
msgstr ""
msgid "No" msgid "No"
msgstr "" msgstr ""
msgid "No category"
msgstr ""
msgid "No change recommendations yet" msgid "No change recommendations yet"
msgstr "" msgstr ""
@ -1174,6 +1258,9 @@ msgstr ""
msgid "Personal notes" msgid "Personal notes"
msgstr "" msgstr ""
msgid "Please enter a name for the new workflow:"
msgstr ""
msgid "Please enter a valid email address" msgid "Please enter a valid email address"
msgstr "" msgstr ""
@ -1276,6 +1363,9 @@ msgstr ""
msgid "Recommendation" msgid "Recommendation"
msgstr "" msgstr ""
msgid "Recommendation label"
msgstr ""
msgid "Recommendation set to {arg1}" msgid "Recommendation set to {arg1}"
msgstr "" msgstr ""
@ -1403,6 +1493,9 @@ msgstr ""
msgid "Serially numbered" msgid "Serially numbered"
msgstr "" msgstr ""
msgid "Set as parent"
msgstr ""
msgid "Set category" msgid "Set category"
msgstr "" msgstr ""
@ -1412,6 +1505,9 @@ msgstr ""
msgid "Set hidden" msgid "Set hidden"
msgstr "" msgstr ""
msgid "Set identifier"
msgstr ""
msgid "Set internal" msgid "Set internal"
msgstr "" msgstr ""
@ -1442,6 +1538,9 @@ msgstr ""
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
msgid "Show amendment in parent motoin"
msgstr ""
msgid "Show amendments together with motions" msgid "Show amendments together with motions"
msgstr "" msgstr ""
@ -1472,6 +1571,12 @@ msgstr ""
msgid "Show profile" msgid "Show profile"
msgstr "" msgstr ""
msgid "Show recommendation extension field"
msgstr ""
msgid "Show state extension field"
msgstr ""
msgid "Show the clock on projector" msgid "Show the clock on projector"
msgstr "" msgstr ""
@ -1666,6 +1771,11 @@ msgstr ""
msgid "This will move all selected motions as childs to:" msgid "This will move all selected motions as childs to:"
msgstr "" msgstr ""
msgid ""
"This will move all selected motions under or after the following motion in "
"the call list:"
msgstr ""
msgid "This will set the following category for all selected motions:" msgid "This will set the following category for all selected motions:"
msgstr "" msgstr ""
@ -1751,6 +1861,9 @@ msgstr ""
msgid "Username" msgid "Username"
msgstr "" msgstr ""
msgid "Username or password is not correct."
msgstr ""
msgid "Visibility" msgid "Visibility"
msgstr "" msgstr ""
@ -1824,6 +1937,9 @@ msgstr ""
msgid "Workflow of new statute amendments" msgid "Workflow of new statute amendments"
msgstr "" msgstr ""
msgid "Workflows"
msgstr ""
msgid "Wrong file type detected. Import failed." msgid "Wrong file type detected. Import failed."
msgstr "" msgstr ""
@ -1997,6 +2113,9 @@ msgstr ""
msgid "supporters" msgid "supporters"
msgstr "" msgstr ""
msgid "to"
msgstr ""
msgid "undocumented" msgid "undocumented"
msgstr "" msgstr ""