From 179884cf93641be52b28790933879aa77145a8fb Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 21 May 2020 15:08:42 -0400 Subject: [PATCH 1/6] New translations messages.json (German) (#540) --- src/locales/de/messages.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/locales/de/messages.json b/src/locales/de/messages.json index 17a830bf07..43bda3fdaa 100644 --- a/src/locales/de/messages.json +++ b/src/locales/de/messages.json @@ -2153,7 +2153,7 @@ "message": "Administrator" }, "adminDesc": { - "message": "Administratoren können auf alle Elemente, Sammlungen und Benutzer in der Organisation zugreifen und diese verwalten." + "message": "Administratoren können auf alle Einträge, Sammlungen und Benutzer in der Organisation zugreifen und diese verwalten." }, "user": { "message": "Benutzer" @@ -2276,7 +2276,7 @@ } }, "viewedPasswordItemId": { - "message": "Passwort für Element $ID$ kopiert.", + "message": "Passwort für Eintrag $ID$ angesehen.", "placeholders": { "id": { "content": "$1", @@ -2285,7 +2285,7 @@ } }, "viewedHiddenFieldItemId": { - "message": "Verstecktes Feld für Element $ID$ angesehen.", + "message": "Verstecktes Feld für Eintrag $ID$ angesehen.", "placeholders": { "id": { "content": "$1", @@ -2294,7 +2294,7 @@ } }, "viewedSecurityCodeItemId": { - "message": "Sicherheitscode für Element $ID$ angesehen.", + "message": "Sicherheitscode für Eintrag $ID$ angesehen.", "placeholders": { "id": { "content": "$1", @@ -2303,7 +2303,7 @@ } }, "copiedPasswordItemId": { - "message": "Passwort für Element $ID$ kopiert.", + "message": "Passwort für Eintrag $ID$ kopiert.", "placeholders": { "id": { "content": "$1", @@ -2312,7 +2312,7 @@ } }, "copiedHiddenFieldItemId": { - "message": "Verstecktes Feld für Element $ID$ kopiert.", + "message": "Verstecktes Feld für Eintrag $ID$ kopiert.", "placeholders": { "id": { "content": "$1", @@ -2321,7 +2321,7 @@ } }, "copiedSecurityCodeItemId": { - "message": "Sicherheitscode für Element $ID$ kopiert.", + "message": "Sicherheitscode für Eintrag $ID$ kopiert.", "placeholders": { "id": { "content": "$1", @@ -2330,7 +2330,7 @@ } }, "autofilledItemId": { - "message": "Element $ID$ automatisch ausgefüllt.", + "message": "Eintrag $ID$ automatisch ausgefüllt.", "placeholders": { "id": { "content": "$1", @@ -3080,7 +3080,7 @@ "message": "Dauerhaft gelöschte Einträge" }, "permanentlyDeleteSelectedItemsDesc": { - "message": "Sie haben $COUNT$ Eintrag/Einträge zum unwiderruflichen Löschen ausgewählt. Sind Sie sicher, dass Sie alle diese(n) Eintrag/Einträge dauerhaft löschen möchten?", + "message": "Sie haben $COUNT$ Eintrag/Einträge zum unwiderruflichen Löschen ausgewählt. Sind Sie sicher, dass Sie diese(n) Eintrag/Einträge dauerhaft löschen möchten?", "placeholders": { "count": { "content": "$1", @@ -3119,7 +3119,7 @@ "message": "Einträge wiederherstellen" }, "restoreSelectedItemsDesc": { - "message": "Sie haben $COUNT$ Eintrag/Einträge zum Wiederherstellen ausgewählt. Sind Sie sicher, dass Sie alle diese Einträge wiederherstellen möchten?", + "message": "Sie haben $COUNT$ Eintrag/Einträge zum Wiederherstellen ausgewählt. Sind Sie sicher, dass Sie diese(n) Eintrag/Einträge dauerhaft löschen möchten?", "placeholders": { "count": { "content": "$1", From 7301158e54ac0509c46874ef0d136b3bca84d6d0 Mon Sep 17 00:00:00 2001 From: Vincent Salucci <26154748+vincentsalucci@users.noreply.github.com> Date: Fri, 22 May 2020 11:26:43 -0500 Subject: [PATCH 2/6] [Paging] Added for Organization Users, Pages, and Collections (#539) * Updating jslib * Added paging for Organizational Users, Groups, and Collections * Updated jslib fb7335b -> 2858724 --- .../manage/collections.component.html | 6 ++- .../manage/collections.component.ts | 44 ++++++++++++++++++- .../manage/groups.component.html | 5 ++- .../organizations/manage/groups.component.ts | 43 +++++++++++++++++- .../manage/people.component.html | 6 ++- .../organizations/manage/people.component.ts | 43 +++++++++++++++++- 6 files changed, 138 insertions(+), 9 deletions(-) diff --git a/src/app/organizations/manage/collections.component.html b/src/app/organizations/manage/collections.component.html index f3a00cb4a1..cb46655714 100644 --- a/src/app/organizations/manage/collections.component.html +++ b/src/app/organizations/manage/collections.component.html @@ -16,9 +16,11 @@ {{'loading' | i18n}} - +

{{'noCollectionsInList' | i18n}}

- +
diff --git a/src/app/organizations/manage/collections.component.ts b/src/app/organizations/manage/collections.component.ts index 13380de321..03a8184156 100644 --- a/src/app/organizations/manage/collections.component.ts +++ b/src/app/organizations/manage/collections.component.ts @@ -14,6 +14,7 @@ import { ApiService } from 'jslib/abstractions/api.service'; import { CollectionService } from 'jslib/abstractions/collection.service'; import { I18nService } from 'jslib/abstractions/i18n.service'; import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; +import { SearchService } from 'jslib/abstractions/search.service'; import { UserService } from 'jslib/abstractions/user.service'; import { CollectionData } from 'jslib/models/data/collectionData'; @@ -40,15 +41,20 @@ export class CollectionsComponent implements OnInit { loading = true; organizationId: string; collections: CollectionView[]; + pagedCollections: CollectionView[]; searchText: string; + protected didScroll = false; + protected pageSize = 100; + + private pagedCollectionsCount = 0; private modal: ModalComponent = null; constructor(private apiService: ApiService, private route: ActivatedRoute, private collectionService: CollectionService, private componentFactoryResolver: ComponentFactoryResolver, private analytics: Angulartics2, private toasterService: ToasterService, private i18nService: I18nService, private platformUtilsService: PlatformUtilsService, - private userService: UserService) { } + private userService: UserService, private searchService: SearchService) { } async ngOnInit() { this.route.parent.parent.params.subscribe(async (params) => { @@ -74,9 +80,27 @@ export class CollectionsComponent implements OnInit { const collections = response.data.filter((c) => c.organizationId === this.organizationId).map((r) => new Collection(new CollectionData(r as CollectionDetailsResponse))); this.collections = await this.collectionService.decryptMany(collections); + this.resetPaging(); this.loading = false; } + loadMore() { + if (this.collections.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedCollections.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) { + pagedSize = this.pagedCollectionsCount; + } + if (this.collections.length > pagedLength) { + this.pagedCollections = + this.pagedCollections.concat(this.collections.slice(pagedLength, pagedLength + pagedSize)); + } + this.pagedCollectionsCount = this.pagedCollections.length; + this.didScroll = this.pagedCollections.length > this.pageSize; + } + edit(collection: CollectionView) { if (this.modal != null) { this.modal.close(); @@ -147,10 +171,28 @@ export class CollectionsComponent implements OnInit { }); } + async resetPaging() { + this.pagedCollections = []; + this.loadMore(); + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.collections.length > this.pageSize; + } + private removeCollection(collection: CollectionView) { const index = this.collections.indexOf(collection); if (index > -1) { this.collections.splice(index, 1); + this.resetPaging(); } } } diff --git a/src/app/organizations/manage/groups.component.html b/src/app/organizations/manage/groups.component.html index 045668bb9f..5af3d3f89b 100644 --- a/src/app/organizations/manage/groups.component.html +++ b/src/app/organizations/manage/groups.component.html @@ -16,9 +16,10 @@ {{'loading' | i18n}} - +

{{'noGroupsInList' | i18n}}

- +
diff --git a/src/app/organizations/manage/groups.component.ts b/src/app/organizations/manage/groups.component.ts index a2a77e9a07..732aef16f5 100644 --- a/src/app/organizations/manage/groups.component.ts +++ b/src/app/organizations/manage/groups.component.ts @@ -16,6 +16,7 @@ import { Angulartics2 } from 'angulartics2'; import { ApiService } from 'jslib/abstractions/api.service'; import { I18nService } from 'jslib/abstractions/i18n.service'; import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; +import { SearchService } from 'jslib/abstractions/search.service'; import { UserService } from 'jslib/abstractions/user.service'; import { GroupResponse } from 'jslib/models/response/groupResponse'; @@ -37,15 +38,20 @@ export class GroupsComponent implements OnInit { loading = true; organizationId: string; groups: GroupResponse[]; + pagedGroups: GroupResponse[]; searchText: string; + protected didScroll = false; + protected pageSize = 100; + + private pagedGroupsCount = 0; private modal: ModalComponent = null; constructor(private apiService: ApiService, private route: ActivatedRoute, private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver, private analytics: Angulartics2, private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService, private userService: UserService, - private router: Router) { } + private router: Router, private searchService: SearchService) { } async ngOnInit() { this.route.parent.parent.params.subscribe(async (params) => { @@ -70,9 +76,26 @@ export class GroupsComponent implements OnInit { const groups = response.data != null && response.data.length > 0 ? response.data : []; groups.sort(Utils.getSortFunction(this.i18nService, 'name')); this.groups = groups; + this.resetPaging(); this.loading = false; } + loadMore() { + if (this.groups.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedGroups.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) { + pagedSize = this.pagedGroupsCount; + } + if (this.groups.length > pagedLength) { + this.pagedGroups = this.pagedGroups.concat(this.groups.slice(pagedLength, pagedLength + pagedSize)); + } + this.pagedGroupsCount = this.pagedGroups.length; + this.didScroll = this.pagedGroups.length > this.pageSize; + } + edit(group: GroupResponse) { if (this.modal != null) { this.modal.close(); @@ -142,10 +165,28 @@ export class GroupsComponent implements OnInit { }); } + async resetPaging() { + this.pagedGroups = []; + this.loadMore(); + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.groups.length > this.pageSize; + } + private removeGroup(group: GroupResponse) { const index = this.groups.indexOf(group); if (index > -1) { this.groups.splice(index, 1); + this.resetPaging(); } } } diff --git a/src/app/organizations/manage/people.component.html b/src/app/organizations/manage/people.component.html index 9ecb31e332..5473f75e3e 100644 --- a/src/app/organizations/manage/people.component.html +++ b/src/app/organizations/manage/people.component.html @@ -35,13 +35,15 @@ {{'loading' | i18n}} - +

{{'noUsersInList' | i18n}}

{{'usersNeedConfirmed' | i18n}} - +
diff --git a/src/app/organizations/manage/people.component.ts b/src/app/organizations/manage/people.component.ts index 9733e4b378..43f3d68b8a 100644 --- a/src/app/organizations/manage/people.component.ts +++ b/src/app/organizations/manage/people.component.ts @@ -19,6 +19,7 @@ import { ApiService } from 'jslib/abstractions/api.service'; import { CryptoService } from 'jslib/abstractions/crypto.service'; import { I18nService } from 'jslib/abstractions/i18n.service'; import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; +import { SearchService } from 'jslib/abstractions/search.service'; import { StorageService } from 'jslib/abstractions/storage.service'; import { UserService } from 'jslib/abstractions/user.service'; @@ -50,6 +51,7 @@ export class PeopleComponent implements OnInit { loading = true; organizationId: string; users: OrganizationUserUserDetailsResponse[]; + pagedUsers: OrganizationUserUserDetailsResponse[]; searchText: string; status: OrganizationUserStatusType = null; statusMap = new Map(); @@ -59,6 +61,10 @@ export class PeopleComponent implements OnInit { accessEvents = false; accessGroups = false; + protected didScroll = false; + protected pageSize = 100; + + private pagedUsersCount = 0; private modal: ModalComponent = null; private allUsers: OrganizationUserUserDetailsResponse[]; @@ -67,7 +73,7 @@ export class PeopleComponent implements OnInit { private platformUtilsService: PlatformUtilsService, private analytics: Angulartics2, private toasterService: ToasterService, private cryptoService: CryptoService, private userService: UserService, private router: Router, - private storageService: StorageService) { } + private storageService: StorageService, private searchService: SearchService) { } async ngOnInit() { this.route.parent.parent.params.subscribe(async (params) => { @@ -119,6 +125,23 @@ export class PeopleComponent implements OnInit { } else { this.users = this.allUsers; } + this.resetPaging(); + } + + loadMore() { + if (this.users.length <= this.pageSize) { + return; + } + const pagedLength = this.pagedUsers.length; + let pagedSize = this.pageSize; + if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) { + pagedSize = this.pagedUsersCount; + } + if (this.users.length > pagedLength) { + this.pagedUsers = this.pagedUsers.concat(this.users.slice(pagedLength, pagedLength + pagedSize)); + } + this.pagedUsersCount = this.pagedUsers.length; + this.didScroll = this.pagedUsers.length > this.pageSize; } get allCount() { @@ -294,6 +317,23 @@ export class PeopleComponent implements OnInit { }); } + async resetPaging() { + this.pagedUsers = []; + this.loadMore(); + } + + isSearching() { + return this.searchService.isSearchable(this.searchText); + } + + isPaging() { + const searching = this.isSearching(); + if (searching && this.didScroll) { + this.resetPaging(); + } + return !searching && this.users.length > this.pageSize; + } + private async doConfirmation(user: OrganizationUserUserDetailsResponse) { const orgKey = await this.cryptoService.getOrgKey(this.organizationId); const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId); @@ -313,6 +353,7 @@ export class PeopleComponent implements OnInit { let index = this.users.indexOf(user); if (index > -1) { this.users.splice(index, 1); + this.resetPaging(); } if (this.statusMap.has(OrganizationUserStatusType.Accepted)) { index = this.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user); From 18979a7f1a28d7ce88c2963e50b387ccb5de21cb Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 22 May 2020 23:14:26 -0400 Subject: [PATCH 3/6] Add support for greek language (#541) --- src/app/app.module.ts | 2 ++ src/services/i18n.service.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 1624fa7d84..afc753a0cb 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -179,6 +179,7 @@ import localeCa from '@angular/common/locales/ca'; import localeCs from '@angular/common/locales/cs'; import localeDa from '@angular/common/locales/da'; import localeDe from '@angular/common/locales/de'; +import localeEl from '@angular/common/locales/el'; import localeEnGb from '@angular/common/locales/en-GB'; import localeEs from '@angular/common/locales/es'; import localeEt from '@angular/common/locales/et'; @@ -203,6 +204,7 @@ registerLocaleData(localeCa, 'ca'); registerLocaleData(localeCs, 'cs'); registerLocaleData(localeDa, 'da'); registerLocaleData(localeDe, 'de'); +registerLocaleData(localeEl, 'el'); registerLocaleData(localeEnGb, 'en-GB'); registerLocaleData(localeEs, 'es'); registerLocaleData(localeEt, 'et'); diff --git a/src/services/i18n.service.ts b/src/services/i18n.service.ts index 765892eb0d..b487185945 100644 --- a/src/services/i18n.service.ts +++ b/src/services/i18n.service.ts @@ -11,7 +11,7 @@ export class I18nService extends BaseI18nService { }); this.supportedTranslationLocales = [ - 'en', 'ca', 'cs', 'da', 'de', 'en-GB', 'es', 'et', 'fr', 'he', 'it', 'ja', 'ko', 'nb', 'nl', 'pl', + 'en', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', 'es', 'et', 'fr', 'he', 'it', 'ja', 'ko', 'nb', 'nl', 'pl', 'pt-PT', 'pt-BR', 'ru', 'sk', 'sv', 'uk', 'zh-CN', 'zh-TW', ]; } From 9454eda082609ea1237585c4b644478c8afd51e6 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 26 May 2020 10:31:40 -0400 Subject: [PATCH 4/6] New Crowdin translations (#544) * New translations messages.json (Afrikaans) * New translations messages.json (German) * New translations messages.json (Finnish) * New translations messages.json (Italian) * New translations messages.json (Polish) * New translations messages.json (English, United Kingdom) --- src/locales/af/messages.json | 218 ++++++++++++++++---------------- src/locales/de/messages.json | 14 +- src/locales/en_GB/messages.json | 10 +- src/locales/fi/messages.json | 2 +- src/locales/it/messages.json | 54 ++++---- src/locales/pl/messages.json | 2 +- 6 files changed, 150 insertions(+), 150 deletions(-) diff --git a/src/locales/af/messages.json b/src/locales/af/messages.json index 3591a3a244..3b59ffb478 100644 --- a/src/locales/af/messages.json +++ b/src/locales/af/messages.json @@ -1833,10 +1833,10 @@ "message": "Organizations allow you to share parts of your vault with others as well as manage related users for a specific entity such as a family, small team, or large company." }, "generalInformation": { - "message": "General Information" + "message": "Algemene Inligting" }, "organizationName": { - "message": "Organization Name" + "message": "Organisasienaam" }, "accountOwnedBusiness": { "message": "This account is owned by a business." @@ -1848,10 +1848,10 @@ "message": "Business Name" }, "chooseYourPlan": { - "message": "Choose Your Plan" + "message": "Kies U Plan" }, "users": { - "message": "Users" + "message": "Gebruikers" }, "userSeats": { "message": "User Seats" @@ -1879,7 +1879,7 @@ "message": "How many user seats do you need? You can also add additional seats later if needed." }, "planNameFree": { - "message": "Free", + "message": "Gratis", "description": "Free as in 'free beer'." }, "planDescFree": { @@ -1892,16 +1892,16 @@ } }, "planNameFamilies": { - "message": "Families" + "message": "Gesinne" }, "planDescFamilies": { - "message": "For personal use, to share with family & friends." + "message": "Vir persoonlike gebruik om met vriende en familie te deel." }, "planNameTeams": { - "message": "Teams" + "message": "Spanne" }, "planDescTeams": { - "message": "For businesses and other team organizations." + "message": "Vir sake- en ander spanorganisasies." }, "planNameEnterprise": { "message": "Enterprise" @@ -1910,10 +1910,10 @@ "message": "For businesses and other large organizations." }, "freeForever": { - "message": "Free Forever" + "message": "Altyd Gratis" }, "includesXUsers": { - "message": "includes $COUNT$ users", + "message": "sluit $COUNT$ gebruikers in", "placeholders": { "count": { "content": "$1", @@ -1922,10 +1922,10 @@ } }, "additionalUsers": { - "message": "Additional Users" + "message": "Bykomende Gebruikers" }, "costPerUser": { - "message": "$COST$ per user", + "message": "$COST$ per gebruiker", "placeholders": { "cost": { "content": "$1", @@ -2006,76 +2006,76 @@ } }, "monthly": { - "message": "Monthly" + "message": "Maandeliks" }, "annually": { - "message": "Annually" + "message": "Jaarliks" }, "basePrice": { - "message": "Base Price" + "message": "Basisprys" }, "organizationCreated": { - "message": "Organization Created" + "message": "Organisasie Geskep" }, "organizationReadyToGo": { - "message": "Your new organization is ready to go!" + "message": "U nuwe organisasie is gereed vir gebruik!" }, "organizationUpgraded": { - "message": "Your organization has been upgraded." + "message": "U organisasie is opgegradeer." }, "leave": { - "message": "Leave" + "message": "Verlaat" }, "leaveOrganizationConfirmation": { - "message": "Are you sure you want to leave this organization?" + "message": "Is u seker u wil hierdie organisasie verlaat?" }, "leftOrganization": { - "message": "You have left the organization." + "message": "U het die organisasie verlaat." }, "defaultCollection": { - "message": "Default Collection" + "message": "Verstekversameling" }, "getHelp": { - "message": "Get Help" + "message": "Kry Hulp" }, "getApps": { - "message": "Get the Apps" + "message": "Kry die Toeps" }, "loggedInAs": { - "message": "Logged in as" + "message": "Aangeteken as" }, "eventLogs": { "message": "Event Logs" }, "people": { - "message": "People" + "message": "Mense" }, "policies": { - "message": "Policies" + "message": "Beleide" }, "editPolicy": { - "message": "Edit Policy" + "message": "Wysig Beleid" }, "groups": { - "message": "Groups" + "message": "Groepe" }, "newGroup": { - "message": "New Group" + "message": "Nuwe Groep" }, "addGroup": { - "message": "Add Group" + "message": "Voeg Groep Toe" }, "editGroup": { - "message": "Edit Group" + "message": "Wysig Groep" }, "deleteGroupConfirmation": { - "message": "Are you sure you want to delete this group?" + "message": "Is u seker u wil hierdie groep skrap?" }, "removeUserConfirmation": { - "message": "Are you sure you want to remove this user?" + "message": "Is u seker u wil hierdie gebruiker verwyder?" }, "externalId": { - "message": "External Id" + "message": "Eksterne ID" }, "externalIdDesc": { "message": "The external id can be used as a reference or to link this resource to an external system such as a user directory." @@ -2084,31 +2084,31 @@ "message": "Access Control" }, "groupAccessAllItems": { - "message": "This group can access and modify all items." + "message": "Hierdie groep het toegang tot alle items en kan dit wysig." }, "groupAccessSelectedCollections": { - "message": "This group can access only the selected collections." + "message": "Hierdie groep het slegs toegang tot die gekose versamelings." }, "readOnly": { - "message": "Read Only" + "message": "Leesalleen" }, "newCollection": { - "message": "New Collection" + "message": "Nuwe Versameling" }, "addCollection": { - "message": "Add Collection" + "message": "Voeg Versameling Toe" }, "editCollection": { - "message": "Edit Collection" + "message": "Wysig Versameling" }, "deleteCollectionConfirmation": { - "message": "Are you sure you want to delete this collection?" + "message": "Is u seker u wil hierdie versameling skrap?" }, "editUser": { - "message": "Edit User" + "message": "Wysig Gebruiker" }, "inviteUser": { - "message": "Invite User" + "message": "Nooi Gebruiker Uit" }, "inviteUserDesc": { "message": "Invite a new user to your organization by entering their Bitwarden account email address below. If they do not have a Bitwarden account already, they will be prompted to create a new account." @@ -2132,7 +2132,7 @@ "message": "This user can access only the selected collections." }, "search": { - "message": "Search" + "message": "Soek" }, "invited": { "message": "Invited" @@ -2156,55 +2156,55 @@ "message": "Admins can access and manage all items, collections and users in your organization." }, "user": { - "message": "User" + "message": "Gebruiker" }, "userDesc": { "message": "A regular user with access to assigned collections in your organization." }, "manager": { - "message": "Manager" + "message": "Bestuurder" }, "managerDesc": { - "message": "Managers can access and manage assigned collections in your organization." + "message": "Bestuurders bestuur en het toegang tot toegewysde versamelings in u organisasie." }, "all": { - "message": "All" + "message": "Alle" }, "refresh": { - "message": "Refresh" + "message": "Verfris" }, "timestamp": { - "message": "Timestamp" + "message": "Tydstempel" }, "event": { - "message": "Event" + "message": "Gebeurtenis" }, "unknown": { - "message": "Unknown" + "message": "Onbekend" }, "loadMore": { - "message": "Load More" + "message": "Laai Meer" }, "mobile": { - "message": "Mobile", + "message": "Mobiel", "description": "Mobile app" }, "extension": { - "message": "Extension", + "message": "Uitbreiding", "description": "Browser extension/addon" }, "desktop": { - "message": "Desktop", + "message": "Werkskerm", "description": "Desktop app" }, "webVault": { - "message": "Web Vault" + "message": "Webkluis" }, "loggedIn": { - "message": "Logged in." + "message": "Aangeteken." }, "changedPassword": { - "message": "Changed account password." + "message": "Rekeningwagwoord is verander." }, "enabledUpdated2fa": { "message": "Enabled/updated two-step login." @@ -2474,37 +2474,37 @@ } }, "device": { - "message": "Device" + "message": "Toestel" }, "view": { - "message": "View" + "message": "Bekyk" }, "invalidDateRange": { - "message": "Invalid date range." + "message": "Ongeldige datumbereik." }, "errorOccurred": { - "message": "An error has occurred." + "message": "’n Fout het voorgekom." }, "userAccess": { - "message": "User Access" + "message": "Gebruikertoegang" }, "userType": { - "message": "User Type" + "message": "Gebruikertipe" }, "groupAccess": { - "message": "Group Access" + "message": "Groeptoegang" }, "groupAccessUserDesc": { "message": "Edit the groups that this user belongs to." }, "invitedUsers": { - "message": "Invited user(s)." + "message": "Gebruiker(s) genooi." }, "resendInvitation": { "message": "Resend Invitation" }, "hasBeenReinvited": { - "message": "$USER$ has been reinvited.", + "message": "$USER$ is weer uitgenooi.", "placeholders": { "user": { "content": "$1", @@ -2516,10 +2516,10 @@ "message": "Bevestig" }, "confirmUser": { - "message": "Confirm User" + "message": "Bevestig Gebruiker" }, "hasBeenConfirmed": { - "message": "$USER$ has been confirmed.", + "message": "$USER$ is bevestig.", "placeholders": { "user": { "content": "$1", @@ -2528,7 +2528,7 @@ } }, "confirmUsers": { - "message": "Confirm Users" + "message": "Bevestig Gebruikers" }, "usersNeedConfirmed": { "message": "You have users that have accepted their invitation, but still need to be confirmed. Users will not have access to the organization until they are confirmed." @@ -2558,7 +2558,7 @@ "message": "Unable to verify your email. Try sending a new verification email." }, "updateBrowser": { - "message": "Update Browser" + "message": "Werk Blaaier By" }, "updateBrowserDesc": { "message": "You are using an unsupported web browser. The web vault may not function properly." @@ -2570,7 +2570,7 @@ "message": "You've been invited to join the organization listed above. To accept the invitation, you need to log in or create a new Bitwarden account." }, "inviteAccepted": { - "message": "Invitation Accepted" + "message": "Uitnodiging is Aanvaar" }, "inviteAcceptedDesc": { "message": "You can access this organization once an administrator confirms your membership. We'll send you an email when that happens." @@ -2612,25 +2612,25 @@ "message": "You have requested to delete your Bitwarden account. Click the button below to confirm." }, "myOrganization": { - "message": "My Organization" + "message": "My Organisasie" }, "deleteOrganization": { - "message": "Delete Organization" + "message": "Skrap Organisasie" }, "deleteOrganizationDesc": { - "message": "Proceed below to delete this organization and all associated data. Individual user accounts will remain, though they will not be associated to this organization anymore. " + "message": "Gaan hieronder voort om hierdie organisasie en alle verwante data te skrap. Individuele gebruikersrekeninge bly bestaan maar sal nie meer aan hierdie organisasie gekoppel wees nie. " }, "deleteOrganizationWarning": { - "message": "Deleting the organization is permanent. It cannot be undone." + "message": "Skrap van die organisasie is permanent. Dit kan nie ontdaan word nie." }, "organizationDeleted": { - "message": "Organization Deleted" + "message": "Organisasie Geskrap" }, "organizationDeletedDesc": { - "message": "The organization and all associated data has been deleted." + "message": "Die organisasie en alle verwante data is geskrap." }, "organizationUpdated": { - "message": "Organization updated" + "message": "Organisasie bygewerk" }, "taxInformation": { "message": "Belastinginligting" @@ -2808,7 +2808,7 @@ "description": "A policy is something like Terms of Service, Privacy Policy, etc." }, "termsOfService": { - "message": "Terms of Service" + "message": "Gebruiksvoorwaardes" }, "privacyPolicy": { "message": "Privaatheidsbeleid" @@ -2967,13 +2967,13 @@ "message": "U moet u intekening bestuur vanuit die winkel waarin u toepgebonde aankoop gedoen is." }, "minLength": { - "message": "Minimum Length" + "message": "Minimum lengte" }, "clone": { - "message": "Clone" + "message": "Kloon" }, "masterPassPolicyDesc": { - "message": "Set minimum requirements for master password strength." + "message": "Stel minimum vereistes vir hoofwagwoordsterkte." }, "twoStepLoginPolicyDesc": { "message": "Require users to set up two-step login on their personal accounts." @@ -2985,16 +2985,16 @@ "message": "You are a member of an organization that requires two-step login to be enabled on your user account. If you disable all two-step login providers you will be automatically removed from these organizations." }, "passwordGeneratorPolicyDesc": { - "message": "Set minimum requirements for password generator configuration." + "message": "Stel minimum vereistes vir opstelling van wagwoordgenereerder." }, "passwordGeneratorPolicyInEffect": { - "message": "One or more organization policies are affecting your generator settings." + "message": "Een of meer organisasiebeleide beïnvloed u genereerderinstellings." }, "masterPasswordPolicyInEffect": { - "message": "One or more organization policies require your master password to meet the following requirements:" + "message": "Een of meer organisasiebeleide stel die volgende eise aan u hoofwagwoord:" }, "policyInEffectMinComplexity": { - "message": "Minimum complexity score of $SCORE$", + "message": "Minimum ingewikkeldheidstelling van $SCORE$", "placeholders": { "score": { "content": "$1", @@ -3003,7 +3003,7 @@ } }, "policyInEffectMinLength": { - "message": "Minimum length of $LENGTH$", + "message": "Minimum lengte van $LENGTH$", "placeholders": { "length": { "content": "$1", @@ -3012,16 +3012,16 @@ } }, "policyInEffectUppercase": { - "message": "Contain one or more uppercase characters" + "message": "Bevat een of meer hoofletterkarakters" }, "policyInEffectLowercase": { - "message": "Contain one or more lowercase characters" + "message": "Bevat een of meer kleinletterkarakters" }, "policyInEffectNumbers": { - "message": "Contain one or more numbers" + "message": "Bevat een of meer syfers" }, "policyInEffectSpecial": { - "message": "Contain one or more of the following special characters $CHARS$", + "message": "Bevat een of meer van die volgende spesiale karakters $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -3030,16 +3030,16 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Your new master password does not meet the policy requirements." + "message": "U nuwe hoofwagwoord voldoen nie aan die beleidsvereistes nie." }, "minimumNumberOfWords": { - "message": "Minimum Number of Words" + "message": "Minimum Aantal Woorde" }, "defaultType": { - "message": "Default Type" + "message": "Verstektipe" }, "userPreference": { - "message": "User Preference" + "message": "Gebruikersvoorkeure" }, "vaultTimeoutAction": { "message": "Vault Timeout Action" @@ -3051,33 +3051,33 @@ "message": "A logged out vault requires that you re-authenticate to access it again." }, "lock": { - "message": "Lock", + "message": "Vergrendel", "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Trash", + "message": "Asblik", "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" }, "searchTrash": { - "message": "Search Trash" + "message": "Deursoek Asblik" }, "permanentlyDelete": { - "message": "Permanently Delete" + "message": "Skrap Permanent" }, "permanentlyDeleteSelected": { - "message": "Permanently Delete Selected" + "message": "Skrap Gekose Permanent" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Skrap Item Permanent" }, "permanentlyDeleteItemConfirmation": { - "message": "Are you sure you want to permanently delete this item?" + "message": "Is u seker u wil hierdie item permanent skrap?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Permanent Geskrapte Item" }, "permanentlyDeletedItems": { - "message": "Permanently Deleted items" + "message": "Permanent Geskrapte Items" }, "permanentlyDeleteSelectedItemsDesc": { "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", @@ -3089,7 +3089,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Permanently Deleted item $ID$.", + "message": "Permanent Geskrapte Items $ID$.", "placeholders": { "id": { "content": "$1", diff --git a/src/locales/de/messages.json b/src/locales/de/messages.json index 43bda3fdaa..53b2af0300 100644 --- a/src/locales/de/messages.json +++ b/src/locales/de/messages.json @@ -854,7 +854,7 @@ "message": "E-Mail-Adresse ändern" }, "newEmail": { - "message": "Neue E-Mail Adresse" + "message": "Neue E-Mail-Adresse" }, "code": { "message": "Code" @@ -1032,7 +1032,7 @@ "message": "Ändern Sie die Sprache für den Web-Tresor." }, "disableIcons": { - "message": "Webseiten Icons deaktivieren" + "message": "Website-Icons deaktivieren" }, "disableIconsDesc": { "message": "Website-Icons zeigen ein wiedererkennbares Bild neben jedem Eintrag in Ihrem Tresor." @@ -1048,16 +1048,16 @@ "message": "Standard" }, "domainRules": { - "message": "Domänenregeln" + "message": "Domain-Regeln" }, "domainRulesDesc": { "message": "Wenn Sie die gleiche Anmeldung über mehrere verschiedene Webseitendomänen hinweg haben, können Sie die Webseite als \"gleichwertig\" markieren. \"Globale\" Domänen wurden bereits von Bitwarden für Sie angelegt." }, "globalEqDomains": { - "message": "Globale gleichwertige Domänen" + "message": "Globale gleichwertige Domains" }, "customEqDomains": { - "message": "Benutzerdefinierte gleichwertige Domänen" + "message": "Benutzerdefinierte gleichwertige Domains" }, "exclude": { "message": "Ausschließen" @@ -3012,10 +3012,10 @@ } }, "policyInEffectUppercase": { - "message": "Enthält ein oder mehrere Großbuchstaben" + "message": "Enthält einen oder mehrere Großbuchstaben" }, "policyInEffectLowercase": { - "message": "Enthält ein oder mehrere Kleinbuchstaben" + "message": "Enthält einen oder mehrere Kleinbuchstaben" }, "policyInEffectNumbers": { "message": "Enthält eine oder mehrere Zahlen" diff --git a/src/locales/en_GB/messages.json b/src/locales/en_GB/messages.json index 32cedd5f25..d15c21696f 100644 --- a/src/locales/en_GB/messages.json +++ b/src/locales/en_GB/messages.json @@ -461,10 +461,10 @@ "message": "Are you sure you want to delete this item?" }, "deletedItem": { - "message": "Deleted item" + "message": "Item sent to bin" }, "deletedItems": { - "message": "Deleted items" + "message": "Items sent to bin" }, "movedItems": { "message": "Moved items" @@ -2249,7 +2249,7 @@ } }, "deletedItemId": { - "message": "Deleted item $ID$.", + "message": "Sent item $ID$ to bin.", "placeholders": { "id": { "content": "$1", @@ -3055,11 +3055,11 @@ "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Rubbish", + "message": "Bin", "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" }, "searchTrash": { - "message": "Search rubbish" + "message": "Search bin" }, "permanentlyDelete": { "message": "Permanently delete" diff --git a/src/locales/fi/messages.json b/src/locales/fi/messages.json index 3abbc0b3eb..e04ae3928e 100644 --- a/src/locales/fi/messages.json +++ b/src/locales/fi/messages.json @@ -1485,7 +1485,7 @@ "message": "Breached Accounts Found" }, "compromisedData": { - "message": "Compromised data" + "message": "Vaarantunutta tietoa" }, "website": { "message": "Sivusto" diff --git a/src/locales/it/messages.json b/src/locales/it/messages.json index bf9e2bcbb2..1f8782108e 100644 --- a/src/locales/it/messages.json +++ b/src/locales/it/messages.json @@ -2817,10 +2817,10 @@ "message": "Filtri" }, "vaultTimeout": { - "message": "Vault Timeout" + "message": "Timeout Cassaforte" }, "vaultTimeoutDesc": { - "message": "Choose when your vault will timeout and perform the selected action." + "message": "Scegli quando la tua cassaforte andrà in timeout ed esegui l'azione selezionata." }, "oneMinute": { "message": "1 minuto" @@ -3042,45 +3042,45 @@ "message": "Preferenze utente" }, "vaultTimeoutAction": { - "message": "Vault Timeout Action" + "message": "Azione Timeout Cassaforte" }, "vaultTimeoutActionLockDesc": { - "message": "Scegli quando bloccare la tua cassaforte. Una cassaforte bloccata richiede l'inserimento della password principale per potervi accedere." + "message": "Una cassaforte bloccata richiede l'inserimento della password principale per accedere nuovamente." }, "vaultTimeoutActionLogOutDesc": { - "message": "A logged out vault requires that you re-authenticate to access it again." + "message": "La disconnessione dalla cassaforte richiede l'inserimento della password principale per accedere nuovamente." }, "lock": { - "message": "Lock", + "message": "Blocca", "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Trash", + "message": "Cestino", "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" }, "searchTrash": { - "message": "Search Trash" + "message": "Cerca nel cestino" }, "permanentlyDelete": { - "message": "Permanently Delete" + "message": "Elimina definitivamente" }, "permanentlyDeleteSelected": { - "message": "Permanently Delete Selected" + "message": "Elimina definitivamente l'elemento selezionato" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Elimina definitivamente l'elemento" }, "permanentlyDeleteItemConfirmation": { - "message": "Are you sure you want to permanently delete this item?" + "message": "Sei sicuro di voler eliminare definitivamente questo elemento?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Elimina definitivamente l'elemento" }, "permanentlyDeletedItems": { - "message": "Permanently Deleted items" + "message": "Elimina definitivamente gli elementi" }, "permanentlyDeleteSelectedItemsDesc": { - "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "message": "Hai selezionato $COUNT$ elemento/i da eliminare definitivamente. Sei sicuro di voler eliminare definitivamente tutti gli elementi selezionati?", "placeholders": { "count": { "content": "$1", @@ -3089,7 +3089,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Permanently Deleted item $ID$.", + "message": "Elemento definitivamente eliminato $ID$.", "placeholders": { "id": { "content": "$1", @@ -3098,28 +3098,28 @@ } }, "restore": { - "message": "Restore" + "message": "Ripristina" }, "restoreSelected": { - "message": "Restore Selected" + "message": "Ripristina selezionato" }, "restoreItem": { - "message": "Restore Item" + "message": "Ripristina elemento" }, "restoredItem": { - "message": "Restored Item" + "message": "Ripristina Elemento" }, "restoredItems": { - "message": "Restored Items" + "message": "Elementi Ripristinati" }, "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" + "message": "Sei sicuro di voler ripristinare questo elemento?" }, "restoreItems": { - "message": "Restore items" + "message": "Ripristina elementi" }, "restoreSelectedItemsDesc": { - "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "message": "Hai selezionato $COUNT$ elemento/i da ripristinare. Sei sicuro di voler ripristinare tutti gli elementi selezionati?", "placeholders": { "count": { "content": "$1", @@ -3128,7 +3128,7 @@ } }, "restoredItemId": { - "message": "Restored item $ID$.", + "message": "Elemento ripristinato $ID$.", "placeholders": { "id": { "content": "$1", @@ -3137,9 +3137,9 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + "message": "La disconnessione rimuove tutti gli accessi alla tua cassaforte e richiede l'autenticazione online dopo il periodo di timeout. Sei sicuro di voler utilizzare questa impostazione?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Conferma Azione di Timeout" } } diff --git a/src/locales/pl/messages.json b/src/locales/pl/messages.json index b645bbd98f..b0a8a2aec0 100644 --- a/src/locales/pl/messages.json +++ b/src/locales/pl/messages.json @@ -1423,7 +1423,7 @@ "message": "Znaleźliśmy identyczne hasła" }, "reusedPasswordsFoundDesc": { - "message": "Znaleźliśmy hasła ($COUNT$), które powtarzają się w sejfie. Zmień je, aby były unikalne.", + "message": "Znaleźliśmy hasła, które powtarzają się w sejfie. Zmień je, aby były unikalne.", "placeholders": { "count": { "content": "$1", From d705b8ab332110711e273cc46db06569f3255e37 Mon Sep 17 00:00:00 2001 From: Vincent Salucci <26154748+vincentsalucci@users.noreply.github.com> Date: Thu, 28 May 2020 13:58:49 -0500 Subject: [PATCH 5/6] Update jslib 2858724 -> 212a2e3 (#545) --- jslib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jslib b/jslib index 2858724f44..212a2e3745 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 2858724f4431038be190fc0b748efe287dd1bae6 +Subproject commit 212a2e3745e6e0e2b3057ed308c47daf6aeefbc8 From ca771eb04cadfb9e1682d7e2de951d0ad04036fb Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 28 May 2020 20:06:27 -0400 Subject: [PATCH 6/6] New Crowdin translations (#546) * New translations messages.json (Czech) * New translations messages.json (Danish) * New translations messages.json (Portuguese) * New translations messages.json (Chinese Simplified) --- src/locales/cs/messages.json | 48 +++++++++++++------------- src/locales/da/messages.json | 60 ++++++++++++++++----------------- src/locales/pt_PT/messages.json | 12 +++---- src/locales/zh_CN/messages.json | 4 +-- 4 files changed, 62 insertions(+), 62 deletions(-) diff --git a/src/locales/cs/messages.json b/src/locales/cs/messages.json index ce53ad49c4..f1ea70a20b 100644 --- a/src/locales/cs/messages.json +++ b/src/locales/cs/messages.json @@ -2817,10 +2817,10 @@ "message": "Filtry" }, "vaultTimeout": { - "message": "Vault Timeout" + "message": "Časový limit trezoru" }, "vaultTimeoutDesc": { - "message": "Choose when your vault will timeout and perform the selected action." + "message": "Vyberte, kdy vyprší bezpečnostní limit trezoru. Poté bude provedena vybraná akce." }, "oneMinute": { "message": "Po 1 minutě" @@ -3042,16 +3042,16 @@ "message": "Uživatelská volba" }, "vaultTimeoutAction": { - "message": "Vault Timeout Action" + "message": "Akce při vypršení časového limitu" }, "vaultTimeoutActionLockDesc": { - "message": "A locked vault requires that you re-enter your master password to access it again." + "message": "Trezor bude uzamčen. Pro opětovný přístup k trezoru bude vyžadováno hlavní heslo." }, "vaultTimeoutActionLogOutDesc": { - "message": "A logged out vault requires that you re-authenticate to access it again." + "message": "Budete odhlášeni. Pro opětovný přístup k trezoru bude vyžadováno ověření." }, "lock": { - "message": "Lock", + "message": "Zamknout", "description": "Verb form: to make secure or inaccesible by" }, "trash": { @@ -3062,25 +3062,25 @@ "message": "Hledat v koši" }, "permanentlyDelete": { - "message": "Permanently Delete" + "message": "Trvale smazat" }, "permanentlyDeleteSelected": { - "message": "Permanently Delete Selected" + "message": "Trvale smazat vybrané" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Trvale smazat položku" }, "permanentlyDeleteItemConfirmation": { - "message": "Are you sure you want to permanently delete this item?" + "message": "Opravdu chcete tuto položku trvale smazat?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Trvale smazaná položka" }, "permanentlyDeletedItems": { - "message": "Permanently Deleted items" + "message": "Trvale smazané položky" }, "permanentlyDeleteSelectedItemsDesc": { - "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "message": "Vybrané položky ($COUNT$) budou trvale smazány. Opravdu chcete všechny vybrané položky trvale smazat?", "placeholders": { "count": { "content": "$1", @@ -3089,7 +3089,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Permanently Deleted item $ID$.", + "message": "Položka $ID$ trvale smazána.", "placeholders": { "id": { "content": "$1", @@ -3098,25 +3098,25 @@ } }, "restore": { - "message": "Restore" + "message": "Obnovit" }, "restoreSelected": { - "message": "Restore Selected" + "message": "Obnovit vybrané" }, "restoreItem": { - "message": "Restore Item" + "message": "Obnovit položku" }, "restoredItem": { - "message": "Restored Item" + "message": "Obnovená položka" }, "restoredItems": { - "message": "Restored Items" + "message": "Obnovené položky" }, "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" + "message": "Opravdu chcete tuto položku obnovit?" }, "restoreItems": { - "message": "Restore items" + "message": "Obnovit položky" }, "restoreSelectedItemsDesc": { "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", @@ -3128,7 +3128,7 @@ } }, "restoredItemId": { - "message": "Restored item $ID$.", + "message": "Položka $ID$ obnovena.", "placeholders": { "id": { "content": "$1", @@ -3137,9 +3137,9 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + "message": "Po vypršení časového limitu dojde k odhlášení. Přístup k trezoru bude odebrán a pro opětovné přihlášení bude vyžadováno online ověření. Opravdu chcete použít toto nastavení?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Potvrzení akce při vypršení časového limitu" } } diff --git a/src/locales/da/messages.json b/src/locales/da/messages.json index 075ade5e37..775089b22e 100644 --- a/src/locales/da/messages.json +++ b/src/locales/da/messages.json @@ -461,10 +461,10 @@ "message": "Er du sikker på, at du vil slette dette element?" }, "deletedItem": { - "message": "Slettede element" + "message": "Element sendt til papirkurven" }, "deletedItems": { - "message": "Slettede elementer" + "message": "Elementer sendt til papirkurven" }, "movedItems": { "message": "Flyttede elementer" @@ -2249,7 +2249,7 @@ } }, "deletedItemId": { - "message": "Slettede element $ID$.", + "message": "Element $ID$ sendt til papirkurven.", "placeholders": { "id": { "content": "$1", @@ -2817,10 +2817,10 @@ "message": "Filtre" }, "vaultTimeout": { - "message": "Vault Timeout" + "message": "Boks timeout" }, "vaultTimeoutDesc": { - "message": "Choose when your vault will timeout and perform the selected action." + "message": "Vælg timeout for din boks, hvorefter den vil udføre den valgte handling." }, "oneMinute": { "message": "1 minut" @@ -3042,45 +3042,45 @@ "message": "Brugerindstilling" }, "vaultTimeoutAction": { - "message": "Vault Timeout Action" + "message": "Boks timeout-handling" }, "vaultTimeoutActionLockDesc": { - "message": "A locked vault requires that you re-enter your master password to access it again." + "message": "En låst boks kræver at du gentaster din hovedadgangskode for at tilgå den igen." }, "vaultTimeoutActionLogOutDesc": { - "message": "A logged out vault requires that you re-authenticate to access it again." + "message": "En boks der er logget ud kræver, at du godkender igen for at få adgang til den." }, "lock": { - "message": "Lock", + "message": "Lås", "description": "Verb form: to make secure or inaccesible by" }, "trash": { - "message": "Trash", + "message": "Papirkurv", "description": "Noun: A special folder for holding deleted items that have not yet been permanently deleted" }, "searchTrash": { - "message": "Search Trash" + "message": "Søg i papirkurven" }, "permanentlyDelete": { - "message": "Permanently Delete" + "message": "Slette permanent" }, "permanentlyDeleteSelected": { - "message": "Permanently Delete Selected" + "message": "Slet valgte elementer permanent" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Slet element permanent" }, "permanentlyDeleteItemConfirmation": { - "message": "Are you sure you want to permanently delete this item?" + "message": "Er du sikker på, at du vil slette dette element permanent?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Element slettet permanent" }, "permanentlyDeletedItems": { - "message": "Permanently Deleted items" + "message": "Elementer slettet permanent" }, "permanentlyDeleteSelectedItemsDesc": { - "message": "You have selected $COUNT$ item(s) to permanently delete. Are you sure you want to permanently delete all of these items?", + "message": "Du har valgt $COUNT$ element(er), der skal slettes permanent. Er du sikker på, at du vil slette alle disse elementer permanent?", "placeholders": { "count": { "content": "$1", @@ -3089,7 +3089,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Permanently Deleted item $ID$.", + "message": "Element $ID$ slettet permanent.", "placeholders": { "id": { "content": "$1", @@ -3098,28 +3098,28 @@ } }, "restore": { - "message": "Restore" + "message": "Gendan" }, "restoreSelected": { - "message": "Restore Selected" + "message": "Gendan valgte" }, "restoreItem": { - "message": "Restore Item" + "message": "Gendan element" }, "restoredItem": { - "message": "Restored Item" + "message": "Element gendannet" }, "restoredItems": { - "message": "Restored Items" + "message": "Elementer gendannet" }, "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" + "message": "Er du sikker på, at du vil gendanne dette element?" }, "restoreItems": { - "message": "Restore items" + "message": "Gendan elementer" }, "restoreSelectedItemsDesc": { - "message": "You have selected $COUNT$ item(s) to restore. Are you sure you want to restore all of these items?", + "message": "Du har valgt $COUNT$ element(er), der skal gendannes. Er du sikker på, at du vil gendanne alle disse elementer?", "placeholders": { "count": { "content": "$1", @@ -3128,7 +3128,7 @@ } }, "restoredItemId": { - "message": "Restored item $ID$.", + "message": "Element $ID$ gendannet.", "placeholders": { "id": { "content": "$1", @@ -3137,9 +3137,9 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + "message": "Ved at logge ud fjernes al adgang til din boks og kræver online-godkendelse efter timeout-perioden. Er du sikker på, at du vil bruge denne indstilling?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Bekræft timeout-handling" } } diff --git a/src/locales/pt_PT/messages.json b/src/locales/pt_PT/messages.json index 4affea27d3..e5b7df2f97 100644 --- a/src/locales/pt_PT/messages.json +++ b/src/locales/pt_PT/messages.json @@ -2817,10 +2817,10 @@ "message": "Filtros" }, "vaultTimeout": { - "message": "Vault Timeout" + "message": "Tempo de expiração do Cofre" }, "vaultTimeoutDesc": { - "message": "Choose when your vault will timeout and perform the selected action." + "message": "Escolha quando o seu cofre irá de expirar e a ação que irá executar." }, "oneMinute": { "message": "1 minuto" @@ -3042,13 +3042,13 @@ "message": "Preferência do utilizador" }, "vaultTimeoutAction": { - "message": "Vault Timeout Action" + "message": "Ação de expiração do Cofre" }, "vaultTimeoutActionLockDesc": { - "message": "A locked vault requires that you re-enter your master password to access it again." + "message": "Um cofre bloqueado requer que você reinsira a sua palavra-passe mestra para o aceder novamente." }, "vaultTimeoutActionLogOutDesc": { - "message": "A logged out vault requires that you re-authenticate to access it again." + "message": "Um cofre com a sessão desligada requer que você se autentique novamente para o poder aceder." }, "lock": { "message": "Bloquear", @@ -3140,6 +3140,6 @@ "message": "Terminar sessão irá remover todos os acessos ao seu cofre e requer autenticação online após o período de espera. Tem a certeza de que pretende utilizar esta definição?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Confirmação de expiração do Cofre" } } diff --git a/src/locales/zh_CN/messages.json b/src/locales/zh_CN/messages.json index e4a2acfa00..fa8a6dd00e 100644 --- a/src/locales/zh_CN/messages.json +++ b/src/locales/zh_CN/messages.json @@ -3137,9 +3137,9 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "登出将会在超时后删除您访问密码库的所有权限,并且需要进行在线认证。 您确定要使用此设置吗?" + "message": "注销时将会移除密码库的所有访问权限,并且需要在超时后进行在线认证。 您确定要使用此设置吗?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "超时动作确认" + "message": "超时操作确认" } }