diff --git a/client/src/app/core/core-services/websocket.service.ts b/client/src/app/core/core-services/websocket.service.ts index b6429f412..ba986f7a4 100644 --- a/client/src/app/core/core-services/websocket.service.ts +++ b/client/src/app/core/core-services/websocket.service.ts @@ -104,7 +104,7 @@ export class WebsocketService { public constructor( private matSnackBar: MatSnackBar, private zone: NgZone, - public translate: TranslateService, + private translate: TranslateService, private router: Router ) {} diff --git a/client/src/app/core/marked-translations.ts b/client/src/app/core/marked-translations.ts index 0ad8618a9..035e99ebf 100644 --- a/client/src/app/core/marked-translations.ts +++ b/client/src/app/core/marked-translations.ts @@ -1,9 +1,4 @@ -import { _ } from '@biesbjerg/ngx-translate-extract'; - -// see issue: 4078 -// function _(key: string | string[]): string | string[] { -// return key; -// } +import { _ } from 'app/core/translate/translation-marker'; /** * Add strings here that require translations but have never been declared @@ -161,13 +156,8 @@ _('Preamble text for PDF and DOCX documents (all motions)'); _('Sort categories by'); _('Include the sequential number in PDF and DOCX'); // misc motion strings -_('needed'); _('Amendment'); -_('Amendment to'); _('Statute amendment for'); -_('Creation date'); -_('Last modified'); -_('Which version?'); // motion workflow 1 _('Simple Workflow'); @@ -214,7 +204,6 @@ _('Called'); _('Called with'); _('Recommendation'); _('Motion block'); -_('Are you sure you want to delete this motion?'); _('The text field may not be blank.'); _('The reason field may not be blank.'); @@ -356,6 +345,7 @@ _( // users misc _('Username or password is not correct.'); +_('Guest'); // default groups _('Default'); diff --git a/client/src/app/core/translate/translation-marker.ts b/client/src/app/core/translate/translation-marker.ts new file mode 100644 index 000000000..4b0eefd9c --- /dev/null +++ b/client/src/app/core/translate/translation-marker.ts @@ -0,0 +1,12 @@ +/** + * Mark strings as translateable for ng-translate-extract. + * Marked strings are added into template-en.pot by 'npm run extract'. + * + * @example + * ```ts + * _('translateable string'); + * ``` + */ +export function _(str: string): string { + return str; +} diff --git a/client/src/app/core/ui-services/base-sort-list.service.ts b/client/src/app/core/ui-services/base-sort-list.service.ts index 6cfe689f9..e57f1bc3d 100644 --- a/client/src/app/core/ui-services/base-sort-list.service.ts +++ b/client/src/app/core/ui-services/base-sort-list.service.ts @@ -53,7 +53,7 @@ export abstract class BaseSortListService { /** * Constructor. Does nothing. TranslateService is used for localeCompeare. */ - public constructor(public translate: TranslateService, private store: StorageService) {} + public constructor(protected translate: TranslateService, private store: StorageService) {} /** * Put an array of data that you want sorted. diff --git a/client/src/app/core/ui-services/poll.service.ts b/client/src/app/core/ui-services/poll.service.ts index 55ecf4948..3c768b646 100644 --- a/client/src/app/core/ui-services/poll.service.ts +++ b/client/src/app/core/ui-services/poll.service.ts @@ -1,5 +1,7 @@ import { Injectable } from '@angular/core'; +import { _ } from 'app/core/translate/translation-marker'; + /** * The possible keys of a poll object that represent numbers. * TODO Should be 'key of MotionPoll if type of key is number' @@ -88,11 +90,11 @@ export class PollService { case 'abstain': return 'Abstain'; case 'votescast': - return 'Total votes cast'; + return _('Total votes cast'); case 'votesvalid': - return 'Valid votes'; + return _('Valid votes'); case 'votesinvalid': - return 'Invalid votes'; + return _('Invalid votes'); default: return ''; } diff --git a/client/src/app/shared/components/empty-selectable.ts b/client/src/app/shared/components/empty-selectable.ts index 4bd8a6f63..d7422e90f 100644 --- a/client/src/app/shared/components/empty-selectable.ts +++ b/client/src/app/shared/components/empty-selectable.ts @@ -1,5 +1,3 @@ -import { TranslateService } from '@ngx-translate/core'; - import { Selectable } from './selectable'; /** @@ -13,14 +11,13 @@ export class EmptySelectable implements Selectable { /** * Empty Constructor - * @param translate translate Service */ - public constructor(private translate?: TranslateService) {} + public constructor() {} /** * gets the title */ - public getTitle = () => (this.translate ? this.translate.instant('None') : 'None'); + public getTitle = () => '–'; /** * gets the list title diff --git a/client/src/app/shared/components/os-sort-filter-bar/os-sort-filter-bar.component.ts b/client/src/app/shared/components/os-sort-filter-bar/os-sort-filter-bar.component.ts index 7436ca98a..695c27490 100644 --- a/client/src/app/shared/components/os-sort-filter-bar/os-sort-filter-bar.component.ts +++ b/client/src/app/shared/components/os-sort-filter-bar/os-sort-filter-bar.component.ts @@ -93,7 +93,7 @@ export class OsSortFilterBarComponent { * @param bottomSheet */ public constructor( - public translate: TranslateService, + protected translate: TranslateService, public vp: ViewportService, private bottomSheet: MatBottomSheet ) { diff --git a/client/src/app/shared/components/search-value-selector/search-value-selector.component.html b/client/src/app/shared/components/search-value-selector/search-value-selector.component.html index a7af0bbe5..75c053d96 100644 --- a/client/src/app/shared/components/search-value-selector/search-value-selector.component.html +++ b/client/src/app/shared/components/search-value-selector/search-value-selector.component.html @@ -3,7 +3,7 @@
- None +
diff --git a/client/src/app/shared/components/search-value-selector/search-value-selector.component.ts b/client/src/app/shared/components/search-value-selector/search-value-selector.component.ts index f69ace008..f424036c5 100644 --- a/client/src/app/shared/components/search-value-selector/search-value-selector.component.ts +++ b/client/src/app/shared/components/search-value-selector/search-value-selector.component.ts @@ -133,7 +133,7 @@ export class SearchValueSelectorComponent implements OnInit, OnDestroy { /** * Empty constructor */ - public constructor(public translate: TranslateService) {} + public constructor(protected translate: TranslateService) {} /** * onInit with filter ans subscription on filter diff --git a/client/src/app/shared/components/sorting-list/sorting-list.component.ts b/client/src/app/shared/components/sorting-list/sorting-list.component.ts index 42ec97ec7..7753d4036 100644 --- a/client/src/app/shared/components/sorting-list/sorting-list.component.ts +++ b/client/src/app/shared/components/sorting-list/sorting-list.component.ts @@ -111,7 +111,7 @@ export class SortingListComponent implements OnInit, OnDestroy { * Creates an empty array. * @param translate the translation service */ - public constructor(public translate: TranslateService) { + public constructor(protected translate: TranslateService) { this.array = []; } diff --git a/client/src/app/shared/models/users/user.ts b/client/src/app/shared/models/users/user.ts index 7676b81ce..2bc87fe08 100644 --- a/client/src/app/shared/models/users/user.ts +++ b/client/src/app/shared/models/users/user.ts @@ -1,9 +1,11 @@ import { BaseModel } from '../base/base-model'; +import { _ } from 'app/core/translate/translation-marker'; + /** * Iterable pre selection of genders (sexes) */ -export const genders = ['Female', 'Male', 'Diverse']; +export const genders = [_('female'), _('male'), _('diverse')]; /** * Representation of a user in contrast to the operator. diff --git a/client/src/app/site/agenda/components/agenda-list/agenda-list.component.ts b/client/src/app/site/agenda/components/agenda-list/agenda-list.component.ts index c9d57bfb5..7d1ee94b9 100644 --- a/client/src/app/site/agenda/components/agenda-list/agenda-list.component.ts +++ b/client/src/app/site/agenda/components/agenda-list/agenda-list.component.ts @@ -19,6 +19,7 @@ import { PdfDocumentService } from 'app/core/ui-services/pdf-document.service'; import { ViewportService } from 'app/core/ui-services/viewport.service'; import { ViewItem } from '../../models/view-item'; import { ProjectorElementBuildDeskriptor } from 'app/site/base/projectable'; +import { _ } from 'app/core/translate/translation-marker'; /** * List view for the agenda. @@ -58,7 +59,7 @@ export class AgendaListComponent extends ListViewBaseComponent i slideOptions: [ { key: 'only_main_items', - displayName: this.translate.instant('Only main agenda items'), + displayName: _('Only main agenda items'), default: false } ], @@ -87,7 +88,7 @@ export class AgendaListComponent extends ListViewBaseComponent i */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private operator: OperatorService, private route: ActivatedRoute, @@ -174,8 +175,8 @@ export class AgendaListComponent extends ListViewBaseComponent i * Click handler for the numbering button to enable auto numbering */ public async onAutoNumbering(): Promise { - const content = this.translate.instant('Are you sure you want to number all agenda items?'); - if (await this.promptService.open('', content)) { + const title = this.translate.instant('Are you sure you want to number all agenda items?'); + if (await this.promptService.open(title, null)) { await this.repo.autoNumbering().then(null, this.raiseError); } } @@ -211,8 +212,9 @@ export class AgendaListComponent extends ListViewBaseComponent i * @param item The item to delete */ public async onDelete(item: ViewItem): Promise { - const content = this.translate.instant('Delete') + ` ${item.getTitle()}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this entry?'); + const content = item.contentObject.getTitle(); + if (await this.promptService.open(title, content)) { await this.repo.delete(item).then(null, this.raiseError); } } @@ -222,8 +224,8 @@ export class AgendaListComponent extends ListViewBaseComponent i * is only filled with any data in multiSelect mode */ public async deleteSelected(): Promise { - const content = this.translate.instant('This will delete all selected agenda items.'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete all selected items?'); + if (await this.promptService.open(title, null)) { for (const agenda of this.selectedRows) { await this.repo.delete(agenda); } diff --git a/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.html b/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.html index 98ec8cdbc..884b54165 100644 --- a/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.html +++ b/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.html @@ -158,6 +158,6 @@ diff --git a/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.ts b/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.ts index 6d6017a08..cce84279c 100644 --- a/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.ts +++ b/client/src/app/site/agenda/components/list-of-speakers/list-of-speakers.component.ts @@ -121,7 +121,7 @@ export class ListOfSpeakersComponent extends BaseViewComponent implements OnInit */ public constructor( title: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract snackBar: MatSnackBar, projectorRepo: ProjectorRepositoryService, private route: ActivatedRoute, @@ -360,8 +360,10 @@ export class ListOfSpeakersComponent extends BaseViewComponent implements OnInit * after a confirmation dialog */ public async clearSpeakerList(): Promise { - const content = this.translate.instant('This will clear all speakers from the list.'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant( + 'Are you sure you want to delete all speakers from this list of speakers?' + ); + if (await this.promptService.open(title, null)) { this.repo.deleteAllSpeakers(this.viewItem); } } diff --git a/client/src/app/site/agenda/components/topic-detail/topic-detail.component.html b/client/src/app/site/agenda/components/topic-detail/topic-detail.component.html index 0fec39bbc..3c458af62 100644 --- a/client/src/app/site/agenda/components/topic-detail/topic-detail.component.html +++ b/client/src/app/site/agenda/components/topic-detail/topic-detail.component.html @@ -98,7 +98,7 @@ [formControl]="topicForm.get('agenda_parent_id')" [multiple]="false" [includeNone]="true" - listname="{{ 'Parent item' | translate }}" + listname="{{ 'Parent agenda item' | translate }}" [InputListValues]="itemObserver" > diff --git a/client/src/app/site/agenda/components/topic-detail/topic-detail.component.ts b/client/src/app/site/agenda/components/topic-detail/topic-detail.component.ts index c1b62e76a..453eb8914 100644 --- a/client/src/app/site/agenda/components/topic-detail/topic-detail.component.ts +++ b/client/src/app/site/agenda/components/topic-detail/topic-detail.component.ts @@ -218,8 +218,9 @@ export class TopicDetailComponent extends BaseViewComponent { * Handler for the delete button. Uses the PromptService */ public async onDeleteButton(): Promise { - const content = this.translate.instant('Delete') + ` ${this.topic.title}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this entry?'); + const content = this.topic.title; + if (await this.promptService.open(title, content)) { await this.repo.delete(this.topic).then(null, this.raiseError); this.router.navigate(['/agenda']); } diff --git a/client/src/app/site/agenda/services/agenda-filter-list.service.ts b/client/src/app/site/agenda/services/agenda-filter-list.service.ts index b6853301a..db170c5ed 100644 --- a/client/src/app/site/agenda/services/agenda-filter-list.service.ts +++ b/client/src/app/site/agenda/services/agenda-filter-list.service.ts @@ -5,6 +5,7 @@ import { Item, itemVisibilityChoices } from 'app/shared/models/agenda/item'; import { ViewItem } from '../models/view-item'; import { StorageService } from 'app/core/core-services/storage.service'; import { ItemRepositoryService } from 'app/core/repositories/agenda/item-repository.service'; +import { TranslateService } from '@ngx-translate/core'; @Injectable({ providedIn: 'root' @@ -18,8 +19,9 @@ export class AgendaFilterListService extends BaseFilterListService { - const content = this.translate.instant('This will delete all selected assignments.'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete all selected elections?'); + if (await this.promptService.open(title, null)) { for (const assignment of this.selectedRows) { await this.repo.delete(assignment); } diff --git a/client/src/app/site/mediafiles/components/mediafile-list/mediafile-list.component.ts b/client/src/app/site/mediafiles/components/mediafile-list/mediafile-list.component.ts index 739ae19eb..511a0296d 100644 --- a/client/src/app/site/mediafiles/components/mediafile-list/mediafile-list.component.ts +++ b/client/src/app/site/mediafiles/components/mediafile-list/mediafile-list.component.ts @@ -178,8 +178,9 @@ export class MediafileListComponent extends ListViewBaseComponent { - const content = this.translate.instant('Do you want to delete this file?') + `

${file}`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this file?'); + const content = file.getTitle(); + if (await this.promptService.open(title, content)) { this.repo.delete(file); } } @@ -189,8 +190,8 @@ export class MediafileListComponent extends ListViewBaseComponent { - const content = this.translate.instant('All selected files will be deleted!'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete all selected files?'); + if (await this.promptService.open(title, null)) { for (const mediafile of this.selectedRows) { await this.repo.delete(mediafile); } diff --git a/client/src/app/site/motions/models/view-motion.ts b/client/src/app/site/motions/models/view-motion.ts index 8f448b474..e8217d0fc 100644 --- a/client/src/app/site/motions/models/view-motion.ts +++ b/client/src/app/site/motions/models/view-motion.ts @@ -16,6 +16,7 @@ import { ViewMotionBlock } from './view-motion-block'; import { BaseViewModel } from 'app/site/base/base-view-model'; import { ConfigService } from 'app/core/ui-services/config.service'; import { ViewMotionChangeRecommendation } from './view-change-recommendation'; +import { _ } from 'app/core/translate/translation-marker'; /** * The line numbering mode for the motion detail view. @@ -610,7 +611,7 @@ export class ViewMotion extends BaseAgendaViewModel implements Searchable { if (this.changeRecommendations && this.changeRecommendations.length) { slideOptions.push({ key: 'mode', - displayName: 'Which version?', + displayName: _('Which version?'), default: configService.instant('motions_recommendation_text_mode'), choices: [ { value: 'original', displayName: 'Original version' }, diff --git a/client/src/app/site/motions/modules/category/components/category-list/category-list.component.ts b/client/src/app/site/motions/modules/category/components/category-list/category-list.component.ts index b82309be6..396475709 100644 --- a/client/src/app/site/motions/modules/category/components/category-list/category-list.component.ts +++ b/client/src/app/site/motions/modules/category/components/category-list/category-list.component.ts @@ -58,7 +58,7 @@ export class CategoryListComponent extends BaseViewComponent implements OnInit { */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: CategoryRepositoryService, private motionRepo: MotionRepositoryService, @@ -173,8 +173,9 @@ export class CategoryListComponent extends BaseViewComponent implements OnInit { * @param viewCategory The category to delete */ public async onDeleteButton(viewCategory: ViewCategory): Promise { - const content = this.translate.instant('Delete') + ` ${viewCategory.name}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this category?'); + const content = viewCategory.getTitle(); + if (await this.promptService.open(title, content)) { this.repo.delete(viewCategory).then(() => this.onCancelButton(), this.raiseError); } } diff --git a/client/src/app/site/motions/modules/category/components/category-sort/category-sort.component.ts b/client/src/app/site/motions/modules/category/components/category-sort/category-sort.component.ts index 8713d7305..f7fb1dada 100644 --- a/client/src/app/site/motions/modules/category/components/category-sort/category-sort.component.ts +++ b/client/src/app/site/motions/modules/category/components/category-sort/category-sort.component.ts @@ -75,7 +75,7 @@ export class CategorySortComponent extends BaseViewComponent implements OnInit { */ public constructor( title: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private promptService: PromptService, private repo: CategoryRepositoryService, @@ -107,8 +107,9 @@ export class CategorySortComponent extends BaseViewComponent implements OnInit { */ public async onNumberMotions(): Promise { if (this.sortSelector) { - const content = this.translate.instant('This will change the identifier for the motions of this category.'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to renumber all motions of this category?'); + const content = this.category.getTitle(); + if (await this.promptService.open(title, content)) { const sortedMotionIds = this.sortSelector.array.map(selectable => selectable.id); await this.repo .numberMotionsInCategory(this.category.category, sortedMotionIds) diff --git a/client/src/app/site/motions/modules/motion-block/components/motion-block-detail/motion-block-detail.component.ts b/client/src/app/site/motions/modules/motion-block/components/motion-block-detail/motion-block-detail.component.ts index e6deb564c..e007f57aa 100644 --- a/client/src/app/site/motions/modules/motion-block/components/motion-block-detail/motion-block-detail.component.ts +++ b/client/src/app/site/motions/modules/motion-block/components/motion-block-detail/motion-block-detail.component.ts @@ -131,10 +131,11 @@ export class MotionBlockDetailComponent extends ListViewBaseComponent { - const content = this.translate.instant( - `Are you sure you want to override the state of all motions of this motion block?` + const title = this.translate.instant( + 'Are you sure you want to override the state of all motions of this motion block?' ); - if (await this.promptService.open(this.block.title, content)) { + const content = this.block.title; + if (await this.promptService.open(title, content)) { this.repo.followRecommendation(this.block); } } @@ -153,8 +154,9 @@ export class MotionBlockDetailComponent extends ListViewBaseComponent { - const content = this.translate.instant('Are you sure you want to delete this motion block?'); - if (await this.promptService.open(this.block.title, content)) { + const title = this.translate.instant('Are you sure you want to delete this motion block?'); + const content = this.block.title; + if (await this.promptService.open(title, content)) { await this.repo.delete(this.block); this.router.navigate(['../'], { relativeTo: this.route }); } @@ -166,8 +168,9 @@ export class MotionBlockDetailComponent extends ListViewBaseComponent { - const content = this.translate.instant('Are you sure you want to remove this motion from motion block?'); - if (await this.promptService.open(motion.title, content)) { + const title = this.translate.instant('Are you sure you want to remove this motion from motion block?'); + const content = motion.getTitle(); + if (await this.promptService.open(title, content)) { this.repo.removeMotionFromBlock(motion); } } diff --git a/client/src/app/site/motions/modules/motion-block/components/motion-block-list/motion-block-list.component.html b/client/src/app/site/motions/modules/motion-block/components/motion-block-list/motion-block-list.component.html index d8d99ade5..b283697c9 100644 --- a/client/src/app/site/motions/modules/motion-block/components/motion-block-list/motion-block-list.component.html +++ b/client/src/app/site/motions/modules/motion-block/components/motion-block-list/motion-block-list.component.html @@ -22,7 +22,7 @@

{ - const content = this.translate.instant('Are you sure you want to delete this motion block?'); - if (await this.promptService.open(motionBlock.title, content)) { + const title = this.translate.instant('Are you sure you want to delete this motion block?'); + const content = motionBlock.title; + if (await this.promptService.open(title, content)) { await this.repo.delete(motionBlock); } } diff --git a/client/src/app/site/motions/modules/motion-comment-section/motion-comment-section-list.component.ts b/client/src/app/site/motions/modules/motion-comment-section/motion-comment-section-list.component.ts index cafc8bcb9..6158f3a9d 100644 --- a/client/src/app/site/motions/modules/motion-comment-section/motion-comment-section-list.component.ts +++ b/client/src/app/site/motions/modules/motion-comment-section/motion-comment-section-list.component.ts @@ -55,7 +55,7 @@ export class MotionCommentSectionListComponent extends BaseViewComponent impleme */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: MotionCommentSectionRepositoryService, private formBuilder: FormBuilder, @@ -164,8 +164,9 @@ export class MotionCommentSectionListComponent extends BaseViewComponent impleme * @param viewSection The section to delete */ public async onDeleteButton(viewSection: ViewMotionCommentSection): Promise { - const content = this.translate.instant('Delete') + ` ${viewSection.name}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this comment field?'); + const content = viewSection.name; + if (await this.promptService.open(title, content)) { this.repo.delete(viewSection).then(() => (this.openId = this.editId = null), this.raiseError); } } diff --git a/client/src/app/site/motions/modules/motion-detail/components/amendment-create-wizard/amendment-create-wizard.component.ts b/client/src/app/site/motions/modules/motion-detail/components/amendment-create-wizard/amendment-create-wizard.component.ts index c981921e5..500538dbb 100644 --- a/client/src/app/site/motions/modules/motion-detail/components/amendment-create-wizard/amendment-create-wizard.component.ts +++ b/client/src/app/site/motions/modules/motion-detail/components/amendment-create-wizard/amendment-create-wizard.component.ts @@ -83,7 +83,7 @@ export class AmendmentCreateWizardComponent extends BaseViewComponent { */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract private configService: ConfigService, private formBuilder: FormBuilder, private repo: MotionRepositoryService, diff --git a/client/src/app/site/motions/modules/motion-detail/components/motion-detail-diff/motion-detail-diff.component.ts b/client/src/app/site/motions/modules/motion-detail/components/motion-detail-diff/motion-detail-diff.component.ts index 786a53e57..5a2fdc956 100644 --- a/client/src/app/site/motions/modules/motion-detail/components/motion-detail-diff/motion-detail-diff.component.ts +++ b/client/src/app/site/motions/modules/motion-detail/components/motion-detail-diff/motion-detail-diff.component.ts @@ -79,7 +79,7 @@ export class MotionDetailDiffComponent extends BaseViewComponent implements Afte */ public constructor( title: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private sanitizer: DomSanitizer, private motionRepo: MotionRepositoryService, @@ -277,8 +277,8 @@ export class MotionDetailDiffComponent extends BaseViewComponent implements Afte public async deleteChangeRecommendation(reco: ViewMotionChangeRecommendation, $event: MouseEvent): Promise { $event.stopPropagation(); $event.preventDefault(); - const content = this.translate.instant('Delete this change recommendation'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this change recommendation?'); + if (await this.promptService.open(title, null)) { this.recoRepo.delete(reco).then(null, this.raiseError); } } diff --git a/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.html b/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.html index 498872abe..c6b7cda6e 100644 --- a/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.html +++ b/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.html @@ -708,19 +708,6 @@ - -

- -
-
@@ -732,6 +719,19 @@
+ +
+ +
+
diff --git a/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.ts b/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.ts index f88d5a9cd..d84bc105d 100644 --- a/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.ts +++ b/client/src/app/site/motions/modules/motion-detail/components/motion-detail/motion-detail.component.ts @@ -377,7 +377,7 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit, */ public constructor( title: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, public vp: ViewportService, public operator: OperatorService, @@ -855,7 +855,8 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit, */ public async deleteMotionButton(): Promise { const title = this.translate.instant('Are you sure you want to delete this motion?'); - if (await this.promptService.open(title, this.motion.getTitle())) { + const content = this.motion.getTitle(); + if (await this.promptService.open(title, content)) { await this.repo.delete(this.motion); this.router.navigate(['./motions/']); } @@ -1001,8 +1002,10 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit, try { // Just confirm this, if there is one modified final version the user would override. if (this.motion.modified_final_version) { - const content = this.translate.instant('Are you sure to copy the final version to the print template?'); - if (await this.promptService.open(this.motion.title, content)) { + const title = this.translate.instant( + 'Are you sure you want to copy the final version to the print template?' + ); + if (await this.promptService.open(title, null)) { await this.updateMotion({ modified_final_version: finalVersion }, this.motion); } } else { @@ -1018,8 +1021,8 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit, * Deletes the modified final version */ public async deleteModifiedFinalVersion(): Promise { - const content = this.translate.instant('Are you sure to delete the print template?'); - if (await this.promptService.open(this.motion.title, content)) { + const title = this.translate.instant('Are you sure you want to delete the print template?'); + if (await this.promptService.open(title, null)) { this.updateMotion({ modified_final_version: '' }, this.motion).then( () => this.setChangeRecoMode(ChangeRecoMode.Final), this.raiseError diff --git a/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll-dialog.component.html b/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll-dialog.component.html index 290ec49b7..7b3cc3f30 100644 --- a/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll-dialog.component.html +++ b/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll-dialog.component.html @@ -1,4 +1,4 @@ -

Voting result

+

Voting result

Special values:
-1 =  @@ -14,7 +14,7 @@
- - + +
diff --git a/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll.component.ts b/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll.component.ts index 28100d3f4..9ae5115b8 100644 --- a/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll.component.ts +++ b/client/src/app/site/motions/modules/motion-detail/components/motion-poll/motion-poll.component.ts @@ -118,8 +118,8 @@ export class MotionPollComponent implements OnInit { * Sends a delete request for this poll after a confirmation dialog has been accepted. */ public async deletePoll(): Promise { - const content = this.translate.instant('Are you sure you want to delete this vote?'); - if (await this.promptService.open('Delete vote?', content)) { + const title = this.translate.instant('Are you sure you want to delete this vote?'); + if (await this.promptService.open(title, null)) { this.motionRepo.deletePoll(this.poll); } } diff --git a/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts b/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts index bd7e682ef..56410ba10 100644 --- a/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts +++ b/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts @@ -86,7 +86,7 @@ export class MotionListComponent extends ListViewBaseComponent { - const content = this.translate.instant('Delete') + ` ${selected}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this workflow?'); + const content = selected.getTitle(); + if (await this.promptService.open(title, content)) { this.workflowRepo.delete(selected).then(() => {}, this.raiseError); } } diff --git a/client/src/app/site/motions/modules/statute-paragraph/components/statute-paragraph-list/statute-paragraph-list.component.ts b/client/src/app/site/motions/modules/statute-paragraph/components/statute-paragraph-list/statute-paragraph-list.component.ts index 344c1f953..6a8902f80 100644 --- a/client/src/app/site/motions/modules/statute-paragraph/components/statute-paragraph-list/statute-paragraph-list.component.ts +++ b/client/src/app/site/motions/modules/statute-paragraph/components/statute-paragraph-list/statute-paragraph-list.component.ts @@ -51,7 +51,7 @@ export class StatuteParagraphListComponent extends BaseViewComponent implements */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: StatuteParagraphRepositoryService, private formBuilder: FormBuilder, @@ -136,8 +136,9 @@ export class StatuteParagraphListComponent extends BaseViewComponent implements * @param viewStatuteParagraph The statute paragraph to delete */ public async onDeleteButton(viewStatuteParagraph: ViewStatuteParagraph): Promise { - const content = this.translate.instant('Delete') + ` ${viewStatuteParagraph.title}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this statute paragraph?'); + const content = viewStatuteParagraph.title; + if (await this.promptService.open(title, content)) { this.repo.delete(viewStatuteParagraph).then(() => (this.openId = this.editId = null), this.raiseError); } } diff --git a/client/src/app/site/motions/services/motion-multiselect.service.ts b/client/src/app/site/motions/services/motion-multiselect.service.ts index 14d882534..ca3be00fc 100644 --- a/client/src/app/site/motions/services/motion-multiselect.service.ts +++ b/client/src/app/site/motions/services/motion-multiselect.service.ts @@ -61,8 +61,8 @@ export class MotionMultiselectService { * @param motions The motions to delete */ public async delete(motions: ViewMotion[]): Promise { - const content = this.translate.instant('This will delete all selected motions.'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete all selected motions?'); + if (await this.promptService.open(title, null)) { for (const motion of motions) { await this.repo.delete(motion); } @@ -239,7 +239,7 @@ export class MotionMultiselectService { */ public async setMotionBlock(motions: ViewMotion[]): Promise { const title = this.translate.instant('This will set the following motion block for all selected motions:'); - const clearChoice = 'Clear motion block'; + const clearChoice = this.translate.instant('Clear motion block'); const selectedChoice = await this.choiceService.open( title, this.motionBlockRepo.getViewModelList(), diff --git a/client/src/app/site/motions/services/motion-sort-list.service.ts b/client/src/app/site/motions/services/motion-sort-list.service.ts index a8fa5f975..082e8c4a7 100644 --- a/client/src/app/site/motions/services/motion-sort-list.service.ts +++ b/client/src/app/site/motions/services/motion-sort-list.service.ts @@ -5,6 +5,7 @@ import { ViewMotion } from '../models/view-motion'; import { TranslateService } from '@ngx-translate/core'; import { StorageService } from 'app/core/core-services/storage.service'; import { ConfigService } from 'app/core/ui-services/config.service'; +import { _ } from 'app/core/translate/translation-marker'; @Injectable({ providedIn: 'root' @@ -21,8 +22,8 @@ export class MotionSortListService extends BaseSortListService { { property: 'category' }, { property: 'motion_block_id', label: 'Motion block' }, { property: 'state' }, - { property: 'creationDate', label: this.translate.instant('Creation date') }, - { property: 'lastChangeDate', label: this.translate.instant('Last modified') } + { property: 'creationDate', label: _('Creation date') }, + { property: 'lastChangeDate', label: _('Last modified') } ] }; protected name = 'Motion'; diff --git a/client/src/app/site/projector/components/countdown-list/countdown-list.component.ts b/client/src/app/site/projector/components/countdown-list/countdown-list.component.ts index b9d658728..9a7af5fcb 100644 --- a/client/src/app/site/projector/components/countdown-list/countdown-list.component.ts +++ b/client/src/app/site/projector/components/countdown-list/countdown-list.component.ts @@ -40,7 +40,7 @@ export class CountdownListComponent extends BaseViewComponent implements OnInit public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: CountdownRepositoryService, private formBuilder: FormBuilder, @@ -152,8 +152,9 @@ export class CountdownListComponent extends BaseViewComponent implements OnInit * @param countdown The countdown to delete */ public async onDeleteButton(countdown: ViewCountdown): Promise { - const content = this.translate.instant('Delete countdown') + ` ${this.translate.instant(countdown.title)}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this countdown?'); + const content = countdown.title; + if (await this.promptService.open(title, content)) { this.repo.delete(countdown).then(() => (this.openId = this.editId = null), this.raiseError); } } diff --git a/client/src/app/site/projector/components/projector-detail/projector-detail.component.html b/client/src/app/site/projector/components/projector-detail/projector-detail.component.html index cf4013911..e176a155d 100644 --- a/client/src/app/site/projector/components/projector-detail/projector-detail.component.html +++ b/client/src/app/site/projector/components/projector-detail/projector-detail.component.html @@ -172,7 +172,7 @@ - History + Previous slides

{{ i + 1 }}.   {{ getSlideTitle(elements[0]) }} @@ -228,16 +228,6 @@ Current list of speakers - - - - - Overlay - - - @@ -248,6 +238,16 @@ + + + + + Overlay + + + diff --git a/client/src/app/site/projector/components/projector-list/projector-list.component.html b/client/src/app/site/projector/components/projector-list/projector-list.component.html index a22d767de..4b4468192 100644 --- a/client/src/app/site/projector/components/projector-list/projector-list.component.html +++ b/client/src/app/site/projector/components/projector-list/projector-list.component.html @@ -14,10 +14,10 @@

- + Reference projector for current list of speakers: - +   diff --git a/client/src/app/site/projector/components/projector-list/projector-list.component.ts b/client/src/app/site/projector/components/projector-list/projector-list.component.ts index e99ac78f3..6a062d766 100644 --- a/client/src/app/site/projector/components/projector-list/projector-list.component.ts +++ b/client/src/app/site/projector/components/projector-list/projector-list.component.ts @@ -85,7 +85,7 @@ export class ProjectorListComponent extends BaseViewComponent implements OnInit */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: ProjectorRepositoryService, private formBuilder: FormBuilder, @@ -254,8 +254,9 @@ export class ProjectorListComponent extends BaseViewComponent implements OnInit * @param projector The projector to delete */ public async onDeleteButton(projector: ViewProjector): Promise { - const content = this.translate.instant('Delete') + ` ${projector.name}?`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete this projector?'); + const content = projector.name; + if (await this.promptService.open(title, content)) { this.repo.delete(projector).then(null, this.raiseError); } } diff --git a/client/src/app/site/projector/components/projector-message-list/projector-message-list.component.ts b/client/src/app/site/projector/components/projector-message-list/projector-message-list.component.ts index f72847bf8..ece5642b5 100644 --- a/client/src/app/site/projector/components/projector-message-list/projector-message-list.component.ts +++ b/client/src/app/site/projector/components/projector-message-list/projector-message-list.component.ts @@ -41,7 +41,7 @@ export class ProjectorMessageListComponent extends BaseViewComponent implements */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: ProjectorMessageRepositoryService, private formBuilder: FormBuilder, @@ -127,8 +127,8 @@ export class ProjectorMessageListComponent extends BaseViewComponent implements * @param message The message to delete */ public async onDeleteButton(message: ViewProjectorMessage): Promise { - const content = this.translate.instant('Delete this message?'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete the selected message?'); + if (await this.promptService.open(title, null)) { this.repo.delete(message).then(() => (this.openId = this.editId = null), this.raiseError); } } diff --git a/client/src/app/site/tags/components/tag-list/tag-list.component.ts b/client/src/app/site/tags/components/tag-list/tag-list.component.ts index 474f027f7..003779f9f 100644 --- a/client/src/app/site/tags/components/tag-list/tag-list.component.ts +++ b/client/src/app/site/tags/components/tag-list/tag-list.component.ts @@ -39,7 +39,7 @@ export class TagListComponent extends ListViewBaseComponent implem */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: TagRepositoryService, private promptService: PromptService @@ -102,8 +102,9 @@ export class TagListComponent extends ListViewBaseComponent implem * Deletes the selected Tag after a successful confirmation. */ public async deleteSelectedTag(): Promise { - const content = this.translate.instant('Delete') + ` ${this.selectedTag.name}?`; - if (await this.promptService.open(this.translate.instant('Are you sure?'), content)) { + const title = this.translate.instant('Are you sure you want to delete this tag?'); + const content = this.selectedTag.name; + if (await this.promptService.open(title, content)) { this.repo.delete(this.selectedTag).then(() => this.cancelEditing(), this.raiseError); } } diff --git a/client/src/app/site/users/components/group-list/group-list.component.ts b/client/src/app/site/users/components/group-list/group-list.component.ts index a342b42da..3dba8b215 100644 --- a/client/src/app/site/users/components/group-list/group-list.component.ts +++ b/client/src/app/site/users/components/group-list/group-list.component.ts @@ -58,7 +58,7 @@ export class GroupListComponent extends BaseViewComponent implements OnInit { */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, public repo: GroupRepositoryService, private promptService: PromptService @@ -131,8 +131,9 @@ export class GroupListComponent extends BaseViewComponent implements OnInit { * Deletes the selected Group */ public async deleteSelectedGroup(): Promise { - const content = this.translate.instant('Delete') + ` ${this.selectedGroup.name}?`; - if (await this.promptService.open(this.translate.instant('Are you sure?'), content)) { + const title = this.translate.instant('Are you sure you want to delete this group?'); + const content = this.translate.instant(this.selectedGroup.name); + if (await this.promptService.open(title, content)) { this.repo.delete(this.selectedGroup).then(() => this.cancelEditing(), this.raiseError); } } diff --git a/client/src/app/site/users/components/password/password.component.ts b/client/src/app/site/users/components/password/password.component.ts index 3a31b9750..8053cd732 100644 --- a/client/src/app/site/users/components/password/password.component.ts +++ b/client/src/app/site/users/components/password/password.component.ts @@ -66,7 +66,7 @@ export class PasswordComponent extends BaseViewComponent implements OnInit { */ public constructor( title: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private route: ActivatedRoute, private router: Router, @@ -150,7 +150,7 @@ export class PasswordComponent extends BaseViewComponent implements OnInit { const newPassword2 = this.userPasswordForm.value.newPassword2; if (newPassword1 !== newPassword2) { - this.raiseError(this.translate.instant('New passwords do not match')); + this.raiseError(this.translate.instant('Error: The new passwords do not match.')); } else { await this.repo.setNewPassword(oldPassword, newPassword1); this.router.navigate(['./']); diff --git a/client/src/app/site/users/components/presence-detail/presence-detail.component.html b/client/src/app/site/users/components/presence-detail/presence-detail.component.html index 11d938810..00a313a3b 100644 --- a/client/src/app/site/users/components/presence-detail/presence-detail.component.html +++ b/client/src/app/site/users/components/presence-detail/presence-detail.component.html @@ -14,10 +14,10 @@ (keyup)="onKeyUp($event)" /> - + - {{ lastChangedUser.full_name }}  is now -  {{ lastChangedUser.is_present ? 'present' : ('not present' | translate) }} + {{ lastChangedUser.full_name }}  is now: +  {{ lastChangedUser.is_present ? ('present' | translate) : ('absent' | translate) }} - {{ errorMsg | translate }} + {{ errorMsg | translate }} diff --git a/client/src/app/site/users/components/user-detail/user-detail.component.ts b/client/src/app/site/users/components/user-detail/user-detail.component.ts index 2f93a97f5..c843904f9 100644 --- a/client/src/app/site/users/components/user-detail/user-detail.component.ts +++ b/client/src/app/site/users/components/user-detail/user-detail.component.ts @@ -87,7 +87,7 @@ export class UserDetailComponent extends BaseViewComponent implements OnInit { */ public constructor( title: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private formBuilder: FormBuilder, private route: ActivatedRoute, @@ -377,10 +377,9 @@ export class UserDetailComponent extends BaseViewComponent implements OnInit { * click on the delete user button */ public async deleteUserButton(): Promise { - const content = - this.translate.instant('Do you want to delete this participant?') + - `

${this.user.full_name}`; - if (await this.promptService.open(this.translate.instant('Are you sure?'), content)) { + const title = this.translate.instant('Are you sure you want to delete this participant?'); + const content = this.user.full_name; + if (await this.promptService.open(title, content)) { this.repo.delete(this.user).then(() => this.router.navigate(['./users/']), this.raiseError); } } diff --git a/client/src/app/site/users/components/user-list/user-list.component.ts b/client/src/app/site/users/components/user-list/user-list.component.ts index 479306aa1..27fac538f 100644 --- a/client/src/app/site/users/components/user-list/user-list.component.ts +++ b/client/src/app/site/users/components/user-list/user-list.component.ts @@ -19,6 +19,7 @@ import { OperatorService } from 'app/core/core-services/operator.service'; import { ViewUser } from '../../models/view-user'; import { ViewGroup } from '../../models/view-group'; import { genders, User } from 'app/shared/models/users/user'; +import { _ } from 'app/core/translate/translation-marker'; /** * Interface for the short editing dialog. @@ -130,7 +131,7 @@ export class UserListComponent extends ListViewBaseComponent imp */ public constructor( titleService: Title, - translate: TranslateService, + protected translate: TranslateService, // protected required for ng-translate-extract matSnackBar: MatSnackBar, private repo: UserRepositoryService, private groupRepo: GroupRepositoryService, @@ -268,8 +269,8 @@ export class UserListComponent extends ListViewBaseComponent imp * Bulk deletes users. Needs multiSelect mode to fill selectedRows */ public async deleteSelected(): Promise { - const content = this.translate.instant('This will delete all selected users.'); - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to delete all selected participants?'); + if (await this.promptService.open(title, null)) { for (const user of this.selectedRows) { await this.repo.delete(user); } @@ -281,8 +282,10 @@ export class UserListComponent extends ListViewBaseComponent imp * SelectedRows is only filled with data in multiSelect mode */ public async setGroupSelected(): Promise { - const content = this.translate.instant('This will add or remove the following groups for all selected users:'); - const choices = ['Add group(s)', 'Remove group(s)']; + const content = this.translate.instant( + 'This will add or remove the following groups for all selected participants:' + ); + const choices = [_('add group(s)'), _('remove group(s)')]; const selectedChoice = await this.choiceService.open(content, this.groupRepo.getViewModelList(), true, choices); if (selectedChoice) { for (const user of this.selectedRows) { @@ -305,8 +308,8 @@ export class UserListComponent extends ListViewBaseComponent imp * Uses selectedRows defined via multiSelect mode. */ public async setActiveSelected(): Promise { - const content = this.translate.instant('Set the active status for the selected users'); - const options = ['Active', 'Not active']; + const content = this.translate.instant('Set active status for selected participants:'); + const options = [_('active'), _('inactive')]; const selectedChoice = await this.choiceService.open(content, null, false, options); if (selectedChoice) { const active = selectedChoice.action === options[0]; @@ -321,8 +324,8 @@ export class UserListComponent extends ListViewBaseComponent imp * Uses selectedRows defined via multiSelect mode. */ public async setPresentSelected(): Promise { - const content = this.translate.instant('Set the presence status for the selected users'); - const options = ['Present', 'Not present']; + const content = this.translate.instant('Set presence status for selected participants:'); + const options = [_('present'), _('absent')]; const selectedChoice = await this.choiceService.open(content, null, false, options); if (selectedChoice) { const present = selectedChoice.action === options[0]; @@ -337,8 +340,8 @@ export class UserListComponent extends ListViewBaseComponent imp * Uses selectedRows defined via multiSelect mode. */ public async setCommitteeSelected(): Promise { - const content = this.translate.instant('Sets/unsets the committee status for the selected users'); - const options = ['Is committee', 'Is not committee']; + const content = this.translate.instant('Set committee status for selected participants:'); + const options = [_('committee'), _('no committee')]; const selectedChoice = await this.choiceService.open(content, null, false, options); if (selectedChoice) { const committee = selectedChoice.action === options[0]; @@ -353,10 +356,9 @@ export class UserListComponent extends ListViewBaseComponent imp * multiSelect mode. */ public async sendInvitationEmailSelected(): Promise { - const content = - this.translate.instant('Send invitation e-Mails to the selected users?') + - ` (${this.selectedRows.length} E-Mails)`; - if (await this.promptService.open('Are you sure?', content)) { + const title = this.translate.instant('Are you sure you want to send emails to all selected participants?'); + const content = this.selectedRows.length + ' ' + this.translate.instant('emails'); + if (await this.promptService.open(title, content)) { this.repo.sendInvitationEmail(this.selectedRows).then(this.raiseError, this.raiseError); } } diff --git a/client/src/app/site/users/services/user-filter-list.service.ts b/client/src/app/site/users/services/user-filter-list.service.ts index 82b7e75e0..f56a4fd93 100644 --- a/client/src/app/site/users/services/user-filter-list.service.ts +++ b/client/src/app/site/users/services/user-filter-list.service.ts @@ -26,7 +26,10 @@ export class UserFilterListService extends BaseFilterListService property: 'is_present', label: 'Presence', isActive: false, - options: [{ condition: true, label: 'Is present' }, { condition: false, label: 'Is not present' }] + options: [ + { condition: true, label: this.translate.instant('Is present') }, + { condition: false, label: this.translate.instant('Is not present') } + ] }, { property: 'is_active', @@ -48,7 +51,7 @@ export class UserFilterListService extends BaseFilterListService }, { property: 'is_last_email_send', - label: 'Last email send', + label: this.translate.instant('Last email send'), isActive: false, options: [ { condition: true, label: this.translate.instant('Got an email') }, diff --git a/client/src/assets/i18n/de.json b/client/src/assets/i18n/de.json index 8979ad81d..833ba8889 100644 --- a/client/src/assets/i18n/de.json +++ b/client/src/assets/i18n/de.json @@ -1 +1 @@ -{"%num% emails were send sucessfully.":"%num% E-Mails wurden erfolgreich versandt.","0: All users":"0: Alle Nutzer","1: Submitters and all managers":"1: Antragsteller und alle Verwalter","2: Only managers for motions and metadata":"2: Nur Verwalter von Anträgen und Metadaten","3: Only managers for motions":"3: Nur Verwalter von Anträgen","":"","A name is required":"Ein Name ist erforderlich","A password is required":"Ein Passwort ist erforderlich","A server error occured. Please contact your system administrator.":"Ein Serverfehler ist aufgetreten. Bitte kontaktieren Sie den Administrator.","About me":"Über mich","Abstain":"Enthaltung","Accept":"Annehmen","Acceptance":"Annahme","Accepted":"Angenommen","Access data (PDF)":"Zugangsdaten (PDF)","Access level":"Zugangsebene","Access-data":"Zugangsdaten","Activate amendments":"Änderungsanträge aktivieren","Activate statute amendments":"Satzungsänderungsanträge","Active":"Aktiv","Active filters":"Aktive Filter","Add":"Hinzufügen","Add me":"Füge mich hinzu","Add new custom translation":"Neue benutzerdefinierte Übersetzung hinzufügen","Add to queue":"Zur Warteschlange hinzufügen","Add/remove groups ...":"Gruppen hinzufügen/entfernen ...","Add/remove submitters":"Antragsteller hinzufügen/entfernen","Add/remove tags":"Schlagwörter hinzufügen/entfernen","Additional columns after the required ones may be present and won't affect the import.":"Zusätzliche Spalten nach den erforderlichen Spalten können vorhanden sein und haben keinen Einfluss auf den Import.","Adjourn":"Vertagen","Adjournment":"Vertagung","Admin":"Admin","After verifiy the preview click on 'import' please (see top right).":"Nach Prüfung der Vorschau klicken Sie bitte auf 'Importieren' (oben rechts).","Agenda":"Tagesordnung","Agenda visibility":"Sichtbarkeit in der Tagesordnung","All casted ballots":"Alle abgegebenen Stimmzettel","All selected files will be deleted!":"Alle ausgewählten Dateien werden gelöscht!","All valid ballots":"Alle gültigen Stimmzettel","All your changes are saved immediately.":"Alle Änderungen werden sofort gespeichert.","Allow access for anonymous guest users":"Erlaube Zugriff für anonyme Gast-Nutzer","Allow create poll":"Abstimmung möglich","Allow submitter edit":"Antragsteller/in darf bearbeiten","Allow support":"Unterstützung möglich","Allow to disable versioning":"Erlaubt Versionierung zu deaktiveren","Always Yes-No-Abstain per candidate":"Ja/Nein/Enthaltung pro Kandidat/in","Always Yes/No per candidate":"Ja/Nein pro Kandidat/in","Always one option per candidate":"Eine Stimme pro Kandidat/in","Amendment":"Änderungsantrag","Amendment text":"Änderungsantragstext","Amendment to":"Änderungsantrag zu","Amendments":"Änderungsanträge","An email with a password reset link was send!":"Es wurde eine E-Mail mit einem Link zum Zurücksetzen des Passworts gesendet.","An unknown error occurred.":"Ein unbekannter Fehler ist aufgetreten.","Arabic":"Arabisch","Are you sure you want to delete this motion?":"Soll dieser Antrag wirklich gelöscht werden?","Are you sure you want to delete this vote?":"Soll diese Abstimmung wirklich gelöscht werden?","At least given name or surname have to be filled in. All other fields are optional and may be empty.":"Mindestens der Vorname oder der Nachname müssen angegeben sein. Alle übrigen Felder sind optional und dürfen leer sein.","Attachments":"Anhänge","Automatic assign of method":"Automatische Zuordnung der Methode","Back":"Zurück","Back to login":"Zurück zur Anmeldung","Background color":"Hintergrundfarbe","Ballot and ballot papers":"Wahlgang und Stimmzettel","Begin of event":"Beginn der Veranstaltung","Begin speech":"Rede beginnen","CSV import":"CSV-Import","Call list":"Aufrufliste","Called":"Aufgerufen wird","Called with":"Mit aufgerufen werden","Can change its own password":"Darf eigenes Passwort ändern","Can create amendments":"Darf Änderungsanträge stellen","Can create motions":"Darf Anträge erstellen","Can manage agenda":"Darf die Tagesordung verwalten","Can manage comments":"Darf Kommentare verwalten","Can manage configuration":"Darf die Konfiguration verwalten","Can manage elections":"Darf Wahlen verwalten","Can manage files":"Darf Dateien verwalten","Can manage list of speakers":"Darf Redelisten verwalten","Can manage logos and fonts":"Darf Logos und Schriften verwalten","Can manage motion metadata":"Darf Antragsmetadaten verwalten","Can manage motions":"Darf Anträge verwalten","Can manage tags":"Darf Schlagwörter verwalten","Can manage the chat":"Darf den Chat verwalten","Can manage the projector":"Darf den Projektor steuern","Can manage users":"Darf Benutzer verwalten","Can nominate another participant":"Darf andere Teilnehmende für Wahlen vorschlagen","Can nominate oneself":"Darf selbst für Wahlen kandidieren","Can put oneself on the list of speakers":"Darf sich selbst auf die Redeliste setzen","Can see agenda":"Darf die Tagesordnung sehen","Can see comments":"Darf Kommentare sehen","Can see elections":"Darf Wahlen sehen","Can see extra data of users (e.g. present and comment)":"Darf die zusätzlichen Daten der Benutzer sehen (z. B. anwesend und Kommentar)","Can see hidden files":"Darf versteckte Dateien sehen","Can see history":"Darf die Chronik sehen","Can see internal items and time scheduling of agenda":"Darf interne Einträge und Zeitplan der Tagesordnung sehen","Can see motions":"Darf Anträge sehen","Can see names of users":"Darf die Namen der Benutzer sehen","Can see the front page":"Darf die Startseite sehen","Can see the list of files":"Darf die Dateiliste sehen","Can see the projector":"Darf den Projektor sehen","Can support motions":"Darf Anträge unterstützen","Can upload files":"Darf Dateien hochladen","Can use the chat":"Darf den Chat benutzen","Cancel":"Abbrechen","Cancel edit":"Bearbeitung abbrechen","Categories":"Sachgebiete","Category":"Sachgebiet","Center":"Mittig","Change paragraph":"Absatz ändern","Change password":"Passwort ändern","Change password for":"Passwort ändern für","Change presence":"Anwesenheit ändern","Change recommendation":"Änderungsempfehlung","Change recommendations":"Änderungsempfehlungen","Changed by":"Bearbeitet von","Changed version":"Geänderte Fassung","Changed version in line":"Geänderte Fassung in Zeile","Check in or check out participants based on their participant numbers:":"An- oder Abmeldung von Teilnehmenden basierend auf ihren Teilnehmernummern:","Choose 0 to disable the supporting system.":"Zum Deaktivieren des Unterstützersystems '0' eingeben.","Chyron":"Bauchbinde","Clear all":"Alle löschen","Clear list":"Liste leeren","Clear tags":"Schlagwörter löschen","Close":"Schließen","Close list of speakers":"Redeliste schließen","Collapse all":"Alle zusammenklappen","Column separator":"Spaltentrenner","Comma separated names will be read as 'Surname, given name(s)'.":"Kommaseparierte Namen werden als 'Nachname, Vorname(n)' interpretiert.","Comment":"Kommentar","Comment fields":"Kommentarfelder","Comments":"Kommentare","Committee":"Gremium","Committees":"Gremien","Complex Workflow":"Komplexer Arbeitsablauf","Confirm new password":"Neues Passwort bestätigen","Content":"Inhalt","Copy and paste your participant names in this textbox.":"Kopieren Sie die Name Ihrer Teilnehmer/innen in diese Textbox.","Count active users":"Aktive Nutzer zählen","Countdowns":"Countdowns","Couple countdown with the list of speakers":"Countdown mit der Redeliste verkoppeln","Create":"Erstellen","Create final print template":"Beschluss-Druckvorlage erstellen","Create new category":"Neues Sachgebiet erstellen","Create new workflow":"Neuen Arbeitsablauf erstellen","Creation date":"Erstellungsdatum","Current browser language":"Aktuelle Browsersprache","Current list of speakers":"Aktuelle Redeliste","Current list of speakers reference":"Referenz zur aktuellen Redeliste","Custom number of ballot papers":"Benutzerdefinierte Anzahl von Stimmzetteln","Custom translations":"Benutzerdefinierte Übersetzungen","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.":"Hallo {name},\n\ndies ist Ihr OpenSlides-Zugang für die Veranstaltung {event_name}:\n\n {url}\n Benutzername: {username}\n Passwort: {password}\n\nDiese E-Mail wurde automatisch erstellt.","Default":"Standard","Default encoding for all csv exports":"Voreingestelltes Encoding für alle CSV-Exporte","Default line numbering":"Voreingestellte Zeilennummerierung","Default method to check whether a candidate has reached the required majority.":"Voreingestellte Methode zur Überprüfung ob ein Kandidate die nötige Mehrheit erreicht hat.","Default method to check whether a motion has reached the required majority.":"Voreingestellte Methode zur Überprüfung ob ein Antrag die nötige Mehrheit erreicht hat.","Default projector":"Standardprojektor","Default text version for change recommendations":"Voreingestellte Fassung für Änderungsempfehlungen","Default visibility for new agenda items (except topics)":"Voreingestellte Sichtbarkeit für neue Tagesordnungspunkte (außer Themen)","Delegates":"Delegierte","Delete":"Löschen","Delete final print template":"Beschluss-Druckvorlage löschen","Delete recommendation":"Empfehlung löschen","Delete whole history":"Chronik löschen","Deletion":"Streichung","Description":"Beschreibung","Deselect all":"Alle abwählen","Designates whether this user is in the room.":"Bestimmt, ob dieser Benutzer vor Ort ist.","Designates whether this user should be treated as a committee.":"Legt fest, ob dieser Benutzer als Gremium behandelt werden soll.","Designates whether this user should be treated as active. Unselect this instead of deleting the account.":"Bestimmt, ob dieser Benutzer als aktiv behandelt werden soll. Sie können ihn deaktivieren anstatt ihn zu löschen.","Didn't get an email":"Bekam keine E-Mail","Diff version":"Änderungsdarstellung","Disabled":"Deaktiviert","Disabled (no percents)":"Deaktiviert (keine Prozente)","Do not concern":"Nicht befassen","Do not decide":"Nicht entscheiden","Do you want to delete this file?":"Soll diese Datei wirklich gelöscht werden?","Does not have notes":"Hat keine Notizen","Done":"erledigt","Download CSV example file":"CSV-Beispiel-Datei herunterladen","Drag and drop items to change the order of the agenda. Your modification will be saved immediately.":"Verschieben Sie Einträge, um die Reihenfolge der Tagesordnung zu ändern. Ihre Änderungen werden sofort gespeichert.","Drag and drop motions to reorder the category. Then click the button to renumber.":"Verschieben Sie die Anträge um das Sachgebiet neu zu ordnen. Klicken Sie anschließend auf die Schaltfläche um neu zu nummerieren.","Drop files into this area OR select files":"Dateien auf diesen Bereich ziehen ODER Dateien auswählen","Duration":"Dauer","Edit":"Bearbeiten","Edit comment field:":"Kommentarfeld bearbeiten:","Edit countdown":"Countdown bearbeiten","Edit details":"Details bearbeiten","Edit details for":"Details bearbeiten für","Edit message":"Mitteilung bearbeiten","Edit statute paragraph:":"Satzungsabschnitt bearbeiten:","Edit the whole motion text":"Vollständigen Antragstext bearbeiten","Edit title":"Titel bearbeiten","Edit topic":"Thema bearbeiten","Election method":"Wahlmethode","Elections":"Wahlen","Element":"Element","Email":"E-Mail","Email body":"Nachrichtentext","Email sender":"Absender","Email subject":"Betreff","Empty text field":"Leeres Textfeld","Enable numbering for agenda items":"Nummerierung von Tagesordnungspunkten aktivieren","Enable participant presence view":"Ansicht zur Teilnehmeranwesenheit aktivieren","Enable/disable account ...":"Account ein-/ausschalten ...","Encoding of the file":"Encoding der Datei","End speech":"Rede beenden","Enter duration in seconds. Choose 0 to disable warning color.":"Geben Sie die Dauer in Sekunden an. Zum Deaktivieren der Warn-Farbe 0 auswählen.","Enter participant number":"Teilnehmernummer eingeben","Enter your email to send the password reset link":"Geben Sie Ihre E-Mail-Adresse ein um eine Link zum Zurücksetzen des Passworts zu erhalten.","Error":"Fehler","Event":"Veranstaltung","Event date":"Veranstaltungszeitraum","Event location":"Veranstaltungsort","Event name":"Veranstaltungsname","Event organizer":"Veranstalter","Exit":"Beenden","Expand all":"Alle ausklappen","Export":"Exportieren","Export ...":"Exportieren ...","Export as CSV":"Exportieren als CSV","Export as PDF":"Als PDF exportieren","Export comment":"Kommentar exportieren","Export motions":"Anträge exportieren","Export personal note only":"Nur persönliche Notiz exportieren","Extension":"Erweiterung","Favorites":"Favoriten","File information":"Dateiinformationen","File name":"Dateiname","Files":"Dateien","Filter":"Filter","Filter options":"Filtermöglichkeiten","Filters":"Filter","Final print template":"Beschluss-Druckvorlage","Final version":"Beschlussfassung","Finished":"Abgeschlossen","First state":"Erster Status","Follow recommendation":"Empfehlung folgen","Follow recommendations for all motions":"Empfehlungen für alle Anträge folgen","Forgot Password?":"Passwort vergessen?","Format":"Format","Front page text":"Text der Startseite","Front page title":"Titel der Startseite","Gender":"Geschlecht","General":"Allgemein","Generate new passwords":"Neue Passwörter generieren","Generate password":"Passwort generieren","Given name":"Vorname","Go to line":"Springe zur Zeile","Got an email":"Bekam eine E-Mail","Groups":"Gruppen","Groups with read permissions":"Gruppen mit Leseberechtigungen","Groups with write permissions":"Gruppen mit Schreibberechtigungen","Has notes":"Hat Notizen","Header background color":"Hintergrundfarbe Kopfbereich","Header font color":"Schriftfarbe Kopfbereich","Headline color":"Überschriftenfarbe","Help text for access data and welcome PDF":"Hilfetext für das Zugangsdaten- und Willkommens-PDF","Hidden":"Versteckt","Hidden item":"Versteckter Eintrag","Hide internal items when projecting subitems":"Interne Einträge ausblenden bei der Projektion von Untereinträgen","Hide meta information box on projector":"Meta-Informations-Box auf dem Projektor ausblenden","Hide password":"Passwort verstecken","Hide reason on projector":"Begründung auf dem Projektor ausblenden","Hide recommendation on projector":"Empfehlung auf dem Projektor ausblenden","History":"Chronik","Home":"Startseite","How to create new amendments":"Erstellung von Änderungsanträgen","Identifier":"Bezeichner","Identifier, reason, submitter, category, origin and motion block are optional and may be empty.":"Bezeichner, Begründung, Antragsteller/in, Sachgebiet, Herkunft und Antragsblock sind optional und dürfen leer sein.","Import":"Importieren","Import motions":"Anträge importieren","Import participants":"Teilnehmende importieren","Import statute":"Satzung importieren","Import topics":"Themen importieren","Include the sequential number in PDF and DOCX":"Laufende Nummer im PDF und DOCX anzeigen","Initial password":"Initiales Passwort","Inline":"innerhalb","Input format: DD.MM.YYYY HH:MM":"Eingabeformat: TT.MM.JJJJ HH:MM","Insert after":"Danach einfügen","Insert participants here":"Teilnehmende hier importieren","Insert topics here":"Themen hier importieren","Insertion":"Ergänzung","Installed plugins":"Installierte Plugins","Internal item":"Interner Eintrag","Invalid input.":"Ungültige Eingabe.","Invalid line number":"Ungültige Zeilennummer","Is PDF file":"Ist eine PDF-Datei","Is a committee":"Ist ein Gremium","Is active":"Ist aktiv","Is already projected":"ist bereits projiziert","Is committee":"Ist Gremium","Is favorite":"Ist Favorit","Is no PDF file":"Ist keine PDF-Datei","Is not a committee":"Ist kein Gremium","Is not active":"Ist nicht aktiv","Is not favorite":"Ist kein Favorit","Is present":"Ist anwesend","Item number":"Tagesordnungspunkt-Nummer","Keep each item in a single line.":"Verwenden Sie eine Zeile pro Eintrag.","Keep each person in a single line.":"Verwenden Sie eine Zeile pro Person.","Label color":"Beschriftungsfarbe","Last modified":"Zuletzt geändert","Last speakers":"Letzte Redner","Left":"Links","Legal notice":"Impressum","License":"Lizenz","Line":"Zeile","Line length":"Zeilenlänge","Line numbering":"Zeilennummerierung","List of participants":"Teilnehmendenliste","List of participants (PDF)":"Teilnehmendenliste (PDF)","List of speakers":"Redeliste","List of speakers overlay":"Redelisten-Einblendung","Login":"Anmelden","Login as guest":"Als Gast anmelden","Logout":"Abmelden","Manage the list of speakers for...":"Redeliste verwalten für...","Mark speaker":"Redner/in markieren","Messages":"Mitteilungen","Meta information":"Metainformationen","Motion":"Antrag","Motion block":"Antragsblock","Motion blocks":"Antragsblöcke","Motion change recommendation created":"Änderungsempfehlung erstellt","Motion change recommendation deleted":"Änderungsempfehlung gelöscht","Motion change recommendation updated":"Änderungsempfehlung aktualisiert","Motion created":"Antrag erstellt","Motion deleted":"Antrag gelöscht","Motion has been imported":"Antrag wurde importiert","Motion preamble":"Antragseinleitung","Motion text":"Antragstext","Motion updated":"Antrag aktualisiert","Motion will be imported":"Antrag wird importiert","Motion(s) will be imported.":"Anträge werden importieren.","Motions":"Anträge","Motions have been imported.":"Anträge wurden importiert.","Move in call list":"In Aufrufliste verschieben","Move to agenda item":"Zu TOP verschieben","Multiselect":"Mehrfachauswahl","Name":"Name","Name of recommender":"Name des Empfehlungsgebers","Name of recommender for statute amendments":"Name des Empfehlungsgebers für Satzungsänderungsanträge","Needs review":"Benötigt Review","New Projector":"Neuer Projektor","New amendment":"Neuer Änderungsantrag","New change recommendation":"Neue Änderungsempfehlung","New comment field":"Neues Kommentarfeld","New countdown":"Neuer Countdown","New file name":"Neuer Dateiname","New group name":"Neuer Gruppenname","New message":"Neue Mitteilung","New motion":"Neuer Antrag","New motion block":"Neuer Antragsblock","New participant":"Neue/r Teilnehmer/in","New password":"Neues Passwort","New statute paragraph":"Neuer Satzungsabschnitt","New tag name":"Neues Schlagwort","New topic":"Neues Thema","New vote":"Neue Abstimmung","Next":"Weiter","Next states":"Nächste Zustände","No":"Nein","No category":"Kein Sachgebiet","No category set":"kein Sachgebiet gesetzt","No change recommendations yet":"Bisher keine Änderungsempfehlungen","No changes at the text.":"Keine Änderung am Text.","No comment":"Kein Kommentar","No concernment":"Nichtbefassung","No countdowns":"Keine Countdowns","No data":"Keine Daten","No decision":"Keine Entscheidung","No emails were send.":"Es wurden keine E-Mails versandt.","No encryption":"Keine Verschlüsselung","No groups selected":"Keine Gruppen ausgewählt","No information available":"Keine Informationen verfügbar","No messages":"Keine Mitteilungen","No motion block set":"kein Antragsblock gesetzt","No personal note":"Keine persönliche Notiz","No recommendation":"keine Empfehlung gesetzt","No search result found for":"Keine Suchergebnisse gefunden für","No statute paragraphs":"Keine Satzungsabschnitte vorhanden","No.":"Nr.","None":"aus","Number motions":"Anträge nummerieren","Number of (minimum) required supporters for a motion":"Mindestanzahl erforderlicher Unterstützer/innen für einen Antrag","Number of all delegates":"Anzahl aller Delegierten","Number of all participants":"Anzahl aller Teilnehmenden","Number of ballot papers (selection)":"Anzahl der Stimmzettel (Vorauswahl)","Number of last speakers to be shown on the projector":"Anzahl der dargestellten letzten Redner/innen auf dem Projektor","Number set":"Nummer gesetzt","Numbered per category":"Pro Sachgebiet nummerieren","Numbering":"Nummerierung","Numbering prefix for agenda items":"Präfix für Nummerierung von Tagesordnungspunkten","Numeral system for agenda items":"Nummerierungssystem für Tagesordnungspunkte","OK":"OK","Offline mode: You can use OpenSlides but changes are not saved.":"Offlinemodus: Sie können OpenSlides weiter nutzen, aber Änderungen werden nicht gespeichert.","Old password":"Altes Passwort","One email was send sucessfully.":"Eine E-Mail wurde erfolgreich versandt.","Only for internal notes.":"Nur für interne Notizen.","Only main agenda items":"Nur Haupt-Tagesordnungspunkte","Open":"Öffnen","Open list of speakers":"Redeliste öffnen","OpenSlides access data":"OpenSlides-Zugangsdaten","OpenSlides is temporarily reset to following timestamp":"OpenSlides ist vorübergehend auf folgenden Zeitpunkt zurückgesetzt:","Origin":"Herkunft","Original version":"Originalfassung","Outside":"außerhalb","Overlay":"Einblendung","PDF":"PDF","PDF ballot paper logo":"PDF-Stimmzettel-Logo","PDF footer logo (left)":"PDF-Logo Fußzeile (links)","PDF footer logo (right)":"PDF-Logo Fußzeile (rechts)","PDF header logo (left)":"PDF-Logo Kopfzeile (links)","PDF header logo (right)":"PDF-Logo Kopfzeile (rechts)","Page number alignment in PDF":"Seitenzahl-Ausrichtung im PDF","Paragraph-based, Diff-enabled":"Absatzbasiert mit Änderungsdarstellung","Parallel upload":"Parallel hochladen","Parent item":"Elternelement","Participant cannot be found":"Teilnehmende wurde nicht gefunden","Participant has been imported":"Teilnehmer/in wurde importiert","Participant number":"Teilnehmernummer","Participant number is not unique":"Teilnehmernummer ist nicht eindeutig","Participant will be imported":"Teilnehmer/in wird importiert","Participant(s) will be imported.":"Teilnehmende werden importiert.","Participants":"Teilnehmende","Participants have been imported.":"Teilnehmende wurden importiert.","Password":"Passwort","Paste/write your topics in this textbox.":"Kopieren oder schreiben Sie die Titel Ihrer Themenpunkte in diese Textbox.","Permission":"Zulassung","Permissions":"Berechtigungen","Permit":"Zulassen","Personal note":"Persönliche Notiz","Personal notes":"Persönliche Notizen","Please enter a name for the new workflow:":"Bitte geben Sie einen Namen für den neuen Arbeitsablauf ein:","Please enter a valid email address":"Bitte geben Sie einen neuen Namen ein für","Please enter a valid email address!":"Bitte geben Sie eine gültige E-Mail-Adresse ein!","Please enter your new password":"Bitte geben Sie Ihr neues Passwort ein","Please fill in all required values":"Bitte füllen Sie alle erforderlichen Felder aus.","Preamble text for PDF and DOCX documents (all motions)":"Einleitungstext für PDF- und DOCX-Dokumente (alle Anträge) ","Preamble text for PDF document (all elections)":"Einleitungstext für PDF-Dokument (alle Wahlen) ","Predefined seconds of new countdowns":"Vorgegebene Sekunden für neue Countdowns","Prefix":"Präfix","Prefix for the identifier for amendments":"Präfix für den Bezeichner von Änderungsanträgen","Presence":"Anwesenheit","Present":"Anwesend","Presentation and assembly system":"Präsentations- und Versammlungssystem","Preview":"Vorschau","Previous":"Zurück","Print ballot papers":"Stimmzettel drucken","Privacy Policy":"Datenschutzerklärung","Privacy policy":"Datenschutzerklärung","Project":"Projizieren","Project selection?":"Auswahl projizieren?","Projector":"Projektor","Projector header image":"Projektor-Kopfgrafik","Projector language":"Projektorsprache","Projector logo":"Projektor-Logo","Projector messages":"Projektor-Mitteilungen","Projectors":"Projektoren","Public":"Öffentlich","Public item":"Öffentlicher Eintrag","Put all candidates on the list of speakers":"Alle Kandidaten auf die Redeliste setzen","Queue":"Warteliste","Reason":"Begründung","Reason required for creating new motion":"Begründung erforderlich zur Erstellung neuer Anträge","Recommendation":"Empfehlung","Recommendation label":"Empfehlung","Recommendation set to {arg1}":"Empfehlung gesetzt auf {arg1}","Refer to committee":"In Ausschuss verweisen","Reference projector":"Referenzprojektor","Referral to committee":"Verweisung in Ausschuss","Reject":"Ablehnen","Reject (not authorized)":"Verwerfen (nicht zulässig)","Rejected":"Abgelehnt","Rejection":"Ablehnung","Rejection (not authorized)":"Verwerfung (nicht berechtigt)","Remove":"Entfernen","Remove all supporters of a motion if a submitter edits his motion in early state":"Entferne alle Unterstützer/innen eines Antrags, wenn ein Antragsteller/in den Antrag im Anfangsstadium bearbeitet","Remove from motion block":"Vom Antragsblock entfernen ","Remove me":"Entferne mich","Replacement":"Ersetzung","Required":"Erforderlich","Required comma or semicolon separated values with these column header names in the first row:":"Erforderliche Komma- oder Semikolon-separierte Werte mit diesen Spaltennamen in der ersten Zeile:","Required majority":"Erforderliche Mehrheit","Reset":"Zurücksetzen","Reset password":"Passwort zurücksetzen","Reset recommendation":"Empfehlung zurücksetzen","Reset state":"Status zurücksetzen","Resolution and size":"Auflösung und Größe","Right":"Rechts","Roman":"Römisch","Save":"Speichern","Scan this QR code to connect to WLAN.":"QR-Code scannen um sich mit dem WLAN zu verbinden.","Scan this QR code to open URL.":"QR-Code scannen um die URL zu öffnen.","Search":"Suche","Search player":"Spieler suchen","Search results":"Suchergebnisse","Searching for candidates":"Auf Kandidatensuche","Select all":"Alle auswählen","Select file":"Datei auswählen","Select or search new speaker ...":"Redner/in auswählen oder suchen ...","Select or search new submitter ...":"Antragsteller/in auswählen oder suchen ...","Select paragraph":"Absatz auswählen","Selected values":"Ausgewählte Werte","Send invitation email":"Einladungs-E-Mail senden","Separator used for all csv exports and examples":"Feldtrenner für alle CSV-Exporte und -Beispiele","Sequential number":"Laufende Nummer","Serially numbered":"fortlaufend nummerieren","Set as parent":"Als Eltern setzen","Set category":"Sachgebiet setzen","Set committee ...":"Gremium setzen ...","Set hidden":"Versteckt setzen","Set identifier":"Bezeichner setzen","Set internal":"Intern setzen","Set it manually":"manuell setzen","Set motion block":"Antragsblock setzen","Set presence ...":"Anwesenheit setzen ...","Set public":"Öffentlich setzen","Set recommendation":"Empfehlung setzen","Set status":"Status setzen","Settings":"Einstellungen","Short description of event":"Kurzbeschreibung der Veranstaltung","Show all":"Alle anzeigen","Show amendment in parent motoin":"Änderungsantrag im Hauptantrag anzeigen","Show amendments together with motions":"Änderungsanträge zusätzlich in der Hauptantragsübersicht anzeigen","Show clock":"Uhr anzeigen","Show correct entries":"Korrekte Einträge anzeigen","Show correct entries only":"Nur korrekte Einträge anzeigen","Show entire motion text":"Vollständigen Antragstext anzeigen","Show errors only":"Nur fehlerhafte Einträge anzeigen","Show header and footer":"Kopf- und Fußzeile anzeigen","Show logo":"Logo anzeigen","Show orange countdown in the last x seconds of speaking time":"Countdown in den letzten x Sekunden der Redezeit orange darstellen","Show password":"Passwort anzeigen","Show profile":"Profil anzeigen","Show recommendation extension field":"Ergänzungsfeld für Empfehlung anzeigen","Show state extension field":"Ergänzungsfeld für Status anzeigen","Show this text on the login page":"Diesen Text auf der Login-Seite anzeigen","Show title":"Veranstaltungstitel anzeigen","Simple Workflow":"Einfacher Arbeitsablauf","Simple majority":"Einfache Mehrheit","Slide":"Folie","Sort":"Sortieren","Sort agenda":"Tagesordnung sortieren","Sort categories by":"Sachgebiete sortieren nach","Sort motions":"Anträge sortieren","Sort name of participants by":"Namen der Teilnehmenden sortieren nach","Special values":"Spezielle Werte","Staff":"Mitarbeitende","Standard font size in PDF":"Standard-Schriftgröße im PDF","Start":"Start","Start time":"Startzeit","State":"Status","State set to {arg1}":"Status gesetzt auf {arg1}","Statute":"Satzung","Statute amendment":"Satzungsänderungsantrag","Statute amendment for":"Satzungsänderungsantrag zu","Statute paragraph":"Satzungsabschnitt","Statute paragraph has been imported":"Satzungsabschnitt wurde importiert","Statute paragraph will be imported":"Satzungsabschnitt wird importiert","Stop":"Stopp","Stop counting":"Zählen stoppen","Stop submitting new motions by non-staff users":"Einreichen von neuen Anträgen stoppen für Nutzer ohne Verwaltungsrechte","Structure level":"Gliederungsebene","Submitter":"Antragsteller/in","Submitters":"Antragsteller/in","Submitters changed":"Antragsteller/in geändert","Summary of changes":"Zusammenfassung der Änderungen","Support":"Unterstützen","Supporters":"Unterstützer/innen","Supporters changed":"Unterstützer/innen geändert","Surname":"Nachname","System":"System","System URL":"System-URL","Table of contents":"Inhaltsverzeichnis","Tags":"Schlagwörter","Text":"Text","Text import":"Textimport","Text separator":"Texttrenner","The 100 % base of a voting result consists of":"Die 100%-Basis eines Abstimmungsergebnisses besteht aus","The 100-%-base of an election result consists of":"Die 100%-Basis eines Wahlergebnisses besteht aus","The assembly may decide:":"Die Versammlung möge beschließen:","The event manager hasn't set up a privacy policy yet.":"Der Veranstalter hat noch keine Datenschutzerklärung hinterlegt.","The file has too few columns to be parsed properly.":"Die Datei enthält zu wenige Spalten, um richtig verwendet zu werden.","The file seems to have additional columns. They will be ignored.":"Die Datei scheint zusätzliche Spalten zu haben. Diese werden ignoriert.","The file seems to have some ommitted columns. They will be considered empty.":"Die Datei scheint einige ausgelassene Spalten zu haben. Sie werden als leer betrachtet.","The link is broken. Please contact your system administrator.":"Der Link ist defekt. Bitte kontaktieren Sie den zuständigen Administrator.","The maximum number of characters per line. Relevant when line numbering is enabled. Min: 40":"Die maximale Zeichenanzahl pro Zeile. Relevant, wenn die Zeilennummerierung eingeschaltet ist. Minimum: 40.","The reason field may not be blank.":"Die Begründung darf nicht leer sein.","The server could not be reached.":"Der Server konnte nicht erreicht werden.","The server didn't respond.":"Der Server antwortet nicht.","The text field may not be blank.":"Der Antragstext darf nicht leer sein.","The title of the motion is always applied.":"Der Antragstitel wird immer übernommen.","The user %user% has no email, so the invitation email could not be send.":"%user% besitzt keine E-Mail-Adresse; eine E-Mail konnte daher nicht gesendet werden.","The users %user% have no email, so the invitation emails could not be send.":"%user% besitzen keine E-Mail-Adressen; E-Mails konnte daher nicht gesendet werden.","This change collides with another one.":"Diese Änderung kollidiert mit einer anderen.","This element does not exist at this time.":"Dieses Element existiert nicht zu diesem Zeitpunkt.","This field is required.":"Dieses Feld ist erforderlich.","This prefix will be set if you run the automatic agenda numbering.":"Dieses Präfix wird gesetzt, wenn die automatische Nummerierung der Tagesordnung durchgeführt wird.","This will add or remove the following submitters for all selected motions:":"Folgende Antragsteller werden für die ausgewählten Anträge hinzugefügt oder entfernt:","This will add or remove the following tags for all selected motions:":"Folgende Schlagwörter werden für die ausgewählten Anträge hinzugefügt oder entfernt:","This will delete all selected motions.":"Alle ausgewählten Anträge werden gelöscht.","This will move all selected motions as childs to:":"Alle ausgewählten Anträge werden unterhalb des folgenden Tagesordnungspunktes verschoben:","This will move all selected motions under or after the following motion in the call list:":"Alle ausgewählten Anträge unter oder nach dem folgenden Antrag in der Aufrufliste verschieben:","This will set the following category for all selected motions:":"Folgendes Sachgebiet wird für alle ausgewählten Anträge gesetzt:","This will set the following motion block for all selected motions:":"Folgender Antragsblock wird für alle ausgewählten Anträgen gesetzt:","This will set the following recommendation for all selected motions:":"Folgende Empfehlung wird für alle ausgewählten Anträge gesetzt:","This will set the following state for all selected motions:":"Folgender Status wird für alle ausgewählten Anträge gesetzt:","Three-quarters majority":"Dreiviertelmehrheit","Time":"Zeit","Timestamp":"Zeitstempel","Title":"Titel","Title for PDF and DOCX documents (all motions)":"Titel für PDF- und DOCX-Dokumente (alle Anträge) ","Title for PDF document (all elections)":"Titel für PDF-Dokument (alle Wahlen)","Title for access data and welcome PDF":"Titel für das Zugangsdaten- und Begrüßungs-PDF","Title is required. All other fields are optional and may be empty.":"Titel ist erforderlich. Alle übrigen Felder sind optional und dürfen leer sein.","Topic":"Thema","Topic has been imported":"Thema wurde importiert","Topic will be imported":"Thema wird importiert","Topics have been imported.":"Themen wurden importiert.","Topics(s) will be imported.":"Themen werden importiert.","Two-thirds majority":"Zweidrittelmehrheit","Type":"Typ","Undone":"unerledigt","Unsupport":"Unterstützung zurückziehen","Upload":"Hochladen","Upload files":"Dateien hochladen","Use admin and admin for your first login.
Please change your password to hide this message!":"Verwenden Sie admin und admin für die erste Anmeldung.
Bitte ändern Sie Ihr Passwort, um diese Nachricht auszublenden!","Use the following custom number":"Verwende die folgende benutzerdefinierte Anzahl","Use these placeholders: {name}, {event_name}, {url}, {username}, {password}. The url referrs to the system url.":"Verwendbare Platzhalter: {name}, {event_name}, {url}, {username}, {password}. Die URL bezieht sich auf die System-URL.","Used for QRCode in PDF of access data.":"Wird für QR-Code im Zugangsdaten-PDF verwendet.","Used for WLAN QRCode in PDF of access data.":"Wird für WLAN-QR-Code im Zugangsdaten-PDF verwendet.","Username":"Benutzername","Username or password is not correct.":"Benutzername oder Passwort war nicht korrekt.","Visibility":"Sichtbarkeit","Visible":"Sichtbar","Vote":"Abstimmung","Vote created":"Abstimmung erstellt","Vote deleted":"Abstimmung gelöscht","Vote updated":"Abstimmung aktualisiert","Voting":"Im Wahlvorgang","Voting and ballot papers":"Abstimmung und Stimmzettel","Voting result":"Abstimmungsergebnis","WEP":"WEP","WLAN access data":"WLAN-Zugangsdaten","WLAN encryption":"WLAN-Verschlüsselung","WLAN name (SSID)":"WLAN-Name (SSID)","WLAN password":"WLAN-Passwort","WPA/WPA2":"WPA/WPA2","Web interface header logo":"Web-Interface-Kopfzeilen-Logo","Welcome to OpenSlides":"Willkommen bei OpenSlides","Will be displayed as label before selected recommendation for statute amendments. Use an empty value to disable the recommendation system.":"Wird als Beschriftung vor der ausgewählten Empfehlung von Satzungsänderungsanträgen angezeigt. Verwenden Sie eine leere Eingabe, um das Empfehlungssystem zu deaktivieren.","Will be displayed as label before selected recommendation. Use an empty value to disable the recommendation system.":"Wird als Beschriftung vor der ausgewählten Empfehlung angezeigt. Verwenden Sie eine leere Eingabe, um das Empfehlungssystem zu deaktivieren.","Withdraw":"Zurückziehen","Workflow":"Arbeitsablauf","Workflow of new motions":"Arbeitsablauf für neue Anträge","Workflow of new statute amendments":"Arbeitsablauf für neue Satzungsänderungsanträge","Workflows":"Arbeitsabläufe","Yes":"Ja","Yes/No":"Ja/Nein","Yes/No per candidate":"Ja/Nein pro Kandidat","Yes/No/Abstain":"Ja/Nein/Enthaltung","Yes/No/Abstain per candidate":"Ja/Nein/Enthaltung pro Kandidat","You are not supposed to be here...":"Sie sollten nicht hier sein ...","You are using the history mode of OpenSlides. Changes will not be saved.":"Der Chronik-Modus ist aktiv. Änderungen werden nicht gespeichert.","You can use {event_name} and {username} as placeholder.":"Sie können {event_name} und {username} als Platzhalter verwenden.","You override the personally set password!":"Sie überschreiben hiermit das persönlich gesetzte Passwort!","Your login for {event_name}":"Zugangsdaten für {event_name}","Your password was resetted successfully!":"Ihr Passwort wurde erfolgreich zurückgesetzt!","[Begin speech] starts the countdown, [End speech] stops the countdown.":"[Rede beginnen] startet den Countdown, [Rede beenden] stoppt den Countdown.","[Place for your welcome and help text.]":"[Platz für Ihren Begrüßungs- und Hilfetext.]","[Space for your welcome text.]":"[Platz für Ihren Begrüßungstext.]","accepted":"angenommen","active users":"aktive Nutzer","adjourned":"vertagt","and":"und","ballot-paper":"stimmzettel","by":"von","connections":"Verbindungen","contribution":"Wortmeldung","disabled":"deaktiviert","entries will be ommitted.":"Einträge werden ausgelassen. ","errors":"Fehler","example":"Beispiel","inline":"innerhalb","is hidden":"ist versteckt","is not hidden":"ist nicht versteckt","is now":"ist jetzt","items per page":"Einträge pro Seite","majority":"Mehrheit","motions":"Anträge","motions-example":"Anträge-Beispiel","needed":"erforderlich","needs review":"benötigt Überprüfung","none":"aus","not concerned":"nicht befasst","not decided":"nicht entschieden","not present":"abwesend","not reached.":"nicht erreicht.","of":"von","outside":"außerhalb","participants-example":"Teilnehmende-Beispiel","permitted":"zugelassen","published":"veröffentlicht","reached.":"erreicht.","refered to committee":"in Ausschuss verwiesen","rejected":"abgelehnt","rejected (not authorized)":"verworfen (nicht zulässig)","result":"Ergebnis","results":"Ergebnisse","selected":"ausgewählt","self":"sich selbst","statute paragraphs have been imported.":"Satzungsabschnitte wurden importiert.","statute paragraphs(s) will be imported.":"Satzungsabschnitte werden importiert.","submitted":"eingereicht","supporters":"Unterstützer/innen","to":"bis","undocumented":"nicht erfasst","withdrawed":"zurückgezogen"} \ No newline at end of file +{"%num% emails were send sucessfully.":"%num% E-Mails wurden erfolgreich versandt.","0: All users":"0: Alle Nutzer","1: Submitters and all managers":"1: Antragsteller und alle Verwalter","2: Only managers for motions and metadata":"2: Nur Verwalter von Anträgen und Metadaten","3: Only managers for motions":"3: Nur Verwalter von Anträgen","":"","A name is required":"Ein Name ist erforderlich","A password is required":"Ein Passwort ist erforderlich","A server error occured. Please contact your system administrator.":"Ein Serverfehler ist aufgetreten. Bitte kontaktieren Sie den Administrator.","About me":"Über mich","Abstain":"Enthaltung","Accept":"Annehmen","Acceptance":"Annahme","Accepted":"Angenommen","Access data (PDF)":"Zugangsdaten (PDF)","Access level":"Zugangsebene","Access-data":"Zugangsdaten","Activate amendments":"Änderungsanträge aktivieren","Activate statute amendments":"Satzungsänderungsanträge","Active":"Aktiv","Active filters":"Aktive Filter","Add":"Hinzufügen","Add me":"Füge mich hinzu","Add new custom translation":"Neue benutzerdefinierte Übersetzung hinzufügen","Add to queue":"Zur Warteschlange hinzufügen","Add/remove groups ...":"Gruppen hinzufügen/entfernen ...","Add/remove submitters":"Antragsteller hinzufügen/entfernen","Add/remove tags":"Schlagwörter hinzufügen/entfernen","Additional columns after the required ones may be present and won't affect the import.":"Zusätzliche Spalten nach den erforderlichen Spalten können vorhanden sein und haben keinen Einfluss auf den Import.","Adjourn":"Vertagen","Adjournment":"Vertagung","Admin":"Admin","After verifiy the preview click on 'import' please (see top right).":"Nach Prüfung der Vorschau klicken Sie bitte auf 'Importieren' (oben rechts).","Agenda":"Tagesordnung","Agenda visibility":"Sichtbarkeit in der Tagesordnung","All casted ballots":"Alle abgegebenen Stimmzettel","All valid ballots":"Alle gültigen Stimmzettel","All your changes are saved immediately.":"Alle Änderungen werden sofort gespeichert.","Allow access for anonymous guest users":"Erlaube Zugriff für anonyme Gast-Nutzer","Allow create poll":"Abstimmung möglich","Allow submitter edit":"Antragsteller/in darf bearbeiten","Allow support":"Unterstützung möglich","Allow to disable versioning":"Erlaubt Versionierung zu deaktiveren","Always Yes-No-Abstain per candidate":"Ja/Nein/Enthaltung pro Kandidat/in","Always Yes/No per candidate":"Ja/Nein pro Kandidat/in","Always one option per candidate":"Eine Stimme pro Kandidat/in","Amendment":"Änderungsantrag","Amendment text":"Änderungsantragstext","Amendment to":"Änderungsantrag zu","Amendments":"Änderungsanträge","An email with a password reset link was send!":"Es wurde eine E-Mail mit einem Link zum Zurücksetzen des Passworts gesendet.","An unknown error occurred.":"Ein unbekannter Fehler ist aufgetreten.","Arabic":"Arabisch","Are you sure you want to copy the final version to the print template?":"Soll die Beschlussfassung weiter bearbeitet und eine Beschluss-Druckvorlage erstellt werden?","Are you sure you want to delete all selected elections?":"Sollen alle ausgewählten Wahlen wirklich gelöscht werden?","Are you sure you want to delete all selected files?":"Sollen alle ausgewählten Dateien wirklich gelöscht werden?","Are you sure you want to delete all selected items?":"Sollen alle ausgewählten Dateien wirklich gelöscht werden?","Are you sure you want to delete all selected motions?":"Sollen alle ausgewählten Anträge wirklich gelöscht werden?","Are you sure you want to delete all selected participants?":"Sollen alle ausgewählten Teilnehmende wirklich gelöscht werden?","Are you sure you want to delete all speakers from this list of speakers?":"Sollen wirklich alle Redner/innen von dieser Liste entfernt werden?","Are you sure you want to delete the print template?":"Soll die Beschluss-Druckvorlage wirklich gelöscht werden?","Are you sure you want to delete the selected message?":"Soll die ausgewählte Mitteilung wirklich gelöscht werden?","Are you sure you want to delete this category?":"Soll dieses Sachgebiet wirklich gelöscht werden?","Are you sure you want to delete this change recommendation?":"Soll diese Änderungsempfehlung wirklich gelöscht werden?","Are you sure you want to delete this comment field?":"Soll dieses Kommentarfeld wirklich gelöscht werden?","Are you sure you want to delete this countdown?":"Soll dieser Countdown wirklich gelöscht werden?","Are you sure you want to delete this entry?":"Soll dieser Eintrag wirklich gelöscht werden?","Are you sure you want to delete this file?":"Soll diese Datei wirklich gelöscht werden?","Are you sure you want to delete this group?":"Soll diese Gruppe wirklich gelöscht werden?","Are you sure you want to delete this motion?":"Soll dieser Antrag wirklich gelöscht werden?","Are you sure you want to delete this participant?":"Soll diese/r Teilnehmende wirklich gelöscht werden?","Are you sure you want to delete this projector?":"Soll dieser Projektor wirklich gelöscht werden?","Are you sure you want to delete this statute paragraph?":"Soll dieser Satzungsabschnitt wirklich gelöscht werden?","Are you sure you want to delete this tag?":"Soll dieses Schlagwort wirklich gelöscht werden?","Are you sure you want to delete this vote?":"Soll diese Abstimmung wirklich gelöscht werden?","Are you sure you want to delete this workflow?":"Soll dieser Arbeitsablauf wirklich gelöscht werden?","Are you sure you want to number all agenda items?":"Sollen alle Tagesordnungspunkte wirklich neu nummeriert werden?","Are you sure you want to renumber all motions of this category?":"Sollen alle Anträge dieses Sachgebiets wirklich neu nummeriert werden?","Are you sure you want to send emails to all selected participants?":"Sollen E-Mails wirklich an alle ausgewählten Teilnehmende gesendet werden?","At least given name or surname have to be filled in. All other fields are optional and may be empty.":"Mindestens der Vorname oder der Nachname müssen angegeben sein. Alle übrigen Felder sind optional und dürfen leer sein.","Attachments":"Anhänge","Automatic assign of method":"Automatische Zuordnung der Methode","Back":"Zurück","Back to login":"Zurück zur Anmeldung","Background color":"Hintergrundfarbe","Ballot and ballot papers":"Wahlgang und Stimmzettel","Begin of event":"Beginn der Veranstaltung","Begin speech":"Rede beginnen","CSV import":"CSV-Import","Call list":"Aufrufliste","Called":"Aufgerufen wird","Called with":"Mit aufgerufen werden","Can change its own password":"Darf eigenes Passwort ändern","Can create amendments":"Darf Änderungsanträge stellen","Can create motions":"Darf Anträge erstellen","Can manage agenda":"Darf die Tagesordung verwalten","Can manage comments":"Darf Kommentare verwalten","Can manage configuration":"Darf die Konfiguration verwalten","Can manage elections":"Darf Wahlen verwalten","Can manage files":"Darf Dateien verwalten","Can manage list of speakers":"Darf Redelisten verwalten","Can manage logos and fonts":"Darf Logos und Schriften verwalten","Can manage motion metadata":"Darf Antragsmetadaten verwalten","Can manage motions":"Darf Anträge verwalten","Can manage tags":"Darf Schlagwörter verwalten","Can manage the chat":"Darf den Chat verwalten","Can manage the projector":"Darf den Projektor steuern","Can manage users":"Darf Benutzer verwalten","Can nominate another participant":"Darf andere Teilnehmende für Wahlen vorschlagen","Can nominate oneself":"Darf selbst für Wahlen kandidieren","Can put oneself on the list of speakers":"Darf sich selbst auf die Redeliste setzen","Can see agenda":"Darf die Tagesordnung sehen","Can see comments":"Darf Kommentare sehen","Can see elections":"Darf Wahlen sehen","Can see extra data of users (e.g. present and comment)":"Darf die zusätzlichen Daten der Benutzer sehen (z. B. anwesend und Kommentar)","Can see hidden files":"Darf versteckte Dateien sehen","Can see history":"Darf die Chronik sehen","Can see internal items and time scheduling of agenda":"Darf interne Einträge und Zeitplan der Tagesordnung sehen","Can see motions":"Darf Anträge sehen","Can see names of users":"Darf die Namen der Benutzer sehen","Can see the front page":"Darf die Startseite sehen","Can see the list of files":"Darf die Dateiliste sehen","Can see the projector":"Darf den Projektor sehen","Can support motions":"Darf Anträge unterstützen","Can upload files":"Darf Dateien hochladen","Can use the chat":"Darf den Chat benutzen","Cancel":"Abbrechen","Cancel edit":"Bearbeitung abbrechen","Categories":"Sachgebiete","Category":"Sachgebiet","Center":"Mittig","Change paragraph":"Absatz ändern","Change password":"Passwort ändern","Change password for":"Passwort ändern für","Change presence":"Anwesenheit ändern","Change recommendation":"Änderungsempfehlung","Change recommendations":"Änderungsempfehlungen","Changed by":"Bearbeitet von","Changed version":"Geänderte Fassung","Changed version in line":"Geänderte Fassung in Zeile","Check in or check out participants based on their participant numbers:":"An- oder Abmeldung von Teilnehmenden basierend auf ihren Teilnehmernummern:","Choose 0 to disable the supporting system.":"Zum Deaktivieren des Unterstützersystems '0' eingeben.","Chyron":"Bauchbinde","Clear all":"Alle löschen","Clear list":"Liste leeren","Clear motion block":"Antragsblock löschen","Clear tags":"Schlagwörter löschen","Close":"Schließen","Close list of speakers":"Redeliste schließen","Closed items":"Erledigte Einträge","Collapse all":"Alle zusammenklappen","Column separator":"Spaltentrenner","Comma separated names will be read as 'Surname, given name(s)'.":"Kommaseparierte Namen werden als 'Nachname, Vorname(n)' interpretiert.","Comment":"Kommentar","Comment fields":"Kommentarfelder","Comments":"Kommentare","Committee":"Gremium","Committees":"Gremien","Complex Workflow":"Komplexer Arbeitsablauf","Confirm new password":"Neues Passwort bestätigen","Content":"Inhalt","Copy and paste your participant names in this textbox.":"Kopieren Sie die Name Ihrer Teilnehmer/innen in diese Textbox.","Count active users":"Aktive Nutzer zählen","Countdowns":"Countdowns","Couple countdown with the list of speakers":"Countdown mit der Redeliste verkoppeln","Create":"Erstellen","Create final print template":"Beschluss-Druckvorlage erstellen","Create new category":"Neues Sachgebiet erstellen","Create new state":"Neuen Status erstellen","Create new workflow":"Neuen Arbeitsablauf erstellen","Creation date":"Erstellungsdatum","Current browser language":"Aktuelle Browsersprache","Current list of speakers":"Aktuelle Redeliste","Custom number of ballot papers":"Benutzerdefinierte Anzahl von Stimmzetteln","Custom translations":"Benutzerdefinierte Übersetzungen","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.":"Hallo {name},\n\ndies ist Ihr OpenSlides-Zugang für die Veranstaltung {event_name}:\n\n {url}\n Benutzername: {username}\n Passwort: {password}\n\nDiese E-Mail wurde automatisch erstellt.","Default":"Standard","Default encoding for all csv exports":"Voreingestelltes Encoding für alle CSV-Exporte","Default line numbering":"Voreingestellte Zeilennummerierung","Default method to check whether a candidate has reached the required majority.":"Voreingestellte Methode zur Überprüfung ob ein Kandidate die nötige Mehrheit erreicht hat.","Default method to check whether a motion has reached the required majority.":"Voreingestellte Methode zur Überprüfung ob ein Antrag die nötige Mehrheit erreicht hat.","Default projector":"Standardprojektor","Default text version for change recommendations":"Voreingestellte Fassung für Änderungsempfehlungen","Default visibility for new agenda items (except topics)":"Voreingestellte Sichtbarkeit für neue Tagesordnungspunkte (außer Themen)","Delegates":"Delegierte","Delete":"Löschen","Delete final print template":"Beschluss-Druckvorlage löschen","Delete recommendation":"Empfehlung löschen","Delete whole history":"Chronik löschen","Deletion":"Streichung","Description":"Beschreibung","Deselect all":"Alle abwählen","Designates whether this user is in the room.":"Bestimmt, ob dieser Benutzer vor Ort ist.","Designates whether this user should be treated as a committee.":"Legt fest, ob dieser Benutzer als Gremium behandelt werden soll.","Designates whether this user should be treated as active. Unselect this instead of deleting the account.":"Bestimmt, ob dieser Benutzer als aktiv behandelt werden soll. Sie können ihn deaktivieren anstatt ihn zu löschen.","Didn't get an email":"Bekam keine E-Mail","Diff version":"Änderungsdarstellung","Disabled":"Deaktiviert","Disabled (no percents)":"Deaktiviert (keine Prozente)","Do not concern":"Nicht befassen","Do not decide":"Nicht entscheiden","Does not have notes":"Hat keine Notizen","Done":"erledigt","Download CSV example file":"CSV-Beispiel-Datei herunterladen","Drag and drop items to change the order of the agenda. Your modification will be saved immediately.":"Verschieben Sie Einträge, um die Reihenfolge der Tagesordnung zu ändern. Ihre Änderungen werden sofort gespeichert.","Drag and drop motions to reorder the category. Then click the button to renumber.":"Verschieben Sie die Anträge um das Sachgebiet neu zu ordnen. Klicken Sie anschließend auf die Schaltfläche um neu zu nummerieren.","Drop files into this area OR select files":"Dateien auf diesen Bereich ziehen ODER Dateien auswählen","Duration":"Dauer","Edit":"Bearbeiten","Edit comment field:":"Kommentarfeld bearbeiten:","Edit countdown":"Countdown bearbeiten","Edit details":"Details bearbeiten","Edit details for":"Details bearbeiten für","Edit message":"Mitteilung bearbeiten","Edit statute paragraph:":"Satzungsabschnitt bearbeiten:","Edit the whole motion text":"Vollständigen Antragstext bearbeiten","Edit title":"Titel bearbeiten","Edit topic":"Thema bearbeiten","Election method":"Wahlmethode","Elections":"Wahlen","Element":"Element","Email":"E-Mail","Email body":"Nachrichtentext","Email sender":"Absender","Email subject":"Betreff","Empty text field":"Leeres Textfeld","Enable numbering for agenda items":"Nummerierung von Tagesordnungspunkten aktivieren","Enable participant presence view":"Ansicht zur Teilnehmeranwesenheit aktivieren","Enable/disable account ...":"Account ein-/ausschalten ...","Encoding of the file":"Encoding der Datei","End speech":"Rede beenden","Enter duration in seconds. Choose 0 to disable warning color.":"Geben Sie die Dauer in Sekunden an. Zum Deaktivieren der Warn-Farbe 0 auswählen.","Enter participant number":"Teilnehmernummer eingeben","Enter your email to send the password reset link":"Geben Sie Ihre E-Mail-Adresse ein um eine Link zum Zurücksetzen des Passworts zu erhalten.","Error":"Fehler","Error: The new passwords do not match.":"Fehler: Die neuen Passwörter stimmen nicht überein.","Estimated end":"Voraussichtliches Ende","Event":"Veranstaltung","Event date":"Veranstaltungszeitraum","Event location":"Veranstaltungsort","Event name":"Veranstaltungsname","Event organizer":"Veranstalter","Exit":"Beenden","Expand all":"Alle ausklappen","Export":"Exportieren","Export ...":"Exportieren ...","Export as CSV":"Exportieren als CSV","Export as PDF":"Als PDF exportieren","Export comment":"Kommentar exportieren","Export motions":"Anträge exportieren","Export personal note only":"Nur persönliche Notiz exportieren","Extension":"Erweiterung","Favorites":"Favoriten","File information":"Dateiinformationen","File name":"Dateiname","Files":"Dateien","Filter":"Filter","Filter options":"Filtermöglichkeiten","Filters":"Filter","Final print template":"Beschluss-Druckvorlage","Final version":"Beschlussfassung","Finished":"Abgeschlossen","First state":"Erster Status","Follow recommendation":"Empfehlung folgen","Follow recommendations for all motions":"Empfehlungen für alle Anträge folgen","Following users are currently editing this motion:":"Folgende Nutzer bearbeiten aktuell diesen Antrag:","Forgot Password?":"Passwort vergessen?","Format":"Format","Front page text":"Text der Startseite","Front page title":"Titel der Startseite","Gender":"Geschlecht","General":"Allgemein","Generate new passwords":"Neue Passwörter generieren","Generate password":"Passwort generieren","Given name":"Vorname","Go to line":"Springe zur Zeile","Got an email":"Bekam eine E-Mail","Groups":"Gruppen","Groups with read permissions":"Gruppen mit Leseberechtigungen","Groups with write permissions":"Gruppen mit Schreibberechtigungen","Guest":"Gast","Has notes":"Hat Notizen","Header background color":"Hintergrundfarbe Kopfbereich","Header font color":"Schriftfarbe Kopfbereich","Headline color":"Überschriftenfarbe","Help text for access data and welcome PDF":"Hilfetext für das Zugangsdaten- und Willkommens-PDF","Hidden":"Versteckt","Hidden item":"Versteckter Eintrag","Hide internal items when projecting subitems":"Interne Einträge ausblenden bei der Projektion von Untereinträgen","Hide meta information box on projector":"Meta-Informations-Box auf dem Projektor ausblenden","Hide password":"Passwort verstecken","Hide reason on projector":"Begründung auf dem Projektor ausblenden","Hide recommendation on projector":"Empfehlung auf dem Projektor ausblenden","History":"Chronik","Home":"Startseite","How to create new amendments":"Erstellung von Änderungsanträgen","Identifier":"Bezeichner","Identifier, reason, submitter, category, origin and motion block are optional and may be empty.":"Bezeichner, Begründung, Antragsteller/in, Sachgebiet, Herkunft und Antragsblock sind optional und dürfen leer sein.","Import":"Importieren","Import motions":"Anträge importieren","Import participants":"Teilnehmende importieren","Import statute":"Satzung importieren","Import topics":"Themen importieren","Include the sequential number in PDF and DOCX":"Laufende Nummer im PDF und DOCX anzeigen","Initial password":"Initiales Passwort","Inline":"innerhalb","Input format: DD.MM.YYYY HH:MM":"Eingabeformat: TT.MM.JJJJ HH:MM","Insert after":"Danach einfügen","Insert participants here":"Teilnehmende hier importieren","Insert topics here":"Themen hier importieren","Insertion":"Ergänzung","Installed plugins":"Installierte Plugins","Internal item":"Interner Eintrag","Invalid input.":"Ungültige Eingabe.","Invalid line number":"Ungültige Zeilennummer","Invalid votes":"Ungültige Stimmen","Is PDF file":"Ist eine PDF-Datei","Is a committee":"Ist ein Gremium","Is active":"Ist aktiv","Is already projected":"ist bereits projiziert","Is committee":"Ist Gremium","Is favorite":"Ist Favorit","Is no PDF file":"Ist keine PDF-Datei","Is not a committee":"Ist kein Gremium","Is not active":"Ist nicht aktiv","Is not favorite":"Ist kein Favorit","Is not present":"Ist nicht anwesend","Is present":"Ist anwesend","Item number":"Tagesordnungspunkt-Nummer","Keep each item in a single line.":"Verwenden Sie eine Zeile pro Eintrag.","Keep each person in a single line.":"Verwenden Sie eine Zeile pro Person.","Label color":"Beschriftungsfarbe","Last email send":"Letzte gesendet E-Mail","Last modified":"Zuletzt geändert","Last speakers":"Letzte Redner","Left":"Links","Legal notice":"Impressum","License":"Lizenz","Line":"Zeile","Line length":"Zeilenlänge","Line numbering":"Zeilennummerierung","List of participants":"Teilnehmendenliste","List of participants (PDF)":"Teilnehmendenliste (PDF)","List of speakers":"Redeliste","List of speakers overlay":"Redelisten-Einblendung","Login":"Anmelden","Login as guest":"Als Gast anmelden","Logout":"Abmelden","Mark speaker":"Redner/in markieren","Messages":"Mitteilungen","Meta information":"Metainformationen","Motion":"Antrag","Motion block":"Antragsblock","Motion blocks":"Antragsblöcke","Motion change recommendation created":"Änderungsempfehlung erstellt","Motion change recommendation deleted":"Änderungsempfehlung gelöscht","Motion change recommendation updated":"Änderungsempfehlung aktualisiert","Motion created":"Antrag erstellt","Motion deleted":"Antrag gelöscht","Motion has been imported":"Antrag wurde importiert","Motion preamble":"Antragseinleitung","Motion text":"Antragstext","Motion updated":"Antrag aktualisiert","Motion will be imported":"Antrag wird importiert","Motion(s) will be imported.":"Anträge werden importieren.","Motions":"Anträge","Motions have been imported.":"Anträge wurden importiert.","Move in call list":"In Aufrufliste verschieben","Move to agenda item":"Zu TOP verschieben","Multiselect":"Mehrfachauswahl","Name":"Name","Name of recommender":"Name des Empfehlungsgebers","Name of recommender for statute amendments":"Name des Empfehlungsgebers für Satzungsänderungsanträge","Needs review":"Benötigt Review","New Projector":"Neuer Projektor","New amendment":"Neuer Änderungsantrag","New change recommendation":"Neue Änderungsempfehlung","New comment field":"Neues Kommentarfeld","New countdown":"Neuer Countdown","New file name":"Neuer Dateiname","New group name":"Neuer Gruppenname","New message":"Neue Mitteilung","New motion":"Neuer Antrag","New motion block":"Neuer Antragsblock","New participant":"Neue/r Teilnehmer/in","New password":"Neues Passwort","New statute paragraph":"Neuer Satzungsabschnitt","New tag name":"Neues Schlagwort","New topic":"Neues Thema","New vote":"Neue Abstimmung","Next":"Weiter","Next states":"Nächste Zustände","No":"Nein","No category":"Kein Sachgebiet","No category set":"kein Sachgebiet gesetzt","No change recommendations yet":"Bisher keine Änderungsempfehlungen","No changes at the text.":"Keine Änderung am Text.","No comment":"Kein Kommentar","No concernment":"Nichtbefassung","No countdowns":"Keine Countdowns","No data":"Keine Daten","No decision":"Keine Entscheidung","No emails were send.":"Es wurden keine E-Mails versandt.","No encryption":"Keine Verschlüsselung","No groups selected":"Keine Gruppen ausgewählt","No information available":"Keine Informationen verfügbar","No messages":"Keine Mitteilungen","No motion block set":"kein Antragsblock gesetzt","No personal note":"Keine persönliche Notiz","No recommendation":"keine Empfehlung gesetzt","No search result found for":"Keine Suchergebnisse gefunden für","No statute paragraphs":"Keine Satzungsabschnitte vorhanden","No.":"Nr.","None":"aus","Number motions":"Anträge nummerieren","Number of (minimum) required supporters for a motion":"Mindestanzahl erforderlicher Unterstützer/innen für einen Antrag","Number of all delegates":"Anzahl aller Delegierten","Number of all participants":"Anzahl aller Teilnehmenden","Number of ballot papers (selection)":"Anzahl der Stimmzettel (Vorauswahl)","Number of last speakers to be shown on the projector":"Anzahl der dargestellten letzten Redner/innen auf dem Projektor","Number set":"Nummer gesetzt","Numbered per category":"Pro Sachgebiet nummerieren","Numbering":"Nummerierung","Numbering prefix for agenda items":"Präfix für Nummerierung von Tagesordnungspunkten","Numeral system for agenda items":"Nummerierungssystem für Tagesordnungspunkte","OK":"OK","Offline mode: You can use OpenSlides but changes are not saved.":"Offlinemodus: Sie können OpenSlides weiter nutzen, aber Änderungen werden nicht gespeichert.","Old password":"Altes Passwort","One email was send sucessfully.":"Eine E-Mail wurde erfolgreich versandt.","Only for internal notes.":"Nur für interne Notizen.","Only main agenda items":"Nur Haupt-Tagesordnungspunkte","Open":"Öffnen","Open items":"Offene Einträge","Open list of speakers":"Redeliste öffnen","OpenSlides access data":"OpenSlides-Zugangsdaten","OpenSlides is temporarily reset to following timestamp":"OpenSlides ist vorübergehend auf folgenden Zeitpunkt zurückgesetzt:","Origin":"Herkunft","Original version":"Originalfassung","Outside":"außerhalb","Overlay":"Einblendung","PDF":"PDF","PDF ballot paper logo":"PDF-Stimmzettel-Logo","PDF footer logo (left)":"PDF-Logo Fußzeile (links)","PDF footer logo (right)":"PDF-Logo Fußzeile (rechts)","PDF header logo (left)":"PDF-Logo Kopfzeile (links)","PDF header logo (right)":"PDF-Logo Kopfzeile (rechts)","Page number alignment in PDF":"Seitenzahl-Ausrichtung im PDF","Paragraph-based, Diff-enabled":"Absatzbasiert mit Änderungsdarstellung","Parallel upload":"Parallel hochladen","Parent agenda item":"Elternelement in der Tagesordnung","Participant cannot be found":"Teilnehmende wurde nicht gefunden","Participant has been imported":"Teilnehmer/in wurde importiert","Participant number":"Teilnehmernummer","Participant number is not unique":"Teilnehmernummer ist nicht eindeutig","Participant will be imported":"Teilnehmer/in wird importiert","Participant(s) will be imported.":"Teilnehmende werden importiert.","Participants":"Teilnehmende","Participants have been imported.":"Teilnehmende wurden importiert.","Password":"Passwort","Paste/write your topics in this textbox.":"Kopieren oder schreiben Sie die Titel Ihrer Themenpunkte in diese Textbox.","Permission":"Zulassung","Permissions":"Berechtigungen","Permit":"Zulassen","Personal note":"Persönliche Notiz","Personal notes":"Persönliche Notizen","Please enter a name for the new workflow:":"Bitte geben Sie einen Namen für den neuen Arbeitsablauf ein:","Please enter a valid email address":"Bitte geben Sie einen neuen Namen ein für","Please enter a valid email address!":"Bitte geben Sie eine gültige E-Mail-Adresse ein!","Please enter your new password":"Bitte geben Sie Ihr neues Passwort ein","Please fill in all required values":"Bitte füllen Sie alle erforderlichen Felder aus.","Preamble text for PDF and DOCX documents (all motions)":"Einleitungstext für PDF- und DOCX-Dokumente (alle Anträge) ","Preamble text for PDF document (all elections)":"Einleitungstext für PDF-Dokument (alle Wahlen) ","Predefined seconds of new countdowns":"Vorgegebene Sekunden für neue Countdowns","Prefix":"Präfix","Prefix for the identifier for amendments":"Präfix für den Bezeichner von Änderungsanträgen","Presence":"Anwesenheit","Present":"Anwesend","Presentation and assembly system":"Präsentations- und Versammlungssystem","Preview":"Vorschau","Previous":"Zurück","Previous slides":"Letzte Folien","Print ballot papers":"Stimmzettel drucken","Privacy Policy":"Datenschutzerklärung","Privacy policy":"Datenschutzerklärung","Project":"Projizieren","Project selection?":"Auswahl projizieren?","Projector":"Projektor","Projector header image":"Projektor-Kopfgrafik","Projector language":"Projektorsprache","Projector logo":"Projektor-Logo","Projector messages":"Projektor-Mitteilungen","Projectors":"Projektoren","Public":"Öffentlich","Public item":"Öffentlicher Eintrag","Put all candidates on the list of speakers":"Alle Kandidaten auf die Redeliste setzen","Queue":"Warteliste","Reason":"Begründung","Reason required for creating new motion":"Begründung erforderlich zur Erstellung neuer Anträge","Recommendation":"Empfehlung","Recommendation label":"Empfehlung","Recommendation set to {arg1}":"Empfehlung gesetzt auf {arg1}","Refer to committee":"In Ausschuss verweisen","Reference projector for current list of speakers:":"Referezprojektor für die aktuelle Redeliste:","Referral to committee":"Verweisung in Ausschuss","Reject":"Ablehnen","Reject (not authorized)":"Verwerfen (nicht zulässig)","Rejected":"Abgelehnt","Rejection":"Ablehnung","Rejection (not authorized)":"Verwerfung (nicht berechtigt)","Remove":"Entfernen","Remove all speakers":"Alle Redner/innen entfernen","Remove all supporters of a motion if a submitter edits his motion in early state":"Entferne alle Unterstützer/innen eines Antrags, wenn ein Antragsteller/in den Antrag im Anfangsstadium bearbeitet","Remove from motion block":"Vom Antragsblock entfernen ","Remove me":"Entferne mich","Replacement":"Ersetzung","Required":"Erforderlich","Required comma or semicolon separated values with these column header names in the first row:":"Erforderliche Komma- oder Semikolon-separierte Werte mit diesen Spaltennamen in der ersten Zeile:","Required majority":"Erforderliche Mehrheit","Reset":"Zurücksetzen","Reset password":"Passwort zurücksetzen","Reset recommendation":"Empfehlung zurücksetzen","Reset state":"Status zurücksetzen","Resolution and size":"Auflösung und Größe","Right":"Rechts","Roman":"Römisch","Save":"Speichern","Scan this QR code to connect to WLAN.":"QR-Code scannen um sich mit dem WLAN zu verbinden.","Scan this QR code to open URL.":"QR-Code scannen um die URL zu öffnen.","Scroll down":"Nach unten scrollen","Scroll down (big step)":"Nach unten scrollen (in großen Schritten)","Scroll up":"Nach oben scrollen","Scroll up (big step)":"Nach oben scrollen (in großen Schritten)","Search":"Suche","Search player":"Spieler suchen","Search results":"Suchergebnisse","Searching for candidates":"Auf Kandidatensuche","Select all":"Alle auswählen","Select file":"Datei auswählen","Select or search new speaker ...":"Redner/in auswählen oder suchen ...","Select or search new submitter ...":"Antragsteller/in auswählen oder suchen ...","Select paragraph":"Absatz auswählen","Selected values":"Ausgewählte Werte","Send invitation email":"Einladungs-E-Mail senden","Separator used for all csv exports and examples":"Feldtrenner für alle CSV-Exporte und -Beispiele","Sequential number":"Laufende Nummer","Serially numbered":"fortlaufend nummerieren","Set active status for selected participants:":"Aktiv-Status für ausgewählte Teilnehmende setzen:","Set as parent":"Als Eltern setzen","Set category":"Sachgebiet setzen","Set committee ...":"Gremium setzen ...","Set committee status for selected participants:":"Gremium-Status für ausgewählte Teilnehmende setzen:","Set hidden":"Versteckt setzen","Set identifier":"Bezeichner setzen","Set internal":"Intern setzen","Set it manually":"manuell setzen","Set motion block":"Antragsblock setzen","Set presence ...":"Anwesenheit setzen ...","Set presence status for selected participants:":"Anwesenheits-Status für ausgewählte Teilnehmende setzen:","Set public":"Öffentlich setzen","Set recommendation":"Empfehlung setzen","Set status":"Status setzen","Settings":"Einstellungen","Short description of event":"Kurzbeschreibung der Veranstaltung","Show all":"Alle anzeigen","Show amendment in parent motoin":"Änderungsantrag im Hauptantrag anzeigen","Show amendments together with motions":"Änderungsanträge zusätzlich in der Hauptantragsübersicht anzeigen","Show clock":"Uhr anzeigen","Show correct entries":"Korrekte Einträge anzeigen","Show correct entries only":"Nur korrekte Einträge anzeigen","Show entire motion text":"Vollständigen Antragstext anzeigen","Show errors only":"Nur fehlerhafte Einträge anzeigen","Show header and footer":"Kopf- und Fußzeile anzeigen","Show logo":"Logo anzeigen","Show orange countdown in the last x seconds of speaking time":"Countdown in den letzten x Sekunden der Redezeit orange darstellen","Show password":"Passwort anzeigen","Show profile":"Profil anzeigen","Show recommendation extension field":"Ergänzungsfeld für Empfehlung anzeigen","Show state extension field":"Ergänzungsfeld für Status anzeigen","Show this text on the login page":"Diesen Text auf der Login-Seite anzeigen","Show title":"Veranstaltungstitel anzeigen","Simple Workflow":"Einfacher Arbeitsablauf","Simple majority":"Einfache Mehrheit","Slide":"Folie","Sort":"Sortieren","Sort agenda":"Tagesordnung sortieren","Sort categories by":"Sachgebiete sortieren nach","Sort motions":"Anträge sortieren","Sort name of participants by":"Namen der Teilnehmenden sortieren nach","Speakers":"Redner/innen","Special values":"Spezielle Werte","Staff":"Mitarbeitende","Standard font size in PDF":"Standard-Schriftgröße im PDF","Start":"Start","Start time":"Startzeit","State":"Status","State set to {arg1}":"Status gesetzt auf {arg1}","Statute":"Satzung","Statute amendment":"Satzungsänderungsantrag","Statute amendment for":"Satzungsänderungsantrag zu","Statute paragraph":"Satzungsabschnitt","Statute paragraph has been imported":"Satzungsabschnitt wurde importiert","Statute paragraph will be imported":"Satzungsabschnitt wird importiert","Stop":"Stopp","Stop counting":"Zählen stoppen","Stop submitting new motions by non-staff users":"Einreichen von neuen Anträgen stoppen für Nutzer ohne Verwaltungsrechte","Structure level":"Gliederungsebene","Submitter":"Antragsteller/in","Submitters":"Antragsteller/in","Submitters changed":"Antragsteller/in geändert","Summary of changes":"Zusammenfassung der Änderungen","Support":"Unterstützen","Supporters":"Unterstützer/innen","Supporters changed":"Unterstützer/innen geändert","Surname":"Nachname","System":"System","System URL":"System-URL","Table of contents":"Inhaltsverzeichnis","Tags":"Schlagwörter","Text":"Text","Text import":"Textimport","Text separator":"Texttrenner","The 100 % base of a voting result consists of":"Die 100%-Basis eines Abstimmungsergebnisses besteht aus","The 100-%-base of an election result consists of":"Die 100%-Basis eines Wahlergebnisses besteht aus","The assembly may decide:":"Die Versammlung möge beschließen:","The event manager hasn't set up a privacy policy yet.":"Der Veranstalter hat noch keine Datenschutzerklärung hinterlegt.","The file has too few columns to be parsed properly.":"Die Datei enthält zu wenige Spalten, um richtig verwendet zu werden.","The file seems to have additional columns. They will be ignored.":"Die Datei scheint zusätzliche Spalten zu haben. Diese werden ignoriert.","The file seems to have some ommitted columns. They will be considered empty.":"Die Datei scheint einige ausgelassene Spalten zu haben. Sie werden als leer betrachtet.","The link is broken. Please contact your system administrator.":"Der Link ist defekt. Bitte kontaktieren Sie den zuständigen Administrator.","The maximum number of characters per line. Relevant when line numbering is enabled. Min: 40":"Die maximale Zeichenanzahl pro Zeile. Relevant, wenn die Zeilennummerierung eingeschaltet ist. Minimum: 40.","The reason field may not be blank.":"Die Begründung darf nicht leer sein.","The server could not be reached.":"Der Server konnte nicht erreicht werden.","The server didn't respond.":"Der Server antwortet nicht.","The text field may not be blank.":"Der Antragstext darf nicht leer sein.","The title of the motion is always applied.":"Der Antragstitel wird immer übernommen.","The user %user% has no email, so the invitation email could not be send.":"%user% besitzt keine E-Mail-Adresse; eine E-Mail konnte daher nicht gesendet werden.","The users %user% have no email, so the invitation emails could not be send.":"%user% besitzen keine E-Mail-Adressen; E-Mails konnte daher nicht gesendet werden.","This change collides with another one.":"Diese Änderung kollidiert mit einer anderen.","This element does not exist at this time.":"Dieses Element existiert nicht zu diesem Zeitpunkt.","This field is required.":"Dieses Feld ist erforderlich.","This prefix will be set if you run the automatic agenda numbering.":"Dieses Präfix wird gesetzt, wenn die automatische Nummerierung der Tagesordnung durchgeführt wird.","This will add or remove the following groups for all selected participants:":"Folgende Gruppen werden für die ausgewählten Teilnehmenden hinzugefügt oder entfernt:","This will add or remove the following submitters for all selected motions:":"Folgende Antragsteller werden für die ausgewählten Anträge hinzugefügt oder entfernt:","This will add or remove the following tags for all selected motions:":"Folgende Schlagwörter werden für die ausgewählten Anträge hinzugefügt oder entfernt:","This will move all selected motions as childs to:":"Alle ausgewählten Anträge werden unterhalb des folgenden Tagesordnungspunktes verschoben:","This will move all selected motions under or after the following motion in the call list:":"Alle ausgewählten Anträge unter oder nach dem folgenden Antrag in der Aufrufliste verschieben:","This will set the following category for all selected motions:":"Folgendes Sachgebiet wird für alle ausgewählten Anträge gesetzt:","This will set the following motion block for all selected motions:":"Folgender Antragsblock wird für alle ausgewählten Anträgen gesetzt:","This will set the following recommendation for all selected motions:":"Folgende Empfehlung wird für alle ausgewählten Anträge gesetzt:","This will set the following state for all selected motions:":"Folgender Status wird für alle ausgewählten Anträge gesetzt:","Three-quarters majority":"Dreiviertelmehrheit","Time":"Zeit","Timestamp":"Zeitstempel","Title":"Titel","Title for PDF and DOCX documents (all motions)":"Titel für PDF- und DOCX-Dokumente (alle Anträge) ","Title for PDF document (all elections)":"Titel für PDF-Dokument (alle Wahlen)","Title for access data and welcome PDF":"Titel für das Zugangsdaten- und Begrüßungs-PDF","Title is required. All other fields are optional and may be empty.":"Titel ist erforderlich. Alle übrigen Felder sind optional und dürfen leer sein.","Topic":"Thema","Topic has been imported":"Thema wurde importiert","Topic will be imported":"Thema wird importiert","Topics have been imported.":"Themen wurden importiert.","Topics(s) will be imported.":"Themen werden importiert.","Total votes cast":"Abgegebene Stimmen","Two-thirds majority":"Zweidrittelmehrheit","Type":"Typ","Undone":"unerledigt","Unsupport":"Unterstützung zurückziehen","Upload":"Hochladen","Upload files":"Dateien hochladen","Use admin and admin for your first login.
Please change your password to hide this message!":"Verwenden Sie admin und admin für die erste Anmeldung.
Bitte ändern Sie Ihr Passwort, um diese Nachricht auszublenden!","Use the following custom number":"Verwende die folgende benutzerdefinierte Anzahl","Use these placeholders: {name}, {event_name}, {url}, {username}, {password}. The url referrs to the system url.":"Verwendbare Platzhalter: {name}, {event_name}, {url}, {username}, {password}. Die URL bezieht sich auf die System-URL.","Used for QRCode in PDF of access data.":"Wird für QR-Code im Zugangsdaten-PDF verwendet.","Used for WLAN QRCode in PDF of access data.":"Wird für WLAN-QR-Code im Zugangsdaten-PDF verwendet.","Username":"Benutzername","Username or password is not correct.":"Benutzername oder Passwort war nicht korrekt.","Valid votes":"Gültige Stimmen","Visibility":"Sichtbarkeit","Visible":"Sichtbar","Vote":"Abstimmung","Vote created":"Abstimmung erstellt","Vote deleted":"Abstimmung gelöscht","Vote updated":"Abstimmung aktualisiert","Voting":"Im Wahlvorgang","Voting and ballot papers":"Abstimmung und Stimmzettel","Voting result":"Abstimmungsergebnis","WEP":"WEP","WLAN access data":"WLAN-Zugangsdaten","WLAN encryption":"WLAN-Verschlüsselung","WLAN name (SSID)":"WLAN-Name (SSID)","WLAN password":"WLAN-Passwort","WPA/WPA2":"WPA/WPA2","Web interface header logo":"Web-Interface-Kopfzeilen-Logo","Welcome to OpenSlides":"Willkommen bei OpenSlides","Which version?":"Welche Fassung?","Will be displayed as label before selected recommendation for statute amendments. Use an empty value to disable the recommendation system.":"Wird als Beschriftung vor der ausgewählten Empfehlung von Satzungsänderungsanträgen angezeigt. Verwenden Sie eine leere Eingabe, um das Empfehlungssystem zu deaktivieren.","Will be displayed as label before selected recommendation. Use an empty value to disable the recommendation system.":"Wird als Beschriftung vor der ausgewählten Empfehlung angezeigt. Verwenden Sie eine leere Eingabe, um das Empfehlungssystem zu deaktivieren.","Withdraw":"Zurückziehen","Workflow":"Arbeitsablauf","Workflow of new motions":"Arbeitsablauf für neue Anträge","Workflow of new statute amendments":"Arbeitsablauf für neue Satzungsänderungsanträge","Workflows":"Arbeitsabläufe","Yes":"Ja","Yes/No":"Ja/Nein","Yes/No per candidate":"Ja/Nein pro Kandidat","Yes/No/Abstain":"Ja/Nein/Enthaltung","Yes/No/Abstain per candidate":"Ja/Nein/Enthaltung pro Kandidat","You are not supposed to be here...":"Sie sollten nicht hier sein ...","You are using the history mode of OpenSlides. Changes will not be saved.":"Der Chronik-Modus ist aktiv. Änderungen werden nicht gespeichert.","You can use {event_name} and {username} as placeholder.":"Sie können {event_name} und {username} als Platzhalter verwenden.","You override the personally set password!":"Sie überschreiben hiermit das persönlich gesetzte Passwort!","Your login for {event_name}":"Zugangsdaten für {event_name}","Your password was resetted successfully!":"Ihr Passwort wurde erfolgreich zurückgesetzt!","[Begin speech] starts the countdown, [End speech] stops the countdown.":"[Rede beginnen] startet den Countdown, [Rede beenden] stoppt den Countdown.","[Place for your welcome and help text.]":"[Platz für Ihren Begrüßungs- und Hilfetext.]","[Space for your welcome text.]":"[Platz für Ihren Begrüßungstext.]","absent":"abwesend","accepted":"angenommen","active":"aktiv","active users":"aktive Nutzer","add group(s)":"Gruppe(n) hinzufügen","adjourned":"vertagt","and":"und","ballot-paper":"stimmzettel","by":"von","committee":"Gremium","connections":"Verbindungen","contribution":"Wortmeldung","disabled":"deaktiviert","diverse":"divers","emails":"E-Mails","entries will be ommitted.":"Einträge werden ausgelassen. ","errors":"Fehler","example":"Beispiel","female":"weiblich","has saved his work on this motion.":"hat die Arbeit an diesem Antrag gespeichert.","inactive":"inaktiv","inline":"innerhalb","is hidden":"ist versteckt","is not hidden":"ist nicht versteckt","is now":"ist jetzt","items per page":"Einträge pro Seite","majority":"Mehrheit","male":"männlich","minutes":"Minuten","motions":"Anträge","motions-example":"Anträge-Beispiel","needs review":"benötigt Überprüfung","no committee":"kein Gremium","none":"aus","not concerned":"nicht befasst","not decided":"nicht entschieden","not reached.":"nicht erreicht.","of":"von","outside":"außerhalb","participants-example":"Teilnehmende-Beispiel","permitted":"zugelassen","present":"anwesend","published":"veröffentlicht","reached.":"erreicht.","refered to committee":"in Ausschuss verwiesen","rejected":"abgelehnt","rejected (not authorized)":"verworfen (nicht zulässig)","remove group(s)":"Gruppe(n) entfernen","result":"Ergebnis","results":"Ergebnisse","selected":"ausgewählt","statute paragraphs have been imported.":"Satzungsabschnitte wurden importiert.","statute paragraphs(s) will be imported.":"Satzungsabschnitte werden importiert.","submitted":"eingereicht","supporters":"Unterstützer/innen","to":"bis","undocumented":"nicht erfasst","withdrawed":"zurückgezogen"} \ No newline at end of file diff --git a/client/src/assets/i18n/de.po b/client/src/assets/i18n/de.po index 63b468770..19ebbc4ca 100644 --- a/client/src/assets/i18n/de.po +++ b/client/src/assets/i18n/de.po @@ -125,9 +125,6 @@ msgstr "Sichtbarkeit in der Tagesordnung" msgid "All casted ballots" msgstr "Alle abgegebenen Stimmzettel" -msgid "All selected files will be deleted!" -msgstr "Alle ausgewählten Dateien werden gelöscht!" - msgid "All valid ballots" msgstr "Alle gültigen Stimmzettel" @@ -180,12 +177,89 @@ msgstr "Ein unbekannter Fehler ist aufgetreten." msgid "Arabic" msgstr "Arabisch" +msgid "Are you sure you want to copy the final version to the print template?" +msgstr "" +"Soll die Beschlussfassung weiter bearbeitet und eine Beschluss-Druckvorlage " +"erstellt werden?" + +msgid "Are you sure you want to delete all selected elections?" +msgstr "Sollen alle ausgewählten Wahlen wirklich gelöscht werden?" + +msgid "Are you sure you want to delete all selected files?" +msgstr "Sollen alle ausgewählten Dateien wirklich gelöscht werden?" + +msgid "Are you sure you want to delete all selected items?" +msgstr "Sollen alle ausgewählten Dateien wirklich gelöscht werden?" + +msgid "Are you sure you want to delete all selected motions?" +msgstr "Sollen alle ausgewählten Anträge wirklich gelöscht werden?" + +msgid "Are you sure you want to delete all selected participants?" +msgstr "Sollen alle ausgewählten Teilnehmende wirklich gelöscht werden?" + +msgid "" +"Are you sure you want to delete all speakers from this list of speakers?" +msgstr "Sollen wirklich alle Redner/innen von dieser Liste entfernt werden?" + +msgid "Are you sure you want to delete the print template?" +msgstr "Soll die Beschluss-Druckvorlage wirklich gelöscht werden?" + +msgid "Are you sure you want to delete the selected message?" +msgstr "Soll die ausgewählte Mitteilung wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this category?" +msgstr "Soll dieses Sachgebiet wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this change recommendation?" +msgstr "Soll diese Änderungsempfehlung wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this comment field?" +msgstr "Soll dieses Kommentarfeld wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this countdown?" +msgstr "Soll dieser Countdown wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this entry?" +msgstr "Soll dieser Eintrag wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this file?" +msgstr "Soll diese Datei wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this group?" +msgstr "Soll diese Gruppe wirklich gelöscht werden?" + 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 participant?" +msgstr "Soll diese/r Teilnehmende wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this projector?" +msgstr "Soll dieser Projektor wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this statute paragraph?" +msgstr "Soll dieser Satzungsabschnitt wirklich gelöscht werden?" + +msgid "Are you sure you want to delete this tag?" +msgstr "Soll dieses Schlagwort wirklich gelöscht werden?" + msgid "Are you sure you want to delete this vote?" msgstr "Soll diese Abstimmung wirklich gelöscht werden?" +msgid "Are you sure you want to delete this workflow?" +msgstr "Soll dieser Arbeitsablauf wirklich gelöscht werden?" + +msgid "Are you sure you want to number all agenda items?" +msgstr "Sollen alle Tagesordnungspunkte wirklich neu nummeriert werden?" + +msgid "Are you sure you want to renumber all motions of this category?" +msgstr "" +"Sollen alle Anträge dieses Sachgebiets wirklich neu nummeriert werden?" + +msgid "Are you sure you want to send emails to all selected participants?" +msgstr "" +"Sollen E-Mails wirklich an alle ausgewählten Teilnehmende gesendet werden?" + msgid "" "At least given name or surname have to be filled in. All other fields are " "optional and may be empty." @@ -391,6 +465,9 @@ msgstr "Alle löschen" msgid "Clear list" msgstr "Liste leeren" +msgid "Clear motion block" +msgstr "Antragsblock löschen" + msgid "Clear tags" msgstr "Schlagwörter löschen" @@ -400,6 +477,9 @@ msgstr "Schließen" msgid "Close list of speakers" msgstr "Redeliste schließen" +msgid "Closed items" +msgstr "Erledigte Einträge" + msgid "Collapse all" msgstr "Alle zusammenklappen" @@ -455,6 +535,9 @@ msgstr "Beschluss-Druckvorlage erstellen" msgid "Create new category" msgstr "Neues Sachgebiet erstellen" +msgid "Create new state" +msgstr "Neuen Status erstellen" + msgid "Create new workflow" msgstr "Neuen Arbeitsablauf erstellen" @@ -467,9 +550,6 @@ msgstr "Aktuelle Browsersprache" msgid "Current list of speakers" msgstr "Aktuelle Redeliste" -msgid "Current list of speakers reference" -msgstr "Referenz zur aktuellen Redeliste" - msgid "Custom number of ballot papers" msgstr "Benutzerdefinierte Anzahl von Stimmzetteln" @@ -584,9 +664,6 @@ msgstr "Nicht befassen" msgid "Do not decide" msgstr "Nicht entscheiden" -msgid "Do you want to delete this file?" -msgstr "Soll diese Datei wirklich gelöscht werden?" - msgid "Does not have notes" msgstr "Hat keine Notizen" @@ -701,6 +778,12 @@ msgstr "" msgid "Error" msgstr "Fehler" +msgid "Error: The new passwords do not match." +msgstr "Fehler: Die neuen Passwörter stimmen nicht überein." + +msgid "Estimated end" +msgstr "Voraussichtliches Ende" + msgid "Event" msgstr "Veranstaltung" @@ -785,6 +868,9 @@ msgstr "Empfehlung folgen" msgid "Follow recommendations for all motions" msgstr "Empfehlungen für alle Anträge folgen" +msgid "Following users are currently editing this motion:" +msgstr "Folgende Nutzer bearbeiten aktuell diesen Antrag:" + msgid "Forgot Password?" msgstr "Passwort vergessen?" @@ -827,6 +913,9 @@ msgstr "Gruppen mit Leseberechtigungen" msgid "Groups with write permissions" msgstr "Gruppen mit Schreibberechtigungen" +msgid "Guest" +msgstr "Gast" + msgid "Has notes" msgstr "Hat Notizen" @@ -933,6 +1022,9 @@ msgstr "Ungültige Eingabe." msgid "Invalid line number" msgstr "Ungültige Zeilennummer" +msgid "Invalid votes" +msgstr "Ungültige Stimmen" + msgid "Is PDF file" msgstr "Ist eine PDF-Datei" @@ -963,6 +1055,9 @@ msgstr "Ist nicht aktiv" msgid "Is not favorite" msgstr "Ist kein Favorit" +msgid "Is not present" +msgstr "Ist nicht anwesend" + msgid "Is present" msgstr "Ist anwesend" @@ -978,6 +1073,9 @@ msgstr "Verwenden Sie eine Zeile pro Person." msgid "Label color" msgstr "Beschriftungsfarbe" +msgid "Last email send" +msgstr "Letzte gesendet E-Mail" + msgid "Last modified" msgstr "Zuletzt geändert" @@ -1023,9 +1121,6 @@ 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" @@ -1280,6 +1375,9 @@ msgstr "Nur Haupt-Tagesordnungspunkte" msgid "Open" msgstr "Öffnen" +msgid "Open items" +msgstr "Offene Einträge" + msgid "Open list of speakers" msgstr "Redeliste öffnen" @@ -1328,8 +1426,8 @@ msgstr "Absatzbasiert mit Änderungsdarstellung" msgid "Parallel upload" msgstr "Parallel hochladen" -msgid "Parent item" -msgstr "Elternelement" +msgid "Parent agenda item" +msgstr "Elternelement in der Tagesordnung" msgid "Participant cannot be found" msgstr "Teilnehmende wurde nicht gefunden" @@ -1422,6 +1520,9 @@ msgstr "Vorschau" msgid "Previous" msgstr "Zurück" +msgid "Previous slides" +msgstr "Letzte Folien" + msgid "Print ballot papers" msgstr "Stimmzettel drucken" @@ -1485,8 +1586,8 @@ msgstr "Empfehlung gesetzt auf {arg1}" msgid "Refer to committee" msgstr "In Ausschuss verweisen" -msgid "Reference projector" -msgstr "Referenzprojektor" +msgid "Reference projector for current list of speakers:" +msgstr "Referezprojektor für die aktuelle Redeliste:" msgid "Referral to committee" msgstr "Verweisung in Ausschuss" @@ -1509,6 +1610,9 @@ msgstr "Verwerfung (nicht berechtigt)" msgid "Remove" msgstr "Entfernen" +msgid "Remove all speakers" +msgstr "Alle Redner/innen entfernen" + msgid "" "Remove all supporters of a motion if a submitter edits his motion in early " "state" @@ -1568,6 +1672,18 @@ msgstr "QR-Code scannen um sich mit dem WLAN zu verbinden." msgid "Scan this QR code to open URL." msgstr "QR-Code scannen um die URL zu öffnen." +msgid "Scroll down" +msgstr "Nach unten scrollen" + +msgid "Scroll down (big step)" +msgstr "Nach unten scrollen (in großen Schritten)" + +msgid "Scroll up" +msgstr "Nach oben scrollen" + +msgid "Scroll up (big step)" +msgstr "Nach oben scrollen (in großen Schritten)" + msgid "Search" msgstr "Suche" @@ -1610,6 +1726,9 @@ msgstr "Laufende Nummer" msgid "Serially numbered" msgstr "fortlaufend nummerieren" +msgid "Set active status for selected participants:" +msgstr "Aktiv-Status für ausgewählte Teilnehmende setzen:" + msgid "Set as parent" msgstr "Als Eltern setzen" @@ -1619,6 +1738,9 @@ msgstr "Sachgebiet setzen" msgid "Set committee ..." msgstr "Gremium setzen ..." +msgid "Set committee status for selected participants:" +msgstr "Gremium-Status für ausgewählte Teilnehmende setzen:" + msgid "Set hidden" msgstr "Versteckt setzen" @@ -1637,6 +1759,9 @@ msgstr "Antragsblock setzen" msgid "Set presence ..." msgstr "Anwesenheit setzen ..." +msgid "Set presence status for selected participants:" +msgstr "Anwesenheits-Status für ausgewählte Teilnehmende setzen:" + msgid "Set public" msgstr "Öffentlich setzen" @@ -1727,6 +1852,9 @@ msgstr "Anträge sortieren" msgid "Sort name of participants by" msgstr "Namen der Teilnehmenden sortieren nach" +msgid "Speakers" +msgstr "Redner/innen" + msgid "Special values" msgstr "Spezielle Werte" @@ -1901,6 +2029,12 @@ msgstr "" "Dieses Präfix wird gesetzt, wenn die automatische Nummerierung der " "Tagesordnung durchgeführt wird." +msgid "" +"This will add or remove the following groups for all selected participants:" +msgstr "" +"Folgende Gruppen werden für die ausgewählten Teilnehmenden hinzugefügt oder " +"entfernt:" + msgid "" "This will add or remove the following submitters for all selected motions:" msgstr "" @@ -1912,9 +2046,6 @@ msgstr "" "Folgende Schlagwörter werden für die ausgewählten Anträge hinzugefügt oder " "entfernt:" -msgid "This will delete all selected motions." -msgstr "Alle ausgewählten Anträge werden gelöscht." - msgid "This will move all selected motions as childs to:" msgstr "" "Alle ausgewählten Anträge werden unterhalb des folgenden " @@ -1980,6 +2111,9 @@ msgstr "Themen wurden importiert." msgid "Topics(s) will be imported." msgstr "Themen werden importiert." +msgid "Total votes cast" +msgstr "Abgegebene Stimmen" + msgid "Two-thirds majority" msgstr "Zweidrittelmehrheit" @@ -2028,6 +2162,9 @@ msgstr "Benutzername" msgid "Username or password is not correct." msgstr "Benutzername oder Passwort war nicht korrekt." +msgid "Valid votes" +msgstr "Gültige Stimmen" + msgid "Visibility" msgstr "Sichtbarkeit" @@ -2079,6 +2216,9 @@ msgstr "Web-Interface-Kopfzeilen-Logo" msgid "Welcome to OpenSlides" msgstr "Willkommen bei OpenSlides" +msgid "Which version?" +msgstr "Welche Fassung?" + msgid "" "Will be displayed as label before selected recommendation for statute " "amendments. Use an empty value to disable the recommendation system." @@ -2153,12 +2293,21 @@ msgstr "[Platz für Ihren Begrüßungs- und Hilfetext.]" msgid "[Space for your welcome text.]" msgstr "[Platz für Ihren Begrüßungstext.]" +msgid "absent" +msgstr "abwesend" + msgid "accepted" msgstr "angenommen" +msgid "active" +msgstr "aktiv" + msgid "active users" msgstr "aktive Nutzer" +msgid "add group(s)" +msgstr "Gruppe(n) hinzufügen" + msgid "adjourned" msgstr "vertagt" @@ -2171,6 +2320,9 @@ msgstr "stimmzettel" msgid "by" msgstr "von" +msgid "committee" +msgstr "Gremium" + msgid "connections" msgstr "Verbindungen" @@ -2180,6 +2332,12 @@ msgstr "Wortmeldung" msgid "disabled" msgstr "deaktiviert" +msgid "diverse" +msgstr "divers" + +msgid "emails" +msgstr "E-Mails" + msgid "entries will be ommitted." msgstr "Einträge werden ausgelassen. " @@ -2189,6 +2347,15 @@ msgstr "Fehler" msgid "example" msgstr "Beispiel" +msgid "female" +msgstr "weiblich" + +msgid "has saved his work on this motion." +msgstr "hat die Arbeit an diesem Antrag gespeichert." + +msgid "inactive" +msgstr "inaktiv" + msgid "inline" msgstr "innerhalb" @@ -2207,18 +2374,24 @@ msgstr "Einträge pro Seite" msgid "majority" msgstr "Mehrheit" +msgid "male" +msgstr "männlich" + +msgid "minutes" +msgstr "Minuten" + msgid "motions" msgstr "Anträge" msgid "motions-example" msgstr "Anträge-Beispiel" -msgid "needed" -msgstr "erforderlich" - msgid "needs review" msgstr "benötigt Überprüfung" +msgid "no committee" +msgstr "kein Gremium" + msgid "none" msgstr "aus" @@ -2228,9 +2401,6 @@ msgstr "nicht befasst" msgid "not decided" msgstr "nicht entschieden" -msgid "not present" -msgstr "abwesend" - msgid "not reached." msgstr "nicht erreicht." @@ -2246,6 +2416,9 @@ msgstr "Teilnehmende-Beispiel" msgid "permitted" msgstr "zugelassen" +msgid "present" +msgstr "anwesend" + msgid "published" msgstr "veröffentlicht" @@ -2261,6 +2434,9 @@ msgstr "abgelehnt" msgid "rejected (not authorized)" msgstr "verworfen (nicht zulässig)" +msgid "remove group(s)" +msgstr "Gruppe(n) entfernen" + msgid "result" msgstr "Ergebnis" @@ -2270,9 +2446,6 @@ msgstr "Ergebnisse" msgid "selected" msgstr "ausgewählt" -msgid "self" -msgstr "sich selbst" - msgid "statute paragraphs have been imported." msgstr "Satzungsabschnitte wurden importiert." diff --git a/client/src/assets/i18n/template-en.pot b/client/src/assets/i18n/template-en.pot index 0f7731a1a..e626121f8 100644 --- a/client/src/assets/i18n/template-en.pot +++ b/client/src/assets/i18n/template-en.pot @@ -114,9 +114,6 @@ msgstr "" msgid "All casted ballots" msgstr "" -msgid "All selected files will be deleted!" -msgstr "" - msgid "All valid ballots" msgstr "" @@ -168,12 +165,84 @@ msgstr "" msgid "Arabic" msgstr "" +msgid "Are you sure you want to copy the final version to the print template?" +msgstr "" + +msgid "Are you sure you want to delete all selected elections?" +msgstr "" + +msgid "Are you sure you want to delete all selected files?" +msgstr "" + +msgid "Are you sure you want to delete all selected items?" +msgstr "" + +msgid "Are you sure you want to delete all selected motions?" +msgstr "" + +msgid "Are you sure you want to delete all selected participants?" +msgstr "" + +msgid "Are you sure you want to delete all speakers from this list of speakers?" +msgstr "" + +msgid "Are you sure you want to delete the print template?" +msgstr "" + +msgid "Are you sure you want to delete the selected message?" +msgstr "" + +msgid "Are you sure you want to delete this category?" +msgstr "" + +msgid "Are you sure you want to delete this change recommendation?" +msgstr "" + +msgid "Are you sure you want to delete this comment field?" +msgstr "" + +msgid "Are you sure you want to delete this countdown?" +msgstr "" + +msgid "Are you sure you want to delete this entry?" +msgstr "" + +msgid "Are you sure you want to delete this file?" +msgstr "" + +msgid "Are you sure you want to delete this group?" +msgstr "" + msgid "Are you sure you want to delete this motion?" msgstr "" +msgid "Are you sure you want to delete this participant?" +msgstr "" + +msgid "Are you sure you want to delete this projector?" +msgstr "" + +msgid "Are you sure you want to delete this statute paragraph?" +msgstr "" + +msgid "Are you sure you want to delete this tag?" +msgstr "" + msgid "Are you sure you want to delete this vote?" msgstr "" +msgid "Are you sure you want to delete this workflow?" +msgstr "" + +msgid "Are you sure you want to number all agenda items?" +msgstr "" + +msgid "Are you sure you want to renumber all motions of this category?" +msgstr "" + +msgid "Are you sure you want to send emails to all selected participants?" +msgstr "" + msgid "" "At least given name or surname have to be filled in. All other fields are " "optional and may be empty." @@ -374,6 +443,9 @@ msgstr "" msgid "Clear list" msgstr "" +msgid "Clear motion block" +msgstr "" + msgid "Clear tags" msgstr "" @@ -383,6 +455,9 @@ msgstr "" msgid "Close list of speakers" msgstr "" +msgid "Closed items" +msgstr "" + msgid "Collapse all" msgstr "" @@ -437,6 +512,9 @@ msgstr "" msgid "Create new category" msgstr "" +msgid "Create new state" +msgstr "" + msgid "Create new workflow" msgstr "" @@ -449,9 +527,6 @@ msgstr "" msgid "Current list of speakers" msgstr "" -msgid "Current list of speakers reference" -msgstr "" - msgid "Custom number of ballot papers" msgstr "" @@ -549,9 +624,6 @@ msgstr "" msgid "Do not decide" msgstr "" -msgid "Do you want to delete this file?" -msgstr "" - msgid "Does not have notes" msgstr "" @@ -658,6 +730,12 @@ msgstr "" msgid "Error" msgstr "" +msgid "Error: The new passwords do not match." +msgstr "" + +msgid "Estimated end" +msgstr "" + msgid "Event" msgstr "" @@ -742,6 +820,9 @@ msgstr "" msgid "Follow recommendations for all motions" msgstr "" +msgid "Following users are currently editing this motion:" +msgstr "" + msgid "Forgot Password?" msgstr "" @@ -784,6 +865,9 @@ msgstr "" msgid "Groups with write permissions" msgstr "" +msgid "Guest" +msgstr "" + msgid "Has notes" msgstr "" @@ -888,6 +972,9 @@ msgstr "" msgid "Invalid line number" msgstr "" +msgid "Invalid votes" +msgstr "" + msgid "Is PDF file" msgstr "" @@ -918,6 +1005,9 @@ msgstr "" msgid "Is not favorite" msgstr "" +msgid "Is not present" +msgstr "" + msgid "Is present" msgstr "" @@ -933,6 +1023,9 @@ msgstr "" msgid "Label color" msgstr "" +msgid "Last email send" +msgstr "" + msgid "Last modified" msgstr "" @@ -978,9 +1071,6 @@ msgstr "" msgid "Logout" msgstr "" -msgid "Manage the list of speakers for..." -msgstr "" - msgid "Mark speaker" msgstr "" @@ -1233,6 +1323,9 @@ msgstr "" msgid "Open" msgstr "" +msgid "Open items" +msgstr "" + msgid "Open list of speakers" msgstr "" @@ -1281,7 +1374,7 @@ msgstr "" msgid "Parallel upload" msgstr "" -msgid "Parent item" +msgid "Parent agenda item" msgstr "" msgid "Participant cannot be found" @@ -1374,6 +1467,9 @@ msgstr "" msgid "Previous" msgstr "" +msgid "Previous slides" +msgstr "" + msgid "Print ballot papers" msgstr "" @@ -1437,7 +1533,7 @@ msgstr "" msgid "Refer to committee" msgstr "" -msgid "Reference projector" +msgid "Reference projector for current list of speakers:" msgstr "" msgid "Referral to committee" @@ -1461,6 +1557,9 @@ msgstr "" msgid "Remove" msgstr "" +msgid "Remove all speakers" +msgstr "" + msgid "" "Remove all supporters of a motion if a submitter edits his motion in early " "state" @@ -1516,6 +1615,18 @@ msgstr "" msgid "Scan this QR code to open URL." msgstr "" +msgid "Scroll down" +msgstr "" + +msgid "Scroll down (big step)" +msgstr "" + +msgid "Scroll up" +msgstr "" + +msgid "Scroll up (big step)" +msgstr "" + msgid "Search" msgstr "" @@ -1558,6 +1669,9 @@ msgstr "" msgid "Serially numbered" msgstr "" +msgid "Set active status for selected participants:" +msgstr "" + msgid "Set as parent" msgstr "" @@ -1567,6 +1681,9 @@ msgstr "" msgid "Set committee ..." msgstr "" +msgid "Set committee status for selected participants:" +msgstr "" + msgid "Set hidden" msgstr "" @@ -1585,6 +1702,9 @@ msgstr "" msgid "Set presence ..." msgstr "" +msgid "Set presence status for selected participants:" +msgstr "" + msgid "Set public" msgstr "" @@ -1675,6 +1795,9 @@ msgstr "" msgid "Sort name of participants by" msgstr "" +msgid "Speakers" +msgstr "" + msgid "Special values" msgstr "" @@ -1833,15 +1956,15 @@ msgstr "" msgid "This prefix will be set if you run the automatic agenda numbering." msgstr "" +msgid "This will add or remove the following groups for all selected participants:" +msgstr "" + msgid "This will add or remove the following submitters for all selected motions:" msgstr "" msgid "This will add or remove the following tags for all selected motions:" msgstr "" -msgid "This will delete all selected motions." -msgstr "" - msgid "This will move all selected motions as childs to:" msgstr "" @@ -1901,6 +2024,9 @@ msgstr "" msgid "Topics(s) will be imported." msgstr "" +msgid "Total votes cast" +msgstr "" + msgid "Two-thirds majority" msgstr "" @@ -1944,6 +2070,9 @@ msgstr "" msgid "Username or password is not correct." msgstr "" +msgid "Valid votes" +msgstr "" + msgid "Visibility" msgstr "" @@ -1995,6 +2124,9 @@ msgstr "" msgid "Welcome to OpenSlides" msgstr "" +msgid "Which version?" +msgstr "" + msgid "" "Will be displayed as label before selected recommendation for statute " "amendments. Use an empty value to disable the recommendation system." @@ -2062,12 +2194,21 @@ msgstr "" msgid "[Space for your welcome text.]" msgstr "" +msgid "absent" +msgstr "" + msgid "accepted" msgstr "" +msgid "active" +msgstr "" + msgid "active users" msgstr "" +msgid "add group(s)" +msgstr "" + msgid "adjourned" msgstr "" @@ -2080,6 +2221,9 @@ msgstr "" msgid "by" msgstr "" +msgid "committee" +msgstr "" + msgid "connections" msgstr "" @@ -2089,6 +2233,12 @@ msgstr "" msgid "disabled" msgstr "" +msgid "diverse" +msgstr "" + +msgid "emails" +msgstr "" + msgid "entries will be ommitted." msgstr "" @@ -2098,6 +2248,15 @@ msgstr "" msgid "example" msgstr "" +msgid "female" +msgstr "" + +msgid "has saved his work on this motion." +msgstr "" + +msgid "inactive" +msgstr "" + msgid "inline" msgstr "" @@ -2116,16 +2275,22 @@ msgstr "" msgid "majority" msgstr "" +msgid "male" +msgstr "" + +msgid "minutes" +msgstr "" + msgid "motions" msgstr "" msgid "motions-example" msgstr "" -msgid "needed" +msgid "needs review" msgstr "" -msgid "needs review" +msgid "no committee" msgstr "" msgid "none" @@ -2137,9 +2302,6 @@ msgstr "" msgid "not decided" msgstr "" -msgid "not present" -msgstr "" - msgid "not reached." msgstr "" @@ -2155,6 +2317,9 @@ msgstr "" msgid "permitted" msgstr "" +msgid "present" +msgstr "" + msgid "published" msgstr "" @@ -2170,6 +2335,9 @@ msgstr "" msgid "rejected (not authorized)" msgstr "" +msgid "remove group(s)" +msgstr "" + msgid "result" msgstr "" @@ -2179,9 +2347,6 @@ msgstr "" msgid "selected" msgstr "" -msgid "self" -msgstr "" - msgid "statute paragraphs have been imported." msgstr "" diff --git a/client/src/styles.scss b/client/src/styles.scss index 44cd99000..e93afef84 100644 --- a/client/src/styles.scss +++ b/client/src/styles.scss @@ -52,7 +52,7 @@ * { font-family: OSFont, Fira Sans, Roboto, Arial, Helvetica, sans-serif; } -.mat-toolbar h2 { +.mat-toolbar h2, .mat-dialog-title { font-family: OSFont, Fira Sans, Roboto, Arial, Helvetica, sans-serif !important; }