1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-12 14:23:32 +00:00

Merge master into feature/org-admin-refresh (#4072)

* Remove DDG forwarder from SH (#3888)

* [EC-272] Web workers using EncryptionService (#3532)

* Add item decryption to encryptService
* Create multithreadEncryptService subclass to handle web workers
* Create encryption web worker
* Refactor cipherService to use new interface
* Update dependencies

* Don't refresh org vault on filter change (#3879)

* Autosync the updated translations (#3914)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Autosync the updated translations (#3915)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Autosync the updated translations (#3916)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Revert "[PS-1465] Fix #2806 - The "Import Data" page's file selector button cannot be translated (#3502)" (#3900)

This reverts commit 768de03269.

* Autosync the updated translations (#3919)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* [SM-260] Hide email verification prompt if already verified (#3922)

Co-authored-by: Sammy Chang <sammychang2185@gmail.com>

* Two-Step Login (#3852)

* [SG-163] Two step login flow web (#3648)

* two step login flow

* moved code from old branch and reafctored

* fixed review comments

* [SG-164] Two Step Login Flow - Browser (#3793)

* Add new messages

* Remove SSO button from home component

* Change create account button to text

* Add top padding to create account link

* Add email input to HomeComponent

* Add continue button to email input

* Add form to home component

* Retreive email from state service

* Redirect to login after submit

* Add error message for invalid email

* Remove email input from login component

* Remove loggingInTo from under MP input

* Style the MP hint link

* Add self hosted domain to email form

* Made the mp hint link bold

* Add the new login button

* Style app-private-mode-warning in its component

* Bitwarden -> Login text change

* Remove the old login button

* Cancel -> Close text change

* Add avatar to login header

* Login -> LoginWithMasterPassword text change

* Add SSO button to login screen

* Add not you button

* Allow all clients to use the email query param on the login component

* Introduct HomeGuard

* Clear remembered email when clicking Not You

* Make remember email opt-in

* Use formGroup.patchValue instead of directly patching individual controls

* [SG-165] Desktop login flow changes (#3814)

* two step login flow

* moved code from old branch and reafctored

* fixed review comments

* Make toggleValidateEmail in base class public

* Add desktop login messages

* Desktop login flow changes

* Fix known device api error

* Only submit if email has been validated

* Clear remembered email when switching accounts

* Fix merge issue

* Add 'login with another device' button

* Remove 'log in with another device' button for now

* Pin login pag content to top instead of center justified

* Leave email if 'Not you?' is clicked

* Continue when enter is hit on email input

Co-authored-by: gbubemismith <gsmithwalter@gmail.com>

* [SG-750] and [SG-751] Web two step login bug fixes (#3843)

* Continue when enter is hit on email input

* Mark email input as touched on 'continue' so field is validated

* disable login with device on self-hosted (#3895)

* [SG-753] Keep email after hint component is launched in browser (#3883)

* Keep email after hint component is launched in browser

* Use query params instead of state for consistency

* Send email and rememberEmail to home component on navigation (#3897)

* removed avatar and close button from the password screen (#3901)

* [SG-781] Remove extra login page and remove rememberEmail code (#3902)

* Remove browser home guard

* Always remember email for browser

* Remove login landing page button

* [SG-782] Add login service to streamline login form data persistence (#3911)

* Add login service and abstraction

* Inject login service into apps

* Inject and use new service in login component

* Use service in hint component to prefill email

* Add method in LoginService to clear service values

* Add LoginService to two-factor component to clear values

* make login.service variables private

Co-authored-by: Gbubemi Smith <gsmith@bitwarden.com>
Co-authored-by: Addison Beck <addisonbeck1@gmail.com>
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>

* 400s only log out on invalid  grant error (#3924)

* Fix rust tests apt-get install (#3933)

* Added focus to the email and master password fields (#3934)

* Ps 1754 community pr reviewed (#3929)

* community PR reviewed, Update search cancel button to be visible in all themes

* community PR reviewed, Update search cancel button to be visible in all themes 2

* Update search cancel button to be visible in all themes (#3876)

* Adding the 'libs/**' directory back to the Desktop build pipeline PR trigger list (#3938)

* Re-\added the focusInput method to allow desktop build run (#3937)

* [EC-522] Improve handling of rxjs subjects (#3772)

* [EC-522] feat: no public rxjs subjects

* [EC-522] feat: improve null handling

* [EC-552] fix: init subject with empty set instead of null

* [EC-552] fix: don't push null into account subject

* [EC-522] feat: remove null filter

* [EC-641] Browser Ext UI Update (#3842)

* more css changes

* add icon button hover

* Update apps/browser/src/popup/scss/box.scss

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>

* Update apps/desktop/src/scss/box.scss

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>

* feedback updates

* restore desktop pseudo rule

* update to include some variable fixes and deletions

* updates per oscar

* feedback updates

more universal variable, adjusted box padding (per Kyle), and aligned footer text

* changes per product design

added border for selects, border around generator, and hover for solarizeddark

* add more helper text space below for visual separation

* group new variable

* login page button fix

Dflinn found an odd margin on the login page

* Revert "Merge branch 'master' into browser-ext-ui-update-test"

This reverts commit b8007102f9, reversing
changes made to 246768cb12.

* fix button height

* revert file changes

* test adjustments

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>

* [SG-792] Added focus to master password field on browser and desktop (#3939)

* Added focus to master password field on browser client

* Added focus to master password field on desktop client

* Tell eslint & prettier to ignore storybook-static (#3946)

* [SG-792] Fixed focus on master password when enter key is pressed (#3948)

* Added focus to master password field on browser client

* Added focus to master password field on desktop client

* fixed focus on master password when enter is pressed

* [EC-7] Org Admin Vault Refresh Client V1 (#3925)

* [EC-8] Restructure Tabs (#3109)

* Cherry pick pending PR for tabs component [CL-17] Tabs - Routing

* Update organization tabs from 4 to 6

* Create initial 'Members' tab

* Create initial 'Groups' tab

* Add initial "Reporting" tab

* Use correct report label/layout by product type

* Create initial 'Billing' tab

* Breakup billing payment and billing history pages

* Cleanup org routing and nav permission service

* More org tab permission cleanup

* Refactor organization billing to use a module

* Refactor organization reporting to use module

* Cherry pick finished/merged tabs component [CL-17] Tabs - Router (#2952)

* This partially reverts commit 24bb775 to fix tracking of people.component.html rename.

* Fix people component file rename

* Recover lost member page changes

* Undo members component rename as it was causing difficult merge conflicts

* Fix member and group page container

* Remove unnecessary organization lookup

* [EC-8] Some PR suggestions

* [EC-8] Reuse user billing history for orgs

* [EC-8] Renamed user billing history component

* [EC-8] Repurpose payment method component

Update end user payment method component to be usable for organizations.

* [EC-8] Fix missing verify bank condition

* [EC-8] Remove org payment method component

* [EC-8] Use CL in payment method component

* [EC-8] Extend maxWidth Tailwind theme config

* [EC-8] Add lazy loading to org reports

* [EC-8] Add lazy loading to org billing

* [EC-8] Prettier

* [EC-8] Cleanup org reporting component redundancy

* [EC-8] Use different class for negative margin

* [EC-8] Make billing history component "dumb"

* Revert "[EC-8] Cleanup org reporting component redundancy"

This reverts commit eca337e89b.

* [EC-8] Create and export shared reports module

* [EC-8] Use shared reports module in orgs

* [EC-8] Use takeUntil pattern

* [EC-8] Move org reporting module out of old modules folder

* [EC-8] Move org billing module out of old modules folder

* [EC-8] Fix some remaining merge conflicts

* [EC-8] Move maxWidth into 'extend' key for Tailwind config

* [EC-8] Remove unused module

* [EC-8] Rename org report list component

* Prettier

Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>

* [EC-451] Org Admin Refresh Permissions Refactor (#3320)

* [EC-451] Update new org permissions for new tabs

* [EC-451] Remove redudant route guards

* [EC-451] Remove canAccessManageTab()

* [EC-451] Use canAccess* callbacks in org routing module

* Fix org api service refactor and linting after pulling in master

* Fix broken org people and group pages after merge

* [EC-18] Reporting side nav direction (#3420)

* [EC-18] Re-order side nav for org reports according to Figma

* [EC-18] Fix rxjs linter errors and redundant org flag

* [EC-526] Default to Event Logs page for Reporting Tab (#3470)

* [EC-526] Default to the Events Logs page when navigating to the Reporting tab

* [EC-526] Undo default routing redirect when the child path is missing. Avoids defaulting to "/events" in case a user/org doesn't have access to event logs.

* [EC-19] Update Organization Settings Page (#3251)

* [EC-19] Refactor existing organization settings components to its own module

* [EC-19] Move SSO page to settings tab

* [EC-19] Move Policies page to Settings tab

Refactor Policy components into its own module

* [EC-19] Move ImageSubscriptionHiddenComponent

* [EC-19] Lazy load org settings module

* [EC-19] Add SSO Id to SSO config view

* [EC-19] Remove SSO identfier from org info page

* [EC-19] Update org settings/policies to follow ADR-0011

* [EC-19] Update two-step login setup description

* [EC-19] Revert nested policy components folder

* [EC-19] Revert nested org setting components folder

* [EC-19] Remove left over image component

* [EC-19] Prettier

* [EC-19] Fix missing i18n

* [EC-19] Update SSO form to use CL

* [EC-19] Remove unused SSO input components

* [EC-19] Fix bad SSO locale identifier

* [EC-19] Fix import order linting

* [EC-19] Add explicit whitespace check for launch click directive

* [EC-19] Add restricted import paths to eslint config

* [EC-19] Tag deprecated field with Jira issue to cleanup in future release

* [EC-19] Remove out of date comment

* [EC-19] Move policy components to policies module

* [EC-19] Remove dityRequired validator

* [EC-19] Use explicit type for SSO config form

* [EC-19] Fix rxjs linter errors

* [EC-19] Fix RxJS eslint comments in org settings component

* [EC-19] Use explicit ControlsOf<T> helper for nested SSO form groups.

* [EC-19] Attribute source of ControlsOf<T> helper

* [EC-19] Fix missing settings side nav links

* [EC-19] Fix member/user language for policy modals

* [EC-551] Update Event Logs Client Column (#3572)

* [EC-551] Fix RxJS warnings

* [EC-551] Update page to use CL components and Tailwind classes

* [EC-551] Update Client column to use text instead of icon. Update language and i18n.

* [EC-14] Refactor vault filter (#3440)

* [EC-14] initial refactoring of vault filter

* [EC-14] return observable trees for all filters with head node

* [EC-14] Remove bindings on callbacks

* [EC-14] fix formatting on disabled orgs

* [EC-14] hide MyVault if personal org policy

* [EC-14] add check for single org policy

* [EC-14] add policies to org and change node constructor

* [EC-14] don't show options if personal vault policy

* [EC-14] default to all vaults

* [EC-14] add default selection to filters

* [EC-14] finish filter model callbacks

* [EC-14] finish filter functionality and begin cleaning up

* [EC-14] clean up old components and start on org vault

* [EC-14] loop through filters for presentation

* [EC-14] refactor VaultFilterService and put filter presentation data back into Vault Filter component. Remove VaultService

* [EC-14] begin refactoring org vault

* [EC-14] Refactor Vault Filter Service to use observables

* [EC-14] finish org vault filter

* [EC-14] fix vault model tests

* [EC-14] fix org service calls

* [EC-14] pull refactor out of shared code

* [EC-14] include head node for collections even if collections aren't loaded yet

* [EC-14] fix url params for vaults

* [EC-14] remove comments

* [EC-14] Remove unnecesary getter for org on vault filter

* [EC-14] fix linter

* [EC-14] fix prettier

* [EC-14] add deprecated methods to collection service for desktop and browser

* [EC-14] simplify cipher type node check

* [EC-14] add getters to vault filter model

* [EC-14] refactor how we build the filter list into methods

* [EC-14] add getters to build filter method

* [EC-14] remove param ids if false

* [EC-14] fix collapsing nodes

* [EC-14] add specific type to search placeholder

* [EC-14] remove extra constructor and comment from org vault filter

* [EC-14] extract subscription callback to methods

* [EC-14] Remove unecessary await

* [EC-14] Remove ternary operators while building org filter

* [EC-14] remove unnecessary deps array in vault filter service declaration

* [EC-14] consolidate new models into one file

* [EC-14] initialize nested observable inside of service

Signed-off-by: Jacob Fink <jfink@bitwarden.com>

* [EC-14] change how we load orgs into the vault filter and select the default filter

* [EC-14] remove get from getters name

* [EC-14] remove eslint-disable comment

* [EC-14] move vault filter service abstraction to angular folder and separate

* [EC-14] rename filter types and delete VaultFilterLabel

* [EC-14] remove changes to workspace file

* [EC-14] remove deprecated service from jslib module

* [EC-14] remove any remaining files from common code

* [EC-14] consolidate vault filter components into components folder

* [EC-14] simplify method call

* [EC-14] refactor the vault filter service
- orgs now have observable property
- BehaviorSubjects have been migrated to ReplaySubjects if they don't need starting value
- added unit tests
- fix small error when selecting org badge of personal vault
- renamed some properties

* [EC-14] replace mergeMap with switchMap in vault filter service

* [EC-14] early return to prevent nesting

* [EC-14] clean up filterCollections method

* [EC-14] use isDeleted helper in html

* [EC-14] add jsdoc comments to ServiceUtils

* [EC-14] fix linter

* [EC-14] use array.slice instead of setting length

* Update apps/web/src/app/vault/vault-filter/services/vault-filter.service.ts

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* [EC-14] add missing high level jsdoc description

* [EC-14] fix storybook absolute imports

* [EC-14] delete vault-shared.module

* [EC-14] change search placeholder text to getter and add missing strings

* [EC-14] remove two way binding from search text in vault filter

* [EC-14] removed all binding from search text and just use input event

* [EC-14] remove async from apply vault filter

* [EC-14] remove circular observable calls in vault filter service

Co-authored-by: Thomas Rittson <eliykat@users.noreply.github.com>

* [EC-14] move collapsed nodes to vault filter section

* [EC-14] deconstruct filter section inside component

* [EC-14] fix merge conflicts and introduce refactored organization service to vault filter service

* [EC-14] remove mutation from filter builders

* [EC-14] fix styling on buildFolderTree

* [EC-14] remove leftover folder-filters reference and use ternary for collapse icon

* [EC-14] remove unecessary checks

* [EC-14] stop rebuilding filters when the organization changes

* [EC-14] Move subscription out of setter in vault filter section

* [EC-14] remove extra policy service methods from vault filter service

* [EC-14] remove new methods from old vault-filter.service

* [EC-14] Use vault filter service in vault components

* [EC-14] reload collections from vault now that we have vault filter service

* [EC-14] remove currentFilterCollections in vault filter component

* [EC-14] change VaultFilterType to more specific OrganizationFilter in organization-options

* [EC-14] include org check in isNodeSelected

* [EC-14] add getters to filter function, fix storybook, and add test for All Collections

* [EC-14] show org options even if there's a personal vault policy

* [EC-14] use !"AllCollections" instead of just !null

* [EC-14] Remove extra org Subject in vault filter service

* [EC-14] remove null check from vault search text

* [EC-14] replace store/build names with set/get. Remove extra call to setOrganizationFilter

* [EC-14] add take(1) to subscribe in test

* [EC-14] move init logic in org vault filter component to ngOnInit

* [EC-14] Fix linter

* [EC-14] revert change to vault filter model

* [EC-14] be specific about ignoring All Collections

* [EC-14] move observable init logic to beforeEach in test

* [EC-14] make buildAllFilters return something to reduce side effects

Signed-off-by: Jacob Fink <jfink@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Co-authored-by: Thomas Rittson <eliykat@users.noreply.github.com>

* [EC-97] Organization Billing Language / RxJS Warnings (#3688)

* [EC-97] Update copy to use the word members in a few places

* [EC-97] Cleanup RxJS warnings and unused properties in org billing components

* [EC-599] Access Selector Component (#3717)

* Add Access Selector Component and Stories

* Cherry pick FormSelectionList

* Fix some problems caused from cherry-pick

* Fix some Web module problems caused from cherry-pick

* Move AccessSelector out of the root components directory.

Move UserType pipe to AccessSelectorModule

* Fix broken member access selector story

* Add organization feature module

* Undo changes to messages.json

* Fix messages.json

* Remove redundant CommonModule

* [EC-599] Fix avatar/icon sizing

* [EC-599] Remove padding in  permission column

* [EC-599] Make FormSelectionList operations immutable

* [EC-599] Integrate the multi-select component

* [EC-599] Handle readonly/access all edge cases

* [EC-599] Add initial unit tests

Also cleans up public interface for the AccessSelectorComponent. Fixes a bug found during unit test creation.

* [EC-599] Include item name in control labels

* [EC-599] Cleanup member email display

* [EC-599] Review suggestions

- Change PermissionMode to Enum
- Rename permControl to permissionControl to be more clear
- Rename FormSelectionList file to kebab case.
- Move permission row boolean logic to named function for readability

* [EC-599] Cleanup AccessSelectorComponent tests

- Clarify test states
- Add tests for column rendering
- Add tests for permission mode
- Add id to column headers for testing
- Fix small permissionControl bug found during testing

* [EC-599] Add FormSelectionList unit tests

* [EC-599] Fix unit test and linter

* [EC-599] Update Enums to Pascal case

* [EC-599] Undo change to Enum values

* [EC-7] fix: broken build

* [EC-646] Org Admin Vault Refresh November Release Prep (#3913)

* [EC-646] Remove links from Manage component

These links are no longer necessary as they are now located in the new OAVR tabs.

* [EC-646] Re-introduce the canAccessManageTab helper

* [EC-646] Re-introduce /manage route in Organization routing module

- Add the parent /manage route
- Add child routes for collections, people, and groups

* [EC-646] Adjust Org admin tabs

Re-introduce the Manage tab and remove Groups and Members tabs.

* [EC-646] Change Members title back to People

* [EC-646] Move missing billing components

Some billing components were in the org settings module and needed to be moved the org billing module

* [EC-646] Fix import file upload button

-Update to use click event handler and tailwind class to hide input. Avoids inline styles/js blocked by CSP

- Fix broken async pipe

* [EC-646] Fix groups and people page overflow

Remove the container and page-content wrapper as the pages are no longer on their own tab

* [EC-646] Change People to Members

Change the text regarding managing members from People to Members to more closely follow changes coming later in the OAVR. Also update the URL to use /manage/members

* [EC-646] Cherry-pick ae39afe to fix tab text color

* [EC-646] Fix org routing permissions helpers

- Add canAccessVaultTab helper
- Update canAccessOrgAdmin include check for vault tab access
- Simplify canManageCollections

* [EC-646] Fix Manage tab conditional logic

- Add *ngIf condition for rendering Manage tab
- Re-introduce dynamic route for Manage tab

* Revert "[EC-14] Refactor vault filter (#3440)" (#3926)

This reverts commit 4d83b81d82.

* Remove old reference to bit-submit-button that no longer exists (#3927)

* [EC-593] Top align event logs row content (#3813)

* [EC-593] Top align event log row contents

* [EC-593] Prevent event log timestamp from wrapping

* [EC-593] Add alignContent input to bitRow directive

* [EC-593] Remove ineffective inline styles (CSP)

* [EC-593] Remove templated tailwind classes

Tailwind minimizes the bundled stylesheet by removing classes that aren't used in code. Using a string template for the classes causes those classes to be ignored.

* [EC-593] Introduce alignContent input to table story

* [EC-657] Hide Billing History and Payment Method for selfhosted orgs (#3935)

Signed-off-by: Jacob Fink <jfink@bitwarden.com>
Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: Jake Fink <jfink@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Co-authored-by: Thomas Rittson <eliykat@users.noreply.github.com>

* Add padding to top of Safari extension (#3949)

* Use correct provider icon instead of bank icon (#3950)

* Fix undefined property error in event logs (#3947)

EventService.policies was undefined because the service was erroneously using
ngOnInit to subscribe to the policies observable

* PS-1763 - handle undefined locale value that exists before a user sets their language (#3952)

* Autosync the updated translations (#3968)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Autosync the updated translations (#3967)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* fixed typo in event log (#3962)

* Org admin refresh translation nitpicks (#3971)

* Fix use of personal in favor of individual vault

* Fix capitalization according to #3577

* Fix capitalization on organizationInfo

* Autosync the updated translations (#3974)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Autosync the updated translations (#3973)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* add csp and only pass hostname to duo init (#3972)

* add csp and only pass hostname to duo init

* expand style-src

* Update apps/web/src/connectors/duo.html

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>

* Move hint button out of the formfield (#3960)

* [PS-1734] Send saved urls to autofill script (#3861)

* Send all saved url to autofill script

* Handle array of matched urls in content script

* Prompt at most once to override insecure autofill

* Do not send never match URIs to content script

We know these URIs did not cause the autofill match, so we
can safely remove these from the list of potential matches.

* [PS-1804] Display Organization tab for users with custom permissions (#3980)

* [EC-584] Fixed OrganizationExportResponse to correctly parse data (#3641)

* [EC-584] Fixed OrganizationExportResponse to correctly parse data and use CollectionResponse and CipherResponse constructors

* [EC-584] Removed ListResponse from OrganizationExportResponse properties

* Bumped web version to 2022.10.3 (#3957)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "Bumped web version to 2022.10.3 (#3957)"

This reverts commit 5d8d547cd2.

* Web version bump to 2022.11.0 for QA testing

* Revert "Web version bump to 2022.11.0 for QA testing"

This reverts commit 484db431ed.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joseph Flinn <joseph.s.flinn@gmail.com>

* [EC-678] [EC-673] Fix active tab not showing selected while in child route (#3964)

* [PS-1114] hide reporting sidebar if only events

* [PS-1114] add orgRedirectGuard

* [PS-1114] highlight tabs based on route subset

* [PS-1114] redirect to correct child route on tab
- Use new OrgRedirectGuard

* [PS-1114] add settings redirect using guard
- refactored guard to accept array of strings

* [EC-678] [EC-673] remove remaining methods

* [EC-678][EC-673] address PR feedback
- change switch to if statements
- remove ternary

* [EC-672] Update SSO login page language (#3997)

- Replace 'Organization Identifier' with 'SSO identifier'
- Sentence case 'SSO identifier'
- Add 'SSO' to SSO login page helper text

* Autosync the updated translations (#3969)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* [EC-661] Add web worker code bundles to Safari browser extension (#3986)

* Make browser bundle encrypt-worker.ts into a single named file

* Add encrypt-worker bundle to xcode proj

* Fixed EC reported event log copy bugs (#3977)

* [EC-645] fix: web payment component breaking storybook compilation (#3906)

* add run-name for releases to include their workflow trigger (#3996)

* add run-name for releases to include their workflow trigger

* add edit for linter error

* Update .github/workflows/release-web.yml

Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>

Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>

* Extract and fix trigger for PR auto responses (Translation-PRs) (#3992)

* Extract and fix trigger for PR auto responses

* Fix permission used for job

* [EC-650] Revert observable usage from ImportComponent (#4010)

* Run enforce labels workflow on version bump in clients repo (#4006)

* Fix version bump to run enforce labels workflow

* Add login to Azure

* Trigger enforce labels manually from bump version workflow

* Update .github/workflows/enforce-labels.yml

Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>

* Update .github/workflows/version-bump.yml

Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>

Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>

* [EC-670] Update Members tab to support flex wrap (#4003)

Use tailwind classes to style the Members page header so that it supports wrapping the controls to a new line should they exceed the width of the container.

* [PS-1841] Fix org-* commands for CLI (#4013)

* Add getFromState method

* Added a method for CLI to get an org from state

* Converted all CLI calls to `.get()`

* Used `.getFromState` instead of `.get`

* Deprecate getFromState method

* Remove local vaultFilter (#4014)

* Use vault filter item from vaultFilterService

* [PS-1843] Sort organizations in `buildOrganizations` (#4015)

* Sort organizations in buildOrganizations

* Add sort by name to Organization Switcher

* [EC-675] Display the Event for “Viewed Card Number for item item-identifier” (#3976)

* [EC-675] Add missing Event capture for viewing item Card Number

* [EC-675] Fix correct event type for viewing item Card Number

* Update apps/web/src/locales/en/messages.json

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* [EC-449] Event log user for SCIM events (#3643)

* [EC-449] Added EventSystemUser Enum and added systemUser property to eventResponse

* [EC-449] Add systemUser property to BaseEventsComponent, EventExport and EventView

* [EC-449] Set EventSystemUser as string on EventExport

* [EC-449] Remove systemUser from EventExport

* [EC-449] Rename EventSystemUser file to lowercase

* [EC-449] Force git to rename EventSystemUser file

* [EC-449] Rename EventSystemUser file to event-system-user.ts

* [EC-449] Fix EventSystemUser reference on EventsComponent

* [EC-449] Move installationId username logic to BaseEventsComponent

* Update libs/common/src/enums/event-system-user.ts

Add a note to warn about using the Enum key in the UI.

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* [EC-449] Remove EventSystemUser from provider events. Remove nested condition on events component

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* [PS-1840] - fix for covered dropdown on empty vault (#4019)

* fix for covered dropdown on empty vault

This could be done one of 2-3 ways. I think this might be the least problematic, but could also be done with just changing "position: absolute" to "relative on the ".no-items" class - base.css:461 For some reason, I'm unable to load the spinner to test.

* rename class

* Remove uses of rxjs in CLI (#4028)

* [SM-327] Electron hard reset (#3988)

* Add folders to whitelist (#3994)

* Defect/sg 650 desktop pw/passphrase gen not auto updating on min value change (#4032)

* SG-650 - Desktop - Pw Generation - Min value ctrls now use (change) instead of (blur) for better responsiveness when using arrows on input or arrow keys.  Note: (input) has change detection issues for resetting the value to either max pw length or max value of 9 + passwordGeneration.service logic possibly needs refactoring to either enforce max of 9 or not

* SG-650 - Desktop - Passphrase Gen - min words now uses (change) instead of (blur) for better responsiveness

* Autosync the updated translations (#4035)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Autosync the updated translations (#4036)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Autosync the updated translations (#4037)

Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>

* Expand serve origin protection warning (#4024)

This warning was kept vague during fix rollout, but now that we're more
than a release past, we can expand the explanation.

* [SM-340] Fix share modal not closing on cancel (#4041)

* [EC-739 / EC-740] Add null check to policyFilter on PolicyService (#4039)

* [EC-739 / EC-740] Add null check to policyFilter on PolicyService

* [EC-739 / EC-740] Add unit tests for policy filter

* [PS-1805] BEEEP: Renamed importers based on agreed naming-convention (#3978)

* Rename all importer related files

Renamed all files based on our naming convention which we decided on with https://github.com/bitwarden/adr/blob/master/decisions/0012-angular-filename-convention.md

* Removed entries from whitelist-capital-letters.txt

* Rename missing safeInCloud test data

* Fix broken import

* Renamed folders (removed capital letters)

* Fix filename of BitwardenCsvImporter

* Fix imports of onepassword mac/win importer tests

* Remove already renamed folders from whitelist

* Rename dashlaneImporters to dashlane

Rename the folder
Fix all the imports
Remove dashlaneImporters from white-list

* Rename keeperImporters to keeper

Rename the folder
Fix all the imports
Remove keeperImporters from white-list

* Rename onepasswordImporters to onepassword

Rename the folder
Fix all the imports
Remove onepasswordImporters from white-list

* Rename safeinCloud test data folder

* Fix onepassword importer type imports

* [EC-744] Revert PolicyService back to clearing DecryptedPolicies on StateService (#4042)

* [EC-746] Call BaseAddEditComponent.ngOnInit on Desktop AddEditComponent (#4044)

* PS-1798 - ensure admin users can edit ciphers (#4025)

* Use loginService to get and set remember email values (#3941)

* SG-428 - Browser Extension - Send - Expiration / Deletion date calendar icon +… (#4034)

* Browser Extension - Send - Expiration / Deletion date calendar icon + datepicker pop up now respect theme better in Chrome / Chromium based browsers and Safari (Firefox datepicker pop up doesn't seem to have an easy mechanism for theming)

* SG-428 - Extension - Iconography for date inputs for Chromium browsers now reflects theme colors properly + hover states; icon not shown on non-Chromium browsers

* Variables.scss - ran prettier locally after tweaking comments to pass eslint checks

* [EC-743] Call super to ngOnInit to include policy observable changes (#4047)

* Hide My Vault if Remove Individual Vault is on (#4052)

* Devops 1039 update release flow dry run step names (#4016)

* Updated workflows to not create Github deployment on Dry Run. (#4049)

* Add organization-options menu to single org (#3678) (#4051)

Re-apply commit 7c3255d (#3678) which was accidentally reverted by
the Org Admin Refresh changes in commit 09c3bc8 (#3925)

* SG-725 - Desktop - Moved DuckDuckGo setting down so that the Biometric browser settings are not separated (#4059)

* [EC-750] Specify organizationId for credit and adjust payment components (#4061)

* [SM-330] Disable managed environments for safari (#3953)

* [EC-665] Fix biometrics button style (#3979)

* fix biometrics button style

* expand button to fill space

this is a result of it being used outside the box-content

* remove padding from box-footer

* Added Mastodon to follow us menu (#4029)

* Add branch check for Staged Rollout Desktop workflow (#4062)

* [PS-1783] Fix file selector input bug from PS-1465 ( #3502 ) (#3928)

* Fix file selector input

* Add file selector state changes back

* Remove async pipe

* Revert "[EC-646] Org Admin Vault Refresh November Release Prep (#3913)"

This reverts commit 4b57d28e28.

* [EC-646] Move missing billing components

Some billing components were in the org settings module and needed to be moved the org billing module

(cherry picked from commit 1c11695f46)

* [EC-646] Cherry-pick ae39afe to fix tab text color

(cherry picked from commit 467f584b9e)

* Make destroy$ protected to fix linting error

Signed-off-by: Jacob Fink <jfink@bitwarden.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: Sammy Chang <sammychang2185@gmail.com>
Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com>
Co-authored-by: Gbubemi Smith <gsmith@bitwarden.com>
Co-authored-by: Addison Beck <addisonbeck1@gmail.com>
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
Co-authored-by: Kyle Spearrin <kspearrin@users.noreply.github.com>
Co-authored-by: Michał Chęciński <mchecinski@bitwarden.com>
Co-authored-by: cd-bitwarden <106776772+cd-bitwarden@users.noreply.github.com>
Co-authored-by: Scott McFarlane <91044021+scottmondo@users.noreply.github.com>
Co-authored-by: Joseph Flinn <58369717+joseph-flinn@users.noreply.github.com>
Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>
Co-authored-by: DanHillesheim <79476558+DanHillesheim@users.noreply.github.com>
Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>
Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>
Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
Co-authored-by: Jake Fink <jfink@bitwarden.com>
Co-authored-by: Thomas Rittson <eliykat@users.noreply.github.com>
Co-authored-by: dgoodman-bw <109169446+dgoodman-bw@users.noreply.github.com>
Co-authored-by: Danielle Flinn <43477473+danielleflinn@users.noreply.github.com>
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
Co-authored-by: Rui Tomé <108268980+r-tome@users.noreply.github.com>
Co-authored-by: Joseph Flinn <joseph.s.flinn@gmail.com>
Co-authored-by: Opeyemi <54288773+Eebru-gzy@users.noreply.github.com>
Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Vincent Salucci <26154748+vincentsalucci@users.noreply.github.com>
Co-authored-by: Ash Leece <ash@leece.im>
This commit is contained in:
Shane Melton
2022-11-16 16:18:22 -08:00
committed by GitHub
parent f3a97c492a
commit 73e70ad2b7
498 changed files with 13311 additions and 4660 deletions

View File

@@ -2,6 +2,7 @@
**/dist
**/coverage
.angular
storybook-static
**/node_modules

View File

@@ -68,6 +68,7 @@
}
],
"rxjs-angular/prefer-takeuntil": "error",
"rxjs/no-exposed-subjects": ["error", { "allowProtected": true }],
"no-restricted-syntax": [
"error",
{

View File

@@ -1,3 +1,20 @@
./apps/browser/src/safari/desktop/Assets.xcassets
./apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset
./apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset
./apps/browser/src/safari/desktop/Base.lproj
./apps/browser/src/services/vaultTimeout
./apps/browser/store/windows/Assets
./apps/desktop/src/models/nativeMessaging
./apps/desktop/src/models/nativeMessaging/encryptedMessagePayloads
./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses
./libs/common/spec/misc/logInStrategies
./libs/common/src/abstractions/fileDownload
./libs/common/src/abstractions/userVerification
./libs/common/src/abstractions/vaultTimeout
./libs/common/src/emailForwarders
./libs/common/src/misc/logInStrategies
./libs/common/src/services/userVerification
./libs/common/src/services/vaultTimeout
./bitwarden_license/README.md
./bitwarden_license/bit-web/src/app/providers/services/webProvider.service.ts
./libs/angular/src/directives/cipherListVirtualScroll.directive.ts
@@ -22,65 +39,6 @@
./libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts
./libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts
./libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts
./libs/common/spec/importers/testData/safeInCloud/testData.xml.ts
./libs/common/spec/importers/testData/safariCsv/oldSimplePasswordData.csv.ts
./libs/common/spec/importers/testData/safariCsv/simplePasswordData.csv.ts
./libs/common/spec/importers/testData/keeperJson/testData.ts
./libs/common/spec/importers/testData/bitwardenJson/passwordProtected.json.ts
./libs/common/spec/importers/testData/onePassword1Pux/SoftwareLicense.ts
./libs/common/spec/importers/testData/onePassword1Pux/SecureNote.ts
./libs/common/spec/importers/testData/onePassword1Pux/Emailfield.ts
./libs/common/spec/importers/testData/onePassword1Pux/CreditCard.ts
./libs/common/spec/importers/testData/onePassword1Pux/LoginData.ts
./libs/common/spec/importers/testData/onePassword1Pux/WirelessRouter.ts
./libs/common/spec/importers/testData/onePassword1Pux/SanitizedExport.ts
./libs/common/spec/importers/testData/onePassword1Pux/Membership.ts
./libs/common/spec/importers/testData/onePassword1Pux/OutdoorLicense.ts
./libs/common/spec/importers/testData/onePassword1Pux/EmailAccount.ts
./libs/common/spec/importers/testData/onePassword1Pux/Password.ts
./libs/common/spec/importers/testData/onePassword1Pux/RewardsProgram.ts
./libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled.ts
./libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity.ts
./libs/common/spec/importers/testData/onePassword1Pux/DriversLicense.ts
./libs/common/spec/importers/testData/onePassword1Pux/Database.ts
./libs/common/spec/importers/testData/onePassword1Pux/Passport.ts
./libs/common/spec/importers/testData/onePassword1Pux/Onepux_example.ts
./libs/common/spec/importers/testData/onePassword1Pux/BankAccount.ts
./libs/common/spec/importers/testData/onePassword1Pux/MedicalRecord.ts
./libs/common/spec/importers/testData/onePassword1Pux/IdentityData.ts
./libs/common/spec/importers/testData/onePassword1Pux/Server.ts
./libs/common/spec/importers/testData/onePassword1Pux/APICredentials.ts
./libs/common/spec/importers/testData/onePassword1Pux/SSN.ts
./libs/common/spec/importers/testData/onePasswordCsv/creditCard.windows.csv.ts
./libs/common/spec/importers/testData/onePasswordCsv/creditCard.mac.csv.ts
./libs/common/spec/importers/testData/onePasswordCsv/multipleItems.windows.csv.ts
./libs/common/spec/importers/testData/onePasswordCsv/multipleItems.mac.csv.ts
./libs/common/spec/importers/testData/nordpassCsv/nordpass.secureNote.csv.ts
./libs/common/spec/importers/testData/dashlaneCsv/multiplePersonalInfo.csv.ts
./libs/common/spec/importers/testData/dashlaneCsv/personalInfo.csv.ts
./libs/common/spec/importers/testData/mykiCsv/UserIdCard.csv.ts
./libs/common/spec/importers/testData/mykiCsv/UserTwofa.csv.ts
./libs/common/spec/importers/testData/mykiCsv/UserNote.csv.ts
./libs/common/spec/importers/testData/mykiCsv/UserAccount.csv.ts
./libs/common/spec/importers/testData/mykiCsv/UserIdentity.csv.ts
./libs/common/spec/importers/testData/mykiCsv/UserCreditCard.csv.ts
./libs/common/spec/importers/testData/firefoxCsv/firefoxAccountsData.csv.ts
./libs/common/spec/importers/testData/firefoxCsv/simplePasswordData.csv.ts
./libs/common/spec/importers/fsecureFskImporter.spec.ts
./libs/common/spec/importers/safariCsvImporter.spec.ts
./libs/common/spec/importers/keeperJsonImporter.spec.ts
./libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts
./libs/common/spec/importers/dashlaneCsvImporter.spec.ts
./libs/common/spec/importers/nordpassCsvImporter.spec.ts
./libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts
./libs/common/spec/importers/firefoxCsvImporter.spec.ts
./libs/common/spec/importers/onepassword1PuxImporter.spec.ts
./libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts
./libs/common/spec/importers/lastpassCsvImporter.spec.ts
./libs/common/spec/importers/onepassword1PifImporter.spec.ts
./libs/common/spec/importers/keepass2XmlImporter.spec.ts
./libs/common/spec/importers/bitwardenJsonImporter.spec.ts
./libs/common/spec/importers/mykiCsvImporter.spec.ts
./libs/common/spec/web/services/webCryptoFunction.service.spec.ts
./libs/common/spec/shared/interceptConsole.ts
./libs/common/spec/models/view/passwordHistoryView.spec.ts
@@ -111,69 +69,6 @@
./libs/common/src/types/twoFactorResponse.ts
./libs/common/src/types/authResponse.ts
./libs/common/src/types/syncEventArgs.ts
./libs/common/src/importers/enpassJsonImporter.ts
./libs/common/src/importers/firefoxCsvImporter.ts
./libs/common/src/importers/rememBearCsvImporter.ts
./libs/common/src/importers/ascendoCsvImporter.ts
./libs/common/src/importers/passwordDragonXmlImporter.ts
./libs/common/src/importers/passkeepCsvImporter.ts
./libs/common/src/importers/gnomeJsonImporter.ts
./libs/common/src/importers/secureSafeCsvImporter.ts
./libs/common/src/importers/zohoVaultCsvImporter.ts
./libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts
./libs/common/src/importers/dashlaneImporters/types/dashlaneCsvTypes.ts
./libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts
./libs/common/src/importers/meldiumCsvImporter.ts
./libs/common/src/importers/safariCsvImporter.ts
./libs/common/src/importers/msecureCsvImporter.ts
./libs/common/src/importers/buttercupCsvImporter.ts
./libs/common/src/importers/kasperskyTxtImporter.ts
./libs/common/src/importers/baseImporter.ts
./libs/common/src/importers/keepassxCsvImporter.ts
./libs/common/src/importers/encryptrCsvImporter.ts
./libs/common/src/importers/passwordWalletTxtImporter.ts
./libs/common/src/importers/codebookCsvImporter.ts
./libs/common/src/importers/nordpassCsvImporter.ts
./libs/common/src/importers/avastJsonImporter.ts
./libs/common/src/importers/blurCsvImporter.ts
./libs/common/src/importers/safeInCloudXmlImporter.ts
./libs/common/src/importers/enpassCsvImporter.ts
./libs/common/src/importers/saferpassCsvImport.ts
./libs/common/src/importers/keeperImporters/types/keeperJsonTypes.ts
./libs/common/src/importers/keeperImporters/keeperCsvImporter.ts
./libs/common/src/importers/keeperImporters/keeperJsonImporter.ts
./libs/common/src/importers/fsecureFskImporter.ts
./libs/common/src/importers/clipperzHtmlImporter.ts
./libs/common/src/importers/keepass2XmlImporter.ts
./libs/common/src/importers/stickyPasswordXmlImporter.ts
./libs/common/src/importers/aviraCsvImporter.ts
./libs/common/src/importers/bitwardenPasswordProtectedImporter.ts
./libs/common/src/importers/avastCsvImporter.ts
./libs/common/src/importers/mykiCsvImporter.ts
./libs/common/src/importers/logMeOnceCsvImporter.ts
./libs/common/src/importers/upmCsvImporter.ts
./libs/common/src/importers/yotiCsvImporter.ts
./libs/common/src/importers/roboformCsvImporter.ts
./libs/common/src/importers/passwordBossJsonImporter.ts
./libs/common/src/importers/splashIdCsvImporter.ts
./libs/common/src/importers/passmanJsonImporter.ts
./libs/common/src/importers/bitwardenCsvImporter.ts
./libs/common/src/importers/lastpassCsvImporter.ts
./libs/common/src/importers/bitwardenJsonImporter.ts
./libs/common/src/importers/passwordAgentCsvImporter.ts
./libs/common/src/importers/passpackCsvImporter.ts
./libs/common/src/importers/truekeyCsvImporter.ts
./libs/common/src/importers/blackBerryCsvImporter.ts
./libs/common/src/importers/importError.ts
./libs/common/src/importers/padlockCsvImporter.ts
./libs/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts
./libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts
./libs/common/src/importers/onepasswordImporters/cipherImportContext.ts
./libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts
./libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts
./libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts
./libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts
./libs/common/src/importers/passwordSafeXmlImporter.ts
./libs/common/src/enums/kdfType.ts
./libs/common/src/enums/fileUploadType.ts
./libs/common/src/enums/cipherType.ts
@@ -235,7 +130,6 @@
./libs/common/src/abstractions/fileDownload/fileDownloadBuilder.ts
./libs/common/src/abstractions/fileDownload/fileDownload.service.ts
./libs/common/src/abstractions/fileDownload/fileDownloadRequest.ts
./libs/common/src/abstractions/abstractEncrypt.service.ts
./libs/common/src/abstractions/passwordGeneration.service.ts
./libs/common/src/abstractions/passwordReprompt.service.ts
./libs/common/src/abstractions/formValidationErrors.service.ts
@@ -296,7 +190,6 @@
./README.md
./LICENSE_BITWARDEN.txt
./CONTRIBUTING.md
./.github/PULL_REQUEST_TEMPLATE.md
./LICENSE_GPL.txt
./LICENSE.txt
./apps/web/Dockerfile
@@ -367,26 +260,6 @@
./apps/cli/src/services/lowdbStorage.service.ts
./apps/cli/src/services/nodeEnvSecureStorage.service.ts
./apps/browser/README.md
./apps/browser/store/locales/en/screenshots/Firefox/Firefox02.png
./apps/browser/store/locales/en/screenshots/Firefox/Firefox03.png
./apps/browser/store/locales/en/screenshots/Firefox/Firefox01.png
./apps/browser/store/locales/en/screenshots/Firefox/Firefox04.png
./apps/browser/store/locales/en/screenshots/Firefox/Firefox05.png
./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge03.png
./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge02.png
./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge01.png
./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge05.png
./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge04.png
./apps/browser/store/locales/en/screenshots/Chrome/Chrome01.png
./apps/browser/store/locales/en/screenshots/Chrome/Chrome02.png
./apps/browser/store/locales/en/screenshots/Chrome/Chrome03.png
./apps/browser/store/locales/en/screenshots/Chrome/Chrome04.png
./apps/browser/store/locales/en/screenshots/Chrome/Chrome05.png
./apps/browser/store/locales/en/screenshots/Opera/Opera01.png
./apps/browser/store/locales/en/screenshots/Opera/Opera03.png
./apps/browser/store/locales/en/screenshots/Opera/Opera02.png
./apps/browser/store/locales/en/screenshots/Opera/Opera05.png
./apps/browser/store/locales/en/screenshots/Opera/Opera04.png
./apps/browser/store/windows/AppxManifest.xml
./apps/browser/src/background/nativeMessaging.background.ts
./apps/browser/src/background/models/addLoginRuntimeMessage.ts

View File

@@ -1,5 +1,5 @@
---
name: Automatic responses
name: Automatic issue responses
on:
issues:
types:
@@ -62,14 +62,3 @@ jobs:
As we havent heard from you about this problem in some time, this issue will now be closed.
If this happens again or continues to be an problem, please respond to this issue with any additional detail to assist with reproduction and root cause analysis.
# Translation PR / Crowdin
- if: github.event.label.name == 'translation-pr'
name: Translation-PR
uses: peter-evans/close-issue@849549ba7c3a595a064c4b2c56f206ee78f93515 # v2.0.0
with:
comment: |
We really appreciate you taking the time to improve our translations.
However we use a translation tool called [Crowdin](https://crowdin.com/) to help manage our localization efforts across many different languages. Our translations can only be updated using Crowdin, so we'll have to close this PR, but would really appreciate if you'd consider joining our awesome translation community over at Crowdin.
More information can be found in the [localization section](https://contributing.bitwarden.com/contributing/#localization-l10n) of our [Contribution Guidelines](https://contributing.bitwarden.com/contributing/)

View File

@@ -0,0 +1,24 @@
---
name: Automatic pull request responses
on:
pull_request:
types:
- labeled
jobs:
close-issue:
name: 'Close pull request with automatic response'
runs-on: ubuntu-20.04
permissions:
pull-requests: write
steps:
# Translation PR / Crowdin
- if: github.event.label.name == 'translation-pr'
name: Translation-PR
uses: peter-evans/close-issue@849549ba7c3a595a064c4b2c56f206ee78f93515 # v2.0.0
with:
comment: |
We really appreciate you taking the time to improve our translations.
However we use a translation tool called [Crowdin](https://crowdin.com/) to help manage our localization efforts across many different languages. Our translations can only be updated using Crowdin, so we'll have to close this PR, but would really appreciate if you'd consider joining our awesome translation community over at Crowdin.
More information can be found in the [localization section](https://contributing.bitwarden.com/contributing/#localization-l10n) of our [Contribution Guidelines](https://contributing.bitwarden.com/contributing/)

View File

@@ -8,6 +8,7 @@ on:
- 'cf-pages'
paths:
- 'apps/desktop/**'
- 'libs/**'
- '*'
- '!*.md'
- '!*.txt'

View File

@@ -2,6 +2,7 @@
name: Enforce PR labels
on:
workflow_call:
pull_request:
types: [labeled, unlabeled, opened, edited, synchronize]
jobs:

View File

@@ -25,7 +25,7 @@ jobs:
- name: Lint filenames (no capital characters)
run: |
find . -type f -name "*[[:upper:]]*" \
find . -type f,d -name "*[[:upper:]]*" \
! -path "./node_modules/*" \
! -path "./coverage/*" \
! -path "*/dist/*" \
@@ -33,6 +33,8 @@ jobs:
! -path "*/target/*" \
! -path "./.git/*" \
! -path "*/.DS_Store" \
! -path "*/*locales/*" \
! -path "./.github/*" \
> tmp.txt
diff <(sort .github/whitelist-capital-letters.txt) <(sort tmp.txt)

View File

@@ -1,5 +1,6 @@
---
name: Release Browser
run-name: Release Browser ${{ inputs.release_type }}
on:
workflow_dispatch:
@@ -31,7 +32,7 @@ jobs:
- name: Branch check
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != refs/heads/hotfix-rc-browser ]]; then
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-browser" ]]; then
echo "==================================="
echo "[!] Can only release from the 'rc' or 'hotfix-rc-browser' branches"
echo "==================================="
@@ -113,7 +114,7 @@ jobs:
dist-firefox-*.zip,
dist-edge-*.zip'
- name: Download latest master build artifacts
- name: Dry Run - Download latest master build artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:

View File

@@ -1,5 +1,6 @@
---
name: Release CLI
run-name: Release CLI ${{ inputs.release_type }}
on:
workflow_dispatch:
@@ -47,7 +48,7 @@ jobs:
- name: Branch check
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != refs/heads/hotfix-rc-cli ]]; then
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-cli" ]]; then
echo "==================================="
echo "[!] Can only release from the 'rc' or 'hotfix-rc-cli' branches"
echo "==================================="
@@ -64,7 +65,8 @@ jobs:
monorepo: true
monorepo-project: cli
- name: Create GitHub deployment for Snap
- name: Create GitHub deployment
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
uses: chrnorm/deployment-action@1b599fe41a0ef1f95191e7f2eec4743f2d7dfc48
id: deployment
with:
@@ -83,7 +85,7 @@ jobs:
workflow_conclusion: success
branch: ${{ github.ref_name }}
- name: Download all artifacts
- name: Dry Run - Download all artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -115,7 +117,7 @@ jobs:
draft: true
- name: Update deployment status to Success
if: ${{ success() }}
if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }}
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'
@@ -123,7 +125,7 @@ jobs:
deployment-id: ${{ steps.deployment.outputs.deployment_id }}
- name: Update deployment status to Failure
if: ${{ failure() }}
if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }}
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'
@@ -168,7 +170,7 @@ jobs:
branch: ${{ github.ref_name }}
artifacts: bw_${{ env._PKG_VERSION }}_amd64.snap
- name: Download artifacts
- name: Dry Run - Download artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -226,7 +228,7 @@ jobs:
branch: ${{ github.ref_name }}
artifacts: bitwarden-cli.${{ env._PKG_VERSION }}.nupkg
- name: Download artifacts
- name: Dry Run - Download artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -276,7 +278,7 @@ jobs:
branch: ${{ github.ref_name }}
artifacts: bitwarden-cli-${{ env._PKG_VERSION }}-npm-build.zip
- name: Download artifacts
- name: Dry Run - Download artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:

View File

@@ -27,7 +27,7 @@ jobs:
- name: Branch check
run: |
if [[ "$GITHUB_REF" != "refs/heads/master" ]] && [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != "refs/heads/hotfix-rc" ]]; then
if [[ "$GITHUB_REF" != "refs/heads/master" ]] && [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then
echo "==================================="
echo "[!] Can only release from the 'master', 'rc' or 'hotfix-rc' branches"
echo "==================================="

View File

@@ -1,5 +1,6 @@
---
name: Release Desktop
run-name: Release Desktop ${{ inputs.release_type }}
on:
workflow_dispatch:
@@ -47,7 +48,7 @@ jobs:
- name: Branch check
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != refs/heads/hotfix-rc-desktop ]]; then
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-desktop" ]]; then
echo "==================================="
echo "[!] Can only release from the 'rc' or 'hotfix-rc-desktop' branches"
echo "==================================="
@@ -82,6 +83,7 @@ jobs:
esac
- name: Create GitHub deployment
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
uses: chrnorm/deployment-action@1b599fe41a0ef1f95191e7f2eec4743f2d7dfc48
id: deployment
with:
@@ -118,7 +120,7 @@ jobs:
branch: ${{ github.ref_name }}
path: apps/desktop/artifacts
- name: Download all artifacts
- name: Dry Run - Download all artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -210,7 +212,7 @@ jobs:
draft: true
- name: Update deployment status to Success
if: ${{ success() }}
if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }}
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'
@@ -218,7 +220,7 @@ jobs:
deployment-id: ${{ steps.deployment.outputs.deployment_id }}
- name: Update deployment status to Failure
if: ${{ failure() }}
if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }}
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'
@@ -267,7 +269,7 @@ jobs:
artifacts: bitwarden_${{ env._PKG_VERSION }}_amd64.snap
path: apps/desktop/dist
- name: Download Snap artifact
- name: Dry Run - Download Snap artifact
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -333,7 +335,7 @@ jobs:
artifacts: bitwarden.${{ env._PKG_VERSION }}.nupkg
path: apps/desktop/dist
- name: Download choco artifact
- name: Dry Run - Download choco artifact
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:

View File

@@ -19,14 +19,6 @@ jobs:
environment: 'Web Vault - QA'
description: 'Deployment from branch ${{ github.ref_name }}'
- name: Update deployment status to In Progress
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'
environment-url: http://vault.qa.bitwarden.pw
state: 'in_progress'
deployment-id: ${{ steps.deployment.outputs.deployment_id }}
- name: Checkout Repo
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2

View File

@@ -1,5 +1,6 @@
---
name: Release Web
run-name: Release Web ${{ inputs.release_type }}
on:
workflow_dispatch:
@@ -28,7 +29,7 @@ jobs:
- name: Branch check
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != "refs/heads/hotfix-rc-web" ]]; then
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-web" ]]; then
echo "==================================="
echo "[!] Can only release from the 'rc' or 'hotfix-rc-web' branches"
echo "==================================="
@@ -95,8 +96,7 @@ jobs:
env:
DOCKER_CONTENT_TRUST: 1
DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }}
run: |
docker push bitwarden/web:$_RELEASE_VERSION
run: docker push bitwarden/web:$_RELEASE_VERSION
- name: Log out of Docker and disable Docker Notary
run: |
@@ -162,7 +162,7 @@ jobs:
branch: ${{ github.ref_name }}
artifacts: web-*-cloud-COMMERCIAL.zip
- name: Download latest cloud asset (Dry Run)
- name: Dry Run - Download latest cloud asset
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -227,6 +227,7 @@ jobs:
- cfpages-deploy
steps:
- name: Create GitHub deployment
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
uses: chrnorm/deployment-action@1b599fe41a0ef1f95191e7f2eec4743f2d7dfc48
id: deployment
with:
@@ -248,7 +249,7 @@ jobs:
artifacts: "web-*-selfhosted-COMMERCIAL.zip,
web-*-selfhosted-open-source.zip"
- name: Download latest build artifacts
- name: Dry Run - Download latest build artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a
with:
@@ -279,7 +280,7 @@ jobs:
draft: true
- name: Update deployment status to Success
if: ${{ success() }}
if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }}
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'
@@ -288,7 +289,7 @@ jobs:
deployment-id: ${{ steps.deployment.outputs.deployment_id }}
- name: Update deployment status to Failure
if: ${{ failure() }}
if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }}
uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86
with:
token: '${{ secrets.GITHUB_TOKEN }}'

View File

@@ -15,9 +15,26 @@ defaults:
shell: bash
jobs:
setup:
name: Setup
runs-on: ubuntu-22.04
steps:
- name: Checkout repo
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
- name: Branch check
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-desktop" ]]; then
echo "==================================="
echo "[!] Can only increase rollout from the 'rc' or 'hotfix-rc-desktop' branches"
echo "==================================="
exit 1
fi
rollout:
name: Update Rollout Percentage
runs-on: ubuntu-22.04
needs: setup
steps:
- name: Login to Azure
uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010

View File

@@ -70,7 +70,9 @@ jobs:
steps:
- name: Install gnome-keyring
if: ${{ matrix.os=='ubuntu-latest' }}
run: sudo apt-get install -y gnome-keyring dbus-x11
run: |
sudo apt-get update
sudo apt-get install -y gnome-keyring dbus-x11
- name: Checkout repo
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846

View File

@@ -175,3 +175,8 @@ jobs:
## Objective
Automated ${{ github.event.inputs.client }} version bump to ${{ github.event.inputs.version_number }}"
enforce-labels:
name: Enforce Labels
needs: bump_version
uses: ./.github/workflows/enforce-labels.yml
secrets: inherit

View File

@@ -4,6 +4,7 @@
**/coverage
.angular
documentation.json
storybook-static
# External libraries / auto synced locales
apps/browser/src/_locales

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Ana parolla giriş et"
},
"loggingInAs": {
"message": "Giriş et"
},
"notYou": {
"message": "Siz deyilsiniz?"
},
"newAroundHere": {
"message": "Burada yenisiniz?"
},
"rememberEmail": {
"message": "E-poçtu xatırla"
}
}

View File

@@ -497,7 +497,7 @@
"message": "Папка адрэдагавана"
},
"deleteFolderConfirmation": {
"message": "Вы ўпэўнены, што хочаце выдаліць гэту папку?"
"message": "Вы сапраўды хочаце выдаліць гэту папку?"
},
"deletedFolder": {
"message": "Папка выдалена"
@@ -540,7 +540,7 @@
"message": "Элемент адрэдагаваны"
},
"deleteItemConfirmation": {
"message": "Вы ўпэўнены, што хочаце адправіць гэты элемент у сметніцу?"
"message": "Вы сапраўды хочаце адправіць гэты элемент у сметніцу?"
},
"deletedItem": {
"message": "Элемент адпраўлены ў сметніцу"
@@ -549,13 +549,13 @@
"message": "Перазапісаць пароль"
},
"overwritePasswordConfirmation": {
"message": "Вы ўпэўнены, што хочаце перазапісаць бягучы пароль?"
"message": "Вы сапраўды хочаце перазапісаць бягучы пароль?"
},
"overwriteUsername": {
"message": "Перазапісаць імя карыстальніка"
},
"overwriteUsernameConfirmation": {
"message": "Вы ўпэўнены, што хочаце перазапісаць бягучае імя карыстальніка?"
"message": "Вы сапраўды хочаце перазапісаць бягучае імя карыстальніка?"
},
"searchFolder": {
"message": "Пошук у папцы"
@@ -720,7 +720,7 @@
"message": "Выдаліць далучэнне"
},
"deleteAttachmentConfirmation": {
"message": "Вы ўпэўнены, што хочаце выдаліць гэта далучэнне?"
"message": "Вы сапраўды хочаце выдаліць гэта далучэнне?"
},
"deletedAttachment": {
"message": "Далучэнне выдалена"
@@ -1320,7 +1320,7 @@
"description": "ex. Date this password was updated"
},
"neverLockWarning": {
"message": "Вы ўпэўнены, што хочаце адключыць блакіроўку сховішча? Прызначыўшы параметр блакіравання \"Ніколі\", ключ шыфравання будзе захоўвацца на вашай прыладзе. Калі вы выкарыстоўваеце гэты параметр, вы павінны быць упэўнены ў тым, што ваша прылада надзейна абаронена."
"message": "Вы сапраўды хочаце адключыць блакіроўку сховішча? Прызначыўшы параметр блакіравання \"Ніколі\", ключ шыфравання будзе захоўвацца на вашай прыладзе. Калі вы выкарыстоўваеце гэты параметр, вы павінны быць упэўнены ў тым, што ваша прылада надзейна абаронена."
},
"noOrganizationsList": {
"message": "Вы не з'яўляецеся членам якой-небудзь арганізацыі. Арганізацыі дазваляюць бяспечна абменьвацца элементамі з іншымі карыстальнікамі."
@@ -1350,7 +1350,7 @@
"message": "Ненадзейны асноўны пароль"
},
"weakMasterPasswordDesc": {
"message": "Асноўны пароль, які вы выбралі з'яўляецца ненадзейным. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць надзейны асноўны пароль (або парольную фразу). Вы ўпэўнены, што хочаце выкарыстоўваць гэты асноўны пароль?"
"message": "Асноўны пароль, які вы выбралі з'яўляецца ненадзейным. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць надзейны асноўны пароль (або парольную фразу). Вы сапраўды хочаце выкарыстоўваць гэты асноўны пароль?"
},
"pin": {
"message": "PIN-код",
@@ -1410,7 +1410,7 @@
"message": "Выдаліць назаўсёды"
},
"permanentlyDeleteItemConfirmation": {
"message": "Вы ўпэўнены, што хочаце назаўсёды выдаліць гэты элемент?"
"message": "Вы сапраўды хочаце назаўсёды выдаліць гэты элемент?"
},
"permanentlyDeletedItem": {
"message": "Элемент выдалены назаўсёды"
@@ -1419,13 +1419,13 @@
"message": "Аднавіць элемент"
},
"restoreItemConfirmation": {
"message": "Вы ўпэўнены, што хочаце аднавіць гэты элемент?"
"message": "Вы сапраўды хочаце аднавіць гэты элемент?"
},
"restoredItem": {
"message": "Элемент адноўлены"
},
"vaultTimeoutLogOutConfirmation": {
"message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы ўпэўнены, што хочаце выкарыстоўваць гэты параметр?"
"message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы сапраўды хочаце выкарыстоўваць гэты параметр?"
},
"vaultTimeoutLogOutConfirmationTitle": {
"message": "Пацвярджэнне дзеяння часу чакання"
@@ -1643,14 +1643,14 @@
"message": "Адключана"
},
"removePasswordConfirmation": {
"message": "Вы ўпэўнены, што хочаце выдаліць пароль?"
"message": "Вы сапраўды хочаце выдаліць пароль?"
},
"deleteSend": {
"message": "Выдаліць Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"deleteSendConfirmation": {
"message": "Вы ўпэўнены, што хочаце выдаліць гэты Send?",
"message": "Вы сапраўды хочаце выдаліць гэты Send?",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"editSend": {
@@ -1887,7 +1887,7 @@
"message": "Асноўны пароль выдалены."
},
"leaveOrganizationConfirmation": {
"message": "Вы ўпэўнены, што хочаце выйсці з гэтай арганізацыі?"
"message": "Вы сапраўды хочаце выйсці з гэтай арганізацыі?"
},
"leftOrganization": {
"message": "Вы пакінулі арганізацыю."
@@ -1985,7 +1985,7 @@
"message": "Mir"
},
"loggingInTo": {
"message": "Уваход у $DOMAIN$",
"message": "Увайсці ў $DOMAIN$",
"placeholders": {
"domain": {
"content": "$1",
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Увайсці з асноўным паролем"
},
"loggingInAs": {
"message": "Увайсці як"
},
"notYou": {
"message": "Не вы?"
},
"newAroundHere": {
"message": "Упершыню тут?"
},
"rememberEmail": {
"message": "Запомніць электронную пошту"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Вписване с главната парола"
},
"loggingInAs": {
"message": "Вписване като"
},
"notYou": {
"message": "Това не сте Вие?"
},
"newAroundHere": {
"message": "За пръв път ли сте тук?"
},
"rememberEmail": {
"message": "Запомняне на е-пощата"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Inicia sessió amb la contrasenya mestra"
},
"loggingInAs": {
"message": "Has iniciat sessió com"
},
"notYou": {
"message": "No sou vosaltres?"
},
"newAroundHere": {
"message": "Nou per ací?"
},
"rememberEmail": {
"message": "Recorda el correu electronic"
}
}

View File

@@ -571,22 +571,22 @@
"description": "This is the folder for uncategorized items"
},
"enableAddLoginNotification": {
"message": "Ask to add login"
"message": "Ptát se na přidání přihlášení"
},
"addLoginNotificationDesc": {
"message": "Notifikace \"Přidat přihlašovací údaje\" automaticky vyzve k uložení přihlašovacích údajů do trezoru, pokud se s nimi poprvé přihlašujete."
"message": "Dotaz ohledně uložení údajů, pokud nebyly v trezoru nalezeny."
},
"showCardsCurrentTab": {
"message": "Show cards on Tab page"
"message": "Zobrazit karty na obrazovce Karta"
},
"showCardsCurrentTabDesc": {
"message": "List card items on the Tab page for easy auto-fill."
"message": "Zobrazit karetní položky na obrazovce Karta pro snadné vyplnění."
},
"showIdentitiesCurrentTab": {
"message": "Show identities on Tab page"
"message": "Zobrazit identity na obrazovce Karta"
},
"showIdentitiesCurrentTabDesc": {
"message": "List identity items on the Tab page for easy auto-fill."
"message": "Zobrazit položky identit na obrazovce Karta pro snadné vyplnění."
},
"clearClipboard": {
"message": "Vyčistit schránku",
@@ -615,7 +615,7 @@
"message": "Ano, aktualizovat"
},
"enableContextMenuItem": {
"message": "Show context menu options"
"message": "Zobrazit v kontextovém menu"
},
"contextMenuItemDesc": {
"message": "Use a secondary click to access password generation and matching logins for the website. "
@@ -1312,7 +1312,7 @@
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"message": "Vytvořeno",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
@@ -1488,7 +1488,7 @@
"message": "Zaškrtnutím tohoto políčka souhlasím s následujícím:"
},
"acceptPoliciesRequired": {
"message": "Terms of Service and Privacy Policy have not been acknowledged."
"message": "Podmínky použití a zásady ochrany osobních údajů nebyly odsouhlaseny."
},
"termsOfService": {
"message": "Podmínky použití"
@@ -1854,7 +1854,7 @@
}
},
"vaultTimeoutTooLarge": {
"message": "Your vault timeout exceeds the restrictions set by your organization."
"message": "Časový limit vašeho trezoru překračuje omezení stanovená vaší organiza."
},
"vaultExportDisabled": {
"message": "Export trezoru zakázán"
@@ -1923,11 +1923,11 @@
"message": "Typ uživatelského jména"
},
"plusAddressedEmail": {
"message": "Plus addressed email",
"message": "E-mailová adresa s plusem",
"description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com"
},
"plusAddressedEmailDesc": {
"message": "Use your email provider's sub-addressing capabilities."
"message": "Použijte funkce podadres Vašeho poskytovatele e-mailu."
},
"catchallEmail": {
"message": "E-mail pro doménový koš"
@@ -1954,13 +1954,13 @@
"message": "Služba"
},
"forwardedEmail": {
"message": "Forwarded email alias"
"message": "Alias přeposílaného e-mailu"
},
"forwardedEmailDesc": {
"message": "Vygenerovat e-mailový alias pomocí externí služby pro přesměrování."
},
"hostname": {
"message": "Hostname",
"message": "Název hostitele",
"description": "Part of a URL."
},
"apiAccessToken": {
@@ -1985,7 +1985,7 @@
"message": "Mir"
},
"loggingInTo": {
"message": "Logging in to $DOMAIN$",
"message": "Přihlašování do $DOMAIN$",
"placeholders": {
"domain": {
"content": "$1",
@@ -2021,12 +2021,27 @@
}
},
"lastSeenOn": {
"message": "last seen on: $DATE$",
"message": "naposledy spatřen: $DATE$",
"placeholders": {
"date": {
"content": "$1",
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Přihlásit se pomocí hlavního hesla"
},
"loggingInAs": {
"message": "Jste přihlášení jako"
},
"notYou": {
"message": "Nejste to vy?"
},
"newAroundHere": {
"message": "Jste tu noví?"
},
"rememberEmail": {
"message": "Pamatovat si e-mail"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -342,7 +342,7 @@
"message": "Identität verifizieren"
},
"yourVaultIsLocked": {
"message": "Dein Tresor ist gesperrt. Überprüfe dein Master-Passwort um fortzufahren."
"message": "Ihr Tresor ist gesperrt. Bestätigen Sie Ihre Identität um fortzufahren."
},
"unlock": {
"message": "Entsperren"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Mit Master-Passwort anmelden"
},
"loggingInAs": {
"message": "Einloggen als"
},
"notYou": {
"message": "Nicht du?"
},
"newAroundHere": {
"message": "Neu hier?"
},
"rememberEmail": {
"message": "E-Mail-Adresse merken"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -342,7 +342,7 @@
"message": "Verify Identity"
},
"yourVaultIsLocked": {
"message": "Your vault is locked. Verify your master password to continue."
"message": "Your vault is locked. Verify your identity to continue."
},
"unlock": {
"message": "Unlock"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -342,7 +342,7 @@
"message": "Verify Identity"
},
"yourVaultIsLocked": {
"message": "Your vault is locked. Verify your master password to continue."
"message": "Your vault is locked. Verify your identity to continue."
},
"unlock": {
"message": "Unlock"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -603,10 +603,10 @@
"message": "Sí, guardar ahora"
},
"enableChangedPasswordNotification": {
"message": "Solicitar la actualización de los datos de iniciode sesión existentes"
"message": "Solicitar la actualización de los datos de inicio de sesión existentes"
},
"changedPasswordNotificationDesc": {
"message": "Solicitar la actualización de los datos de iniciode sesión existentes cuuando se detecte un cambio en un sitio web."
"message": "Solicitar la actualización de los datos de inicio de sesión existentes cuando se detecte un cambio en un sitio web."
},
"notificationChangeDesc": {
"message": "¿Desea actualizar esta contraseña en Bitwarden?"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Iniciar sesión con contraseña maestra"
},
"loggingInAs": {
"message": "Iniciando sesión como"
},
"notYou": {
"message": "¿No eres tú?"
},
"newAroundHere": {
"message": "¿Nuevo por aquí?"
},
"rememberEmail": {
"message": "Recordar email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Logi sisse ülemparooliga"
},
"loggingInAs": {
"message": "Sisselogimas kui"
},
"notYou": {
"message": "Pole sina?"
},
"newAroundHere": {
"message": "Oled siin uus?"
},
"rememberEmail": {
"message": "Mäleta e-posti aadressi"
}
}

View File

@@ -1312,7 +1312,7 @@
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"message": "Sortuta",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Hasi saioa pasahitz nagusiarekin"
},
"loggingInAs": {
"message": "Honela hasi saioa"
},
"notYou": {
"message": "Ez zara zu?"
},
"newAroundHere": {
"message": "Berria hemendik?"
},
"rememberEmail": {
"message": "Emaila gogoratu"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "با کلمه عبور اصلی وارد شوید"
},
"loggingInAs": {
"message": "در حال ورود به عنوان"
},
"notYou": {
"message": "شما نیستید؟"
},
"newAroundHere": {
"message": "اینجا جدیده؟"
},
"rememberEmail": {
"message": "ایمیل را به خاطر بسپار"
}
}

View File

@@ -134,7 +134,7 @@
"message": "Lähetä koodi"
},
"codeSent": {
"message": "Koodi lähetetty"
"message": "Koodi lähetettiin"
},
"verificationCode": {
"message": "Todennuskoodi"
@@ -765,7 +765,7 @@
"message": "Et ole tällä hetkellä Premium-jäsen."
},
"premiumSignUpAndGet": {
"message": "Ryhdy Premium-jäseneksi saadaksesi:"
"message": "Liity Premium-jäseneksi saadaksesi:"
},
"ppremiumSignUpStorage": {
"message": "1 Gt salattua tallennustilaa tiedostoliitteille."
@@ -1308,7 +1308,7 @@
"message": "Oletus"
},
"dateUpdated": {
"message": "Päivitetty",
"message": "Päivitettiin",
"description": "ex. Date this item was updated"
},
"dateCreated": {
@@ -1316,7 +1316,7 @@
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Salasana päivitetty",
"message": "Salasana päivitettiin",
"description": "ex. Date this password was updated"
},
"neverLockWarning": {
@@ -1563,7 +1563,7 @@
"message": "Toimintoa ei voi suorittaa sivupalkissa, yritä toimintoa uudelleen ponnahdusvalikossa tai ponnahdusikkunassa."
},
"personalOwnershipSubmitError": {
"message": "Yrityksen asettaman käytännön johdosta et voi tallentaa kohteita henkilökohtaiseen holviisi. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista."
"message": "Yrityskäytännön johdosta kohteiden tallennus henkilökohtaiseen holviin ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista."
},
"personalOwnershipPolicyInEffect": {
"message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi."
@@ -1619,7 +1619,7 @@
"message": "Salasanasuojattu"
},
"copySendLink": {
"message": "Kopioi Sendin linkki",
"message": "Kopioi Send-linkki",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"removePassword": {
@@ -1742,7 +1742,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendDisabledWarning": {
"message": "Yrityksen käytännön vuoksi voit poistaa vain olemassa olevan Sendin.",
"message": "Yrityskäytännön vuoksi voit poistaa vain olemassa olevan Sendin.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"createdSend": {
@@ -1814,7 +1814,7 @@
"message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi ominaisuutta. Voit vahvistaa osoitteesi verkkoholvissa."
},
"updatedMasterPassword": {
"message": "Pääsalasana vaihdettiin"
"message": "Pääsalasana päivitettiin"
},
"updateMasterPassword": {
"message": "Vaihda pääsalasana"
@@ -1902,7 +1902,7 @@
"message": "Henkilökohtaisen holvin vienti"
},
"exportingPersonalVaultDescription": {
"message": "Vain tunnukselle $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.",
"message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.",
"placeholders": {
"email": {
"content": "$1",
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Kirjaudu pääsalasanalla"
},
"loggingInAs": {
"message": "Kirjaudutaan tunnuksella"
},
"notYou": {
"message": "Etkö se ollut sinä?"
},
"newAroundHere": {
"message": "Oletko uusi täällä?"
},
"rememberEmail": {
"message": "Muista sähköpostiosoite"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -571,7 +571,7 @@
"description": "This is the folder for uncategorized items"
},
"enableAddLoginNotification": {
"message": "Ask to add login"
"message": "Demander à ajouter un identifiant"
},
"addLoginNotificationDesc": {
"message": "La \"Notification de demande d'ajout d'identifiant\" apparait automatiquement pour vous demander d'enregistrer dans votre coffre les identifiants que vous utilisez pour la première fois."
@@ -2006,7 +2006,7 @@
"message": "Server version"
},
"selfHosted": {
"message": "Self-hosted"
"message": "Auto-hébergé"
},
"thirdParty": {
"message": "Third-party"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Ce n'est pas vous ?"
},
"newAroundHere": {
"message": "Êtes-vous nouveau ici ?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -14,7 +14,7 @@
"message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru."
},
"createAccount": {
"message": "Napravi račun"
"message": "Stvori račun"
},
"login": {
"message": "Prijava"
@@ -32,7 +32,7 @@
"message": "Pošalji"
},
"emailAddress": {
"message": "Email Adresa"
"message": "Adresa e-pošte"
},
"masterPass": {
"message": "Glavna lozinka"
@@ -98,13 +98,13 @@
"message": "Prilagođeno ime polja"
},
"noMatchingLogins": {
"message": "Nema podudarajućih prijava."
"message": "Nema podudarajućih prijava"
},
"unlockVaultMenu": {
"message": "Otključaj trezor"
"message": "Otključaj svoj trezor"
},
"loginToVaultMenu": {
"message": "Prijavite se u svoj trezor"
"message": "Prijavi se u svoj trezor"
},
"autoFillInfo": {
"message": "Nema dostupnih prijava za auto-ispunu na web stranici u ovoj kartici."
@@ -215,7 +215,7 @@
"message": "Automatski generiraj jake, jedinstvene lozinke."
},
"bitWebVault": {
"message": "Bitwarden Web trezor"
"message": "Bitwarden web trezor"
},
"importItems": {
"message": "Uvoz stavki"
@@ -236,13 +236,13 @@
"message": "Duljina"
},
"uppercase": {
"message": "Velika slova (A-Z)"
"message": "Velika slova (A - Z)"
},
"lowercase": {
"message": "Mala slova (a-z)"
"message": "Mala slova (a - z)"
},
"numbers": {
"message": "Brojevi (0-9)"
"message": "Brojevi (0 - 9)"
},
"specialCharacters": {
"message": "Posebni znakovi (!@#$%^&*)"
@@ -264,7 +264,7 @@
"message": "Najmanje brojeva"
},
"minSpecial": {
"message": "Najmanje specijalnih"
"message": "Najmanje posebnih"
},
"avoidAmbChar": {
"message": "Izbjegavaj dvosmislene znakove"
@@ -424,13 +424,13 @@
"message": "Neispravna adresa e-pošte."
},
"masterPasswordRequired": {
"message": "Master password is required."
"message": "Potrebna je glavna lozinka."
},
"confirmMasterPasswordRequired": {
"message": "Master password retype is required."
"message": "Potreban je ponovni unos glavne lozinke."
},
"masterPasswordMinlength": {
"message": "Master password must be at least 8 characters long."
"message": "Glavna lozinka mora imati najmanje 8 znakova."
},
"masterPassDoesntMatch": {
"message": "Potvrda glavne lozinke se ne podudara."
@@ -491,10 +491,10 @@
"message": "Svoju glavnu lozinku možeš promijeniti na web trezoru. Želiš li sada posjetiti bitwarden.com?"
},
"twoStepLoginConfirmation": {
"message": "Prijava u dva koraka čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja kao što je sigurnosni ključ, autentifikatorske aplikacije, SMS-om, pozivom ili e-poštom. Prijavu u dva koraka možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?"
"message": "Prijava dvostrukom autentifikacijom čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja pomoću sigurnosnog koda, autentifikatorske aplikacije, SMS-om, pozivom ili e-poštom. Prijavu dvostrukom autentifikacijom možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?"
},
"editedFolder": {
"message": "Mapa izmijenjena"
"message": "Mapa spremljena"
},
"deleteFolderConfirmation": {
"message": "Sigurno želiš izbrisati ovu mapu?"
@@ -555,7 +555,7 @@
"message": "Prebriši korisničko ime"
},
"overwriteUsernameConfirmation": {
"message": "Jesi li siguran da želiš prebrisati trenutno korisničko ime?"
"message": "Sigurno želiš prebrisati trenutno korisničko ime?"
},
"searchFolder": {
"message": "Mapa pretraživanja"
@@ -571,22 +571,22 @@
"description": "This is the folder for uncategorized items"
},
"enableAddLoginNotification": {
"message": "Ask to add login"
"message": "Upitaj za dodavanje prijave"
},
"addLoginNotificationDesc": {
"message": "Upit za dodavanje prijave pojavljuje se kada se otkrije prva prijava na neko web mjesto. Bitwarden će te pitatati želiš li uneseno korisničko ime i lozinku spremiti u svoj trezor."
},
"showCardsCurrentTab": {
"message": "Show cards on Tab page"
"message": "Prikaži platne kartice"
},
"showCardsCurrentTabDesc": {
"message": "List card items on the Tab page for easy auto-fill."
"message": "Prikazuj platne kartice za jednostavnu auto-ispunu."
},
"showIdentitiesCurrentTab": {
"message": "Show identities on Tab page"
"message": "Prikaži identitete"
},
"showIdentitiesCurrentTabDesc": {
"message": "List identity items on the Tab page for easy auto-fill."
"message": "Prikazuj identitete za jednostavnu auto-ispunu."
},
"clearClipboard": {
"message": "Očisti međuspremnik",
@@ -603,10 +603,10 @@
"message": "Spremi"
},
"enableChangedPasswordNotification": {
"message": "Ask to update existing login"
"message": "Upitaj za ažuriranje trenutne prijave"
},
"changedPasswordNotificationDesc": {
"message": "Ask to update a login's password when a change is detected on a website."
"message": "Upitaj za ažuriranje lozinke prijave ako se otkrije promjena na web stranici."
},
"notificationChangeDesc": {
"message": "Želiš li ovu lozinku ažurirati u Bitwarden-u?"
@@ -615,10 +615,10 @@
"message": "Ažuriraj"
},
"enableContextMenuItem": {
"message": "Show context menu options"
"message": "Prikaži opcije kotekstualnog izbornika"
},
"contextMenuItemDesc": {
"message": "Use a secondary click to access password generation and matching logins for the website. "
"message": "Koristi sekundarni klik za pristup generatoru lozinki i pripadajućim prijavama trenunte web stranice. "
},
"defaultUriMatchDetection": {
"message": "Zadano otkrivanje URI podudaranja",
@@ -642,7 +642,7 @@
"description": "Light color"
},
"solarizedDark": {
"message": "Solarizirana Tamna",
"message": "Solarized Dark",
"description": "'Solarized' is a noun and the name of a color scheme. It should not be translated."
},
"exportVault": {
@@ -723,7 +723,7 @@
"message": "Sigurno želiš izbrisati ovaj privitak?"
},
"deletedAttachment": {
"message": "Izbrisani privitak"
"message": "Privitak izbrisan"
},
"newAttachment": {
"message": "Dodaj novi privitak"
@@ -732,7 +732,7 @@
"message": "Nema privitaka."
},
"attachmentSaved": {
"message": "Privitak je spremljen."
"message": "Privitak spremljen"
},
"file": {
"message": "Datoteka"
@@ -771,7 +771,7 @@
"message": "1 GB šifriranog prostora za pohranu podataka."
},
"ppremiumSignUpTwoStep": {
"message": "Dodatne mogućnosti za prijavu u dva koraka kao što su YubiKey, FIDO U2F i Duo."
"message": "Dodatne mogućnosti za prijavu dvostrukom autentifikacijom kao što su YubiKey, FIDO U2F i Duo."
},
"ppremiumSignUpReports": {
"message": "Higijenu lozinki, zdravlje računa i izvještaje o krađi podatak radi zaštite svojeg trezora."
@@ -810,19 +810,19 @@
"message": "Osvježavanje završeno"
},
"enableAutoTotpCopy": {
"message": "Copy TOTP automatically"
"message": "Automatski kopiraj TOTP"
},
"disableAutoTotpCopyDesc": {
"message": "Ako se za prijavu koristi dvostruka autentifikacija, TOTP kontrolni kôd se automatski kopira u međuspremnik nakon auto-ispune korisničkog imena i lozinke."
},
"enableAutoBiometricsPrompt": {
"message": "Ask for biometrics on launch"
"message": "Traži biometrijsku autentifikaciju pri pokretanju"
},
"premiumRequired": {
"message": "Potrebno premium članstvo"
},
"premiumRequiredDesc": {
"message": "Za korištenje ove značajke potrebno je premium članstvo."
"message": "Za korištenje ove značajke potrebno je Premium članstvo."
},
"enterVerificationCodeApp": {
"message": "Unesi 6-znamenkasti kontrolni kôd iz autentifikatorske aplikacije."
@@ -852,7 +852,7 @@
"message": "Ponovno slanje kontrolnog koda e-poštom"
},
"useAnotherTwoStepMethod": {
"message": "Koristiti drugi način prijave u dva koraka"
"message": "Koristiti drugi način prijave dvostrukom autentifikacijom"
},
"insertYubiKey": {
"message": "Umetni svoj YubiKey u USB priključak računala, a zatim dodirni njegovu tipku."
@@ -873,13 +873,13 @@
"message": "Prijava nije dostupna"
},
"noTwoStepProviders": {
"message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja prijave u dva koraka."
"message": "Ovaj račun ima omogućenu prijavu dvostrukom autentifikacijom, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja dvostruke autentifikacije."
},
"noTwoStepProviders2": {
"message": "Koristi podržani web-preglednik (npr. Chrome) i/ili dodaj dodatne usluge koje su bolje podržane u web preglednicima (npr. aplikacija Autentifikator)."
},
"twoStepOptions": {
"message": "Mogućnosti dvostruke autentifikacije"
"message": "Mogućnosti prijave dvostrukom autentifikacijom"
},
"recoveryCodeDesc": {
"message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvojem računu."
@@ -954,10 +954,10 @@
"message": "URL-ovi okoline su spremljeni."
},
"enableAutoFillOnPageLoad": {
"message": "Omogući auto-ispunu nakon učitavanja stranice"
"message": "Auto-ispuna kod učitavanja"
},
"enableAutoFillOnPageLoadDesc": {
"message": "Ako se otkrije obrazac za prijavu, samostalno auto-ispuni kada se web stranica učita."
"message": "Nakon učitavanja web stranice, ako je otkriven obrazac za prijavu, auto-ispuni."
},
"experimentalFeature": {
"message": "Ovo je trenutno eksperimentalna značajka. Koristi na vlastitu odgovornost."
@@ -966,7 +966,7 @@
"message": "Zadana postvaka Auto-ispune za prijave"
},
"defaultAutoFillOnPageLoadDesc": {
"message": "Nakon omogućavanja Auto-ispune kod učitavanja stranice, moguće je uključiti/isključiti ovu značajku za svaku pojedinu prijavu. Ovo je zadana postavka za prijave koje nisu pojedinčano određene."
"message": "Nakon omogućavanja auto-ispune kod učitavanja stranice, moguće je uključiti/isključiti ovu značajku za svaku pojedinu prijavu. Ovo je zadana postavka za prijave koje nisu pojedinčano određene."
},
"itemAutoFillOnPageLoad": {
"message": "Auto-ispuna kod učitavanja stranice (ako je uključeno u Postavkama)"
@@ -1037,19 +1037,19 @@
"message": "Ovaj preglednik ne može obraditi U2F zahtjeve u ovom iskočnom prozoru. Želiš li otvoriti ovaj iskočni prozor u novom prozoru za prijavu putem U2F?"
},
"enableFavicon": {
"message": "Show website icons"
"message": "Prikaži ikone mrežnih mjesta"
},
"faviconDesc": {
"message": "Show a recognizable image next to each login."
"message": "Prikaži prepoznatljivu sliku pored svake prijave."
},
"enableBadgeCounter": {
"message": "Show badge counter"
"message": "Prikaži značku brojača"
},
"badgeCounterDesc": {
"message": "Indicate how many logins you have for the current web page."
"message": "Prikazuje broj spremljenih prijava za trenutnu web stranicu."
},
"cardholderName": {
"message": "Vlasnik kartice"
"message": "Vlasnik platne kartice"
},
"number": {
"message": "Broj"
@@ -1142,7 +1142,7 @@
"message": "Tvrtka"
},
"ssn": {
"message": "Broj socijalnog osiguranja"
"message": "Broj zdravstvenog osiguranja"
},
"passportNumber": {
"message": "Broj putovnice"
@@ -1312,7 +1312,7 @@
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"message": "Stvoreno",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
@@ -1413,7 +1413,7 @@
"message": "Želiš li zaista trajno izbrisati ovu stavku?"
},
"permanentlyDeletedItem": {
"message": "Trajno izbrisana stavka"
"message": "Stavka trajno izbrisana"
},
"restoreItem": {
"message": "Vrati stavku"
@@ -1488,7 +1488,7 @@
"message": "Označavanjem ove kućice slažete se sa sljedećim:"
},
"acceptPoliciesRequired": {
"message": "Terms of Service and Privacy Policy have not been acknowledged."
"message": "Uvjeti korištenja i Politika privatnosti nisu prihvaćeni."
},
"termsOfService": {
"message": "Uvjeti korištenja"
@@ -1750,7 +1750,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"editedSend": {
"message": "Send uređen",
"message": "Send spremljen",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendLinuxChromiumFileWarning": {
@@ -1854,7 +1854,7 @@
}
},
"vaultTimeoutTooLarge": {
"message": "Your vault timeout exceeds the restrictions set by your organization."
"message": "Vrijeme isteka premašuje ograničenje koje je postavila tvoja organizacija."
},
"vaultExportDisabled": {
"message": "Izvoz trezora onemogućen"
@@ -1914,10 +1914,10 @@
"message": "Pogreška"
},
"regenerateUsername": {
"message": "Ponovno kreiraj korisničko ime"
"message": "Ponovno generiraj korisničko ime"
},
"generateUsername": {
"message": "Kreiraj korisničko ime"
"message": "Generiraj korisničko ime"
},
"usernameType": {
"message": "Tip korisničkog imena"
@@ -1930,10 +1930,10 @@
"message": "Koristi mogućnosti podadresiranja svog davatelja e-pošte."
},
"catchallEmail": {
"message": "Dohvati sve (Catch-all) e-pošta"
"message": "Uhvati sve (catch-all) e-pošta"
},
"catchallEmailDesc": {
"message": "Koristi konfigurirani Catch-all sandučić svoje domene."
"message": "Koristi konfigurirani catch-all sandučić svoje domene."
},
"random": {
"message": "Nasumično"
@@ -1945,7 +1945,7 @@
"message": "Naziv web mjesta"
},
"whatWouldYouLikeToGenerate": {
"message": "Što želiš kreirati?"
"message": "Što želiš generirati?"
},
"passwordType": {
"message": "Tip lozinke"
@@ -1957,35 +1957,35 @@
"message": "Proslijeđeni pseudonim e-pošte"
},
"forwardedEmailDesc": {
"message": "Kreiraj pseudonim e-pošte s vanjskom uslugom prosljeđivanja."
"message": "Generiraj pseudonim e-pošte s vanjskom uslugom prosljeđivanja."
},
"hostname": {
"message": "Naziv hosta",
"message": "Naziv poslužitelja",
"description": "Part of a URL."
},
"apiAccessToken": {
"message": "API pristupni token"
"message": "Token za API pristup"
},
"apiKey": {
"message": "API ključ"
},
"ssoKeyConnectorError": {
"message": "Pogreška konektora ključa: provjerite je li konektor ključa dostupan i radi ispravno."
"message": "Pogreška konektora ključa: provjeri je li konektor ključa dostupan i radi li ispravno."
},
"premiumSubcriptionRequired": {
"message": "Premium subscription required"
"message": "Potrebna Premium pretplata"
},
"organizationIsDisabled": {
"message": "Organization suspended."
"message": "Organizacija suspendirana."
},
"disabledOrganizationFilterError": {
"message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance."
"message": "Stavkama u suspendiranoj Organizaciji se ne može pristupiti. Kontaktiraj vlasnika Organizacije za pomoć."
},
"cardBrandMir": {
"message": "Mir"
},
"loggingInTo": {
"message": "Logging in to $DOMAIN$",
"message": "Prijava u $DOMAIN$",
"placeholders": {
"domain": {
"content": "$1",
@@ -1994,25 +1994,25 @@
}
},
"settingsEdited": {
"message": "Settings have been edited"
"message": "Postavke su izmijenjene"
},
"environmentEditedClick": {
"message": "Click here"
"message": "Klikni ovdje"
},
"environmentEditedReset": {
"message": "to reset to pre-configured settings"
"message": "za ponovno postavljanje zadanih postavki"
},
"serverVersion": {
"message": "Server version"
"message": "Verzija poslužitelja"
},
"selfHosted": {
"message": "Self-hosted"
"message": "Vlastiti poslužitelj"
},
"thirdParty": {
"message": "Third-party"
},
"thirdPartyServerMessage": {
"message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.",
"message": "Povezan s implementacijom poslužitelja treće strane, $SERVERNAME$. Provjeri bugove pomoću službenog poslužitelja ili ih prijavi poslužitelju treće strane.",
"placeholders": {
"servername": {
"content": "$1",
@@ -2021,12 +2021,27 @@
}
},
"lastSeenOn": {
"message": "last seen on: $DATE$",
"message": "zadnji put viđeno: $DATE$",
"placeholders": {
"date": {
"content": "$1",
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Prijava glavnom lozinkom"
},
"loggingInAs": {
"message": "Prijava kao"
},
"notYou": {
"message": "Nisi ti?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Zapamti adresu e-pošte"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Bejelentkezés mesterjelszóval"
},
"loggingInAs": {
"message": "Bejelentkezve mint"
},
"notYou": {
"message": "Ez tévedés?"
},
"newAroundHere": {
"message": "Új felhasználó vagyunk?"
},
"rememberEmail": {
"message": "Email megjegyzése"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Accedi con la password principale"
},
"loggingInAs": {
"message": "Accesso eseguito come"
},
"notYou": {
"message": "Non sei tu?"
},
"newAroundHere": {
"message": "Nuovo da queste parti?"
},
"rememberEmail": {
"message": "Ricorda email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "マスターパスワードでログイン"
},
"loggingInAs": {
"message": "ログイン中:"
},
"notYou": {
"message": "あなたではないですか?"
},
"newAroundHere": {
"message": "初めてですか?"
},
"rememberEmail": {
"message": "メールアドレスを保存"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Pierakstīties ar galveno paroli"
},
"loggingInAs": {
"message": "Pierakstās kā"
},
"notYou": {
"message": "Tas neesi Tu?"
},
"newAroundHere": {
"message": "Jauns šeit?"
},
"rememberEmail": {
"message": "Atcerēties e-pasta adresi"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -20,7 +20,7 @@
"message": "Inloggen"
},
"enterpriseSingleSignOn": {
"message": "Enterprise Single Sign-On"
"message": "Single sign-on voor bedrijven"
},
"cancel": {
"message": "Annuleren"
@@ -330,7 +330,7 @@
"message": "Overig"
},
"rateExtension": {
"message": "Extensie beoordelen"
"message": "Deze extensie beoordelen"
},
"rateExtensionDesc": {
"message": "Je kunt ons helpen door een goede recensie achter te laten!"
@@ -1312,7 +1312,7 @@
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"message": "Aangemaakt",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
@@ -2009,7 +2009,7 @@
"message": "Zelfgehost"
},
"thirdParty": {
"message": "Third-party"
"message": "van derden"
},
"thirdPartyServerMessage": {
"message": "Verbonden met server implementatie van derden, $SERVERNAME$. Reproduceer bugs via de officiële server, of meld ze bij het serverproject.",
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Inloggen met je hoofdwachtwoord"
},
"loggingInAs": {
"message": "Inloggen als"
},
"notYou": {
"message": "Ben jij dit niet?"
},
"newAroundHere": {
"message": "Nieuw hier?"
},
"rememberEmail": {
"message": "E-mailadres onthouden"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -32,7 +32,7 @@
"message": "Wyślij"
},
"emailAddress": {
"message": "Adres email"
"message": "Adres e-mail"
},
"masterPass": {
"message": "Hasło główne"
@@ -56,7 +56,7 @@
"message": "Sejf"
},
"myVault": {
"message": "Mój Sejf"
"message": "Mój sejf"
},
"allVaults": {
"message": "Wszystkie sejfy"
@@ -68,25 +68,25 @@
"message": "Ustawienia"
},
"currentTab": {
"message": "Bieżąca karta"
"message": "Obecna karta"
},
"copyPassword": {
"message": "Skopiuj hasło"
"message": "Kopiuj hasło"
},
"copyNote": {
"message": "Skopiuj notatkę"
"message": "Kopiuj notatkę"
},
"copyUri": {
"message": "Kopiuj URI"
},
"copyUsername": {
"message": "Skopiuj nazwę użytkownika"
"message": "Kopiuj nazwę użytkownika"
},
"copyNumber": {
"message": "Skopiuj numer"
"message": "Kopiuj numer"
},
"copySecurityCode": {
"message": "Skopiuj kod zabezpieczający"
"message": "Kopiuj kod zabezpieczający"
},
"autoFill": {
"message": "Autouzupełnianie"
@@ -199,7 +199,7 @@
"message": "Synchronizacja"
},
"syncVaultNow": {
"message": "Rozpocznij synchronizację sejfu"
"message": "Synchronizuj sejf"
},
"lastSync": {
"message": "Ostatnia synchronizacja:"
@@ -224,10 +224,10 @@
"message": "Wybierz"
},
"generatePassword": {
"message": "Generuj hasło"
"message": "Wygeneruj hasło"
},
"regeneratePassword": {
"message": "Wygeneruj hasło ponownie"
"message": "Wygeneruj ponownie hasło"
},
"options": {
"message": "Opcje"
@@ -494,7 +494,7 @@
"message": "Logowanie dwustopniowe sprawia, że konto jest bardziej bezpieczne poprzez wymuszenie potwierdzenia logowania z innego urządzenia, takiego jak z klucza bezpieczeństwa, aplikacji uwierzytelniającej, wiadomości SMS, telefonu lub adresu e-mail. Logowanie dwustopniowe możesz włączyć w sejfie internetowym bitwarden.com. Czy chcesz przejść do tej strony?"
},
"editedFolder": {
"message": "Folder został zaktualizowany"
"message": "Folder został zapisany"
},
"deleteFolderConfirmation": {
"message": "Czy na pewno chcesz usunąć ten folder?"
@@ -537,7 +537,7 @@
"message": "Element został dodany"
},
"editedItem": {
"message": "Element został zaktualizowany"
"message": "Element został zapisany"
},
"deleteItemConfirmation": {
"message": "Czy na pewno chcesz to usunąć?"
@@ -726,19 +726,19 @@
"message": "Załącznik został usunięty"
},
"newAttachment": {
"message": "Dodaj załącznik"
"message": "Dodaj nowy załącznik"
},
"noAttachments": {
"message": "Brak załączników."
},
"attachmentSaved": {
"message": "Załącznik został zapisany."
"message": "Załącznik został zapisany"
},
"file": {
"message": "Plik"
},
"selectFile": {
"message": "Wybierz plik."
"message": "Wybierz plik"
},
"maxFileSize": {
"message": "Maksymalny rozmiar pliku to 500 MB."
@@ -810,7 +810,7 @@
"message": "Odświeżanie zostało zakończone"
},
"enableAutoTotpCopy": {
"message": "Kopiuj TOTP automatycznie"
"message": "Kopiuj kod TOTP automatycznie"
},
"disableAutoTotpCopyDesc": {
"message": "Jeśli dane logowania posiadają dołączony klucz uwierzytelniający TOTP, kod weryfikacyjny jest automatycznie kopiowany do schowka przy każdym autouzupełnianiu danych logowania."
@@ -951,7 +951,7 @@
"message": "Adres URL serwera ikon"
},
"environmentSaved": {
"message": "Adresy URL środowiska zostały zapisane."
"message": "Adresy URL środowiska zostały zapisane"
},
"enableAutoFillOnPageLoad": {
"message": "Włącz autouzupełnianie po załadowaniu strony"
@@ -1199,7 +1199,7 @@
"message": "Tożsamość"
},
"passwordHistory": {
"message": "Historia haseł"
"message": "Historia hasła"
},
"back": {
"message": "Powrót"
@@ -1731,14 +1731,14 @@
"message": "Obecna liczba dostępów"
},
"createSend": {
"message": "Utwórz nową wysyłkę",
"message": "Nowa wysyłka",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"newPassword": {
"message": "Nowe hasło"
},
"sendDisabled": {
"message": "Wysyłka została wyłączona",
"message": "Wysyłka została usunięta",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendDisabledWarning": {
@@ -1750,7 +1750,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"editedSend": {
"message": "Wysyłka została zaktualizowana",
"message": "Wysyłka została zapisana",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendLinuxChromiumFileWarning": {
@@ -1814,7 +1814,7 @@
"message": "Musisz zweryfikować adres e-mail, aby korzystać z tej funkcji. Adres możesz zweryfikować w sejfie internetowym."
},
"updatedMasterPassword": {
"message": "Zaktualizowane hasło główne"
"message": "Hasło główne zostało zaktualizowane"
},
"updateMasterPassword": {
"message": "Zaktualizuj hasło główne"
@@ -1884,7 +1884,7 @@
"message": "Usuń hasło główne"
},
"removedMasterPassword": {
"message": "Hasło główne zostało usunięte."
"message": "Hasło główne zostało usunięte"
},
"leaveOrganizationConfirmation": {
"message": "Czy na pewno chcesz opuścić tę organizację?"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Logowanie hasłem głównym"
},
"loggingInAs": {
"message": "Logowanie jako"
},
"notYou": {
"message": "To nie Ty?"
},
"newAroundHere": {
"message": "Jesteś tu nowy(a)?"
},
"rememberEmail": {
"message": "Zapamiętaj email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Entrar com a senha mestra"
},
"loggingInAs": {
"message": "Logar como"
},
"notYou": {
"message": "Não é você?"
},
"newAroundHere": {
"message": "Novo por aqui?"
},
"rememberEmail": {
"message": "Lembrar e-mail"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Iniciar sessão com a palavra-passe mestra"
},
"loggingInAs": {
"message": "A iniciar sessão como"
},
"notYou": {
"message": "Utilizador incorreto?"
},
"newAroundHere": {
"message": "Novo por aqui?"
},
"rememberEmail": {
"message": "Relembrar e-mail"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Autentificați-vă cu parola principală"
},
"loggingInAs": {
"message": "Autentificare ca"
},
"notYou": {
"message": "Nu sunteți dvs.?"
},
"newAroundHere": {
"message": "Sunteți nou pe aici?"
},
"rememberEmail": {
"message": "Memorare e-mail"
}
}

View File

@@ -20,7 +20,7 @@
"message": "Войти"
},
"enterpriseSingleSignOn": {
"message": "Единая корпоративная авторизация (SSO)"
"message": "Единая корпоративная авторизация"
},
"cancel": {
"message": "Отмена"
@@ -157,7 +157,7 @@
"description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing."
},
"twoStepLogin": {
"message": "Двухфакторная аутентификация"
"message": "Двухэтапная аутентификация"
},
"logOut": {
"message": "Выход"
@@ -199,7 +199,7 @@
"message": "Синхронизация"
},
"syncVaultNow": {
"message": "Синхронизировать сейчас"
"message": "Синхронизировать"
},
"lastSync": {
"message": "Последняя синхронизация:"
@@ -367,7 +367,7 @@
"message": "Тайм-аут хранилища"
},
"lockNow": {
"message": "Заблокировать сейчас"
"message": "Заблокировать"
},
"immediately": {
"message": "Немедленно"
@@ -464,7 +464,7 @@
"message": "Вы вышли из хранилища"
},
"loginExpired": {
"message": "Истек срок действия вашей сессии."
"message": "Истек срок действия вашего сеанса."
},
"logOutConfirmation": {
"message": "Вы действительно хотите выйти?"
@@ -491,7 +491,7 @@
"message": "Вы можете изменить свой мастер-пароль на bitwarden.com. Перейти на сайт сейчас?"
},
"twoStepLoginConfirmation": {
"message": "Двухфакторная аутентификация делает ваш аккаунт более защищенным, требуя подтверждения входа на другом устройстве, например, ключом безопасности, приложением-аутентификатором, SMS, телефонным звонком или письмом. Двухфакторная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?"
"message": "Двухэтапная аутентификация делает аккаунт более защищенным, поскольку требуется подтверждение входа при помощи другого устройства, например, ключа безопасности, приложения-аутентификатора, SMS, телефонного звонка или электронной почты. Двухэтапная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?"
},
"editedFolder": {
"message": "Папка сохранена"
@@ -705,7 +705,7 @@
"message": "Подробнее"
},
"authenticatorKeyTotp": {
"message": "Ключ проверки подлинности (TOTP)"
"message": "Ключ аутентификатора (TOTP)"
},
"verificationCodeTotp": {
"message": "Код подтверждения (TOTP)"
@@ -738,7 +738,7 @@
"message": "Файл"
},
"selectFile": {
"message": "Выберите файл."
"message": "Выбрать файл"
},
"maxFileSize": {
"message": "Максимальный размер файла 500 МБ."
@@ -771,13 +771,13 @@
"message": "1 ГБ зашифрованного хранилища для вложенных файлов."
},
"ppremiumSignUpTwoStep": {
"message": "Дополнительные варианты двухфакторной аутентификации, такие как YubiKey, FIDO U2F и Duo."
"message": "Дополнительные варианты двухэтапной аутентификации, такие как YubiKey, FIDO U2F и Duo."
},
"ppremiumSignUpReports": {
"message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища."
},
"ppremiumSignUpTotp": {
"message": "TOTP-генератор кодов (2ФА) для логинов в хранилище."
"message": "Генератор кода подтверждения TOTP (2ЭА) для входа в ваше хранилище."
},
"ppremiumSignUpSupport": {
"message": "Приоритетная поддержка."
@@ -810,7 +810,7 @@
"message": "Обновление завершено"
},
"enableAutoTotpCopy": {
"message": "Копировать TOTP автоматически"
"message": "Скопировать TOTP автоматически"
},
"disableAutoTotpCopyDesc": {
"message": "Если к вашему логину прикреплен ключ аутентификации, то код подтверждения TOTP будет скопирован при автозаполнении логина."
@@ -852,7 +852,7 @@
"message": "Отправить код подтверждения еще раз"
},
"useAnotherTwoStepMethod": {
"message": "Использовать другой метод двухфакторной аутентификации"
"message": "Использовать другой метод двухэтапной аутентификации"
},
"insertYubiKey": {
"message": "Вставьте свой YubiKey в USB-порт компьютера и нажмите его кнопку."
@@ -861,7 +861,7 @@
"message": "Вставьте ключ безопасности в USB-порт компьютера. Если у ключа есть кнопка, нажмите ее."
},
"webAuthnNewTab": {
"message": "Продолжить верификацию 2ФА WebAuthn в новой вкладке."
"message": "Продолжить верификацию 2ЭА WebAuthn в новой вкладке."
},
"webAuthnNewTabOpen": {
"message": "Открыть новую вкладку"
@@ -873,16 +873,16 @@
"message": "Вход недоступен"
},
"noTwoStepProviders": {
"message": "У этой учетной записи включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим веб-браузером."
"message": "У этой учетной записи включена двухэтапная аутентификация, однако ни один из настроенных вариантов не поддерживается этим браузером."
},
"noTwoStepProviders2": {
"message": "Используйте поддерживаемый веб-браузер (например, Chrome) и/или добавьте дополнительные варианты аутентификации, которые поддерживаются в веб-браузерах (например, приложение-аутентификатор)."
},
"twoStepOptions": {
"message": "Настройки двухфакторной аутентификации"
"message": "Настройки двухэтапной аутентификации"
},
"recoveryCodeDesc": {
"message": "Потеряли доступ ко всем вариантам двухфакторной аутентификации? Используйте код восстановления, чтобы отключить двухфакторную аутентификацию для вашей учетной записи."
"message": "Потеряли доступ ко всем вариантам двухэтапной аутентификации? Используйте код восстановления, чтобы отключить двухэтапную аутентификацию для вашей учетной записи."
},
"recoveryCodeTitle": {
"message": "Код восстановления"
@@ -1728,7 +1728,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"currentAccessCount": {
"message": "Счетчик текущих обращений"
"message": "Текущих обращений"
},
"createSend": {
"message": "Новая Send",
@@ -1820,7 +1820,7 @@
"message": "Обновить мастер-пароль"
},
"updateMasterPasswordWarning": {
"message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Активные сессии на других устройствах могут оставаться активными в течение одного часа."
"message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущий сеанс будет завершен, потребуется повторный вход. Сеансы на других устройствах могут оставаться активными в течение одного часа."
},
"resetPasswordPolicyAutoEnroll": {
"message": "Автоматическое развертывание"
@@ -1896,7 +1896,7 @@
"message": "Показать количество символов"
},
"sessionTimeout": {
"message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова."
"message": "Время вашего сеанса истекло. Пожалуйста, вернитесь и попробуйте войти снова."
},
"exportingPersonalVaultTitle": {
"message": "Экспорт личного хранилища"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Войти с мастер-паролем"
},
"loggingInAs": {
"message": "Войти как"
},
"notYou": {
"message": "Не вы?"
},
"newAroundHere": {
"message": "Вы здесь впервые?"
},
"rememberEmail": {
"message": "Запомнить email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Prihlásenie pomocou hlavného hesla"
},
"loggingInAs": {
"message": "Prihlasujete sa ako"
},
"notYou": {
"message": "Nie ste to vy?"
},
"newAroundHere": {
"message": "Ste tu nový?"
},
"rememberEmail": {
"message": "Zapamätať si e-mail"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Пријавите се са главном лозинком"
},
"loggingInAs": {
"message": "Пријављивање као"
},
"notYou": {
"message": "Нисте Ви?"
},
"newAroundHere": {
"message": "Нов овде?"
},
"rememberEmail": {
"message": "Запамти имејл"
}
}

View File

@@ -44,10 +44,10 @@
"message": "En huvudlösenordsledtråd kan hjälpa dig att komma ihåg ditt lösenord om du glömmer bort det."
},
"reTypeMasterPass": {
"message": "Skriv in huvudlösenordet igen"
"message": "Ange huvudlösenordet igen"
},
"masterPassHint": {
"message": "Huvudlösenordsledtråd (frivillig)"
"message": "Huvudlösenordsledtråd (valfri)"
},
"tab": {
"message": "Flik"
@@ -92,13 +92,13 @@
"message": "Fyll i automatiskt"
},
"generatePasswordCopied": {
"message": "Skapa lösenord (kopieras)"
"message": "Skapa lösenord (kopierad)"
},
"copyElementIdentifier": {
"message": "Kopiera anpassat fältnamn"
},
"noMatchingLogins": {
"message": "Inga matchande inloggningar."
"message": "Inga matchande inloggningar"
},
"unlockVaultMenu": {
"message": "Lås upp ditt valv"
@@ -131,7 +131,7 @@
"message": "Skicka en verifieringskod till din e-postadress"
},
"sendCode": {
"message": "Skicka kod"
"message": "Send-kod"
},
"codeSent": {
"message": "Kod har skickats"
@@ -157,7 +157,7 @@
"description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing."
},
"twoStepLogin": {
"message": "Tvåstegsverifiering"
"message": "Tvåfaktorsautentisering"
},
"logOut": {
"message": "Logga ut"
@@ -227,7 +227,7 @@
"message": "Skapa lösenord"
},
"regeneratePassword": {
"message": "Skapa nytt lösenord"
"message": "Återskapa lösenord"
},
"options": {
"message": "Alternativ"
@@ -264,7 +264,7 @@
"message": "Minsta antal siffror"
},
"minSpecial": {
"message": "Minsta antal specialtecken"
"message": "Minsta antal speciella tecken"
},
"avoidAmbChar": {
"message": "Undvik tvetydiga tecken"
@@ -439,7 +439,7 @@
"message": "Ditt nya konto har blivit skapat! Du kan nu logga in."
},
"masterPassSent": {
"message": "Vi har skickat ett mejl till dig med din huvudlösenordsledtråd."
"message": "Vi har skickat ett e-postmeddelande till dig med din huvudlösenordsledtråd."
},
"verificationCodeRequired": {
"message": "Verifieringskod krävs."
@@ -494,16 +494,16 @@
"message": "Tvåstegsverifiering gör ditt konto säkrare genom att kräva att du verifierar din inloggning med en annan enhet, t.ex. en säkerhetsnyckel, autentiseringsapp, SMS, telefonsamtal eller e-post. Tvåstegsverifiering kan aktiveras i Bitwardens webbvalv. Vill du besöka webbplatsen nu?"
},
"editedFolder": {
"message": "Redigerade mapp"
"message": "Mapp sparad"
},
"deleteFolderConfirmation": {
"message": "Är du säker på att du vill ta bort den här mappen?"
},
"deletedFolder": {
"message": "Raderade mapp"
"message": "Mapp raderad"
},
"gettingStartedTutorial": {
"message": "Komma igång - Handledning"
"message": "Komma igång-guide"
},
"gettingStartedTutorialVideo": {
"message": "Titta på vår 'Komma igång - Handledning'-video för att lära dig hur du får ut det mesta av webbläsartillägget."
@@ -534,16 +534,16 @@
"message": "Ny URI"
},
"addedItem": {
"message": "Lade till objekt"
"message": "Nytt objekt skapat"
},
"editedItem": {
"message": "Redigerade objekt"
"message": "Objekt sparat"
},
"deleteItemConfirmation": {
"message": "Är du säker på att du vill radera detta objekt?"
},
"deletedItem": {
"message": "Raderade objekt"
"message": "Objekt skickat till papperskorgen"
},
"overwritePassword": {
"message": "Skriv över lösenord"
@@ -574,7 +574,7 @@
"message": "Be om att lägga till inloggning"
},
"addLoginNotificationDesc": {
"message": "Aviseringar för nya inloggningar frågar dig om du vill lägga till en inloggning automatiskt till ditt valv, när du använder en inloggning som inte redan finns i ditt valv."
"message": "Be om att lägga till ett objekt om det inte finns i ditt valv."
},
"showCardsCurrentTab": {
"message": "Visa kort på fliksida"
@@ -642,7 +642,7 @@
"description": "Light color"
},
"solarizedDark": {
"message": "Solarized Dark",
"message": "Solarized rk",
"description": "'Solarized' is a noun and the name of a color scheme. It should not be translated."
},
"exportVault": {
@@ -732,13 +732,13 @@
"message": "Inga bilagor."
},
"attachmentSaved": {
"message": "Bilagan har sparats."
"message": "Bilaga sparad"
},
"file": {
"message": "Fil"
},
"selectFile": {
"message": "Välj en fil."
"message": "Välj en fil"
},
"maxFileSize": {
"message": "Filen får vara maximalt 500 MB."
@@ -837,7 +837,7 @@
}
},
"verificationCodeEmailSent": {
"message": "Verifieringsmejl skickat till $EMAIL$.",
"message": "Verifieringsmeddelande har skickats till $EMAIL$.",
"placeholders": {
"email": {
"content": "$1",
@@ -849,7 +849,7 @@
"message": "Kom ihåg mig"
},
"sendVerificationCodeEmailAgain": {
"message": "Skicka verifieringskod-mejlet igen"
"message": "Skicka e-postmeddelandet med verifieringskoden igen"
},
"useAnotherTwoStepMethod": {
"message": "Använd en annan inloggningsmetod för tvåstegsverifiering"
@@ -912,13 +912,13 @@
"message": "FIDO2 WebAuthn"
},
"webAuthnDesc": {
"message": "Använd en WebAuthn-aktiverad säkerhetsnyckel för att komma åt ditt konto."
"message": "Använd en WebAuthn-kompatibel säkerhetsnyckel för att komma åt ditt konto."
},
"emailTitle": {
"message": "E-post"
},
"emailDesc": {
"message": "Verifieringskoder kommer att skickas till dig."
"message": "Verifieringskoder kommer att skickas till dig via e-post."
},
"selfHostedEnvironment": {
"message": "Egen-hostad miljö"
@@ -951,7 +951,7 @@
"message": "Ikonserver-URL"
},
"environmentSaved": {
"message": "Miljö-URL:erna har sparats."
"message": "Miljö-URL:erna har sparats"
},
"enableAutoFillOnPageLoad": {
"message": "Aktivera automatisk ifyllnad vid sidhämtning"
@@ -1602,7 +1602,7 @@
"message": "Fil"
},
"allSends": {
"message": "Alla Send",
"message": "Alla Sends",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"maxAccessCountReached": {
@@ -1619,7 +1619,7 @@
"message": "Lösenordsskyddad"
},
"copySendLink": {
"message": "Kopiera länk till Send",
"message": "Kopiera Send-länk",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"removePassword": {
@@ -1632,11 +1632,11 @@
"message": "Tog bort lösenord"
},
"deletedSend": {
"message": "Raderad Send",
"message": "Send har raderats",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendLink": {
"message": "Länk till Send",
"message": "Send-länk",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"disabled": {
@@ -1662,7 +1662,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendNameDesc": {
"message": "Ett eget namn för att beskriva denna Send.",
"message": "Ett vänligt namn som beskriver denna Send.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendFileDesc": {
@@ -1679,7 +1679,7 @@
"message": "Utgångsdatum"
},
"expirationDateDesc": {
"message": "Om detta ställs in kommer åtkomst till denna Skicka att upphöra på angivet datum och tid.",
"message": "Om angiven kommer åtkomst till denna Send att upphöra på angivet datum och tid.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"oneDay": {
@@ -1701,11 +1701,11 @@
"message": "Maximalt antal åtkomster"
},
"maximumAccessCountDesc": {
"message": "Om detta ställs in kommer användare inte längre komma åt denna Send när maximalt antalet åtkomster har uppnåtts.",
"message": "Om angivet kommer användare inte längre kunna komma åt denna Send när det maximala antalet åtkomster har uppnåtts.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendPasswordDesc": {
"message": "Kräv eventuellt lösenord av användare för att komma åt denna Send.",
"message": "Kräv valfritt ett lösenord för att användare ska komma åt denna Send.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendNotesDesc": {
@@ -1738,19 +1738,19 @@
"message": "Nytt lösenord"
},
"sendDisabled": {
"message": "Send inaktiverad",
"message": "Send borttagen",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendDisabledWarning": {
"message": "På grund av företagspolicy kan du bara ta bort en befintlig Send.",
"message": "På grund av en företagspolicy kan du bara radera en befintlig Send.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"createdSend": {
"message": "Skapade Send",
"message": "Ny Send har skapats",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"editedSend": {
"message": "Redigera Send",
"message": "Send har sparats",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendLinuxChromiumFileWarning": {
@@ -1814,7 +1814,7 @@
"message": "Du måste verifiera din e-postadress för att använda den här funktionen. Du kan verifiera din e-postadress i webbvalvet."
},
"updatedMasterPassword": {
"message": "Huvudlösenord uppdaterades "
"message": "Huvudlösenord uppdaterades"
},
"updateMasterPassword": {
"message": "Uppdatera huvudlösenord"
@@ -1857,10 +1857,10 @@
"message": "Ditt valvs tidsgräns överskrider de begränsningar som fastställts av din organisation."
},
"vaultExportDisabled": {
"message": "Valvexport inaktiverad"
"message": "Valvexport ej tillgänglig"
},
"personalVaultExportPolicyInEffect": {
"message": "En eller flera organisationsprinciper hindrar dig från att exportera ditt personliga valv."
"message": "En eller flera organisationsprinciper hindrar dig från att exportera ditt individuella valv."
},
"copyCustomFieldNameInvalidElement": {
"message": "Det gick inte att identifiera något giltigt formulärelement. Prova att inspektera HTML-koden istället."
@@ -1884,7 +1884,7 @@
"message": "Ta bort huvudlösenord"
},
"removedMasterPassword": {
"message": "Huvudlösenord togs bort."
"message": "Huvudlösenord togs bort"
},
"leaveOrganizationConfirmation": {
"message": "Är du säker på att du vill lämna denna organisation?"
@@ -1899,7 +1899,7 @@
"message": "Din session har gått ut. Gå tillbaka och försök logga in igen."
},
"exportingPersonalVaultTitle": {
"message": "Exporterar personligt valv"
"message": "Exporterar individuellt valv"
},
"exportingPersonalVaultDescription": {
"message": "Endast de personliga valvobjekt som är associerade med $EMAIL$ kommer att exporteras. Organisationens valvobjekt kommer inte att inkluderas.",
@@ -1930,10 +1930,10 @@
"message": "Använd din e-postleverantörs subadresseringsfunktioner."
},
"catchallEmail": {
"message": "E-post som fångar in alla"
"message": "E-post med catch-all"
},
"catchallEmailDesc": {
"message": "Använd din domäns konfigurerade inkorg som fångar in alla."
"message": "Använd din domäns konfigurerade catch-all inkorg."
},
"random": {
"message": "Slumpmässig"
@@ -1942,7 +1942,7 @@
"message": "Slumpmässigt ord"
},
"websiteName": {
"message": "Namn på webbplats"
"message": "Webbplatsnamn"
},
"whatWouldYouLikeToGenerate": {
"message": "Vad vill du skapa?"
@@ -1954,7 +1954,7 @@
"message": "Tjänst"
},
"forwardedEmail": {
"message": "Vidarebefordrande e-postalias"
"message": "Vidarebefordrat e-postalias"
},
"forwardedEmailDesc": {
"message": "Skapa ett e-postalias med en extern vidarebefordranstjänst."
@@ -1973,7 +1973,7 @@
"message": "Key Connector-fel: säkerställ att Key Connector är tillgänglig och fungerar korrekt."
},
"premiumSubcriptionRequired": {
"message": "Premiumabonnemang krävs"
"message": "Premium-prenumeration krävs"
},
"organizationIsDisabled": {
"message": "Organisationen är inaktiverad."
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Logga in med huvudlösenord"
},
"loggingInAs": {
"message": "Loggar in som"
},
"notYou": {
"message": "Är det inte du?"
},
"newAroundHere": {
"message": "Är du ny här?"
},
"rememberEmail": {
"message": "Kom ihåg e-postadress"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -14,10 +14,10 @@
"message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun."
},
"createAccount": {
"message": "Hesap Oluştur"
"message": "Hesap oluştur"
},
"login": {
"message": "Giriş Yap"
"message": "Giriş yap"
},
"enterpriseSingleSignOn": {
"message": "Kurumsal tek oturum açma (SSO)"
@@ -32,10 +32,10 @@
"message": "Gönder"
},
"emailAddress": {
"message": "E-posta Adresi"
"message": "E-posta adresi"
},
"masterPass": {
"message": "Ana Parola"
"message": "Ana parola"
},
"masterPassDesc": {
"message": "Ana parola, kasanıza ulaşmak için kullanacağınız paroladır. Ana parolanızı unutmamanız çok önemlidir. Unutursanız parolalarınızı asla kurtaramazsınız."
@@ -44,10 +44,10 @@
"message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz."
},
"reTypeMasterPass": {
"message": "Ana Parolayı Tekrar Yazın"
"message": "Ana parolayı tekrar yazın"
},
"masterPassHint": {
"message": "Ana Parola İpucu (isteğe bağlı)"
"message": "Ana parola ipucu (isteğe bağlı)"
},
"tab": {
"message": "Sekme"
@@ -68,10 +68,10 @@
"message": "Ayarlar"
},
"currentTab": {
"message": "Mevcut Sekme"
"message": "Geçerli sekme"
},
"copyPassword": {
"message": "Parolayı Kopyala"
"message": "Parolayı kopyala"
},
"copyNote": {
"message": "Notu kopyala"
@@ -80,25 +80,25 @@
"message": "URI'yi kopyala"
},
"copyUsername": {
"message": "Kullanıcı Adını Kopyala"
"message": "Kullanıcı adını kopyala"
},
"copyNumber": {
"message": "Numarayı Kopyala"
"message": "Numarayı kopyala"
},
"copySecurityCode": {
"message": "Güvenlik Kodunu Kopyala"
"message": "Güvenlik kodunu kopyala"
},
"autoFill": {
"message": "Otomatik doldur"
},
"generatePasswordCopied": {
"message": "Parola Oluştur (kopyalandı)"
"message": "Parola oluştur (ve kopyala)"
},
"copyElementIdentifier": {
"message": "Özel alan adını kopyala"
},
"noMatchingLogins": {
"message": "Eşleşen hesap yok."
"message": "Eşleşen hesap yok"
},
"unlockVaultMenu": {
"message": "Kasanızın kilidini açın"
@@ -110,13 +110,13 @@
"message": "Mevcut sekme için otomatik doldurulacak giriş bilgisi bulunmuyor."
},
"addLogin": {
"message": "Oturum Ekle"
"message": "Hesap ekle"
},
"addItem": {
"message": "Hesap Ekle"
"message": "Kayıt ekle"
},
"passwordHint": {
"message": "Parola İpucu"
"message": "Parola ipucu"
},
"enterEmailToGetHint": {
"message": "Ana parola ipucunu almak için hesabınızın e-posta adresini girin."
@@ -137,7 +137,7 @@
"message": "Kod gönderildi"
},
"verificationCode": {
"message": "Doğrulama Kodu"
"message": "Doğrulama kodu"
},
"confirmIdentity": {
"message": "Devam etmek için kimliğinizi doğrulayın."
@@ -175,16 +175,16 @@
"message": "Taşı"
},
"addFolder": {
"message": "Klasör Ekle"
"message": "Klasör ekle"
},
"name": {
"message": "Ad"
},
"editFolder": {
"message": "Klasörü Düzenle"
"message": "Klasörü düzenle"
},
"deleteFolder": {
"message": "Klasörü Sil"
"message": "Klasörü sil"
},
"folders": {
"message": "Klasörler"
@@ -199,13 +199,13 @@
"message": "Eşitle"
},
"syncVaultNow": {
"message": "Kasayı Şimdi Eşitle"
"message": "Kasayı şimdi eşitle"
},
"lastSync": {
"message": "Son Eşitleme:"
"message": "Son eşitleme:"
},
"passGen": {
"message": "Parola Oluşturucu"
"message": "Parola üretici"
},
"generator": {
"message": "Oluşturucu",
@@ -224,10 +224,10 @@
"message": "Seç"
},
"generatePassword": {
"message": "Parola Oluştur"
"message": "Parola oluştur"
},
"regeneratePassword": {
"message": "Tekrar Parola Oluştur"
"message": "Yeni parola oluştur"
},
"options": {
"message": "Seçenekler"
@@ -248,26 +248,26 @@
"message": "Özel karakterler (!@#$%^&*)"
},
"numWords": {
"message": "Kelime Sayısı"
"message": "Kelime sayısı"
},
"wordSeparator": {
"message": "Kelime Ayracı"
"message": "Kelime ayracı"
},
"capitalize": {
"message": "Baş harfleri büyük yap",
"description": "Make the first letter of a work uppercase."
},
"includeNumber": {
"message": "Sayı Ekle"
"message": "Rakam ekle"
},
"minNumbers": {
"message": "En Az Rakam"
"message": "En az rakam"
},
"minSpecial": {
"message": "En Az Özel Karakter"
"message": "En az özel karakter"
},
"avoidAmbChar": {
"message": "Belirsiz Karakterler Kullanma"
"message": "Okurken karışabilecek karakterleri kullanma"
},
"searchVault": {
"message": "Kasada ara"
@@ -282,7 +282,7 @@
"message": "Listelenecek kayıt yok."
},
"itemInformation": {
"message": "Hesap Bilgisi"
"message": "Hesap bilgileri"
},
"username": {
"message": "Kullanıcı adı"
@@ -339,7 +339,7 @@
"message": "Web tarayıcınız panoya kopyalamayı desteklemiyor. Parolayı elle kopyalayın."
},
"verifyIdentity": {
"message": "Kimlik Doğrulama"
"message": "Kimliği doğrula"
},
"yourVaultIsLocked": {
"message": "Kasanız kilitli. Devam etmek için kimliğinizi doğrulayın."
@@ -485,7 +485,7 @@
"message": "Klasör eklendi"
},
"changeMasterPass": {
"message": "Ana Parolayı Değiştir"
"message": "Ana parolayı değiştir"
},
"changeMasterPasswordConfirmation": {
"message": "Ana parolanızı bitwarden.com web kasası üzerinden değiştirebilirsiniz. Siteye gitmek ister misiniz?"
@@ -494,7 +494,7 @@
"message": "İki aşamalı giriş, hesabınıza girererken işlemi bir güvenlik anahtarı, şifrematik uygulaması, SMS, telefon araması veya e-posta gibi ek bir yöntemle doğrulamanızı isteyerek hesabınızın güvenliğini artırır. İki aşamalı giriş özelliğini bitwarden.com web kasası üzerinden etkinleştirebilirsiniz. Şimdi siteye gitmek ister misiniz?"
},
"editedFolder": {
"message": "Klasör Düzenlendi"
"message": "Klasör kaydedildi"
},
"deleteFolderConfirmation": {
"message": "Bu klasörü silmek istediğinizden emin misiniz?"
@@ -503,7 +503,7 @@
"message": "Klasör silindi"
},
"gettingStartedTutorial": {
"message": "Başlangıç Rehberi"
"message": "Başlangıç rehberi"
},
"gettingStartedTutorialVideo": {
"message": "Tarayıcı uzantımızdan en iyi şekilde yararlanmayı öğrenmek için başlangıç eğitimimizi izleyebilirsiniz."
@@ -537,7 +537,7 @@
"message": "Kayıt eklendi"
},
"editedItem": {
"message": "Kayıt düzenlendi"
"message": "Kayıt kaydedildi"
},
"deleteItemConfirmation": {
"message": "Çöp kutusuna göndermek istediğinizden emin misiniz?"
@@ -567,7 +567,7 @@
"message": "Arama türü"
},
"noneFolder": {
"message": "Klasör Yok",
"message": "Klasör yok",
"description": "This is the folder for uncategorized items"
},
"enableAddLoginNotification": {
@@ -656,7 +656,7 @@
"description": "WARNING (should stay in capitalized letters if the language permits)"
},
"confirmVaultExport": {
"message": "Kasayı Dışa Aktarmayı Onayla"
"message": "Kasayı dışa aktarmayı onaylayın"
},
"exportWarningDesc": {
"message": "Dışa aktarılan dosyadaki verileriniz şifrelenmemiş olacak. Bu dosyayı güvensiz yöntemlerle (örn. e-posta) göndermemeli ve saklamamalısınız. İşiniz bittikten sonra dosyayı hemen silin."
@@ -732,13 +732,13 @@
"message": "Ek yok."
},
"attachmentSaved": {
"message": "Dosya kaydedildi."
"message": "Dosya kaydedildi"
},
"file": {
"message": "Dosya"
},
"selectFile": {
"message": "Bir dosya seçin."
"message": "Bir dosya seçin"
},
"maxFileSize": {
"message": "Maksimum dosya boyutu 500 MB'dir."
@@ -753,13 +753,13 @@
"message": "Premium üyelik"
},
"premiumManage": {
"message": "Üyeliğimi yönet"
"message": "Üyeliği yönet"
},
"premiumManageAlert": {
"message": "Üyeliğinizi bitwarden.com web kasası üzerinden yönetebilirsiniz. Şimdi siteye gitmek ister misiniz?"
},
"premiumRefresh": {
"message": "Üyeliğimi yenile"
"message": "Üyeliği yenile"
},
"premiumNotCurrentMember": {
"message": "Şu anda premium üye değilsiniz."
@@ -873,7 +873,7 @@
"message": "Giriş yapılamıyor"
},
"noTwoStepProviders": {
"message": "Bu hesapta iki aşamalı giriş özelliği etkin ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu tarayıcıyı desteklemiyor."
"message": "Bu hesapta iki aşamalı giriş ık ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu web tarayıcısını desteklemiyor."
},
"noTwoStepProviders2": {
"message": "Lütfen desteklenen bir web tarayıcısı (örn. Chrome) kullanın ve/veya web tarayıcılarında daha iyi desteklenen sağlayıcılar (örn. kimlik doğrulama uygulaması) ekleyin."
@@ -885,7 +885,7 @@
"message": "İki aşamalı doğrulama sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz."
},
"recoveryCodeTitle": {
"message": "Kurtarma Kodu"
"message": "Kurtarma kodu"
},
"authenticatorAppTitle": {
"message": "Kimlik doğrulama uygulaması"
@@ -951,7 +951,7 @@
"message": "Simge sunucusu URL'si"
},
"environmentSaved": {
"message": "Ortam URL'leri kaydedildi."
"message": "Ortam URL'leri kaydedildi"
},
"enableAutoFillOnPageLoad": {
"message": "Sayfa yüklendiğinde otomatik doldur"
@@ -969,7 +969,7 @@
"message": "\"Sayfa yüklendiğinde otomatik doldur\"u her hesabın \"Düzenle\" görünümünden ayrı ayrı kapatabilirsiniz."
},
"itemAutoFillOnPageLoad": {
"message": "Sayfa yüklendiğinde otomatik doldur (seçeneklerde etkinleştirilmişse)"
"message": "Sayfa yüklendiğinde otomatik doldur (Seçeneklerde ayarlanmışsa)"
},
"autoFillOnPageLoadUseDefault": {
"message": "Varsayılan ayarı kullan"
@@ -1002,7 +1002,7 @@
"message": "Özel alanlar"
},
"copyValue": {
"message": "Değeri Kopyala"
"message": "Değeri kopyala"
},
"value": {
"message": "Değer"
@@ -1130,7 +1130,7 @@
"message": "İkinci ad"
},
"lastName": {
"message": "Soyad"
"message": "Soyadı"
},
"fullName": {
"message": "Adı soyadı"
@@ -1296,7 +1296,7 @@
"message": "Türler"
},
"allItems": {
"message": "Tüm ögeler"
"message": "Tüm kayıtlar"
},
"noPasswordsInList": {
"message": "Listelenecek parola yok."
@@ -1316,7 +1316,7 @@
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Parola Güncellendi",
"message": "Parola güncellendi",
"description": "ex. Date this password was updated"
},
"neverLockWarning": {
@@ -1428,7 +1428,7 @@
"message": ıkış yaptığınızda kasanıza erişiminiz tamamen sonlanacak ve zaman aşımının ardından çevrimiçi kimlik doğrulaması yapmanız gerekecek. Bu ayarı kullanmak istediğinizden emin misiniz?"
},
"vaultTimeoutLogOutConfirmationTitle": {
"message": "Zaman Aşımı Eylem Onayı"
"message": "Zaman aşımı eylem onayı"
},
"autoFillAndSave": {
"message": "Otomatik doldur ve kaydet"
@@ -1437,7 +1437,7 @@
"message": "Kayıt otomatik dolduruldu ve URI kaydedildi"
},
"autoFillSuccess": {
"message": "Kayıt otomatik dolduruldu"
"message": "Kayıt otomatik dolduruldu "
},
"setMasterPassword": {
"message": "Ana parolayı belirle"
@@ -1509,19 +1509,19 @@
"message": "Lütfen masaüstü uygulamasında bu parmak izinin göründüğünü onaylayın: "
},
"desktopIntegrationDisabledTitle": {
"message": "Tarayıcı entegrasyonu etkinleştirilmedi"
"message": "Tarayıcı entegrasyonu ayarlanmadı"
},
"desktopIntegrationDisabledDesc": {
"message": "Bitwarden masaüstü uygulamasında tarayıcı entegrasyonu etkin değil. Lütfen masaüstü uygulamasının ayarlarından tarayıcı entegrasyonunu ın."
"message": "Bitwarden masaüstü uygulamasında tarayıcı entegrasyonu ayarlanmamış. Lütfen masaüstü uygulamasının ayarlarından tarayıcı entegrasyonunu kurun."
},
"startDesktopTitle": {
"message": "Bitwarden masaüstü uygulamasını başlat"
},
"startDesktopDesc": {
"message": "Bu işlevin kullanılabilmesi için Bitwarden masaüstü uygulamasının başlatılması gerekir."
"message": "Biyometri ile açma işlevini kullanmak için Bitwarden masaüstü uygulamasını çalıştırmanız gerekir."
},
"errorEnableBiometricTitle": {
"message": "Biyometri etkinleştirilemedi"
"message": "Biyometri ayarlanamadı"
},
"errorEnableBiometricDesc": {
"message": "İşlem masaüstü uygulaması tarafından iptal edildi"
@@ -1539,10 +1539,10 @@
"message": "Hesap uyuşmazlığı"
},
"biometricsNotEnabledTitle": {
"message": "Biyometri etkin değil"
"message": "Biyometri ayarlanmamış"
},
"biometricsNotEnabledDesc": {
"message": "Tarayıcıda biyometriyi kullanmak için önce ayarlardan masaüstü biyometrisini etkinleştirilmeniz gerekir."
"message": "Tarayıcıda biyometriyi kullanmak için önce ayarlardan masaüstü biyometrisini ayarlamanız gerekir."
},
"biometricsNotSupportedTitle": {
"message": "Biyometri desteklenmiyor"
@@ -1731,14 +1731,14 @@
"message": "Mevcut erişim sayısı"
},
"createSend": {
"message": "Yeni Send oluştur",
"message": "Yeni Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"newPassword": {
"message": "Yeni parola"
},
"sendDisabled": {
"message": "Send devre dışı",
"message": "Send silindi",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendDisabledWarning": {
@@ -1750,7 +1750,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"editedSend": {
"message": "Send düzenlendi",
"message": "Send kaydedildi",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendLinuxChromiumFileWarning": {
@@ -1823,7 +1823,7 @@
"message": "Ana parolanız kuruluşunuzdaki bir yönetici tarafından yakın zamanda değiştirildi. Kasanıza erişmek için parolanızı güncellemelisiniz. Devam ettiğinizde oturumunuz kapanacak ve yeniden oturum açmanız gerekecektir. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir."
},
"resetPasswordPolicyAutoEnroll": {
"message": "Otomatik Eklenme"
"message": "Otomatik eklenme"
},
"resetPasswordAutoEnrollInviteWarning": {
"message": "Bu kuruluşun sizi otomatik olarak parola sıfırlamaya ekleyen bir ilkesi bulunmakta. Bu ilkeye eklenmek, kuruluş yöneticilerinin ana parolanızı değiştirebilmesini sağlar."
@@ -1884,7 +1884,7 @@
"message": "Ana parolayı kaldır"
},
"removedMasterPassword": {
"message": "Ana parola kaldırıldı."
"message": "Ana parola kaldırıldı"
},
"leaveOrganizationConfirmation": {
"message": "Bu kuruluştan ayrılmak istediğinizden emin misiniz?"
@@ -1899,7 +1899,7 @@
"message": "Oturumunuzun süresi doldu. Lütfen geri dönüp yeniden giriş yapın."
},
"exportingPersonalVaultTitle": {
"message": "Kişisel Kasayı Dışa Aktar"
"message": "Kişisel kasa dışa aktarılıyor"
},
"exportingPersonalVaultDescription": {
"message": "Yalnızca $EMAIL$ ile ilişkili kişisel kasadaki kayıtlar dışa aktarılacaktır. Kuruluş kasasındaki kayıtlar dahil edilmeyecektir.",
@@ -1970,16 +1970,16 @@
"message": "API anahtarı"
},
"ssoKeyConnectorError": {
"message": "Anahtar Bağlayıcı hatası: Anahtar Bağlayıcının mevcut olduğundan ve doğru çalıştığından emin olun."
"message": "Anahtar bağlayıcı hatası: Anahtar bağlayıcının kullanılabilir olduğundan ve doğru çalıştığından emin olun."
},
"premiumSubcriptionRequired": {
"message": "Premium abonelik gerekli"
},
"organizationIsDisabled": {
"message": "Kuruluş devre dışı."
"message": "Kuruluş askıya alındı."
},
"disabledOrganizationFilterError": {
"message": "Devre dışı kuruluşlardaki kayıtlara erişilemez. Destek almak için kuruluş sahibinizle iletişime geçin."
"message": "Askıya alınmış kuruluşlardaki kayıtlara erişilemez. Destek almak için kuruluş sahibinizle iletişime geçin."
},
"cardBrandMir": {
"message": "Mir"
@@ -2003,13 +2003,13 @@
"message": "ön tanımlı ayarları sıfırlayabilirsiniz"
},
"serverVersion": {
"message": "Sunucu Sürümü"
"message": "Sunucu sürümü"
},
"selfHosted": {
"message": "Barındırılan"
},
"thirdParty": {
"message": "Üçüncü Taraf"
"message": "Üçüncü taraf"
},
"thirdPartyServerMessage": {
"message": "$SERVERNAME$ adresindeki üçüncü taraf sunucuya bağlandınız. Lütfen resmi sunucuyu kullanarak hataları doğrulayın veya üçüncü taraf sunucuya bildirin.",
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Ana parola ile giriş yap"
},
"loggingInAs": {
"message": "Giriş yapılan kullanıcı:"
},
"notYou": {
"message": "Siz değil misiniz?"
},
"newAroundHere": {
"message": "Buralarda yeni misiniz?"
},
"rememberEmail": {
"message": "E-postayı hatırla"
}
}

View File

@@ -491,7 +491,7 @@
"message": "Ви можете змінити головний пароль в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?"
},
"twoStepLoginConfirmation": {
"message": "Двоетапна перевірка робить ваш обліковий запис більш захищеним, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете увімкнути двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?"
"message": "Двоетапна перевірка дає змогу надійніше захистити ваш обліковий запис, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете налаштувати двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?"
},
"editedFolder": {
"message": "Теку збережено"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Увійти з головним паролем"
},
"loggingInAs": {
"message": "Вхід у систему як"
},
"notYou": {
"message": "Не ви?"
},
"newAroundHere": {
"message": "Виконуєте вхід вперше?"
},
"rememberEmail": {
"message": "Запам'ятати е-пошту"
}
}

View File

@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "Log in with master password"
},
"loggingInAs": {
"message": "Logging in as"
},
"notYou": {
"message": "Not you?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "Remember email"
}
}

View File

@@ -7,14 +7,14 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "Bitwarden 是一个安全且免费的跨平台密码管理器。",
"message": "安全且免费的跨平台密码管理器。",
"description": "Extension description"
},
"loginOrCreateNewAccount": {
"message": "登录或建一个账户来访问你的密码库。"
"message": "登录或者创建一个账户来访问您的安全密码库。"
},
"createAccount": {
"message": "建账户"
"message": "建账户"
},
"login": {
"message": "登录"
@@ -119,7 +119,7 @@
"message": "密码提示"
},
"enterEmailToGetHint": {
"message": "请输入您账户的 Email 地址来接收主密码提示。"
"message": "请输入您账户的电子邮件地址来接收主密码提示。"
},
"getMasterPasswordHint": {
"message": "获取主密码提示"
@@ -540,7 +540,7 @@
"message": "项目已保存"
},
"deleteItemConfirmation": {
"message": "您确定要删除此项目吗?"
"message": "您确定要将其发送到回收站吗?"
},
"deletedItem": {
"message": "项目已发送到回收站"
@@ -882,7 +882,7 @@
"message": "两步登录选项"
},
"recoveryCodeDesc": {
"message": "无法访问您所有的双重身份提供程序吗?请使用您的恢复代码来用您账户中所有的双重身份提供程序。"
"message": "无法访问您所有的双重身份提供程序吗?请使用您的恢复代码来用您账户中所有的双重身份提供程序。"
},
"recoveryCodeTitle": {
"message": "恢复代码"
@@ -912,7 +912,7 @@
"message": "FIDO2 WebAuthn"
},
"webAuthnDesc": {
"message": "使用任何具有 WebAuthn 功能的安全钥匙访问您的户。"
"message": "使用任何 WebAuthn 兼容的安全钥匙访问您的户。"
},
"emailTitle": {
"message": "电子邮件"
@@ -1713,7 +1713,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendDisableDesc": {
"message": "用此 Send 以阻止任何人访问它。",
"message": "用此 Send 任何人无法访问它。",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendShareDesc": {
@@ -1731,14 +1731,14 @@
"message": "当前访问次数"
},
"createSend": {
"message": "建 Send",
"message": "建 Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"newPassword": {
"message": "新建密码"
},
"sendDisabled": {
"message": "Send 已移除",
"message": "Send 已禁用",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendDisabledWarning": {
@@ -1887,10 +1887,10 @@
"message": "主密码已移除"
},
"leaveOrganizationConfirmation": {
"message": "您确定要离开该组织吗?"
"message": "您确定要退出该组织吗?"
},
"leftOrganization": {
"message": "您已经离开该组织。"
"message": "您已经退出该组织。"
},
"toggleCharacterCount": {
"message": "字符计数开关"
@@ -1976,10 +1976,10 @@
"message": "需要高级版订阅"
},
"organizationIsDisabled": {
"message": "组织已被挂起。"
"message": "组织已暂停。"
},
"disabledOrganizationFilterError": {
"message": "无法访问已被挂起的组织中的项目。请联系您的组织所有者获取帮助。"
"message": "无法访问已暂停组织中的项目。请联系您的组织所有者获取帮助。"
},
"cardBrandMir": {
"message": "Mir"
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "使用主密码登录"
},
"loggingInAs": {
"message": "正登录为"
},
"notYou": {
"message": "不是你?"
},
"newAroundHere": {
"message": "新建在这里?"
},
"rememberEmail": {
"message": "记住电子邮件地址"
}
}

View File

@@ -14,7 +14,7 @@
"message": "登入或建立帳戶以存取您的安全密碼庫。"
},
"createAccount": {
"message": "新增帳戶"
"message": "建立帳戶"
},
"login": {
"message": "登入"
@@ -251,7 +251,7 @@
"message": "單字數量"
},
"wordSeparator": {
"message": "單分隔字元"
"message": "單分隔字元"
},
"capitalize": {
"message": "大寫",
@@ -738,7 +738,7 @@
"message": "檔案"
},
"selectFile": {
"message": "選檔案"
"message": "選檔案"
},
"maxFileSize": {
"message": "檔案最大為 500MB。"
@@ -876,7 +876,7 @@
"message": "此帳戶已設定兩步驟登入,但是本瀏覽器不支援已設定的任一個兩步驟提供程式。"
},
"noTwoStepProviders2": {
"message": "請使用受支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的提供程式(例如驗證器應用程式)。"
"message": "請使用受支援的瀏覽器(例如 Chrome及/或新增可以更好地支援跨瀏覽器的提供程式(例如驗證器應用程式)。"
},
"twoStepOptions": {
"message": "兩步驟登入選項"
@@ -939,16 +939,16 @@
"message": "API 伺服器 URL"
},
"webVaultUrl": {
"message": "網版密碼庫伺服器 URL"
"message": "網版密碼庫伺服器 URL"
},
"identityUrl": {
"message": "身伺服器 URL"
"message": "身伺服器 URL"
},
"notificationsUrl": {
"message": "通知伺服器 URL"
},
"iconsUrl": {
"message": "圖伺服器 URL"
"message": "圖伺服器 URL"
},
"environmentSaved": {
"message": "環境 URL 已儲存"
@@ -1142,7 +1142,7 @@
"message": "公司"
},
"ssn": {
"message": "社會安全號碼"
"message": "社會保險號碼"
},
"passportNumber": {
"message": "護照號碼"
@@ -1884,7 +1884,7 @@
"message": "移除主密碼"
},
"removedMasterPassword": {
"message": "主密碼已移除"
"message": "主密碼已移除"
},
"leaveOrganizationConfirmation": {
"message": "您確定要離開這個組織嗎?"
@@ -1899,7 +1899,7 @@
"message": "您的登入階段已逾時,請返回並嘗試重新登入。"
},
"exportingPersonalVaultTitle": {
"message": "匯出個人密碼庫"
"message": "匯出個人密碼庫"
},
"exportingPersonalVaultDescription": {
"message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫項目。組織密碼庫的項目不包含在內。",
@@ -2028,5 +2028,20 @@
"example": "Jun 15, 2015"
}
}
},
"loginWithMasterPassword": {
"message": "使用主密碼登入"
},
"loggingInAs": {
"message": "正登入為"
},
"notYou": {
"message": "不是您嗎?"
},
"newAroundHere": {
"message": "New around here?"
},
"rememberEmail": {
"message": "記住電子郵件地址"
}
}

View File

@@ -6,6 +6,7 @@ import { CipherService as CipherServiceAbstraction } from "@bitwarden/common/abs
import { CollectionService as CollectionServiceAbstraction } from "@bitwarden/common/abstractions/collection.service";
import { CryptoService as CryptoServiceAbstraction } from "@bitwarden/common/abstractions/crypto.service";
import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "@bitwarden/common/abstractions/cryptoFunction.service";
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service";
import { EventService as EventServiceAbstraction } from "@bitwarden/common/abstractions/event.service";
import { ExportService as ExportServiceAbstraction } from "@bitwarden/common/abstractions/export.service";
import { FileUploadService as FileUploadServiceAbstraction } from "@bitwarden/common/abstractions/fileUpload.service";
@@ -51,7 +52,8 @@ import { CipherService } from "@bitwarden/common/services/cipher.service";
import { CollectionService } from "@bitwarden/common/services/collection.service";
import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service";
import { ContainerService } from "@bitwarden/common/services/container.service";
import { EncryptService } from "@bitwarden/common/services/encrypt.service";
import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation";
import { MultithreadEncryptServiceImplementation } from "@bitwarden/common/services/cryptography/multithread-encrypt.service.implementation";
import { EventService } from "@bitwarden/common/services/event.service";
import { ExportService } from "@bitwarden/common/services/export.service";
import { FileUploadService } from "@bitwarden/common/services/fileUpload.service";
@@ -82,6 +84,7 @@ import { WebCryptoFunctionService } from "@bitwarden/common/services/webCryptoFu
import { BrowserApi } from "../browser/browserApi";
import { SafariApp } from "../browser/safariApp";
import { flagEnabled } from "../flags";
import { UpdateBadge } from "../listeners/update-badge";
import { Account } from "../models/account";
import { PopupUtilsService } from "../popup/services/popup-utils.service";
@@ -215,7 +218,7 @@ export default class MainBackground {
this.memoryStorageService =
BrowserApi.manifestVersion === 3
? new LocalBackedSessionStorageService(
new EncryptService(this.cryptoFunctionService, this.logService, false),
new EncryptServiceImplementation(this.cryptoFunctionService, this.logService, false),
new KeyGenerationService(this.cryptoFunctionService)
)
: new MemoryStorageService();
@@ -255,7 +258,13 @@ export default class MainBackground {
window
);
this.i18nService = new I18nService(BrowserApi.getUILanguage(window));
this.encryptService = new EncryptService(this.cryptoFunctionService, this.logService, true);
this.encryptService = flagEnabled("multithreadDecryption")
? new MultithreadEncryptServiceImplementation(
this.cryptoFunctionService,
this.logService,
true
)
: new EncryptServiceImplementation(this.cryptoFunctionService, this.logService, true);
this.cryptoService = new BrowserCryptoService(
this.cryptoFunctionService,
this.encryptService,
@@ -283,7 +292,8 @@ export default class MainBackground {
this.i18nService,
() => this.searchService,
this.logService,
this.stateService
this.stateService,
this.encryptService
);
this.folderService = new FolderService(
this.cryptoService,

View File

@@ -4,6 +4,7 @@ import { CipherService } from "@bitwarden/common/services/cipher.service";
import { apiServiceFactory, ApiServiceInitOptions } from "./api-service.factory";
import { cryptoServiceFactory, CryptoServiceInitOptions } from "./crypto-service.factory";
import { encryptServiceFactory, EncryptServiceInitOptions } from "./encrypt-service.factory";
import { CachedServices, factory, FactoryOptions } from "./factory-options";
import {
FileUploadServiceInitOptions,
@@ -27,7 +28,8 @@ export type CipherServiceInitOptions = CipherServiceFactoryOptions &
FileUploadServiceInitOptions &
I18nServiceInitOptions &
LogServiceInitOptions &
StateServiceInitOptions;
StateServiceInitOptions &
EncryptServiceInitOptions;
export function cipherServiceFactory(
cache: { cipherService?: AbstractCipherService } & CachedServices,
@@ -48,7 +50,8 @@ export function cipherServiceFactory(
? () => cache.searchService
: opts.cipherServiceOptions.searchServiceFactory,
await logServiceFactory(cache, opts),
await stateServiceFactory(cache, opts)
await stateServiceFactory(cache, opts),
await encryptServiceFactory(cache, opts)
)
);
}

View File

@@ -1,4 +1,7 @@
import { EncryptService } from "@bitwarden/common/services/encrypt.service";
import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation";
import { MultithreadEncryptServiceImplementation } from "@bitwarden/common/services/cryptography/multithread-encrypt.service.implementation";
import { flagEnabled } from "../../flags";
import {
cryptoFunctionServiceFactory,
@@ -18,18 +21,20 @@ export type EncryptServiceInitOptions = EncryptServiceFactoryOptions &
LogServiceInitOptions;
export function encryptServiceFactory(
cache: { encryptService?: EncryptService } & CachedServices,
cache: { encryptService?: EncryptServiceImplementation } & CachedServices,
opts: EncryptServiceInitOptions
): Promise<EncryptService> {
return factory(
cache,
"encryptService",
opts,
async () =>
new EncryptService(
await cryptoFunctionServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
opts.encryptServiceOptions.logMacFailures
)
): Promise<EncryptServiceImplementation> {
return factory(cache, "encryptService", opts, async () =>
flagEnabled("multithreadDecryption")
? new MultithreadEncryptServiceImplementation(
await cryptoFunctionServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
opts.encryptServiceOptions.logMacFailures
)
: new EncryptServiceImplementation(
await cryptoFunctionServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
opts.encryptServiceOptions.logMacFailures
)
);
}

View File

@@ -41,6 +41,7 @@
8. Add ability to autofill span[data-bwautofill] elements
9. Add new handler, for new command that responds with page details in response callback
10. Handle sandbox iframe and sandbox rule in CSP
11. Work on array of saved urls instead of just one to determine if we should autofill non-https sites
*/
function collect(document, undefined) {
@@ -631,14 +632,14 @@
animateTheFilling = true;
// Check if URL is not secure when the original saved one was
function urlNotSecure(savedURL) {
function urlNotSecure(savedURLs) {
var passwordInputs = null;
if (!savedURL) {
if (!savedURLs) {
return false;
}
return 0 === savedURL.indexOf('https://') && 'http:' === document.location.protocol && (passwordInputs = document.querySelectorAll('input[type=password]'),
0 < passwordInputs.length && (confirmResult = confirm('Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page.\\n\\nDo you still wish to fill this login?'),
return savedURLs.some(url => url.indexOf('https://') === 0) && 'http:' === document.location.protocol && (passwordInputs = document.querySelectorAll('input[type=password]'),
0 < passwordInputs.length && (confirmResult = confirm('Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page.\n\nDo you still wish to fill this login?'),
0 == confirmResult)) ? true : false;
}
@@ -660,7 +661,7 @@
fillScriptProperties.delay_between_operations &&
(operationDelayMs = fillScriptProperties.delay_between_operations);
if (isSandboxed() || urlNotSecure(fillScript.savedURL)) {
if (isSandboxed() || urlNotSecure(fillScript.savedUrls)) {
return;
}

View File

@@ -38,7 +38,7 @@ describe("browserSession decorator", () => {
@browserSession
class TestClass {
@sessionSync({ initializer: (s: string) => s })
behaviorSubject = new BehaviorSubject("");
private behaviorSubject = new BehaviorSubject("");
constructor(private stateService: StateService) {}

View File

@@ -7,7 +7,11 @@ describe("sessionSync decorator", () => {
const ctor = String;
class TestClass {
@sessionSync({ ctor: ctor, initializer: initializer })
testProperty = new BehaviorSubject("");
private testProperty = new BehaviorSubject("");
complete() {
this.testProperty.complete();
}
}
it("should add __syncedItemKeys to prototype", () => {
@@ -19,7 +23,7 @@ describe("sessionSync decorator", () => {
ctor: ctor,
initializer: initializer,
}),
testClass.testProperty.complete(),
testClass.complete(),
]);
});
});

View File

@@ -1,7 +1,7 @@
import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service";
import { AuthService } from "@bitwarden/common/abstractions/auth.service";
import { CipherService } from "@bitwarden/common/abstractions/cipher.service";
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service";
import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus";
import { StateFactory } from "@bitwarden/common/factories/stateFactory";
import { Utils } from "@bitwarden/common/misc/utils";
@@ -259,7 +259,7 @@ export class UpdateBadge {
if (!self.bitwardenContainerService) {
new ContainerService(
serviceCache.cryptoService as CryptoService,
serviceCache.encryptService as AbstractEncryptService
serviceCache.encryptService as EncryptService
).attachToGlobal(self);
}

View File

@@ -5,6 +5,7 @@ export default class AutofillScript {
options: any = {};
metadata: any = {};
autosubmit: any = null;
savedUrls: string[];
constructor(documentUUID: string) {
this.documentUUID = documentUUID;

View File

@@ -1,7 +1,9 @@
<form #form (ngSubmit)="submit()" [appApiAction]="formPromise">
<header>
<div class="left">
<button type="button" routerLink="/login">{{ "cancel" | i18n }}</button>
<button type="button" routerLink="/login">
{{ "cancel" | i18n }}
</button>
</div>
<h1 class="center">
<span class="title">{{ "passwordHint" | i18n }}</span>

View File

@@ -1,10 +1,11 @@
import { Component } from "@angular/core";
import { Router } from "@angular/router";
import { ActivatedRoute, Router } from "@angular/router";
import { HintComponent as BaseHintComponent } from "@bitwarden/angular/components/hint.component";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { LoginService } from "@bitwarden/common/abstractions/login.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
@Component({
@@ -17,8 +18,14 @@ export class HintComponent extends BaseHintComponent {
platformUtilsService: PlatformUtilsService,
i18nService: I18nService,
apiService: ApiService,
logService: LogService
logService: LogService,
private route: ActivatedRoute,
loginService: LoginService
) {
super(router, i18nService, apiService, platformUtilsService, logService);
super(router, i18nService, apiService, platformUtilsService, logService, loginService);
super.onSuccessfulSubmit = async () => {
this.router.navigate([this.successRoute]);
};
}
}

View File

@@ -1,16 +1,29 @@
<div class="center-content">
<div class="content">
<div class="content login-page">
<div class="logo-image"></div>
<p class="lead text-center">{{ "loginOrCreateNewAccount" | i18n }}</p>
<button type="button" class="btn primary block" routerLink="/login">
<b>{{ "login" | i18n }}</b>
</button>
<button type="button" (click)="launchSsoBrowser()" class="btn block">
<i class="bwi bwi-bank" aria-hidden="true"></i> {{ "enterpriseSingleSignOn" | i18n }}
</button>
<button type="button" class="btn block" routerLink="/register">
{{ "createAccount" | i18n }}
</button>
<form #form [formGroup]="formGroup" (ngSubmit)="submit()">
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{ "emailAddress" | i18n }}</label>
<input id="email" type="email" formControlName="email" appInputVerbatim="false" />
</div>
</div>
<div class="box-footer no-margin" *ngIf="selfHostedDomain">
{{ "loggingInTo" | i18n: selfHostedDomain }}
</div>
</div>
<div class="box">
<button type="submit" class="btn primary block">
<b>{{ "continue" | i18n }}</b>
</button>
</div>
</form>
<p class="createAccountLink">
{{ "newAroundHere" | i18n }}
<a routerLink="/register">{{ "createAccount" | i18n }}</a>
</p>
</div>
</div>
<button type="button" routerLink="/environment" class="settings-icon">

View File

@@ -1,63 +1,56 @@
import { Component } from "@angular/core";
import { Component, OnInit } from "@angular/core";
import { FormBuilder, Validators } from "@angular/forms";
import { ActivatedRoute, Router } from "@angular/router";
import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { Utils } from "@bitwarden/common/misc/utils";
@Component({
selector: "app-home",
templateUrl: "home.component.html",
})
export class HomeComponent {
export class HomeComponent implements OnInit {
loginInitiated = false;
formGroup = this.formBuilder.group({
email: ["", [Validators.required, Validators.email]],
});
constructor(
protected platformUtilsService: PlatformUtilsService,
private passwordGenerationService: PasswordGenerationService,
private stateService: StateService,
private cryptoFunctionService: CryptoFunctionService,
private environmentService: EnvironmentService
private formBuilder: FormBuilder,
private router: Router,
private i18nService: I18nService,
private environmentService: EnvironmentService,
private route: ActivatedRoute
) {}
async ngOnInit(): Promise<void> {
const rememberedEmail = await this.stateService.getRememberedEmail();
if (rememberedEmail != null) {
this.formGroup.patchValue({ email: await this.stateService.getRememberedEmail() });
}
}
async launchSsoBrowser() {
// Generate necessary sso params
const passwordOptions: any = {
type: "password",
length: 64,
uppercase: true,
lowercase: true,
numbers: true,
special: false,
};
const state =
(await this.passwordGenerationService.generatePassword(passwordOptions)) +
":clientId=browser";
const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);
const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, "sha256");
const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);
await this.stateService.setSsoCodeVerifier(codeVerifier);
await this.stateService.setSsoState(state);
let url = this.environmentService.getWebVaultUrl();
if (url == null) {
url = "https://vault.bitwarden.com";
submit() {
this.formGroup.markAllAsTouched();
if (this.formGroup.invalid) {
this.platformUtilsService.showToast(
"error",
this.i18nService.t("errorOccured"),
this.i18nService.t("invalidEmail")
);
return;
}
const redirectUri = url + "/sso-connector.html";
this.stateService.setRememberedEmail(this.formGroup.value.email);
// Launch browser
this.platformUtilsService.launchUri(
url +
"/#/sso?clientId=browser" +
"&redirectUri=" +
encodeURIComponent(redirectUri) +
"&state=" +
state +
"&codeChallenge=" +
codeChallenge
);
this.router.navigate(["login"], { queryParams: { email: this.formGroup.value.email } });
}
get selfHostedDomain() {
return this.environmentService.hasBaseUrl() ? this.environmentService.getWebVaultUrl() : null;
}
}

View File

@@ -60,7 +60,7 @@
</div>
</div>
<div class="box" *ngIf="biometricLock">
<div class="box-footer">
<div class="box-footer no-pad">
<button
type="button"
class="btn primary block"

View File

@@ -1,25 +1,12 @@
<form #form (ngSubmit)="submit()" [appApiAction]="formPromise" [formGroup]="formGroup">
<header>
<div class="left">
<button type="button" routerLink="/home">{{ "cancel" | i18n }}</button>
</div>
<h1 class="center">
<span class="title">{{ "appName" | i18n }}</span>
<h1 class="login-center">
<span class="title">{{ "logIn" | i18n }}</span>
</h1>
<div class="right">
<button type="submit" [disabled]="form.loading">
<span [hidden]="form.loading">{{ "login" | i18n }}</span>
<i class="bwi bwi-spinner bwi-lg bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
</div>
</header>
<main tabindex="-1">
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="email">{{ "emailAddress" | i18n }}</label>
<input id="email" type="email" formControlName="email" appInputVerbatim="false" />
</div>
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">
<label for="masterPassword">{{ "masterPass" | i18n }}</label>
@@ -29,6 +16,7 @@
class="monospaced"
formControlName="masterPassword"
appInputVerbatim
appAutofocus
/>
</div>
<div class="action-buttons">
@@ -52,13 +40,27 @@
<iframe id="hcaptcha_iframe" height="80"></iframe>
</div>
</div>
<div class="box-footer">
<button type="button" class="btn link" routerLink="/hint" (click)="setFormValues()">
<b>{{ "getMasterPasswordHint" | i18n }}</b>
</button>
</div>
</div>
<p class="text-center text-muted" *ngIf="selfHostedDomain">
{{ "loggingInTo" | i18n: selfHostedDomain }}
</p>
<p class="text-center">
<button type="button" routerLink="/hint">{{ "getMasterPasswordHint" | i18n }}</button>
</p>
<app-private-mode-warning></app-private-mode-warning>
<div class="content login-buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading">
<span [hidden]="form.loading"
><b>{{ "logInWithMasterPassword" | i18n }}</b></span
>
<i class="bwi bwi-spinner bwi-lg bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
</button>
<button type="button" (click)="launchSsoBrowser()" class="btn block">
<i class="bwi bwi-provider" aria-hidden="true"></i> {{ "enterpriseSingleSignOn" | i18n }}
</button>
<div class="small">
<p class="no-margin">{{ "loggingInAs" | i18n }} {{ loggedEmail }}</p>
<a routerLink="/home">{{ "notYou" | i18n }}</a>
</div>
</div>
</main>
</form>

View File

@@ -1,27 +1,33 @@
import { Component, NgZone } from "@angular/core";
import { FormBuilder } from "@angular/forms";
import { Router } from "@angular/router";
import { ActivatedRoute, Router } from "@angular/router";
import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/components/login.component";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { AppIdService } from "@bitwarden/common/abstractions/appId.service";
import { AuthService } from "@bitwarden/common/abstractions/auth.service";
import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
import { FormValidationErrorsService } from "@bitwarden/common/abstractions/formValidationErrors.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { LoginService } from "@bitwarden/common/abstractions/login.service";
import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction";
import { Utils } from "@bitwarden/common/misc/utils";
@Component({
selector: "app-login",
templateUrl: "login.component.html",
})
export class LoginComponent extends BaseLoginComponent {
protected alwaysRememberEmail = true;
protected skipRememberEmail = true;
constructor(
apiService: ApiService,
appIdService: AppIdService,
authService: AuthService,
router: Router,
protected platformUtilsService: PlatformUtilsService,
@@ -34,9 +40,13 @@ export class LoginComponent extends BaseLoginComponent {
logService: LogService,
ngZone: NgZone,
formBuilder: FormBuilder,
formValidationErrorService: FormValidationErrorsService
formValidationErrorService: FormValidationErrorsService,
route: ActivatedRoute,
loginService: LoginService
) {
super(
apiService,
appIdService,
authService,
router,
platformUtilsService,
@@ -48,7 +58,9 @@ export class LoginComponent extends BaseLoginComponent {
logService,
ngZone,
formBuilder,
formValidationErrorService
formValidationErrorService,
route,
loginService
);
super.onSuccessfulLogin = async () => {
await syncService.fullSync(true);
@@ -59,4 +71,45 @@ export class LoginComponent extends BaseLoginComponent {
settings() {
this.router.navigate(["environment"]);
}
async launchSsoBrowser() {
// Generate necessary sso params
const passwordOptions: any = {
type: "password",
length: 64,
uppercase: true,
lowercase: true,
numbers: true,
special: false,
};
const state =
(await this.passwordGenerationService.generatePassword(passwordOptions)) +
":clientId=browser";
const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);
const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, "sha256");
const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);
await this.stateService.setSsoCodeVerifier(codeVerifier);
await this.stateService.setSsoState(state);
let url = this.environmentService.getWebVaultUrl();
if (url == null) {
url = "https://vault.bitwarden.com";
}
const redirectUri = url + "/sso-connector.html";
// Launch browser
this.platformUtilsService.launchUri(
url +
"/#/sso?clientId=browser" +
"&redirectUri=" +
encodeURIComponent(redirectUri) +
"&state=" +
state +
"&codeChallenge=" +
codeChallenge
);
}
}

View File

@@ -10,6 +10,7 @@ import { BroadcasterService } from "@bitwarden/common/abstractions/broadcaster.s
import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { LoginService } from "@bitwarden/common/abstractions/login.service";
import { MessagingService } from "@bitwarden/common/abstractions/messaging.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
@@ -44,7 +45,8 @@ export class TwoFactorComponent extends BaseTwoFactorComponent {
private messagingService: MessagingService,
logService: LogService,
twoFactorService: TwoFactorService,
appIdService: AppIdService
appIdService: AppIdService,
loginService: LoginService
) {
super(
authService,
@@ -58,9 +60,11 @@ export class TwoFactorComponent extends BaseTwoFactorComponent {
route,
logService,
twoFactorService,
appIdService
appIdService,
loginService
);
super.onSuccessfulLogin = () => {
this.loginService.clearValues();
return syncService.fullSync(true);
};
super.successRoute = "/tabs/vault";

View File

@@ -1,4 +1,4 @@
<app-callout type="warning" *ngIf="showWarning">
<app-callout class="app-private-mode-warning" type="warning" *ngIf="showWarning">
{{ "privateModeWarning" | i18n }}
<a href="https://bitwarden.com/help/article/private-mode/" target="_blank" rel="noopener">{{
"learnMore" | i18n

View File

@@ -7,7 +7,7 @@
</div>
<div class="box">
<div class="box-content">
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="box-content-row box-content-row-flex no-hover no-bg" appBoxRow>
<div class="row-main">
<label for="pin">{{ "pin" | i18n }}</label>
<input

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 512 512"><path d="M443.6 387.1 312.4 255.4l131.5-130c5.4-5.4 5.4-14.2 0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4-3.7 0-7.2 1.5-9.8 4L256 197.8 124.9 68.3c-2.6-2.6-6.1-4-9.8-4-3.7 0-7.2 1.5-9.8 4L68 105.9c-5.4 5.4-5.4 14.2 0 19.6l131.5 130L68.4 387.1c-2.6 2.6-4.1 6.1-4.1 9.8 0 3.7 1.4 7.2 4.1 9.8l37.4 37.6c2.7 2.7 6.2 4.1 9.8 4.1 3.5 0 7.1-1.3 9.8-4.1L256 313.1l130.7 131.1c2.7 2.7 6.2 4.1 9.8 4.1 3.5 0 7.1-1.3 9.8-4.1l37.4-37.6c2.6-2.6 4.1-6.1 4.1-9.8-.1-3.6-1.6-7.1-4.2-9.7z" fill="#ffffff" class="fill-000000"></path></svg>

After

Width:  |  Height:  |  Size: 634 B

View File

@@ -98,6 +98,25 @@ button {
font-family: $font-family-sans-serif;
}
input[type*="date"] {
@include themify($themes) {
color-scheme: themed("dateInputColorScheme");
}
}
::-webkit-calendar-picker-indicator {
@include themify($themes) {
filter: themed("webkitCalendarPickerFilter");
}
}
::-webkit-calendar-picker-indicator:hover {
@include themify($themes) {
filter: themed("webkitCalendarPickerHoverFilter");
}
cursor: pointer;
}
select {
width: 100%;
padding: 0.35rem;
@@ -174,6 +193,11 @@ header {
.right {
justify-content: flex-end;
align-items: center;
app-avatar {
max-height: 30px;
margin-right: 5px;
}
}
.center {
@@ -183,6 +207,10 @@ header {
min-width: 0;
}
.login-center {
margin: auto;
}
app-pop-out > button,
div > button,
div > a {
@@ -193,6 +221,7 @@ header {
flex-direction: row;
justify-content: center;
align-items: center;
height: 100%;
@include themify($themes) {
color: themed("headerColor");
@@ -289,6 +318,14 @@ header {
}
}
.no-bg {
background-color: transparent;
}
.no-pad {
padding: 0 !important;
}
.content {
padding: 15px;
}
@@ -429,6 +466,19 @@ main {
main {
bottom: 55px;
}
[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: none;
appearance: none;
height: 15px;
width: 15px;
background-repeat: no-repeat;
mask-image: url("../images/close-button-white.svg");
-webkit-mask-image: url("../images/close-button-white.svg");
@include themify($themes) {
background-color: themed("headerInputColor");
}
}
}
.center-content,
@@ -482,11 +532,14 @@ main {
padding-left: 7px;
.org-filter {
@include themify($themes) {
background-color: themed("backgroundColor");
background-color: themed("buttonBackgroundColor");
}
border: 1px solid;
padding: 7px;
border-radius: $border-radius;
padding: 6px 10px;
width: 160px;
display: flex;
align-items: center;
justify-content: space-between;
}
}
.vault-select {

View File

@@ -3,7 +3,6 @@
.box {
position: relative;
width: 100%;
margin: 10px 0;
&.first {
margin-top: 0;
@@ -20,13 +19,14 @@
}
.box-header-expandable {
padding: 0 10px;
margin-bottom: 5px;
padding: 10px;
margin: 0 10px;
text-transform: uppercase;
display: flex;
width: 100%;
width: calc(100% - 20px);
box-sizing: border-box;
align-items: center;
border-radius: $border-radius;
@include themify($themes) {
color: themed("headingColor");
@@ -52,11 +52,8 @@
}
.box-content {
border-top: 1px solid #000000;
border-bottom: 1px solid #000000;
@include themify($themes) {
background-color: themed("boxBackgroundColor");
background-color: themed("backgroundColor");
border-color: themed("borderColor");
}
@@ -74,28 +71,53 @@
.box-content-row.no-hover {
&:hover,
&:focus {
background-color: initial !important;
@include themify($themes) {
background-color: themed("boxBackgroundColor") !important;
}
}
}
}
.box-footer {
margin: 5px 10px;
margin: 0 10px 10px 10px;
padding: 0 15px 10px 15px;
font-size: $font-size-small;
button.btn {
font-size: $font-size-small;
padding: 0;
}
button.btn.primary {
font-size: $font-size-base;
padding: 7px 15px;
width: 100%;
&:hover {
@include themify($themes) {
border-color: themed("borderHoverColor") !important;
}
}
}
@include themify($themes) {
color: themed("mutedColor");
}
}
&.list {
margin: 10px 0 20px 0;
.box-content {
.box-content-row {
padding: 3px 10px;
padding: 10px;
text-decoration: none;
border-radius: $border-radius;
margin: 10px;
// background-color: $background-color;
@include themify($themes) {
color: themed("textColor");
background-color: themed("boxBackgroundColor");
}
&.padded {
@@ -103,6 +125,14 @@
padding-bottom: 10px;
}
&.no-hover {
&:hover {
@include themify($themes) {
background-color: themed("boxBackgroundColor") !important;
}
}
}
&:hover,
&:focus,
&.active {
@@ -150,6 +180,8 @@
display: flex;
padding-top: 10px;
padding-bottom: 10px;
margin: 10px;
border-radius: $border-radius;
}
}
}
@@ -179,7 +211,6 @@
.box-section-divider {
border-top: 1px solid #000000;
padding-top: 10px;
@include themify($themes) {
border-color: themed("borderColor");
@@ -191,19 +222,15 @@
padding: 10px 15px;
position: relative;
z-index: 1;
border-radius: $border-radius;
margin: 10px;
&:before {
content: "";
position: absolute;
right: 0;
bottom: 0;
height: 1px;
width: calc(100% - 10px);
border-bottom: 1px solid #000000;
@include themify($themes) {
background-color: themed("boxBackgroundColor");
}
@include themify($themes) {
border-bottom-color: themed("boxBorderColor");
}
&.no-bg {
background-color: rgba(0, 0, 0, 0) !important;
}
&:last-child {
@@ -326,7 +353,7 @@
}
&.box-content-row-multi {
width: 100%;
width: calc(100% - 20px);
input:not([type="checkbox"]) {
width: 100%;
@@ -450,6 +477,7 @@
width: 100%;
border: 1px solid #000000;
border-radius: $border-radius;
padding: 7px 4px;
@include themify($themes) {
border-color: themed("inputBorderColor");
@@ -705,3 +733,19 @@
overflow: hidden;
text-overflow: ellipsis;
}
form {
.box {
.box-content {
.box-content-row {
&.no-hover {
&:hover {
@include themify($themes) {
background-color: themed("transparentColor") !important;
}
}
}
}
}
}
}

View File

@@ -65,7 +65,8 @@
&.block {
display: block;
width: 100%;
width: calc(100% - 20px);
margin: 0 auto;
}
&.link,
@@ -89,8 +90,13 @@
button.box-content-row {
display: block;
width: 100%;
width: calc(100% - 20px);
text-align: left;
border-color: none;
@include themify($themes) {
background-color: themed("boxBackgroundColor");
}
}
button {
@@ -98,3 +104,10 @@ button {
background: transparent;
color: inherit;
}
.login-buttons {
.btn.block {
width: 100%;
margin-bottom: 10px;
}
}

View File

@@ -23,6 +23,12 @@ html.browser_safari {
}
}
.content {
&.login-page {
padding-top: 100px;
}
}
app-root {
border-width: 1px;
border-style: solid;

View File

@@ -132,7 +132,12 @@ p.lead {
}
.img-rounded {
border-radius: 6px;
border-radius: $border-radius;
}
.select-index-top {
position: relative;
z-index: 100;
}
.sr-only {
@@ -440,3 +445,7 @@ app-vault-view .box-footer {
html.force_redraw {
animation: redraw 1s linear infinite;
}
.rounded-circle {
border-radius: 50% !important;
}

View File

@@ -11,8 +11,16 @@ app-sync {
app-generator .generated-block {
font-size: $font-size-large;
font-family: $font-family-monospace;
margin: 20px;
margin: 10px;
padding: 10px 10px 10px 0;
display: flex;
border-radius: $border-radius;
border: 1px solid;
@include themify($themes) {
background-color: transparent;
border-color: themed("borderColorAlt");
}
.generated-wrapper {
text-align: left;
@@ -20,15 +28,30 @@ app-generator .generated-block {
min-width: 0;
white-space: pre-wrap;
word-break: break-all;
padding: 15px;
border-radius: $border-radius;
@include themify($themes) {
background-color: themed("backgroundColor");
}
}
.action-buttons {
display: flex;
align-self: center;
height: 100%;
margin-left: 10px;
button {
padding: 5px;
margin: -5px -5px 5px 5px;
padding: 6px;
margin: 2px;
border-radius: $border-radius;
&:hover {
@include themify($themes) {
background-color: themed("hoverColorTransparent");
}
}
}
}
}
@@ -88,7 +111,7 @@ app-home {
}
}
app-private-mode-warning {
.app-private-mode-warning {
display: block;
padding-top: 1rem;
}
@@ -115,3 +138,33 @@ body.body-full {
}
}
}
.createAccountLink {
padding: 30px 10px 0 10px;
}
.login-buttons > button {
margin: 15px 0 15px 0;
}
app-options {
.box {
margin: 10px 0;
& + .box {
margin-top: 10px;
}
}
}
app-vault-view,
app-vault-add-edit,
app-generator {
.box {
margin: 15px 0 25px 0;
& + .box {
margin-top: 25px;
}
}
}

View File

@@ -6,6 +6,8 @@ $font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-s
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
$font-size-base: 14px;
$font-size-large: 18px;
$font-size-xlarge: 22px;
$font-size-xxlarge: 28px;
$font-size-small: 12px;
$text-color: #000000;
$border-color: #f0f0f0;
@@ -13,8 +15,9 @@ $border-color-dark: #ddd;
$list-item-hover: #fbfbfb;
$list-icon-color: #767679;
$disabled-box-opacity: 1;
$border-radius: 3px;
$border-radius: 6px;
$line-height-base: 1.42857143;
$icon-hover-color: lighten($text-color, 50%);
$gray: #555;
$gray-light: #777;
@@ -32,6 +35,7 @@ $background-color: #f0f0f0;
$box-background-color: white;
$box-background-hover-color: $list-item-hover;
$box-border-color: $border-color;
$border-color-alt: #c3c5c7;
$button-border-color: darken($border-color-dark, 12%);
$button-background-color: white;
@@ -59,8 +63,10 @@ $solarizedDarkGreen: #859900;
$themes: (
light: (
textColor: $text-color,
hoverColorTransparent: rgba($text-color, 0.15),
borderColor: $border-color-dark,
backgroundColor: $background-color,
borderColorAlt: $border-color-alt,
backgroundColorAlt: #ffffff,
scrollbarColor: rgba(100, 100, 100, 0.2),
scrollbarHoverColor: rgba(100, 100, 100, 0.4),
@@ -107,11 +113,21 @@ $themes: (
calloutBackgroundColor: $box-background-color,
toastTextColor: #ffffff,
svgSuffix: "-light.svg",
transparentColor: rgba(0, 0, 0, 0),
dateInputColorScheme: light,
// https://stackoverflow.com/a/53336754
webkitCalendarPickerFilter: invert(46%) sepia(69%) saturate(6397%) hue-rotate(211deg)
brightness(85%) contrast(103%),
// light has no hover so use same color
webkitCalendarPickerHoverFilter: invert(46%) sepia(69%) saturate(6397%) hue-rotate(211deg)
brightness(85%) contrast(103%),
),
dark: (
textColor: #ffffff,
hoverColorTransparent: rgba($text-color, 0.15),
borderColor: #161c26,
backgroundColor: #161c26,
borderColorAlt: #6e788a,
backgroundColorAlt: #2f343d,
scrollbarColor: #6e788a,
scrollbarHoverColor: #8d94a5,
@@ -158,11 +174,20 @@ $themes: (
calloutBackgroundColor: #3c424e,
toastTextColor: #1f242e,
svgSuffix: "-dark.svg",
transparentColor: rgba(0, 0, 0, 0),
dateInputColorScheme: dark,
// https://stackoverflow.com/a/53336754 - must prepend brightness(0) saturate(100%) to dark themed date inputs
webkitCalendarPickerFilter: brightness(0) saturate(100%) invert(86%) sepia(19%) saturate(152%)
hue-rotate(184deg) brightness(87%) contrast(93%),
webkitCalendarPickerHoverFilter: brightness(0) saturate(100%) invert(100%) sepia(0%)
saturate(0%) hue-rotate(93deg) brightness(103%) contrast(103%),
),
nord: (
textColor: $nord5,
hoverColorTransparent: rgba($text-color, 0.15),
borderColor: $nord0,
backgroundColor: $nord1,
borderColorAlt: $nord5,
backgroundColorAlt: $nord2,
scrollbarColor: $nord4,
scrollbarHoverColor: $nord6,
@@ -209,16 +234,25 @@ $themes: (
calloutBackgroundColor: $nord2,
toastTextColor: #ffffff,
svgSuffix: "-dark.svg",
transparentColor: rgba(0, 0, 0, 0),
dateInputColorScheme: dark,
webkitCalendarPickerFilter: brightness(0) saturate(100%) invert(94%) sepia(5%) saturate(454%)
hue-rotate(185deg) brightness(93%) contrast(96%),
// has no hover so use same color
webkitCalendarPickerHoverFilter: brightness(0) saturate(100%) invert(94%) sepia(5%)
saturate(454%) hue-rotate(185deg) brightness(93%) contrast(96%),
),
solarizedDark: (
textColor: $solarizedDarkBase2,
hoverColorTransparent: rgba($text-color, 0.15),
borderColor: $solarizedDarkBase03,
backgroundColor: $solarizedDarkBase03,
borderColorAlt: $solarizedDarkBase01,
backgroundColorAlt: $solarizedDarkBase02,
scrollbarColor: $solarizedDarkBase0,
scrollbarHoverColor: $solarizedDarkBase2,
boxBackgroundColor: $solarizedDarkBase03,
boxBackgroundHoverColor: $solarizedDarkBase02,
boxBackgroundColor: $solarizedDarkBase02,
boxBackgroundHoverColor: lighten($solarizedDarkBase02, 5%),
boxBorderColor: $solarizedDarkBase02,
tabBackgroundColor: $solarizedDarkBase02,
tabBackgroundHoverColor: $solarizedDarkBase01,
@@ -230,7 +264,7 @@ $themes: (
headerInputBackgroundFocusColor: $solarizedDarkBase1,
headerInputColor: $solarizedDarkBase01,
headerInputPlaceholderColor: $solarizedDarkBase00,
listItemBackgroundHoverColor: $solarizedDarkBase02,
listItemBackgroundHoverColor: lighten($solarizedDarkBase02, 5%),
disabledIconColor: $solarizedDarkBase0,
disabledBoxOpacity: 0.5,
headingColor: $solarizedDarkBase0,
@@ -260,6 +294,12 @@ $themes: (
calloutBackgroundColor: $solarizedDarkBase01,
toastTextColor: #ffffff,
svgSuffix: "-solarized.svg",
transparentColor: rgba(0, 0, 0, 0),
dateInputColorScheme: dark,
webkitCalendarPickerFilter: brightness(0) saturate(100%) invert(61%) sepia(13%) saturate(289%)
hue-rotate(138deg) brightness(92%) contrast(90%),
webkitCalendarPickerHoverFilter: brightness(0) saturate(100%) invert(94%) sepia(10%)
saturate(462%) hue-rotate(345deg) brightness(103%) contrast(87%),
),
);

View File

@@ -108,7 +108,7 @@ export class SendAddEditComponent extends BaseAddEditComponent {
const type = parseInt(params.type, null);
this.type = type;
}
await this.load();
await super.ngOnInit();
});
window.setTimeout(() => {

Some files were not shown because too many files have changed in this diff Show More